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

 
 
> загвоздка в простом коде (Си, atmega128)
elusive
сообщение Dec 5 2010, 18:39
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 91
Регистрация: 26-05-10
Пользователь №: 57 544



всем привет.

задача такая:
есть сигнал от ИК-пульта, принимается на PB2.
короткий импульс лог0 - разделитель, короткий импульс лог1 это ноль, длинный импульс лог1 это единица. нужно считать 8 битов, сохранить в переменную byte

byte=0;

i1=0; // счетчик длительности импульса лог1
while ((PINB&0x04)!=0) i1++; // пока длится лог1, считаем импульсы
if (i1<8000) byte=byte*2; // если это был короткий импульс, то умножаем двоичное число byte на 10 (сдвигаем влево)
else byte=(byte*2)+1; // если это был длинный импульс, сдвигаем влево и дописываем 1

дальше идут повторы этого куска.

проблема: после одного такого куска во время подсчета начинает увеличиваться не i1, а byte.
кто-то сталкивался с подобными вещами? переменная подчистую поменяется другой. может что-то оптимизатор WinAVR наоптимизировал..
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 18:18
Рейтинг@Mail.ru


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