Heh, never even thought about SELECT CASE
So something more like this then.
Code:
' Configure the pic
@ device pic12F675, INTRC_OSC_NOCLKOUT, WDT_ON, PWRT_ON, MCLR_OFF, BOD_ON, CPD_OFF, PROTECT_OFF
N9600 con 6
CMCON = 7
ANSEL = 0
Relay1 VAR GPIO.5
Relay2 VAR GPIO.4
SlavePower VAR GPIO.2
SlaveRelay1 VAR GPIO.0
SlaveRelay2 VAR GPIO.1
Serial VAR GPIO.3
B0 var BYTE
SlaveState VAR BYTE
WhichRelay VAR BYTE
INPUT SlaveRelay1
INPUT SlaveRelay2
INPUT Serial
OUTPUT Relay1
OUTPUT Relay2
OUTPUT SlavePower
restart:
SlaveState = 0
PAUSEUS 1000
HIGH SlavePower
main:
B0 = 0
pauseus 1
SERIN Serial, N9600, 10, main, [1], B0
IF B0 > 1 THEN LOW SlavePower
if B0 == 2 THEN GOSUB subUp
IF B0 == 3 THEN GOSUB subDown
IF B0 == 4 THEN GOSUB subStop
IF B0 > 1 THEN GOTO restart
WhichRelay = GPIO & 3
IF SlaveState <> WhichRelay THEN
SlaveState = WhichRelay
SELECT CASE WhichRelay
CASE 0
GOSUB subStop
CASE 1
GOSUB SubUp
Case 2
GOSUB subDown
END SELECT
ENDIF
goto main
subUp:
LOW Relay2
HIGH Relay1
RETURN
subDown:
LOW RELAY1
HIGH Relay2
RETURN
subStop:
LOW Relay1
LOW Relay2
RETURN
Bookmarks