Here is my revised code:
------------------------------------------------------------------------------------------------------------------
'Transmitter Code
Include "Modedefs.bas"
v var word 'v is a byte to be encoded
counter var byte 'counter is a byte
encoded var word 'encoded is a word sized variable that holds the encoded byte v
'Code to be transmitted
v = %1101 '1101 in Binary
'Manchester Encoding
For counter = 0 to 3 'number of bits to be encoded (4 bits)
If v.0[counter]=0 Then encoded.0[counter*2]=0 'if it is a zero make the first bit 0 encoded.0[counter*2+1]=1 'make the second bit 1
Else
encoded.0[counter*2]=1 'if it is a 1 make the first bit 1
encoded.0[counter*2+1]=0 'make the second bit 0
EndIf
Next counter
'Serial Out
serout PORTB.0, t2400, [$55,$55, $55, $aa, encoded] 'serial out in pin 0 using non-inverted 2400 bps to encoded
--------------------------------------------------------------------------------------------------------------------------------
'Receiver Code
Include "Modedefs.bas"
s var word 's is a byte to be encoded
B0 var byte 'B0 is a byte
B1 var byte 'B1 is a byte
counter var byte
encoded1 var word 'encoded1 word sized variable that holds the encoded byte v
action var byte 'action variable
alert var byte 'alert variable
B0=1 'hardwired address
B1=1 'hardwired address
'Decoding
waitfor55:
serin PORTB.0, t2400, encoded1: if encoded1 = $55 then goto waitfor55
waitforaa:
serin PORTB.0, t2400, encoded1: if encoded1 = $aa then goto waitforaa
serin PORTB.0, t2400, encoded1 'serial in to pin 0, a non-inverting 2400 bps to encoded1
serout PORTB.3, t2400, [encoded1]
loop:
For counter = 0 to 3
s.0[counter]=encoded1.0[counter*2] 'proceed through counter and copy encoded1 to s
Next counter
goto loop
End
serout PORTB.3, t2400, [s] 'serial out to pin 3, a non-inverting 2400 bps, to s
'Tracking code
If (s.2==0) & (s.3==0) Then 'If the code matches 00 then it is in the tracking mode
If (s.0==B0) & (s.1==B1) Then 'If the address matches then
s.2=1 'Change the third bit to 1
action = s.2 'action becomes 1
alert = 0 'alert becomes 0
serout PORTB.1, t2400, [s] 'Send the changed word back, serial out to pin 1, a non-inverting 2400 bps, to s
Else
s.2=0 'Since the addresses does not match do not change anything
action = s.2 'action becomes 0
alert = 0 'alert becomes 0
serout PORTB.1, t2400, [s] 'Send the changed word back, serial out to pin 1, a non-inverting 2400 bps, to s
Endif
Endif
'Tracking and Finding code
If (s.2==0) & (s.3==1) Then 'If the code matches 01 then it is in the tracking and finding mode
If (s.0==B0) & (s.1==B1) Then 'If the address matches then
s.2=1 'Change the third bit to 1
action=s.2 'action becomes 1
alert=1 'alert becomes 1
serout PORTB.1, t2400, [s] 'Send the changed word back, serial out to pin 1, a non-inverting 2400 bps, to s
High 2
Else
s.2=0 'Since the address does not match do not change anything
action=s.2 ;action becomes 0 and alert is also 0
alert=0
serout PORTB.1, t2400, [s] 'Send te changed word back, serial out to pin 1, a non-inverting 2400 bps, to s
Endif
Endif
Bookmarks