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

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


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

Всем доброго времени суток ! Не пинайте сильно ,я только учусь !помогите решить проблемку .К выводам 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(....) то загораются все светодиоды поодному но только один цикл(раз)!?

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

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

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

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

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

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

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

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

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

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

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

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

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

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

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

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

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

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

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

Не угадал

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 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 пользователей онлайн

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

    • Всем доброго дня! Есть ДВД проигрыватель Toshiba, изначально с питанием 110В. По глупости был включен в розетку с 220В, взорвался конденсатор на входе. Был заменён на аналогичный по ёмкости, но с большим напряжением. Какое-то время проигрыватель работал. Потом перестал включаться. Нужен совет, по переделке БП данного ДВД, если такое вообще возможно с минимальным вмешательством. Паять умею. Схему БП прилагаю. Заранее спасибо за советы.
    • будет ли 60 Вт? Посмотрите схему Подключу моно джек, и его канал соединю с 2 - мя входами на унч
    • Именно так!  Таким способом дядюшки Ляо добиваются максимальной яркости при минимальном времени работы, убивая сразу двух зайцев: а) минимизируя количество потребных светодиодов и б) заставляют потребителя снова и снова покупать свою продукцию. 
    • Вот так должен выглядеть старый, оригинальный, неваренный оригинал, покупался в ЧиД. Есть и более новые такие Тошибы, тоже оригинал, но совсем совсем чуть-чуть отличается корпус и маркировка, у них на сколько помню, эти впадинки по краям чуть менее глубокие, но они тоже оригинальные. У меня такой, только 2SA1943 новодельный в ОМ 2.5 стоит вместе с таким как на фото старым 2SC5200, работают отлично. 
    • Какой  бред  сивой  кобылы!  Все радиолюбители  знают и есть  таблицы  по  которым  мы  видим  процент  КНИ и  отношение  амплитуды  гармоники к амплитуде  основного  сигнала!  Если  уровень  наибольшей гармоники   находиться на -20dB  относительно  пика  основного  сигнала, это 10%  КНИ. Вот  и вся  калибровка! Если  Спектроанализатор  мой  показывает   КНИ и  именно  такое  соотношение амплитуд ,я  точно  верю  ему. И твои  древние  спектроанализаторы  основаны  на этом  же принципе, индикатор  стрелочный  измеряет  амплитуду  основного тона 1 кГц,потом  режекторный   фильтр  вырезает  основной  тон,а  резонансный  контур  настраиваем на 2ю гармонику 2 кГц  и измеряем амплитуду 2й  гармоники и так  все гармоники  измеряем и по таблице  видим  каковы  КНИ  данного  сигнала! Компьютер  это  делает всё  программно! Смотрим скрин.
    • Так может зарядка "гуано" не? Сомневалка у вас отрастет с опытом в профильной работе, пока вам сомневаться нечем. Для особо необразованных пользователей и проверяющий органов выдающих сертификацию для устройств. Вы сегодня про где? см. п.1 ПЛАВДА? у меня допустим до сих пор в пользовании mi watch 3 заряжаемый от чего попало... Внутри. Но вам же по любому виднее... Ок. Это правильно. А проблема в чем?
    • Для увеличения sram у контроллера atmega128a, использую внешнюю sram. Код настройки контроллера на внешнюю sram: in r16, MCUCR              ; ori r16, 0xC0                 ; out MCUCR, r16            ; ldi r16, 0x04                  ; sts XMCRA, r16             ; ldi r16, 0x80                  ; sts XMCRA, r16             ; Возникает вопрос, адрес возврата из подпрограммы будет хранится по адресам 0x10FE и 0x10FF, то есть в конце оперативной памяти самого контроллера или по адресам 0xFFFE и 0xFFFF, то есть в конце внешней оперативной памяти???
×
×
  • Создать...