I do not see any start timer sub routine in your code.
I do not see any start timer sub routine in your code.
Fratello,
You don't wait for the button to be released.
If it's pressed you start the timer, then immediately GOSUB END_sett which stops the timer and stores the number of seconds that have passed.
But no seconds have passed.
If you put a scope on the LED pin, you'll see that it's not "always on". It pulses low very breifly every 1 second.
DT
Thanks for reply !
=============
How can I avoid to stop the timer immediately after pressing buton ?!?
I want to counting seconds while button is pressed ....
I did it again !
Thanks for support !Code:@ Device PIC12F675,INTRC_OSC_NOCLKOUT, WDT_OFF,PWRT_ON,PROTECT_OFF,MCLR_OFF,BOD_OFF Include "C:\WIPPER\Elapsed.bas" ' just wsave(s) removed CLEAR DEFINE OSC 4 ANSEL=0 CMCON=7 TRISIO=%00100000 LED VAR GPIO.0 ; sets the GPIO.0 port as LED wipp_time var byte ; number of seconds while LED=off nr var bit nr = 0 low led Gosub ResetTime ' Reset Time to 0d-00:00:00.00 loop: IF GPIO.5 = 0 THEN nr=nr+1 if nr=1 then gosub memo ' Setting wipe_time else GOSUB WIPPER ' use seconds elapsed as wipe_time nr = 0 ' ready for another setting of wipe_time endif if nr > 2 then nr = 0 endif goto loop memo: gosub StartTimer while gpio.5 = 0 wipp_time = seconds ' seconds counts from the beginning of gpio.5 = 0 wend Gosub StopTimer Gosub ResetTime return wipper: while gpio.5 = 0 LED = 1 PAUSE 1000 LED = 0 PAUSE (wipp_time * 1000) wend return END ' of story !
Last edited by fratello; - 6th July 2012 at 11:04.
Ooooooops !!!
I build the schematic and I found a BIG issue !!! For value of "wipp_time" bigger than 10 seconds or so ..., if gpio.5 return to "1" BEFORE these seconds, then the counter dont increment ?! At next command (gpio.5=1) programs go to wipper instead memo ! Any ideea ?! Thanks !
I think in this subroutine the "pause xxx" commands make problems... It's another way to do this ?
Code:wipper: while gpio.5 = 0 LED = 1 PAUSE 1000 LED = 0 PAUSE (wipp_time * 1000) ; this command run for (wipp_time * 1000) seconds even gpio.5 is no more = 0 ?!? wend return
How about something like a 'for next' loop:-
For wipp_time = 1 to 10 ;adjust for your required timing delay
Next wipp_time
Last edited by tasmod; - 3rd September 2012 at 18:06.
Bookmarks