Понедельник, 21.09.2020, 19:55
Микроконтроллерная техника AVR
Главная Регистрация Вход
Приветствую Вас, Гость · RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Микроконтроллеры » Вопросы по МК » СДВИГ БИТОВ (ПОМОГИТЕ ПОНЯТЬ)
СДВИГ БИТОВ
mobileman2499Дата: Среда, 16.05.2012, 19:52 | Сообщение # 1
Рядовой
Группа: Пользователи
Сообщений: 1
Репутация: 0
Статус: Offline
Всем доброго времени суток.Сильно не пинайте я новенький и начинающий. с битовыми сдвигами вправо и влево я разобрался. А как например сделать сдвиг одновременно и вправо и влево? На примере 8 светодиодов я пробовал так.Алгоритм такой: от середины(0x10) по одному загораются светодиоды в разные стороны:

.........
unsigned char temp;

temp=0x10;
while(1){
{
PORTB=temp;
temp|=(temp<<1)|(temp>>1);
_delay_ms(50);
if(temp==0xff) temp=0x10;
}
}
Вроде получилось но не совсем не горит 0 бит PORTB .Почему никак не пойму. Помогите !!!

Добавлено (16.05.2012, 19:52)
---------------------------------------------
отвечаю сам себе
переменную temp надо объявить как long а не char и в условии if (temp>0xFF) а не ==0xFF !!!!!

 
HiSERДата: Четверг, 17.05.2012, 19:18 | Сообщение # 2
Продвинутый автор!
Группа: Проверенные
Сообщений: 254
Репутация: 11
Статус: Offline
Ужас wacko
Это что за реализация такая...

Добавлено (17.05.2012, 19:18)
---------------------------------------------
Не надо использовать LONG, достаточно temp сравнить с PORTB.

 
Форум » Микроконтроллеры » Вопросы по МК » СДВИГ БИТОВ (ПОМОГИТЕ ПОНЯТЬ)
  • Страница 1 из 1
  • 1
Поиск:

Хостинг от uCoz