00001
00002
00003
00004
00005 #include "piccolo_all.h"
00006 #define USE_OR_MASKS //"VAGY" művelettel egyesíthető makrók legyenek
00007 #include "timers.h"
00008
00021
00022 #if !defined(USE_INTERRUPT)
00023 #error "Nincs definiálva az USE_INTERRUPT szimbólum!"
00024 #endif //USE_INTERRUPT
00025 #if defined(USE_USB)
00026 #error "Ehhez a projekthez nem kell USB kapcsolat!"
00027 #endif //USE_USB
00028
00029 volatile unsigned int speed;
00030 volatile unsigned char display;
00031
00032
00033 #pragma interrupt hi_isr
00034 void hi_isr() {
00035 if(INTCONbits.TMR0IF) {
00036 INTCONbits.TMR0IF = 0;
00037 if(speed) {
00038 if(--speed==0) {
00039 display = (LEDport & 0x0F)>>1;
00040 if(!display) display=0x8;
00041 ChangeBits(LEDport,display,0x0F);
00042 }
00043 }
00044 }
00045 }
00046
00047 #pragma interruptlow lo_isr
00048 void lo_isr() {
00049 }
00050
00056 unsigned int ADC_meas(void) {
00057 ADCON0bits.GO = 1;
00058 while (ADCON0bits.NOT_DONE);
00059 if ( ADCON2bits.ADFM )
00060 return (((unsigned int)ADRESH)<<8)|(ADRESL);
00061 else
00062 return ((((unsigned int)ADRESH) << 2) | (ADRESL>>6)) ;
00063 }
00064
00065
00066 void main(void) {
00067
00068 RCONbits.IPEN=1;
00069 INTCONbits.GIEH=1;
00070 INTCONbits.GIEL=0;
00071
00072 INTCON2bits.TMR0IP=1;
00073 OpenTimer0(TIMER_INT_ON
00074 | T0_16BIT
00075 | T0_SOURCE_INT
00076 | T0_PS_1_2 );
00077 mInitAllLEDs();
00078 mInitSwitch1();
00079 mInitPOT();
00080 mLED_4_On();
00081 speed=0;
00082 while (1) {
00083 speed = (1100 - ADC_meas()) >> 4;
00084 while(speed);
00085 if(SW1==0) Reset();
00086 }
00087 }