Позаимствуй протокол из стандарта Irda там используется PPP и CRC16, только вместо таблицы Перед вызовом таблицы eor CRC_L,Ir_byte_buf ;считаем FCS
таблица может быть вызвана перед выходом из обработчика, если используется полный дуплекс я делал две подпрограммы для экономии времени.
CRC_V_table: mov temp_a,CRC_L ; 1 swap temp_a ; 1 andi temp_a,$F0 ; 1 eor CRC_L,temp_a ; 1 FCS_L = FCS_L XOR (FCS_L << 4)
mov temp_a,CRC_L ; 1 swap temp_a ; 1 andi temp_a,$0F ; 1 lsr temp_a ; 1 eor temp_a,CRC_L ; 1 temp_a = FCS_L XOR (FCS_L >> 5)
lsl CRC_L ; 1 lsl CRC_L ; 1 lsl CRC_L ; 1 eor CRC_L,CRC_H ; 1 FCS_L = (FCS_L << 3) XOR FCS_H
mov CRC_H,temp_a ; 1 FCS_H = temp_a
swap temp_a ; 1 andi temp_a,$0F ; 1 eor CRC_L,temp_a ; 1 FCS_L = FCS_L XOR (temp_a >> 4) ; /17 CLOCK ret ;/21 CLOCK
www.scenix.com Application Note 16 February 15, 1999 SX IrDA Virtual Peripheral Implementation
рекомендую,ссылки нет, есть документ: Ross N. Williams Элементарное руководство по CRCалгоритмам обнаружения ошибок Все, что Вы хотели бы знать о CRCалгоритмах, но боялись спросить, опасаясь, что ошибки Ваших знаний могут быть обнаружены A painless guide to CRC error detection algorithms Ross N. Williams
|