AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
27.10.2021, 12:33
|
#1
|
Прохожий
Регистрация: 27.10.2021
Сообщений: 5
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Работа с битам CVAVR
Доброго времени суток. На вашем форуме, как и в работе с CVAVR я пока новичок. Сдаю семестровую работу по учебе с интересным и не понятным заданием.
У меня есть переменная NUM = 0b10101010
Необходимо вывести её на семисегментный индикатор (8 ячеек)
Т.е. чтобы в 1 ячейке была 1, во второй 0 и т.д.
Динамическую индикацию я уже сделал, а как вот сам вывод настроить я не пойму.
Надеюсь на помощь.
|
|
|
|
27.10.2021, 13:17
|
#2
|
Почётный гражданин KAZUS.RU
Регистрация: 08.02.2005
Адрес: Минск, Беларусь
Сообщений: 8,131
Сказал спасибо: 2,814
Сказали Спасибо 2,735 раз(а) в 2,024 сообщении(ях)
|
Re: Работа с битам CVAVR
JUSTBUFFY, как я понимаю - каждый бит преобразовать в десятичное (шестнадцатеричное) число - получите количество переменных (или массив) по числу разрядов - в данном случае у Вас байт (8 переменных).
Потом по очереди в соответствии с алгоритмом динамической индикации и порядком подачи напряжения питания на разряды индикатора выводите эти переменные в порт.
|
|
|
Сказали "Спасибо" Yuri222
|
|
|
27.10.2021, 13:23
|
#3
|
Прохожий
Регистрация: 27.10.2021
Сообщений: 5
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Сообщение от Yuri222
|
…
|
Покопался в сети и нашел рабочий вариант.
num2 = (num ›› 0) & 1;
0 - номер бита
num - само значение
num2 - вывод
Есть еще один вопрос. Мне, допустим, надо, используя один лишь порт для кнопок, совершать битовые операции.
Ввел на одной половине 0101
На второй 1101
И хочу например сложить их и вывести. Как это сделать?
Последний раз редактировалось mike-y-k; 27.10.2021 в 23:14.
Причина: 6.6, 7.15
|
|
|
|
27.10.2021, 13:40
|
#4
|
Почётный гражданин KAZUS.RU
Регистрация: 08.02.2005
Адрес: Минск, Беларусь
Сообщений: 8,131
Сказал спасибо: 2,814
Сказали Спасибо 2,735 раз(а) в 2,024 сообщении(ях)
|
Re: Работа с битам CVAVR
Сообщение от JUSTBUFFY
|
Покопался в сети и нашел рабочий вариант.
num2 = (num ›› 0) & 1;
|
Дешифратор (для зажигания нужных сегментов) уже встроен в индикатор?
Или контролер должен все же сам выдавать правильный набор бит для зажигания соответствующих сегментов, отображающих нужное число?
|
|
|
|
27.10.2021, 15:03
|
#5
|
Прохожий
Регистрация: 27.10.2021
Сообщений: 5
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Работа с битам CVAVR
Сообщение от Yuri222
|
Дешифратор (для зажигания нужных сегментов) уже встроен в индикатор?
Или контролер должен все же сам выдавать правильный набор бит для зажигания соответствующих сегментов, отображающих нужное число?
|
Контроллер сам выдает правильный набор бит, мне не нужно добавлять слишком много компонентов, т.к. этот код не для реального МК, только симуляция.
|
|
|
|
27.10.2021, 15:07
|
#6
|
Почётный гражданин KAZUS.RU
Регистрация: 15.11.2010
Сообщений: 2,379
Сказал спасибо: 338
Сказали Спасибо 328 раз(а) в 253 сообщении(ях)
|
Re: Работа с битам CVAVR
Сообщение от JUSTBUFFY
|
И хочу например сложить их и вывести. Как это сделать?
|
может, учебник по булевой алгебре почитать, а не просить нас его пересказывать?
|
|
|
|
27.10.2021, 15:14
|
#7
|
Прохожий
Регистрация: 27.10.2021
Сообщений: 5
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Работа с битам CVAVR
Сообщение от parovoZZ
|
может, учебник по булевой алгебре почитать, а не просить нас его пересказывать?
|
Я не прошу рассказать как складывать и умножать)
Я прошу рассказать как разделить вход.
Нужно, например, 01101100 разделить на две части, т.е. 0110 и 1100 и уже отдельно взаимодействовать.
|
|
|
|
27.10.2021, 15:21
|
#8
|
Почётный гражданин KAZUS.RU
Регистрация: 08.02.2005
Адрес: Минск, Беларусь
Сообщений: 8,131
Сказал спасибо: 2,814
Сказали Спасибо 2,735 раз(а) в 2,024 сообщении(ях)
|
Re: Работа с битам CVAVR
Сообщение от JUSTBUFFY
|
01101100 разделить на две части, т.е. 0110 и 1100 и уже отдельно взаимодействовать
|
Так введите внутрь котроллера все значение с этого порта, а потом уже делите на две части (две переменных) - ну, например, сдвигами и маскированием лишних разрядов.
Или сразу вводите с одного порта два раза соответствующие половинки.
|
|
|
|
27.10.2021, 15:32
|
#9
|
Прохожий
Регистрация: 27.10.2021
Сообщений: 5
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Работа с битам CVAVR
Сообщение от Yuri222
|
Или сразу вводите с одного порта два раза соответствующие половинки.
|
Это как? Просто не особо понимаю.
|
|
|
|
27.10.2021, 15:38
|
#10
|
Почётный гражданин KAZUS.RU
Регистрация: 15.11.2010
Сообщений: 2,379
Сказал спасибо: 338
Сказали Спасибо 328 раз(а) в 253 сообщении(ях)
|
Сообщение от JUSTBUFFY
|
Я не прошу рассказать как складывать и умножать)
|
а вот если бы почитал, то и не писал бы этот бред.
Булева алгебра - это не только сложение и умножение, а много чего ещё.
кстати, а на хер здесь вообще симулятор? Всё можно сделать в speedcrunch ну или даже в виндовом кранкукуляторе из десятки.
Последний раз редактировалось mike-y-k; 27.10.2021 в 23:14.
Причина: 6.6
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 18:44.
|
|