00001
00002
00003
00004
00005
00006 #include "piccolo_all.h"
00007
00030
00031 #if defined(USE_INTERRUPT)
00033 #pragma interrupt hi_isr
00034 void hi_isr() {
00035 #if defined(USB_INTERRUPT)
00036 USBDeviceTasks();
00037 #endif //USB_INTERRUPT
00038 }
00040 #pragma interruptlow lo_isr
00041 void lo_isr() {
00042 }
00043 #endif //USE_INTERRUPT
00044
00045
00046
00047 typedef enum {
00048 STATE_RESET = 0,
00049 STATE_WAIT_FOR_PRESS1,
00050 STATE_WAIT_FOR_RELEASE1,
00051 STATE_WAIT_FOR_PRESS2,
00052 STATE_WAIT_FOR_RELEASE2,
00053 STATE_BLINK,
00054 STATE_WAIT_FOR_RELEASE3
00055 } STATE;
00056
00057 STATE e_LastState = STATE_RESET;
00058
00064 void printNewState (STATE e_currentState) {
00065 if (e_LastState != e_currentState) {
00066 switch (e_currentState) {
00067 case STATE_WAIT_FOR_PRESS1:
00068 outString("STATE_WAIT_FOR_PRESS1 - LED is off\n");
00069 break;
00070 case STATE_WAIT_FOR_RELEASE1:
00071 outString("STATE_WAIT_FOR_RELEASE1\n");
00072 break;
00073 case STATE_WAIT_FOR_PRESS2:
00074 outString("STATE_WAIT_FOR_PRESS2 - LED is on\n");
00075 break;
00076 case STATE_WAIT_FOR_RELEASE2:
00077 outString("STATE_WAIT_FOR_RELEASE2 - on SW3 go to blink else go to PRESS1\n");
00078 break;
00079 case STATE_BLINK:
00080 outString("STATE_BLINK - LED blinks, waiting for SW1 press\n");
00081 break;
00082 case STATE_WAIT_FOR_RELEASE3:
00083 outString("STATE_WAIT_FOR_RELEASE3 - LED is on\n");
00084 break;
00085 default:
00086 break;
00087 }
00088 }
00089 e_LastState = e_currentState;
00090 }
00091
00092 #define SW1_PRESSED() SW1==0 //lenyomott állapot feltétele
00093 #define SW1_RELEASED() SW1==1 //felengedett állapot feltétele
00094
00095
00096 #define SW3 PORTBbits.RB5 //SW3 kapcsoló RB5-re csatlakozik
00097
00098
00099 void main(void) {
00100 unsigned char c;
00101 STATE e_mystate;
00102 InitializeSystem();
00103
00104
00105 TRISBbits.TRISB5=1;
00106 #if defined(__18F14K50)
00107
00108
00109 ANSELHbits.ANS11=0;
00110 WPUBbits.WPUB5=1;
00111 INTCON2bits.RABPU=0;
00112 #else
00113
00114
00115 INTCON2bits.RBPU=0;
00116 #endif
00117
00118
00119 while (!usb_cdc_kbhit()) {
00120 ProcessIO();
00121 }
00122 outString("LED kapcsolgatása nyomógombbal\n");
00123 BlinkUSBStatus_enabled=0;
00124 LEDport = 0;
00125
00126 e_mystate = STATE_WAIT_FOR_PRESS1;
00127 while (1) {
00128 printNewState(e_mystate);
00129 switch (e_mystate) {
00130 case STATE_WAIT_FOR_PRESS1:
00131 mLED_1_Off();
00132 if (SW1_PRESSED()) e_mystate = STATE_WAIT_FOR_RELEASE1;
00133 break;
00134 case STATE_WAIT_FOR_RELEASE1:
00135 if (SW1_RELEASED()) e_mystate = STATE_WAIT_FOR_PRESS2;
00136 break;
00137 case STATE_WAIT_FOR_PRESS2:
00138 mLED_1_On();
00139 if (SW1_PRESSED()) e_mystate = STATE_WAIT_FOR_RELEASE2;
00140 break;
00141 case STATE_WAIT_FOR_RELEASE2:
00142 if (SW1_RELEASED()) {
00143
00144 if(SW3) {
00145 e_mystate = STATE_BLINK;
00146 c=1;
00147 }
00148 else e_mystate = STATE_WAIT_FOR_PRESS1;
00149 }
00150 break;
00151 case STATE_BLINK:
00152 if(--c==0) {
00153 mLED_1_Toggle();
00154 c=10;
00155 }
00156 if (SW1_PRESSED()) e_mystate = STATE_WAIT_FOR_RELEASE3;
00157 break;
00158 case STATE_WAIT_FOR_RELEASE3:
00159 mLED_1_On();
00160 if (SW1_RELEASED()) e_mystate = STATE_WAIT_FOR_PRESS1;
00161 break;
00162 default:
00163 e_mystate = STATE_WAIT_FOR_PRESS1;
00164 }
00165 delay_ms(20);
00166 }
00167 }