![]() | |
НПО Системы Безопасности (499)340-94-73 График работы: ПН-ПТ: 10:00-19:00 СБ-ВС: выходной ![]() ![]() |
Главная » Периодика » Безопасность 0 ... 64656667686970 ... 159 Под пороговым входным напряжением логического вентиля понимается входное напряжение, определяющее границу между состоянц, ем логической 1 и логического О (или наоборот). Величина этого порогового напряжения зависит от уровня напряжения питания Vdd. Для различных устройств пороговое напряжение может варьироваться в достаточно широких пределах. Так, для разработанных к настоящему времени подсемейств PIC-микроконтроллеров его величина заключается в диапазоне от 0,25 Vdd + 0,8 В до 0,48 Vdd. ИСПОЛЬЗОВАНИЕ ПАРАЛЛЕЛЬНОЙ ШИНЫ Параллельная шина может быть реализована, например, путем использования восьми линий порта PORTB и линий другого порта для реализации линий чтения RD и записи WR, как это показано на рис. 8.6. Микроконтроллер rd Входное устройство ![]() 8 входных линий 8 выходных линий 8 выходных линий Рис. 8.6 Реализация двунаправленной параллельной шины Ниже приводится фрагмент программы, который обеспечивает организацию доступа к внешним устройствам через параллельную
Запись через параллельную шину осуществляется следующим об-
ВЗАИМОДЕЙСТВИЕ С КНОПКАМИ Типовая схема, использующаяся для подключения кнопки или клавиши к линии порта, приведена на рис. 8.7. Кнопка (клавишный I переключатель) Ко входу микроконтроллера Рис. 8.7 Проаая схема подключения кнопки (клавиши) Главной причиной ошибки при считывании состояния кнопки является дребезг контактов. Первая макрокоманда (Debounce) позволяет исключить влияние дребезга контактов клавиши за счет повторного опроса через определенное время состояния линии порта, к которому клавиша под-•Иючена. Debounce macro HiLo,Port,Bit if HiLo Lo btfss else btfsc endif 9oto $ - 1 "ovlw InitDlay Клавиша нажата? Port, Bit Port, Bit Если да, ожидание момента отпускания. Ожидание в течение 20 мс, чтобы устранить дребезг контактов клавиши после ее отпускания. Ожидание нового нажатия клавиши и отпускания. Пропуск "малого" цикла, если параметр Debug не определен. Инкрементирование счетчика задержки Выполнение цикла, если результат не равен нулю. Соответствует количеству команд. movwf Dlay movlw О If HiLo == Lo btfss Port, Bit else btfss Port, Bit endif goto $ - 6 ifndef Debug addlw 1 btfsc STATUS, Z else nop nop endif decfsz Dlay goto $ - 5 endm Переменная InitDlay может определяться но формуле: TimeDlay = (((InitDlay - 1) 256) 7) / (Frequency / 4), откуда InitDlay = ((TimeDlay (Frequency / 4)) / (256 x 7)) + 1. Вторая макрокоманда, устраняющая влияние дребезга контактов клавиши, сходна с функцией Button, которая существует в языке Basic, разработанном фирмой Parallax. Button macro Port, Pin, Down, Delay, Rate, Variable, Target, Address local ButtonEnd incf Variable, w If ((Down == 0) и ((Down == 1) & btfsc Port, Pin else btfss Port, Pin endif cl rw movwf movlw subwf (Target == 0)) (Target == 1)) Инкрементирование переменной Variable, Проверка на 0. Проверка на 1. Variable Delay & 0x07F Variable, w Если клавиша не нажата, обнуляется W. Сохранение значения. Дребезг контактов клавиши устранен? 0 ... 64656667686970 ... 159 |