00001
00002
00003
00004
00005
00006 #include "piccolo_all.h"
00007 #include "delays.h"
00008
00032 volatile enum {KI,BE} allapot;
00033
00035 #pragma interrupt hi_isr
00036 void hi_isr() {
00037 if(allapot==KI) {allapot=BE; } else {allapot=KI;}
00038 INTCON3bits.INT2IE=0;
00039 }
00040
00042 #pragma interruptlow lo_isr
00043 void lo_isr() {
00044 }
00045
00047 void initINT2(void) {
00048 #if defined(__18F4550)
00049 ADCON1 = 7;
00050 TRISB=0xFF;
00051 INTCON2bits.RBPU=0;
00052 #elif defined(__18F14K50)
00053 ANSELbits.ANS6=0;
00054 #endif
00055 INTCON2bits.INTEDG2=0;
00056 INTCON3bits.INT2IP=1;
00057 INTCON3bits.INT2IF=0;
00058 INTCON3bits.INT2IE=1;
00059 }
00060
00065 void delay_ms(unsigned int d) {
00066 unsigned int j;
00067 for(j=0; j<d; j++) {
00068 Delay1KTCYx(12);
00069 }
00070 }
00071
00072
00073 void main(void) {
00074 unsigned int i;
00075 LEDport=0;
00076 LEDtris=0xF7;
00077 RCONbits.IPEN=1;
00078 INTCONbits.GIEH=1;
00079 INTCONbits.GIEL=0;
00080 initINT2();
00081 allapot=KI;
00082 while (1) {
00083 if(allapot==KI) {
00084 LEDport=0;
00085 delay_ms(25);
00086 INTCON3bits.INT2IF=0;
00087 INTCON3bits.INT2IE=1;
00088 Sleep();
00089 Nop();
00090 mLED_4_On();
00091 delay_ms(25);
00092 INTCON3bits.INT2IF=0;
00093 INTCON3bits.INT2IE=1;
00094 }
00095 if(allapot==BE) {
00096 delay_ms(250);
00097 mLED_4_Toggle();
00098 }
00099 }
00100 }
00101