Om man jämför det vitala ur netrunners kod:
Kod: Markera allt
while Usart_Data_Ready = 1
receive[antal]= Usart_Read
wend
Med det vitala ur bokens kod:
Kod: Markera allt
while true
if USART_Data_Ready = 1 then
received_byte = USART_Read
end if
wend
Så framkommer ju en tydlig skillnad.
Boken kollar inte värdet på USART_Data_Ready i while-loopens kontrolldel, som netrunner gör.
En spekulation från min sida gällande netrunners kod, är att bufferten fylls upp med två tecken, som tas emot av USART_Read varefter bufferten töms.
När while-loopen då ska köra nästa iteration så är USART_Data_Ready inte längre 1 eftersom bufferten inte har hunnit fyllas med data än.
Därför tas bara två tecken emot av PICen.
Förmodligen är det därför som boken föreslår att man kollar USART_Data_Ready med if-sats innanför while-loopen istället.
Det är i alla fall enkelt för netrunner att testa om det verkligen förhåller sig på det sättet.