Проверил код
Код
void main (void)
{
podgot();
RC4 = 0;
if (PORTA & 1)
PORTB = arr_seg [0];
else
PORTB = arr_seg [1];
}
при отпущенной кнопке на индикаторе 0, при нажатой - 1.
т.е.
Код
ADCON1 = 0x07;
работает как ожидалось.
Цитата
- с какой целью Вы задействовали TMR1?
после прохождения единственного "0" при нажатии, на отпускание кнопки я выделил 0.3 с.
Именно это время отсчитывает TMR1.
Цитата
- почему проверяете TMR2IF?
да, это не флаг по переполнению TMR1. Спасибо за подсказку!
Цитата
- где, по Вашему мнению, в цикле выполняется проверка кнопки?
командой
Код
if((knopka_prev == 0) && (DDF == 0))
Цитата
чем отличается "while (DDF = 1)" от "while (DDF == 1)", и к каким последствиям приводит "while (DDF = 1)"
"=" - используется в операции присваивания
"==" - операция отношения используются для проверки равенства и неравенства выражений. По логике, надо "while (DDF == 1)"
Цитата
добавьте к рыбе в посте #9 свою инициализацию из исходной программы (не счёл нужным её повторять или править несуразности, не влияющие на скорость полёта) и проверку индекса массива, предложенную sergeeff, и будет Вам рабочий код,
а менее универсально, но проще можно?
Код
if (time1 > 9)
{
time1 = 0;
}
Сообщение отредактировал loghir - May 12 2011, 15:28