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

Отправлено Alexey_L 07 июня 2002 г. 10:09
В ответ на: Повторяю вопрос: как сформировать биты even или odd для UART-a программным путем? отправлено Константин Соловьев 07 июня 2002 г. 09:49


1. Вычисление бита четности (в AVR нет аппаратного):
Вариант-1:
.macro CRC2 ; 10clk CRC2 regValue,tmp
mov @1,@0
swap @1
eor @1,@0
mov @0,@1
lsr @0
eor @0,@1
mov @1,@0
lsr @0
lsr @0
eor @0,@1 ; result in bit0
.endmacro

Вариант-2 (на 2 команды короче):
.macro CRC2 ; 10clk CRC2 regValue,tmp
mov @1,@0
swap @1
eor @1,@0
mov @0,@1
lsr @0
eor @0,@1
sbrc @0,2
subi @0,1 ;result in bit0
.endmacro

Вариант-3 на Си:
Так правильно. Флаг четности в младшем бите.
//x - unsigned char
#define mParityEven(x){\
x^=x>>4;\
x^=x>>2;\
x^=(x>>1);\
}


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

Ответы



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

E-mail: info@telesys.ru