НПО Системы Безопасности
(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

Реализация двунаправленной параллельной шины

Ниже приводится фрагмент программы, который обеспечивает организацию доступа к внешним устройствам через параллельную

шину:

STATUS, RPO

Перевод порта PORTB в режим

данных.

movlw

OxOFF

movwf

TRISB " 0x080

STATUS, RPO

PORTA, 0

.RD = 0.

call

Dlay

Ожидание, пока данные станут

достоверными.

movf

PORTB, w

Считывание данных.

PORTA, 0

Завершение чтения ( RD = 1).



Запись через параллельную шину осуществляется следующим об-

разом:

STATUS, RPO

clrf

TRIS В " 0x080

; Конфигурирование порта PORTB.

STATUS, RPO

PORTA, 1

; Разрешение выдачи данных ( WR1 = 0)

fflOVWf

PORTB

call

Dlay

; Задержка, пока данные не станут ; достоверными.

PORTA

; WR1 = 1.

ВЗАИМОДЕЙСТВИЕ С КНОПКАМИ

Типовая схема, использующаяся для подключения кнопки или клавиши к линии порта, приведена на рис. 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