Here is the revision Dave,
INCLUDE "MODEDEFS.BAS"
@ DEVICE PIC16F628a,XT_OSC
@ DEVICE pic16F628a, WDT_OFF
@ DEVICE pic16F628a, PWRT_ON
@ DEVICE pic16F628a, MCLR_OFF
@ DEVICE pic16F628a, BOD_ON
@ DEVICE pic16F628a, LVP_OFF
@ DEVICE pic16F628a, CPD_OFF
@ DEVICE pic16F628a, PROTECT_OFF
DEFINE OSC 4
mydata1 VAR byte
mydata2 var byte
address1 var byte
address2 var byte
checksum var byte
chk_sum var byte
master var portb.0
vacuum var portb.1
datagood VAR porta.2
serpin VAR porta.1 'serial input pin
PORTA = 0
PORTB = 0
trisa = %00000010
trisb = %10000000
CMCON=%00000111
PAUSE 50
loop:
mydata1=%00000000
gosub loop1
CheckSum = (address1 + address2)
CheckSum = CheckSum + (mydata1 + mydata2)
IF checksum != chk_sum THEN loop
IF mydata1 != mydata2 THEN loop
IF address1 != address2 THEN loop
IF (mydata1>0) && (checksum = chk_sum) THEN
datagood = 1 'mydata1 > 0 so I know whether or not mydata1 has returned to %00000000 if 1 then my led will come on
else
datagood = 0 'If mydata1 is %00000000 then var mydata1 is 0, my led is off
endif
if mydata1=%01010110 then loop2
if mydata1=%10101111 then loop2
if portb.0=1 then loop3
goto loop
loop2:
if mydata1=%10101111 then master=1 'master relay turn on
pause 50
if mydata1=%01010110 then master=0 'master relay turn off
pause 50
goto loop
loop3:
if mydata1=%01011001 then
vacuum=1 'portb.1 is on
else
vacuum=0 'portb.1 is off
endif
GOTO loop
loop1:
SERIN2 serpin,16780,[wait(254),address1,address2,mydata1,mydata2,chk_su m]
Return
Bookmarks