Микроконтроллеры | Ликбез по программированию PIC |
|
---|---|---|
picmaniac: нежелательно устанавливать/сбрасывать биты командами bsf/bcf |
|
|
Это относится только к регистрам портов. |
|
|
picmaniac: Splav56, предлагаю проиграть ситуацию по предложенному графу. Вначале все кнопки отпущены, затем нажмем кн.1, а затем (не отпуская кн.1) еще и кн.2. В каком состоянии окажемся? В состоянии "Запрет" - функция воздействия Х5 (нажато 2 и более кнопок), отклик Y5 (погасить все с/д). |
|
|
Splav56: В состоянии "Запрет" - функция воздействия Х5 (нажато 2 и более кнопок), отклик Y5 (погасить все с/д). |
|
|
gan: мало того, надо продумать насчёт дребезга Да помним мы про дребезг контактов. В программе будет введена задержка на 20 мс, но на данном этапе рассмотрение таких мелочей обычно не делают. Включим этот эпизод в полный алгоритм. |
|
|
Вот и алгоритм: http://b.foto.radikal.ru/0601/da3ce1b68ea2.gif PS: в условиях проверки на нажатие клавиш нужно RB3:RB0=Fh заменить на RB0=1. Этого достаточно. |
|
|
Всё равно не пойдёт. Нажали кнопку, первый раз заходим на условие RB=1, всё нормально, зажигаем с/д. На следующем цикле кнопку отпустить не успеем, опять попадаем на это же условие RB=0, тушим светодиоды, в следующем цикле опять поджигаем и т.д. нечётный цикл- зажигаем, чётный- гасим (пока нажата кнопка). |
|
|
Народ, спасибо за обсуждение, я тут всё копирую, печатаю, изучаю... Один вопрос по схеме... Там входы PIC-a (RB4-RB7) не нужно ли "подтянуть" к "+"? Или это делается программно? А ещё, дребезг контактов надо ли учитывать или как? |
|
|
Левон: не нужно ли "подтянуть" к "+"? |
|
|
gan: Всё равно не пойдёт. Нажали кнопку, первый раз заходим на условие RB=1, всё нормально, зажигаем с/д. На следующем цикле кнопку отпустить не успеем, опять попадаем на это же условие RB=0, тушим светодиоды, в следующем цикле опять поджигаем и т.д. нечётный цикл- зажигаем, чётный- гасим (пока нажата кнопка). gan где Вы такое увидели??? И что такое RB=1 и RB=0??? Нет таких. Есть конкретно 8 бит порта В: RB0 - RB7 из которых при проверке нас интересует только бит RB0, т.к. он устанавливается в ноль после обработки нажатия любой кнопки! Пишите, пожалуйста точнее! Левон: Один вопрос по схеме... Там входы PIC-a (RB4-RB7) не нужно ли "подтянуть" к "+"? Или это делается программно? А ещё, дребезг контактов надо ли учитывать или как? Левон, скачайте алгоритм. Подтягивающие резисторы включаются программно, Вы правильно заметили. Там в пятом сверху прямоугольнике значится: Включение подтягивающих резисторов порта В. А дребезг контактов (так всеми почему-то любимый и уважаемый , все о нем беспокоятся устраняется задержкой в 20 мс, введенной после нажатия каждой клавиши. Алгоритм опроса кнопок в MPLAB не прогонял, т.к. во-первых подпрограмма еще не написана, а во-вторых и сам MPLAB 5-й версии я еще не установил. Поэтому в алгоритме вполне могут быть ошибки и неточности, которые надо будет устранить. Именно для этого мы здесь и ведем обсуждение. Вопрос по графу: всех устраивает опубликованный вариант? Будем утверждать или еще уточнять? Правда мне совсем непонятно, облегчает-ли граф составление алгоритма? По-моему граф построить труднее, чем алгоритм. . Может быть в дальнейшем обойдемся без него, чтобы не забивать мозги? |
|
|
Форум про радио — сайт, посвященный обсуждению электроники, компьютеров и смежных тем. pro-radio.online | Обратная связь |
© 2003—2024 |