Микроконтроллеры | Помогите написать программу цифрового таймера |
|
---|---|---|
Ее еще нет. Я написал "сделаю". Ее здесь столько же, сколько в if (start) { } |
|
|
chav1961: #define BUTTON_START 0 Еще здесь мне непонятно для чего присваиваем значениям кнопок от 0 до 4. Для чего они? И еще вопросик, а нельзя ли сразу в дефайнах записать скан код кнопок, а потом уже внутри программы его как-то обрабатывать? |
|
|
Можно. Вместо 0, 1, 2, 3 и 4. Нумерация - совершенно произвольная, важно лишь, чтобы у двух разных кнопок не было одного и того же номера. Скан-коды в этом смысле ничем не хуже нулей, единиц и двоек. |
|
|
Хорошо, а как тогда сделать распознавание в? Вот пример из одной программы для сканирования кнопок (просто я рассматриваю разные варианты и разные источники) |
|
|
Код забавный Видимо, в этом случае часть кнопок виcела на порту B (линии 0..3) , а часть - на порту D (линии 5..7), кнопки были подключены на землю, а на линиях висели подтягивающие резисторы. Тому, кто это писал, нужно было получить лог.1 в битах, соответствующих нажатым кнопкам, для чего их, естественно, надо было проинвертировать (последний оператор), т.к. при нажатии кнопки сигнал на линии становится лог.0, а не лог.1. Вначале в байт результата заносится состояние четырех младших бит порта B (маска 0b00001111 выделяет только их), затем в полученный результат добавляется состояние трех старших битов порта D (маска 0b11100000 выделяет только их). А неиспользуемый бит 4 результата, чтобы он не "портил картину", заранее взводится в лог.1 (первый оператор), тогда при инверсии он даст лог.0 и все будут довольны (такие приемчики в литературе носят название "антиалгоритмов"). |
|
|
Мне в принципе важно было бы определить в программе нажата кнопка или нет, а какое состояние лог 0 или лог 1 мне нужно в программе я пока не знаю. По умолчанию согласно схемы я получаю лог 1 при ненажатой кнопке, так как порт будет подтянут внутренними резисторами, и лог 0 при нажатии кнопки. |
|
|
С кнопками, думаю, стоит посмотреть по тем топикам, которые Вам писали на первой странице. Это вопрос не по одному разу обсосали до костей. С таймером-то как раз часть самая легкая: запустил его - он и считает себе, никого не трогает |
|
|
PORTD=0xFF; Правильно я написал для порта D установить на порт D как вход подтянутый внутренними резисторами? |
|
|
Да. |
|
|
в моем случае должно быть Правильно? |
|
|
Форум про радио — сайт, посвященный обсуждению электроники, компьютеров и смежных тем. pro-radio.online | Обратная связь |
© 2003—2024 |