Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Ваш Сишный исходный вариант дает 0xad55. Вот его асм(+)

Отправлено Quasy 04 июля 2008 г. 12:04
В ответ на: Ну вот так хотя бы отправлено Лагунов 04 июля 2008 г. 11:19



49 unsigned int get_crc_16( unsigned int crc, unsigned char *buf, int size )
\ get_crc_16:
50 {
\ 00000000 2E1B MOV R1,R27
\ 00000002 2F6A MOV R22,R26
\ 00000004 01D9 MOVW R27 : R26,R19 : R18
\ 00000006 C00C RJMP ??get_crc_16_0
51 while (size--) {
52 crc = (crc >> 8) ^ crc_16_tab[ (crc ^ *buf++) & 0xff ];
\ ??get_crc_16_1:
\ 00000008 2F71 MOV R23,R17
\ 0000000A 912D LD R18,X+
\ 0000000C 2720 EOR R18,R16
\ 0000000E E030 LDI R19,0
\ 00000010 0F22 LSL R18
\ 00000012 1F33 ROL R19
\ 00000014 01F9 MOVW R31 : R30,R19 : R18
\ 00000016 .... SUBI R30,LOW((-(crc_16_tab) & 0xFFFF))
\ 00000018 .... SBCI R31,(-(crc_16_tab) & 0xFFFF) >> 8
\ 0000001A 8100 LD R16,Z
\ 0000001C 8111 LDD R17,Z+1
\ 0000001E 2707 EOR R16,R23
53 }
\ ??get_crc_16_0:
\ 00000020 019A MOVW R19 : R18,R21 : R20
\ 00000022 5041 SUBI R20,1
\ 00000024 4050 SBCI R21,0
\ 00000026 2B23 OR R18,R19
\ 00000028 F779 BRNE ??get_crc_16_1
54 return crc;
\ 0000002A 2FA6 MOV R26,R22
\ 0000002C 2DB1 MOV R27,R1
\ 0000002E 9508 RET
55 }




Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
к трём прибавьте 5:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru