.
;-------- Прописка регистров -------- Cblock Temp ; Temp_1 Reg_1 ; LCD endc ;---------------Присвоение------------ #define E LATC,7 ; #define RS LATC,6 ; #define _RS Temp_1,6 ; ;------------------------------------- org 0 ; nop ; goto START ; ;---------------Инициализация-------- START movlw 0h ; =Настройка PORTC movwf TRISC ; мл.4 бита на выход, остальные на вход.= clrf TRISB ; Настройка PORTB на выход ;------------------------------------- call Init_LCD ; Иницилизация в 4 битном режиме. PROG call Text_R ; Пример вывода текста. bra PROG ; Снова. ;--------------------------------------- ; Инициализация LCD в 4-х битный режим ;--------------------------------------- Init_LCD call Delay_400 ; Задержка 40мс. movlw .3 ; Три прохода movwf Temp ; Impul movlw B'00000011'; Запись команды movwf PORTC ; bsf E ; nop ; bcf E ; call Delay_40 ; Задержка 40 мкс decfsz Temp ; bra Impul ; movlw B'00000010' ; 4 битовый режим movwf PORTC ; bsf E ; nop ; bcf E ; call Delay_40 ; Задержка 40 мкс movlw B'00101000' ; 4бит, 2 строки, 0таб ; call ZAP_Adr ; Вызов ПП записи в LCD movlw B'00001000' ; Выкл. дисплей и выкл курсор call ZAP_Adr ; Вызов ПП записи в LCD movlw B'00000110' ; Запрет сдвига инкримен call ZAP_Adr ; Вызов ПП записи в LCD movlw B'00001100' ; Dкл. дисплей и выкл курсор call ZAP_Adr ; Вызов ПП записи в LCD return ;------------------------------------- ; Задержка 40 мс ;------------------------------------- Delay_400 movlw .10 ; movwf Temp ; call Delay_40 ; decfsz Temp ; bra $-.6 ; return ;------------------------------------- ;Задержка кварц 4 МГц, если в программе ;другой, то соответственно пересчитать. ;------------------------------------- Delay_40 movlw .14 ; movwf Reg_1 ; decfsz Reg_1 ; bra $-2 ; return ; ;----------------------------------- ; пп записи данных. ;----------------------------------- ZAP_Adr movwf LCD ; Запись адреса начала строки bcf RS ; bra SLCD ; LCD_D movwf LCD ; Запись данных. bsf RS ; SLCD swapf LCD,0 ; Запись в 4-битном режиме andlw 0Fh ; movwf Temp_1 ; BTFSC RS ; bsf _RS ; movff Temp_1,PORTC ; bsf E ; nop ; bcf E ; movf LCD,0 ; andlw 0Fh ; movwf Temp_1 ; BTFSC RS ; bsf _RS ; movff Temp_1,PORTC ; bsf E ; nop ; bcf E ; clrf PORTC ; call Delay_40 ; bcf RS ; return
;**********************************************************************
; пример вывода надписи, основываемся на таблице знакогенератора индикатора
;**********************************************************************
Text_R movlw 0 ; 1 строкa.
call ZAP_Adr ; Адрес начала вывода данных
movlw ' ' ;
call LCD_D ;
movlw ' ' ;
call LCD_D ;
movlw ' ' ;
call LCD_D ;
movlw ' ' ;
call LCD_D ;
movlw 'C' ;
call LCD_D ;
movlw 'H' ;
call LCD_D ;
movlw 'I' ;
call LCD_D ;
movlw 'P' ;
call LCD_D ;
movlw 'M' ;
call LCD_D ;
movlw 'K' ;
call LCD_D ;
movlw '.' ;
call LCD_D ;
movlw 'R' ;
call LCD_D ;
movlw 'U' ;
call LCD_D ;
movlw ' ' ;
call LCD_D ;
movlw ' ' ;
call LCD_D ;
movlw ' ' ;
call LCD_D ;
movlw 0C0h ; 2 строкa.
call ZAP_Adr ; Адрес начала вывода данных
movlw '0' ;
call LCD_D ;
movlw '1' ;
call LCD_D ;
movlw '2' ;
call LCD_D ;
movlw '3' ;
call LCD_D ;
movlw '4' ;
call LCD_D ;
movlw '5' ;
call LCD_D ;
movlw '6' ;
call LCD_D ;
movlw '7' ;
call LCD_D ;
movlw '8' ;
call LCD_D ;
movlw '9' ;
call LCD_D ;
movlw 'A' ;
call LCD_D ;
movlw 'B' ;
call LCD_D ;
movlw 'C' ;
call LCD_D ;
movlw 'D' ;
call LCD_D ;
movlw 'E' ;
call LCD_D ;
movlw 'F' ;
call LCD_D ;
return ; Возврат из ПП.
Все права принадлежат ChipMK.ru. При копировании материала ссылка обязательна. 2011-2021 © ChipMK.ru
![]() |
|