Перейти к содержанию

Виктор Юманов

Members
  • Постов

    10
  • Зарегистрирован

  • Посещение

Информация о Виктор Юманов

  • День рождения 04.11.1992

Информация

  • Пол
    Мужчина

Электроника

  • Стаж в электронике
    Менее года

Достижения Виктор Юманов

Новичок

Новичок (1/14)

  • 10 постов на форуме
  • Неделя на форуме
  • Месяц на форуме
  • Год на форуме

Последние значки

0

Репутация

  1. "Открывать страшные тайны" когда человек уже сам во всем разобрался... Надеюсь это действительно тешит ваше самолюбие.
  2. Проблема оказалась в операторе "~", использованном для инверсии показаний с пинов RBx, переменные типа bool при этом принимали значение 11111110, видимо соответствующие пинам переменные RBx имеют 8 разрядов. После замены на "!" все заработало.
  3. Откройте ассемблерный файл, который формируется компилятором, и посмотрите, насколько "нормально" такая строка работает. while(1) // основной цикл { // признаки нажатия кнопок на предыдущем такте PR_plus_pr = PR_plus; // кнопка 1 PR_minus_pr = PR_minus; // кнопка 2 PR_switch_pr = PR_switch; // кнопка 3 PR_start_pr = PR_start; // кнопка 7 PR_pause_pr = PR_pause; // кнопка 8 // признаки нажатия кнопок PR_plus = ~RB0; // кнопка 1 PR_minus = ~RB1; // кнопка 2 PR_switch = ~RB2; // кнопка 3 PR_start = ~RB6; // кнопка 7 PR_pause = ~RB7; // кнопка 8 // вывод - тест RC3 = PR_switch_pr; RC4 = ~PR_switch_pr; RC5 = PR_switch; RC6 = PR_mode == 0; RC7 = PR_param; // смена регулируемого параметра if (PR_switch && !PR_switch_pr) { if (PR_mode == 0) { PR_param = !PR_param; } } }; От этого уже избавился, но до сих пор не работает: условие для смены значения PR_param выполняется. На все пины RB всю дорогу поступают единицы. Начальные значения признаков нажатия кнопок - нули. При моделировании в Proteus горят диоды, подключенные к RC4, RC6 и RC7...
  4. тем не менее с PR_mode (который задан типом char) это работает нормально а в каких библиотеках можно найти подобные функции?
  5. да, я такой логикой и пользуюсь, строка с задержкой тут случайно оказалась?
  6. так понятнее, при оптимизации подумаю над этим, спасибо вывожу на светодиоды значения анализируемые в условии
  7. нет то есть питание, подключенное через резистор, это не оно? пины читаются, уже моргал диодами по нажатиям кнопок
  8. Всем привет, устал биться головой об стену, прошу помощи. Программирую контроллер 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; };
×
×
  • Создать...