Перейти к содержанию

Сдвиг Битов На Си


Рекомендуемые сообщения

Всем доброго времени суток ! Не пинайте сильно ,я только учусь !помогите решить проблемку .К выводам PB0-PB7 на АТМЕГА8 подключены 8 светодиодовю Алгоритм программы такой чтоб от середины в оба конца одновременно по одному зажигались светодиоды.

Вот пытаюсь так:

unsigned char temp;

temp=0x10;

while(1)

{

PORTB=temp;

temp|=(temp<<1)|(temp>>1);

_delay_ms(50);

if(temp==0xFF) temp=0x10;

}

Вроде все как надо но не загорается PB0 ! Никак не пойму почему ?Если убрать последнюю строчку if(....) то загораются все светодиоды поодному но только один цикл(раз)!?

Ссылка на комментарий
Поделиться на другие сайты

А почему 0x10 в конце последнего if'а?:blink:

> Правила форума <

...из древних времен доходят до нас слухи о колдунах и волшебниках... - кто бы мог подумать, что так может начинаться дипломная работа по радиотехнике...

...это не дым от канифоли, нет... это души умерших транзисторов....

Первый закон Ома: никому не рассказывать про Ома!

Ну вот, а ты говорил ноль...

Ссылка на комментарий
Поделиться на другие сайты

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

А, сорри, не заметил "от середины в оба конца"... Поставь туда 0x18...

> Правила форума <

...из древних времен доходят до нас слухи о колдунах и волшебниках... - кто бы мог подумать, что так может начинаться дипломная работа по радиотехнике...

...это не дым от канифоли, нет... это души умерших транзисторов....

Первый закон Ома: никому не рассказывать про Ома!

Ну вот, а ты говорил ноль...

Ссылка на комментарий
Поделиться на другие сайты

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. 

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Никак не пойму почему ?
Потому, что неправильно делаете. Представьте в голове свою переменную и что с ней будет происходить на каждом шаге. Или распишите на бумажке, побитно в столбик. И сразу поймёте свою ошибку.
Ссылка на комментарий
Поделиться на другие сайты

Не угадал

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

Нефиг зря голову ломать. Заведи ДВЕ переменные, одну двигая в одну сторону, другую в другую и на каждой итерации используй операцию OR чтобы поместить общий результат в порт. Не надо лишний раз на простых вещах ломать голову.

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

Можно еще проще. Создать массив масок порта (4байта) и пребирать их по очереди. Очень удобно и оперативно изменять "рисунок". Наверное "стопачи" колбасишь?

Ссылка на комментарий
Поделиться на другие сайты

Не угадал

а я и негадал.Все работает как надо

Можно еще проще. Создать массив масок порта (4байта) и пребирать их по очереди. Очень удобно и оперативно изменять "рисунок". Наверное "стопачи" колбасишь?

а как создать массив масок? не научите ?

Ссылка на комментарий
Поделиться на другие сайты

Да например:

const unsigned int8 mask[2][5]={{0x00,0x18,0x24,0x42,0x81}{0x00,0x24,0x3C,0x7E,0xFF}};

И все организуется простым циклом вывода значений от 0 до 4... Направлением счета реализуется реверс... От 0.0 до 0.4 идет "пустой перебор", когда заполняются только единичные биты, а от 1.0 до 1.4 идет с наполнением...

Например так:

int1 fill_check=0;
int8 i, delay=50;
while(true)
{
  for(i=0;i<5;++i)
  {
 	output_b(mask[fill_check][i]);
 	delay_ms(delay);
  }
}

Код для компилятора CCS, но портировать не проблема.

> Правила форума <

...из древних времен доходят до нас слухи о колдунах и волшебниках... - кто бы мог подумать, что так может начинаться дипломная работа по радиотехнике...

...это не дым от канифоли, нет... это души умерших транзисторов....

Первый закон Ома: никому не рассказывать про Ома!

Ну вот, а ты говорил ноль...

Ссылка на комментарий
Поделиться на другие сайты

как создать двумерный массив я понял,а вот как действовать дальше неочень. не могли бы вы объяснить поподробней пожалуйста.очень хочется разобраться !!!!

Ссылка на комментарий
Поделиться на другие сайты

Эээ... Я же код привел, вполне себе простой... Последовательно перебираем номера элементов массива в одном измерении и берем значение второго из бит-флага, который и означает, заполняются "пиксели" или нет...

> Правила форума <

...из древних времен доходят до нас слухи о колдунах и волшебниках... - кто бы мог подумать, что так может начинаться дипломная работа по радиотехнике...

...это не дым от канифоли, нет... это души умерших транзисторов....

Первый закон Ома: никому не рассказывать про Ома!

Ну вот, а ты говорил ноль...

Ссылка на комментарий
Поделиться на другие сайты

Эээ... Я же код привел, вполне себе простой... Последовательно перебираем номера элементов массива в одном измерении и берем значение второго из бит-флага, который и означает, заполняются "пиксели" или нет...

все разобрался !!!! большое спасибо !!!

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...