Here's some inspiration, not 100% efficient but easy to follow.
Code:
DEFINE OSC 40
DEFINE HSER_RCSTA 90h
DEFINE HSER_TXSTA 20h
DEFINE HSER_BAUD 9600
DEFINE HSER_SPBRG 64
WaitFor var byte [4]
CounterA VAR BYTE
clear
Hserout ["Varidrive V2011.00 has started",13,10]
main:
GOSUB ClearArray
HSEROUT ["Main loop",13,10]
HSERIN 5000, main,[WAIT ("blo")]
HSERIN 500, testit, [str waitFor\3]
testit:
SELECT CASE WaitFor[0]
CASE "n"
if WaitFor[1]=0 then
HIGH PORTD.4
HSEROUT ["ON",13,10]
else
GOSUB FAIL
endif
CASE "f"
if WaitFor[1]="f" then
if WaitFor[2]=0 then
LOW PORTD.4
HSEROUT ["OFF",13,10]
else
GOSUB FAIL
ENDIF
endif
CASE ELSE
GOSUB FAIL
END SELECT
goto main
ClearArray:
FOR CounterA = 0 TO 3
WaitFor[CounterA]=0
next
RETURN
FAIL:
HSEROUT ["FAIL!",13,10]
RETURN
Bookmarks