I just tried some test code out
Code:
'The main loop
loop:
'Check for serial data
if pir1.5=1 then 'Check if there is any serial data
while pir1.5 'Loop through all the data
indata=RCREG 'Get a byte
select case indata
case 255 'Reset the buffer
recpos=0
case else
if recpos<17 then
inbuffer(recpos)=indata
recpos=recpos+1
else
high porta.1
endif
end select
wend
if rcsta.1=1 then
rcsta.4=0
rcsta.4=1
endif
endif
goto loop
Now, that code *should* wait for a 255. When it gets it it resets recpos to 0. Each byte after that should end up in InBuffer until recpos=17. At that point a light should turn on (porta.1)
The reset part does seem to be working but not all the bytes arrive. The light wont come on until i send another 1-3 bytes.
I should point out im not using the MAX232 chip because they havnt arrived yet but instead i linked into one of Matts boxes which has an alternative solution. I cant see why that would cause a problem but ive just found out that when i set the address it gets set to 1 less than what i actually set it to
Bookmarks