Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
27.04.2004, 13:31
|
|
Olegas
Гость
|
Помогите с кнопками PIC16f84
Уважаемые спецы, помогите.
Пытаюсь сделать программу, чтобы по нажатию кнопки, подключенной к AO (резистор 22к на +, и кнопка на -.) включались светодиоды B'01010101'
потом при повторном нажатии гасились.
За основу взял пример кода http://www.kazus.ru/modules.php?name...article&sid=20
пытаюсь модифицировать. Прицепил кнопку, но программа упорно не видит единицу на А0. Несморя на
;Инициализация порта А
BCF STATUS,RP ;Выбор банка 0
CLRF CNTRLPORT ;Очистить регистр CNTRLPORT
MOVLW INITA ;Загpузить B'111111111' в pегистp W
BSF STATUS,RP ;Выбор банка 1
MOVWF TRISA ;Все разряды порта А установить как входы
КАК ГРАМОТНО НАПИСАТЬ КОД ОТСЛЕЖИВАНИЯ НАЖАТИЯ КНОПКИ,
КАК ГРАМОТНО ИНИЦИАЛИЗИРОВАТЬ ПОРТ А НА ВВОД.
ПРОШУ ПОМОЧЬ БЕЗ ЛИРИЧЕСКИХ ОТСТУПЛЕНИЙ ТИПА КНИГИ ЧИТАЙ (ЧИТАЮ) И УМНИЧАНИЯ.
Прошу привести "разжеванный" блок кода.
Спасибо.
|
|
|
|
27.04.2004, 20:25
|
|
Администратор
Регистрация: 10.05.2003
Сообщений: 1,739
Сказал спасибо: 497
Сказали Спасибо 2,686 раз(а) в 595 сообщении(ях)
|
MOVLW INITA ; - а где запись в переменную INITA значения '11111' ?
|
|
|
Сказали "Спасибо" mikesmith
|
|
|
10.06.2004, 20:31
|
|
Временная регистрация
Регистрация: 26.12.2003
Сообщений: 49
Сказал спасибо: 0
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
|
Не видит единицу
В пике легче сканировать нулём а не единицей
|
|
|
|
11.06.2004, 11:48
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.05.2003
Адрес: Москва
Сообщений: 2,528
Сказал спасибо: 737
Сказали Спасибо 1,927 раз(а) в 799 сообщении(ях)
|
я вот так делал - мож не совсем правильно, но работает.
Код:
|
|
____|____
|_________| Инициализация
|
|--------›|‹-------|
| ____|____ |
| |__A0=0___|---| Проверка нажатия
| да | нет
| |
| ____|____
| |_________| Задержка на дребезг
| | контактов
| |
|нет ____|____
|----|__A0=0___| помеха
да |
|
|‹-------|
____|____ |
|__A0=1___|---| Ждем, пока не отпустят
да | нет кнопку
|
____|____
|_________| Кнопка была нажата, обрабатываем
| нажатие |
в принципе, проверку помехи можно убрать, если сделать задержку побольше.
__________________
Опыт - это школа, в которой человек узнает, каким дураком он был раньше.
|
|
|
|
11.06.2004, 17:18
|
|
Временная регистрация
Регистрация: 26.12.2003
Сообщений: 49
Сказал спасибо: 0
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
|
Теоретически всё верно, но лучше убирать дребезг не ожиданием а несколькими опросами, и принятием решения на основе мажоритарности, так и ресурсы освобождаются для других дел. Незачем попусту крутится на одном месте. а нажатие быстрее 0,1 сек это верный дребезг. В то время как 100 тыс микросекунд ценный резерв вермени. Да кстати что это за выпад: не знаешь закон Ома сиди дома ? Для меня клавиатура давно пройденный этап , и мой совет на счёт 0 можно, в принципе ,если человек вдумчиво читает доки, найти и самому.
|
|
|
|
11.06.2004, 23:41
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.05.2003
Адрес: Москва
Сообщений: 2,528
Сказал спасибо: 737
Сказали Спасибо 1,927 раз(а) в 799 сообщении(ях)
|
Сообщение от walrus
|
ресурсы освобождаются для других дел. Незачем попусту крутится на одном месте. а нажатие быстрее 0,1 сек это верный дребезг. В то время как 100 тыс микросекунд ценный резерв вермени.
|
у меня основной цикл был минимум 500 мс, поэтому задержка на несколько мс незаметна. Впрочем, и на на несколько десятков мс тоже
Сообщение от walrus
|
что это за выпад: не знаешь закон Ома сиди дома ?
|
эте не выпад, это подпись Если ТЕБЯ ЛИЧНО не устраивает, могу поменять. Хех, только новая не лучше будет
__________________
Опыт - это школа, в которой человек узнает, каким дураком он был раньше.
|
|
|
|
12.06.2004, 14:48
|
|
Временная регистрация
Регистрация: 26.12.2003
Сообщений: 49
Сказал спасибо: 0
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
|
Тогда вообще всё легко и чудесно крутишь основной цикл, время от времени поглядываеш на кнопки, если есть два нажатия подряд, то это точно палец человека а не дребезг. Лучше три нажития оптимальное число для мажоритарных методов отбора.
|
|
|
|
12.06.2004, 21:01
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.05.2003
Адрес: Москва
Сообщений: 2,528
Сказал спасибо: 737
Сказали Спасибо 1,927 раз(а) в 799 сообщении(ях)
|
ну это слишком уже Все зависит от требований. Если все пофиг, то и моя схема пойдет А мажор - это кнечно, хорошо... А все равно на дребезг задержку делать придется.... И не такая уж маленькая она. А можно и не делать - если в кнопке микруха стоит магнитоуправляемая
ИМХО: если возможности позволяют, так лучше вообще в прерывании обрабатывать нажатия.
З.Ы. Тов. Olegas только начал, как я понимаю (врочем, я не намного от этого ушел), и ему общий принцип нужен.
__________________
Опыт - это школа, в которой человек узнает, каким дураком он был раньше.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 20:50.
|
|