No the pause length isnt critical. I'm trying to get one switch to start and stop the elapsed timer. So it needs a debounce and a wait period so that it doesnt immediately stop the timer again.
Here's what I have but it doesnt work to well:
Code:
loop1:
For A = 0 to 1000
IF PORTB.7 = 1 and TimerRunning = 0 then
gosub StartTimer
endif
next A
if SecondsChanged = 1 then
LCDout $FE,2, dec2 Hours,":",dec2 Minutes,":",dec2 Seconds
SecondsChanged = 0
endif
For B = 0 to 1000
If PORTB.7 = 1 and timerrunning = 1 then
gosub StopTimer
endif
next B
goto loop1
This means the user has to press and hold the button for 1 second before the timer will start. However, if they press it for 1.5 seconds, then they only need to press it again for half a second and it stops. If they press it for 2.5 seconds, then timer has started, stopped and is half way to starting again.
I was wondering id something like this would work?
Code:
'If PORTB.7 = 1 then
'gosub StartTimer
'TimerRunning = 1
'pause 150
'endif
If SecondsChanged = 1 then
LCDout $FE,2, dec2 Hours,":",dec2 Minutes,":",dec2 Seconds
SecondsChanged = 0
endif
If PORTB.7 = 1 AND TimerRunning = 1 then
'gosub StopTimer
'TimerRunning = 0
'pause 150
'endif
I think the problem with both of them is that there is no time between the on if then and the off if then, and there needs to be some sort of logic that says that if the timer is running and the button is still pressed, do not stop the timer until the button has been released and pressed again.
Bookmarks