Sida 1 av 1
Microchip och deras värdelösa koder...
Postat: 4 november 2006, 16:15:00
av Seven11
Kod: Markera allt
l_get_sync
movf RCREG, W ; Check for a valid sync byte
xorlw 0x55
btfss STATUS, Z
bsf LE_SYNC
bsf LS_SYNC ; Indicate sync received
goto ErrFlagChecks
denna koden är direkttagen från "lin.asm" en del av källkoden som tillhör ANN237 "Implementing a LIN Slave Node on a PIC16F73". Meningen är att denna koden ska kolla om den mottagna byten från USART:en är lika med 0x55 (som är en konstant för LIN bussens SYNC signal) och därefter sätta LE_SYNC som talar om för en rutin som kallas av USART:ens ISR att nästa byte ska vara ID byten. Problemet är ju att det spelar ingen roll vad SYNC byten är enligt denna kod! såååå dåligt... tycker ju att dom borde testa lite innan som släpper ANN.
Postat: 4 november 2006, 16:31:11
av cyr
Varför blir det ingen skillnad menar du?
xorlw sätter väl Z, och Z bestämmer om LE_SYNC ska sättas.
Om koden gör rätt vet jag inte, men skillnad blir det väl?
Postat: 4 november 2006, 16:31:39
av Icecap
Spelar det ingen roll? Varför?
Efter vad jag ser kommer LE_SYNC enbart att settas när Zeroflaggan är aktiv, den blir den beroende på en EXOR mellan 0x55 och den inkommande byte och om du EXOR 0x55 med 0x55 blir resultatet 0x00 = Zeroflaggan satt.
Vad LS_SYNC är vet jag däremot inte....
Postat: 4 november 2006, 16:34:33
av Seven11
hahaha ni har rätt... såg inte att det stod "LE_SYNC" och "LS_SYNC" trodde det stod LE_SYNC på båda... får nog dra på glasögonen i alla fall da

Postat: 4 november 2006, 22:48:10
av sodjan
> får nog dra på glasögonen i alla fall da
Det är nog ingen dålig ide, kodexemplen från Microchip's appnotes
är kända för att vara en variant på "finn fem fel"...