![]() | |
НПО Системы Безопасности (499)340-94-73 График работы: ПН-ПТ: 10:00-19:00 СБ-ВС: выходной ![]() ![]() |
Главная » Периодика » Безопасность 0 ... 76777879808182 ... 159 DlaySValue = ((&007 DlayieoValue = (163 while (Bit > = 0 If ((DlayieOValue & Value) if (DlayieOBitl == -1) DlayieOBitl = Bit else If (Dlayie0Bit2 = - -1) Dlay160Bit2 = Bit endif endif BitCount = BitCount + 1 endif Value = Value >> 1 Bit= Bit - 1 endw If (BitCount > 2) If ((DlayieOBitl - 1) == (Freq/1000)/4000)/7) + 256 (Freq/1000)/4000)/3 , Определение числа битов , и их позиций для переменной DlayieOValue != 0) Установка старшего бита ; Необходимы максимум два бита Dlayie0Bit2)
bcf STATUS, RPO bcf EPort, EPin bcf RSPort, RSPin bcf RWPort, RWPin return LCOIns movwf LCDTemp movlw 6 movwf Dlay bsf ClockPort, ClockPin bcf ClockPort, ClockPin decfsz Dlay, f goto $ - 3 movwf Dlay movf LCDTemp, w swapf LCDTemp, f bsf LCDTemp, 5 bcf LCDTemp, 4 bcf DataPort, DataPin btfsc LCDTemp, 5 bsf DataPort, DataPin bsf ClockPort, ClockPin bcf ClockPort, ClockPin rlf LCDTemp, f decfsz Dlay, f goto $ - 7 bsf DataPort, DataPin If (Freq > 8000000) If (Freq < 16000000) nop else goto $ + 1 endif endif bcf bsf DataPort, DataPin Dlay, 2 bsf Dlay, 1 bsf ClockPort, ClockPin decfsz Dlay, f goto $ - 3 movwf LCDTemp bsf Dlay, 2 Передача команды на дисплей Сохранение значения Обнуление регистра сдвига Содержимое регистра w все еще равно 6. Сдвиг старших 4 битов. Корректировка значения LCDTemp для сдвига. Это бит RS. Сдвиг на выход. 5 - текущий MSB Выдача следующего старшего бита. Возможно, потребуется задержка. Значение Dlay для сдвига равно 6. Обнуление регистра сдвига Сдвиг младшего полубайта. Значение Dlay для сдвига равно 6 bsf Dlay, 1 bsf LCDTemp, 5 bcf LCDTemp, 4 bcf DataPort, DataPin btfsc LCDTemp, 5 bsf DataPort, DataPin bsf ClockPort, ClockPin bcf ClockPort, ClockPin rlf LCDTemp, f decfsz Dlay, f goto $ - 7 bsf DataPort, DataPin If (Freq > 8000000) If (Freq < 16000000) nop else goto $ + 1 endif endif bcf DataPort, DataPin bsf Dlay, Dlay160Bit1 , If (Dlay160Bit2 1= -1) bsf Dlay, Dlay160Bit2 endif decfsz Dlay, f goto Корректировка значения LCDTemp для сдвига Это бит RS Сдвиг всех разрядов 5 - текущий MSB andlw OxOFC btfsc STATUS, Z call DlayS return LCDChar movwf LCDTemp movlw 6 movwf Dlay Возможно, потребуется задержка Задержка 160 мкс Для задержки 5 мс Передача символа на дисплей Сохранение значения Обнуление регистра сдвига bsf ClockPort, ClockPin bcf ClockPort, ClockPin decfsz Dlay, f goto $ - 3 movwf Dlay movf LCDTemp w swapf LCDTemp, f bsf LCDTemp, 5 bsf LCDTemp, 4 bcf DataPort, DataPin , btfsc LCDTemp, 5 bsf DataPort, DataPin Регистр w еще равен 6 Сдвиг старших 4 битов Корректировка значения LCDTemp для сдвига Это бит RS Выдача следующего старшего бита 0 ... 76777879808182 ... 159 |