[an error occurred while processing this directive]
Ответ:
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено Linuxoid 22 августа 2002 г. 12:06
В ответ на: Кто-то считал 16-ти битный CRC на uC?? отправлено CTAC 21 августа 2002 г. 15:59

;---------------------------------------
.equ CRC16_INIT =0xFFFF
.equ CRC16_POLY =0x8408
.equ CRC16_FINAL=0xFFFF
;---------------------------------------
Init_CRC16:
ldi a, low (CRC16_INIT)
std Y+CRC16+0,a
ldi a, high(CRC16_INIT)
std Y+CRC16+1,a
ret
;---------------------------------------
Final_CRC16:
ldi a, low(CRC16_FINAL)
ldd b,Y+CRC16+0
eor b,a
std Y+CRC16+0,b
ldi a, high(CRC16_FINAL)
ldd b,Y+CRC16+1
eor b,a
std Y+CRC16+1,b
ret
;---------------------------------------
; Calculate CRC16 CCITT
; Input data: a
calc_crc16:
ldd c,Y+CRC16+1
ldd d,Y+CRC16+0

eor d,a
eor c,zero

ldi b,8

shr_crc16:
lsr c
ror d
brcc decc

ldi a,low (CRC16_POLY)
eor d,a
ldi a,high(CRC16_POLY)
eor c,a

decc:
dec b
brne shr_crc16

std Y+CRC16+1,c
std Y+CRC16+0,d

ret

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

Ответы



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

E-mail: info@telesys.ru