Hi, I am trying to create a timer application which tracks 30minutes, 1Hr, 1h30min, 2H, 2H30min. It does not need to be very precise, variation of upto a 2 seconds is fine.
I am using 16f676 & using 16bit timer1 for this.
PIC-timer calculator says interrupts are generated 524.295mSec @4Mhz & 1:8 prescaler.
I have a word variable which works as a counter for interrupts & tells me that certain time has elapsed.
My problem is that I am not sure if I have calculated the delayset values right as calculator disagrees with me.
Code looks like this:
Code:
delay var word
delaystop var word
redled var porta.0
;---------INTERRUPTS DECLARED HERE------------------------------
ASM
INT_LIST macro ; IntSource, Label, Type, ResetFlag?
INT_Handler TMR1_INT, _delaystop, PBP, yes
endm
INT_CREATE ; Creates the interrupt processor
ENDASM
T1CON=$31
;-------------INTERRUPTS ENABLED HERE-----------------------------
@ INT_ENABLE TMR1_INT ; Enable external (INT) interrupts
while 1
if button1 then
delay=0 : delayset=2060 ; 30 minutes
endif
if button2 then
delay=0 : delayset=4120 ; 1Hour
endif
if button3 then
delay=0 : delayset=6180 ; 1Hr 30 minutes
endif
if button4 then
delay=0 : delayset=8240 ; 2 Hours
endif
if button5 then
delay=0 : delayset=10300 ; 2Hrs 30 minutes
endif
wend
delaystop:
delay=delay+1
if delay=delaystop then
redled=1
endif
@ INT_RETURN
Bookmarks