реклама на сайте
подробности

 
 
> Подсчет СRC
Pyku_He_oTTyda
сообщение Nov 17 2005, 05:59
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 751
Регистрация: 4-08-05
Из: Великие Луки
Пользователь №: 7 360



Подскажите, как правильно посчитать на ассемблере контрольную сумму ключа I-BUTTON?


--------------------
Андрей Смирнов
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
add
сообщение Nov 18 2005, 07:47
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 345
Регистрация: 10-10-05
Пользователь №: 9 459



rolleyes.gif CRC для AVR :


;*****************************************************************************
;* ПРОЦЕДУРА ВЫЧИСЛЕНИЯ 8-БИТНОЙ CRC для микроконтроллеров AVR. *
;*****************************************************************************
; Пример использования:
clr fCRC ; Перед вычислением надо обнулять fCRC.
mov fTEMP,fBYTE1 ; Названия байтов к примеру.
rcall DO_CRC
; В fCRC сейчас находится контрольная сумма байта fBYTE1.
mov fTEMP,fBYTE2
rcall DO_CRC
; В fCRC сейчас находится контрольная сумма байтов fBYTE1 и fBYTE2.
mov fTEMP,fBYTE3
rcall DO_CRC
; В fCRC сейчас находится контрольная сумма байтов fBYTE1, fBYTE2, fBYTE3.
; И так далее.
; 8-битная CRC теряет эффективность при размере пакета более 200 байт.

.def SAVE_W =r16 ;
.def fBIT_CNT =r17 ; Счетчик прочитанных битов.
.def fTEMP =r18 ; Временный регистр только для локального использования.
.def fCRC =r19 ; Контрольная сумма.

; Процедура обновления CRC (циклическая контрольная сумма). Параметр в fTEMP.
DO_CRC:
mov SAVE_W,fTEMP
ldi fBIT_CNT,8
CRC_LOOP:
eor fTEMP,CRC
ror fTEMP
mov fTEMP,CRC
brcc ZERO
ldi CRC,0x18
eor fTEMP,CRC
ZERO:
ror fTEMP
mov CRC,fTEMP
lsr SAVE_W
mov fTEMP,SAVE_W
dec fBIT_CNT
brne CRC_LOOP
ret
;-----------------------------------------------------------------------------

и вот :
;----------------------------------------------------------------
crc_calc: ;вычисляем CRC текущего байта
mov r16,r17
ldi r18,8
crc_loop:
eor r17,r19
ror r17
brcc zero
ldi r17,0x18
eor r19,r17
zero: ror r19
lsr r16
mov r17,r16
dec r18
brne crc_loop
ret
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Pyku_He_oTTyda   Подсчет СRC   Nov 17 2005, 05:59
- - haker_fox   У меня тут правда на Си пример подсчета CRC8, но о...   Nov 17 2005, 06:19
- - Pyku_He_oTTyda   Попробую разобратся, вроде понятно немного. А можн...   Nov 17 2005, 06:28
- - haker_fox   ЦитатаА можно просто в двух словах изложить алгори...   Nov 17 2005, 06:37
- - arttab   это табличный метод (CRC8) - для скорости. Вот обы...   Nov 17 2005, 07:33
- - &-rey   Держи еще такой вариант. ;------------------- CRC ...   Nov 17 2005, 07:39
- - Pyku_He_oTTyda   А как вручную подсчитать CRC для ключа с номером ...   Nov 17 2005, 07:56
- - &-rey   Цитата(Pyku_He_oTTyda @ Nov 17 2005, 11:5...   Nov 17 2005, 08:11
- - Pyku_He_oTTyda   CRC ASSEMBLY LANGUAGE PROCEDURE DO_CRC: CRC_LOOP:...   Nov 17 2005, 08:32
- - NULL   Есть хорошая статья про CRC. Многое становится пон...   Nov 17 2005, 08:35
- - &-rey   Ну тогда все верно. У меня данный код на DS18B20 р...   Nov 17 2005, 08:52
- - PaulS   Цитата(Pyku_He_oTTyda @ Nov 17 2005, 08:5...   Nov 17 2005, 10:05
- - Antony Ugolev   CRC8 на С, не табличная версия: Кодvoid Update_CR...   Nov 17 2005, 10:46
- - Pyku_He_oTTyda   Cпасибо! Буду вечером осмысливать, разбиратся....   Nov 17 2005, 10:48
- - Pyku_He_oTTyda   &-rey буду премного благодарен! Ящик cam()...   Nov 17 2005, 12:09
- - Laksus   ЦитатаПодскажите, как правильно посчитать на ассем...   Nov 18 2005, 00:29
- - Pyku_He_oTTyda   Александр, спасибо за ссылку! *.pdf действител...   Nov 18 2005, 06:12
- - ksv198   Цитата(Pyku_He_oTTyda @ Nov 17 2005, 08:5...   Nov 18 2005, 13:28
- - Pyku_He_oTTyda   Благодарю! Работы предостаточно на выходные ск...   Nov 18 2005, 13:42
- - greg   Привожу пример для Pic 18f452. Проверено на DS1991...   Nov 21 2005, 16:17
- - halfdoom   Попросили оптимизировать CRC8 для ИАРа, получилось...   Jul 7 2010, 10:08


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 16:39
Рейтинг@Mail.ru


Страница сгенерированна за 0.01385 секунд с 7
ELECTRONIX ©2004-2016