If the address (first two bits) don't match then I would end the program. I took that out but it seems like it is not advancing towards the correct loop. When my decoded data is stored in the byte s the first bit of my sequence should be coded a s.0 or do I have to define something else before doing s.0?
Include "Modedefs.bas"
s var byte : B0 var bit : B1 var bit : 's is byte to be encoded, B0 and B1 is byte
counter var byte : cnt55 var byte: 'counter is byte and cnt55 is byte
encoded1 var byte : action var byte : alert var byte : B0=1 : B1=1
'encoded1 word sized variable that holds encoded byte v, alert variable, action variable, B0 and B1 hardwired address
s=0: encoded1=0
main:
cnt55 = 0 'counter for $55 is zero
waitfor55:
serin PORTB.0, n2400, encoded1 'take in data at pin 0 and place in encoded1
if encoded1 = $55 then
cnt55 = cnt55 + 1 '$55 read, increase cnt55 by 1
if cnt55 = 4 then goto waitforaa 'if $55 occurs 4 times in a row check for $aa
else
goto main 'if not $55, reset counter at main and restart
endif
goto waitfor55
waitforaa:
serin PORTB.0, n2400, encoded1
if encoded1 <> $aa then goto main 'restart, incorrect leader bit
serin PORTB.0, n2400, encoded1 : 'serout PORTB.4, n2400, [encoded1] take in from pin 0 to encoded 1 output to pin 3 contens in encoded1
write 0,encoded1
High 7
Pause 2000
Low 7
'Decoding
For counter=0 to 3:s.0[counter]=encoded1.0[counter*2]:Next counter
'serout PORTB.3, n2400, [s] 'Ouptut decoded message
write 1, s
High 6
Pause 2000
Low 6
if (s.bit0=0) AND (s.bit1=1) then 'Check if address matches
goto L3
else
write 2,s
High 2
Pause 2000
Low 2
endif
L3:
if (s.bit2=0) And (s.bit3=0) then 'if the address Tracking then
s.bit2=1: action = s 'set the third bit to 1 and send it back
alert = 0: 'serout PORTB.1, n2400, [action] 'output to pin 1 value in s
write 3, action
High 1
Pause 2000
Low 1
endif
if (s.bit2=0) AND (s.bit3=1) then 'If the address Tracking and Finding then
s.bit2=1: action=s 'set the third bit to 1 and send back
alert=1: 'serout PORTB.4, n2400, [action]: 'output to pin 1 value in s
write 4, action
High 4
Pause 2000
Low 4
endif
End
Bookmarks