(PIC) CRC8 Dallas маленький вопросик тем, кто уже это делал
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Wud 02 апреля 2004 г. 19:25

;Do CRC Verify
;8 byte (1 family[0x7F], 6 key[END_0x7E..BEGIN_0x79], 1 crc[0x78])
movlw 0x7F ; start add FSR
movwf FSR
movlw .7
movwf CountByte ; 7 byte data
clrf CRC8 ; clear CRC8 var
crc_1
movlw .8
movwf Count ; 8 bit data
movf INDF,w ; copy to W byte
movwf tmp ; save byte
crc_2

вот тут не совсем понятно...

movf tmp,w ; скопировали в W
xorwf CRC8,w ; хорим с CRC8, но ничего не трогая кладем
результат в W
movwf CRC8d ; пишем в CRC8d
rrf CRC8d,w ; сдвигаем вправо на шаг эту CRC8d
movf CRC8,w ; уже кладем CRC8 в W проигнорировав
CRC8d ??? то есть она не нужна?
btfsc STATUS,C
xorlw 0x18 ; xor with fixed
movwf CRC8 ; store new CRC
rrf CRC8,f ; update new CRC


зачем эта переменная CRC8d??? без нее разве нельзя?
почему тоже самое не делается с CRC8 без CRC8d
Чего я тут не понимаю???


bcf STATUS,C
rrf tmp,f ; next bit
decfsz Count ; count bits
goto crc_2
decf FSR,f ; 1 step byte <<
decfsz CountByte,f ; all byte?
goto crc_1 ; not, next do
bcf STATUS,Z ; clear bit Z
movlw 0x78 ; add crc ReadROM to FSR
movwf FSR
movf INDF,w ; Copy byte to W
subwf CRC8,f ; W=CRC8
btfsc STATUS,Z ; W=CRC8???
bsf TIn,1 ; yes, enabled bit


Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru