2 / 2 / 2
Регистрация: 05.09.2018
Сообщений: 173
|
|||||||||||
1 | |||||||||||
Чтение состояния портов09.11.2023, 12:12. Показов 643. Ответов 9
Всем привет!
Встал в ступор с достаточно простой задачкой. Контроллер Atmega32, работаю в Atmel Studio. На портах PA0-PA5 кнопки, подтянутые через резисторы к 5В. Раз в 5 мс срабатывает прерывание, по которому я хочу произвести опрос состояния портов. И если я делаю опрос непосредственно одного бита, то всё работает:
Понятно, что есть вариант через ИЛИ сравнить PINA с конкретным битом, но неужели нельзя сделать эту процедуру разом?
0
|
09.11.2023, 12:12 | |
Ответы с готовыми решениями:
9
Сканер состояния портов IAR ARM: как создать лог состояния портов (I/O Log File)??? Чтение и запись состояния CheckBox в SQLite Встраивание типа и чтение его состояния из вмещающего типа Смесь двух газов нагревается при постоянном давлении из состояния P,V1,T1 до состояния P,V2,T2 |
2128 / 1211 / 503
Регистрация: 11.10.2018
Сообщений: 6,107
|
|
09.11.2023, 12:44 | 2 |
В зависимости от задачи: хоть одну, хоть все нажимайте. Какая у Вас задача?
1
|
2 / 2 / 2
Регистрация: 05.09.2018
Сообщений: 173
|
||||||
09.11.2023, 12:58 [ТС] | 3 | |||||
Мне нужно, чтобы даже при одной нажатой кнопки выполнилось условие if -True, т.е:
0
|
2128 / 1211 / 503
Регистрация: 11.10.2018
Сообщений: 6,107
|
|
09.11.2023, 15:07 | 4 |
Ну, как вариант, проверять последовательно кнопки и использовать булевские переменные и потом смотреть, если хоть одна переменная true, то это кнопка нажата и условие if будет по ИЛИ(оператор ||).
Добавлено через 3 минуты Еще вариант: цикл for и бегущая единица от 0 бита в байте до 5 бита включительно. Использовать оператор << - сдвиг бита на определенное количество бит. Если по побитовому И(оператор &) будут все 1, то значит ни одна кнопка не нажата. Если хоть одна кнопка нажата, то по if-then.
1
|
3351 / 2446 / 558
Регистрация: 11.09.2009
Сообщений: 8,882
|
|
09.11.2023, 17:20 | 5 |
Зачем так сложно? Маска и if > 0.
"Нажата любая кнопка" - это отработать по ИЛИ.
0
|
Модератор
8950 / 6716 / 921
Регистрация: 14.02.2011
Сообщений: 23,704
|
||||||
09.11.2023, 17:40 | 6 | |||||
Сообщение было отмечено iaz5 как решение
Решение
есть пропиши все комбинации(64 ) и используй switch
Добавлено через 4 минуты
1
|
2128 / 1211 / 503
Регистрация: 11.10.2018
Сообщений: 6,107
|
||||||
09.11.2023, 18:09 | 7 | |||||
1
|
2 / 2 / 2
Регистрация: 05.09.2018
Сообщений: 173
|
|
10.11.2023, 05:54 [ТС] | 8 |
0
|
3351 / 2446 / 558
Регистрация: 11.09.2009
Сообщений: 8,882
|
|
10.11.2023, 07:02 | 9 |
1
|
Модератор
8950 / 6716 / 921
Регистрация: 14.02.2011
Сообщений: 23,704
|
|
10.11.2023, 08:11 | 10 |
так "Правило де Моргана" однако https://ru.wikipedia.org/wiki/Законы_де_Моргана
1
|
10.11.2023, 08:11 | |
10.11.2023, 08:11 | |
Помогаю со студенческими работами здесь
10
Графы: найти все состояния, которые являются достижимыми из заданного состояния QStateMachine: возможность создания недетерминированного КА с переходами из одного состояния в разные состояния Устранить недостижимые состояния и исключить эквивалентные состояния конечного автомата Настройка портов роутера. Открытие портов и чем это чревато Создание нового state состояния в корневом компоненте зависящим от состояния другого элемента Открыть текстовый файл в необходимом режиме (на чтение, на чтение и запись, на добавление) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |