![]() | |
НПО Системы Безопасности (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 мс Передача команды сброса Задание формата интерфейса
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, вверх. Удаление второго бита.
0 ... 71727374757677 ... 159 |