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 :lol:

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"...