src/switch.c
changeset 8 61eba9d55764
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/switch.c	Thu Sep 25 00:55:47 2014 +0300
@@ -0,0 +1,39 @@
+#include "stdlib.h"
+//#include "switch.h"
+
+#include <avr/io.h>
+#include <avr/interrupt.h>
+
+byte switch_mask;
+byte switch_status;
+byte switch_state;
+
+ISR(PCINT0_vect)
+{
+    switch_status = 1;
+    switch_state = PINB;
+}
+
+ISR(PCINT1_vect)
+{
+    switch_status = 1;
+    switch_state = PINC;
+}
+
+ISR(PCINT2_vect)
+{
+    switch_status = 1;
+    switch_state = PIND;
+}
+
+byte switch_read (byte *sp)
+{
+    if (!switch_status)
+        return 0;
+
+    switch_status = 0;
+
+    *sp = ~switch_state & switch_mask;
+
+    return 1;
+}