НПО Системы Безопасности
(499)340-94-73 График работы:
ПН-ПТ: 10:00-19:00
СБ-ВС: выходной

Главная » Периодика » Безопасность

0 ... 71727374757677 ... 159


bsf Dlay, DlayieOBitl

if (DlayieOBit2 = -1)

bsf endif decfsz goto andlw btfsc call return LCDChar movwf bsf if (Freq

Dlay, DlayieOBit2

Dlay, f $ - 1 OxOFC STATUS, Dlay5

Задержка 5 мс

Передача символа на дисплей

DataPort RSPort, RSPin > 8000000) if (Freq < 16000000) nop

Возможно, потребуется задержка

else

goto endif endif

bsf if (Freq > if (Freq <

nop else

goto endif endif

If (DlayieOBit

bsf endif

decfsz

goto

retu rn LCDInit call call call movlw call call movlw call movlw call movlw

EPort, 8000000) 16000000)

EPin

Возможно, потребуется задержка

EPort, Dlay, - 2 = Dlay,

Dlay, $ - 1

EPin DlayieOBitl -1)

Dlay160Bit2

Задержка 160 мкс

Dlay5

DlayS

Dlay5

0x030

LCDIns

DlayS

0x030

LCDIns

0x030

LCDIns

0x038

Инициализация (8 разрядов) Ожидание в течение 15 мс

Передача команды сброса

Задание формата интерфейса



call

LCDIns

movlw

0x010

; Выключение дисплея.

call

LCDIns

movlw

0x001

; Стирание памяти дисплея.

call

LCDIns

movlw

0x006

; Задание перемещения курсора

call

LCDIns

movlw

OxOOE

; Включение дисплея/курсора.

call

LCDIns

retu rn

endm

Макрокоманда lcd8p0ii является несколько более сложной по сравнению с макрокомандой lcd8. Вместо задания временных задержек фиксированной величины программные приложения осуществляют периодический опрос жидкокристаллического дисплея, чтобы более точно зарегистрировать момент завершения выполнения соответствующей операции, после чего исполнение программы может быть продолжено. Для этого необходимо предварительно задать режим ввода данных (параметр DataPort) и в дальнейшем периодически проверять состояние бита 7 порта ввода/вывода, стро-бируя линию Е (когда сброшен бит RS и установлен бит RW). Последовательность кодов макрокоманды lcd8p0ii приведена ниже:

LDC8P0II Macro DataPort, Eport, Ерш, RSPort, RSPin,

RWPort, RWPin, Freq Variable DlaySValue, Dlay160Value, Dlay160Bit1 = -1,

Dlay160Bit2 = -1, BitCount = 0 Variable Value = 128, Bit = 7 Errorlevel 0, -224 DlaySValue = ((5007 Dlay160Value = (163 while (Bit > = 0

(Freq/1000)/4000)/7) + 256 (Freq/1000)/4000)/3

; Определение числа битов и их ; позиции в переменной Dlay160Value If ((Dlay160Value & Value) != 0)

; Установка старшего бита.

If (Dlay160Bit1 == -1) Dlay160Bit1 = Bit else

If (Dlay160Bit2 = = -1) Dlay160Bit2 = Bit endif endif

BitCount = BitCount + 1

endif Value = Value >> 1 Bit= Bit - 1



endw

if (BitCount > 2) ;

if ((DlayieOBitl - 1) == DlayieOB 0lay160Bit1 = DlayieOBitl + 1 ;

Dlay160Bit2 = -1

Необходимы максимум два бита. it2)

Сдвиг на 1, вверх. Удаление второго бита.

else

DIay160Bit2 = DlayieOBit2 + 1

endif

endif

DlayS

; Задержка 5 мс.

movlw

(DlaySValue &

OxOFFOO)

>> 8

movwf

Dlay

movlw

DlaySValue &

OxOF, f

subwf

Dlay, w

xorlw

OxOFF

addwf

Dlay, w

btfsc

STATUS, Z

decfsz

Dlay, f

goto

$ - 5

return

LCDPORTInit

; Инициализация портов.

STATUS,

; Только для среднего

: подсемейства.

movlw

0x000

movwf

DataPort

EPort, EPin

RSPort, RSPin

RWPort, RWPin

STATUS, RPO

EPort, Epin

RSPort, RSPin

RWPort, RWPin

retu rn

LCDIns

movwf

Dlay

; Передача команды на дисплей

movlw

OxOFF

, Чтение флага BF.

tris

DataPort

RSPort, RSPin

RWPort. RWPin

; Чтение регистра команд

goto

$ + 1

EPort, EPin

movf

DataPort, w

; Чтение значения DataPort.

EPort, EPin

andlw

0x080

, Старший бит установлен

btfss

STATUS, Z



0 ... 71727374757677 ... 159