Hello, here is my code:
Code:
lcdout $FE,1,"Duration:",#xangrdzlivoba, " us "
LCDOUT $FE, $C0,"Delay:", #dakovneba, " ms "
triala:
IF PIRVELI=0 THEN GOSUB DROMINUS
IF MEORE=0 THEN GOSUB DROPLUS
IF MESAME=0 THEN GOSUB PAUSAMINUS
IF MEOTXE=0 THEN GOSUB PAUSAPLUS
IF PIRVELI=1 AND MEORE=1 AND MESAME=1 AND MEOTXE=1 THEN GOSUB CAVIDA
GOTO TRIALA
DROPLUS:
XANGRDZLIVOBA=XANGRDZLIVOBA+10
if xangrdzlivoba>10000 then xangrdzlivoba=10000
lcdout $FE,2,"Duration:",#xangrdzlivoba, " us "
LCDOUT $FE, $C0,"Delay:", #dakovneba, " ms "
PAUSE 50
return
DROMINUS:
XANGRDZLIVOBA=XANGRDZLIVOBA-10
if xangrdzlivoba<10 then xangrdzlivoba=10
lcdout $FE,2,"Duration:",#xangrdzlivoba, " us "
LCDOUT $FE, $C0,"Delay:", #dakovneba, " ms "
PAUSE 50
RETURN
PAUSAPLUS:
DAKOVNEBA=DAKOVNEBA+10
if DAKOVNEBA>10000 then DAKOVNEBA=10000
lcdout $FE,2,"Duration:",#xangrdzlivoba, " us "
LCDOUT $FE, $C0,"Delay:", #dakovneba, " ms "
PAUSE 50
RETURN
PAUSAMINUS:
DAKOVNEBA=DAKOVNEBA-10
if DAKOVNEBA<20 then DAKOVNEBA=20
lcdout $FE,2,"Duration:",#xangrdzlivoba, " us "
LCDOUT $FE, $C0,"Delay:", #dakovneba, " ms "
PAUSE 50
RETURN
CAVIDA:
HIGH ANTEBA
PAUSEUS XANGRDZLIVOBA
LOW ANTEBA
PAUSE DAKOVNEBA 'this causes delay
RETURN
END
It do controls stroboscope, so user presses buttons and sets strobe duration and delay between pulses. The problem is, that when delay is quite long, and code is executing apropriate PAUSE statement, buttons are not operable. So is it possible to add some code, that will end PAUSE statement prematurely, on any key press?
I've tried to make a loop instead of pause, and check state of all buttons inside it, but since the delay can be quite short, such additional statements slow it down considerably. I'm using PIC16F870 @ 4mhz.
Bookmarks