Hello, here is my code:
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?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
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