Challenge? ... What challenge?
Started with a previous version ...
I'll have to charge you for the next one though.Code:'**************************************************************** '* Name : THE_BUTON_sleep.BAS * '**************************************************************** @ DEVICE PIC12F675, intrc_osc_noclkout, wdt_OFF, pwrt_on, mclr_off, bod_off DEFINE OSC 4 DEFINE ADC_BITS 10 DEFINE ADC_CLOCK 3 DEFINE ADC_SAMPLEUS 50 CMCON = 7 OPTION_REG = %10000110 TRISIO = %00011110 ANSEL = %00011000 ADCON0 = %10001101 GIE var intcon.7 ' global interrupt enable 1=on ; 0=off gpie var intcon.3 'port change interrupt enable 1=0n ; 0=off gpif var intcon.0 'port change interrupt flag bit adval var Word vt var word u var byte cnt var byte but1 var gpio.3 but2 var gpio.2 rel1 var gpio.5 rel2 var gpio.0 Timer1 VAR WORD EXT :@Timer1 = TMR1L TMR1ON VAR T1CON.0 TMR1IF VAR PIR1.0 T1Count VAR BYTE LongPress VAR BIT T1CON = %00110100 u=0 cnt=0 GIE=0 GPIE=1 IOC.2=1 ' int-on-change for GPIO.2 enabled IOC.3=1 ' int-on-change for GPIO.3 enabled but1=0 but2=0 rel1=0 rel2=0 main: rel1=0 rel2=0 @ sleep pause 100 Timer1 = 3037 T1Count = 0 LongPress = 0 btn1: 'actionare buton up if but1=1 and rel2=0 then high rel1 TMR1ON = 1 pause 20 while but1=1 call check wend IF LongPress THEN Stop_UP T1Count = 0 pause 20 while but1 = 0 and but2 = 0 call check if rel1=0 then GOTO Btn1PressDone endif wend Stop_UP: LOW rel1 while but1=1 OR but2 = 1 wend pause 100 endif GPIF=0 'Clear ort change interrupt flag Btn1PressDone: btn2: ' actionare buton down if but2=1 and rel1=0 then high rel2 TMR1ON = 1 pause 20 while but2=1 call check wend IF LongPress THEN Stop_Down pause 20 while but2 = 0 and but1 = 0 call check if rel2 = 0 then GOTO Btn2PressDone endif wend Stop_Down: low rel2 while but2=1 or but1=1 wend pause 100 endif GPIF=0 'Clear ort change interrupt flag Btn2PressDone: GOTO MAIN check: ' verificare pentru supracurent adcin 3, adval vt=adval * 5000 vt=div32 1023 for cnt = 1 to 5 if vt > 270 then u=u+1 if u > 5 then gpio.0=0 gpio.5=0 endif pause 50 goto check else u=0 endif next cnt IF TMR1IF then TMR1IF = 0 Timer1 = 3037 T1Count = T1Count + 1 if T1Count = 2 then TMR1ON = 0 T1Count = 0 LongPress = 1 endif ENDIF return end ' of program
<br>






Bookmarks