Всем привет, устал биться головой об стену, прошу помощи.
Программирую контроллер PIC16F887, нужно создать переменную с признаком регулируемого параметра (задал глобальную переменную bool PR_param = 0;), который менялся бы по нажатию кнопки присоединенной к пину RB2.
Чтобы при удержании кнопки PR_param поменялся только один раз ввожу условие
if (PR_switch && (PR_switch_pr == 0) && (PR_mode == 0))
В конце основного цикла записываю в память значение признаков нажатия кнопок, чтобы использовать их на следующем шаге (для определения изменения состояния кнопки). Для контроля переменных при моделировании в Proteus вывожу на светодиоды интересующие меня переменные.
Проблема в том, что значение PR_switch_pr никак не меняется при нажатии кнопки, в чем тут может быть дело?
Кусок программы:
while(1) // основной цикл
{
// контроль нажатия кнопки 1
PR_plus = ~RB0;
// контроль нажатия кнопки 2
PR_minus = ~RB1;
// контроль нажатия кнопки 3
PR_switch = ~RB2;
// контроль нажатия кнопки 3
PR_start = ~RB6;
// контроль нажатия кнопки 3
PR_pause = ~RB7;
// смена регулируемого параметра
if (PR_switch && (PR_switch_pr == 0) && (PR_mode == 0)) {
if (PR_param) {
PR_param = 0;
}
else PR_param = 1;
}
// запись текущих значений в память
PR_plus_pr = PR_plus;
PR_minus_pr = PR_minus;
PR_switch_pr = PR_switch;
PR_start_pr = PR_start;
PR_pause_pr = PR_pause;
// вывод - тест
RC4 = PR_switch_pr == 0;
RC5 = PR_switch;
RC6 = PR_mode == 0;
RC7 = PR_param == 0;
};