38 #define CONFIG_LED1() CONFIG_RB14_AS_DIG_OUTPUT()
39 #define LED1 _LATB14 //led1 state
43 CONFIG_RB13_AS_DIG_INPUT();
47 #define SW1_RAW _RB13 //raw switch value
48 #define SW1 u8_valueSW1 //switch state
49 #define SW1_PRESSED() (SW1==0) //switch test
50 #define SW1_RELEASED() (SW1==1) //switch test
54 volatile uint8_t u8_valueSW1 = 1;
57 void _ISRFAST _T3Interrupt (
void) {
58 u8_valueSW1 = SW1_RAW;
65 STATE_WAIT_FOR_RELEASE
68 STATE e_LastState = STATE_RESET;
70 void printNewState (STATE e_currentState) {
71 if (e_LastState != e_currentState) {
72 switch (e_currentState) {
73 case STATE_WAIT_FOR_PRESS:
76 case STATE_WAIT_FOR_RELEASE:
83 e_LastState = e_currentState;
86 #define ISR_PERIOD 15 // in ms
87 void configTimer3(
void) {
92 T3CON = T3_OFF |T3_IDLE_CON | T3_GATE_OFF
113 e_mystate = STATE_WAIT_FOR_PRESS;
120 printNewState(e_mystate);
122 case STATE_WAIT_FOR_PRESS:
124 e_mystate = STATE_WAIT_FOR_RELEASE;
127 case STATE_WAIT_FOR_RELEASE:
128 if (SW1_RELEASED()) {
130 e_mystate = STATE_WAIT_FOR_PRESS;
134 e_mystate = STATE_WAIT_FOR_PRESS;