Добрый день.
Надеюсь я не исчерпал свою квоту на глупые вопросы.У меня возникло очередное затруднение, скорее всего из специфичности самодельного девелопментборда (как оказалось этот термин больше подходит, чем "kit").
К третьему порту (Р3) по пинам (3.1, 3.2, 3.3, 3.4) подключен LCD (работает

). Но! Для экономии портов на эти же пины ( 3.1 - 3.4) посадили кнопки (обычные кнопки) и с помощью контрольного пина 3.0 так сказать проверяется нажата ли кнопка или нет.
Вот так вот примерно
http://i023.radikal.ru/1111/b8/80306427b39b.jpg.
Опрашивать получается - светодиод при нажатии загорается.
Вот такой вот бесконечный цикл для проверки.
Код: Выделить всё
while (1)
{
P3MDOUT = 0; //определение порта на вход
B1 = 0;
B2 = 1; //опрос именно этой кнопки!
B3 = 0;
B4 = 0;
if (B0 == 1) //если кнопка нажата
{Delay(1000);} //проверка на
if (B0 == 1) //дребезг
{LED1 = 1;}
else {LED1 = 0;}
}
Но если подставить вместо "LED1 = 1;" вывод на экран произвольного текста при нажатии, то ничего хорошего не получается.... выводится только то что стоит в else (я так понимаю какой то "конфликт" - ведь один же порт используется). У меня даже в процессе экспериментов с кодом при нажатии длительном бледная буква "й" пробегала (один раз) по верхней строке справа налево (а ведь это не планировалось

) и при этом на той же верхней строке более ярко был текст. К сожалению текст программы утерян..
Как мне разобраться с кнопкой? К примеру сделать счетчик нажатий кнопки. Нажимаешь - 1, еще раз - 2 на экране единицу сменяет двойка...как то так. Я понял только то что надо использовать "флаги" - глобальные переменные которые сохраняют текущее и предыдущее состояния кнопки. но пока это не дало результатов....