LIST    P=18F452

 include "P18F452.INC"

	__CONFIG _CONFIG1H, _OSCS_OFF_1H & _HS_OSC_1H
	__CONFIG _CONFIG2L, _BOR_OFF_2L & _PWRT_ON_2L
	__CONFIG _CONFIG2H, _WDT_OFF_2H
	__CONFIG _CONFIG3H, _CCP2MX_OFF_3H
	__CONFIG _CONFIG4L, _STVR_OFF_4L & _LVP_OFF_4L & _DEBUG_OFF_4L
	__CONFIG _CONFIG5L, _CP0_OFF_5L & _CP1_OFF_5L & _CP2_OFF_5L & _CP3_OFF_5L 
	__CONFIG _CONFIG5H, _CPB_OFF_5H & _CPD_OFF_5H
	__CONFIG _CONFIG6L, _WRT0_OFF_6L & _WRT1_OFF_6L & _WRT2_OFF_6L & _WRT3_OFF_6L 
	__CONFIG _CONFIG6H, _WRTC_OFF_6H & _WRTB_OFF_6H & _WRTD_OFF_6H
	__CONFIG _CONFIG7L, _EBTR0_OFF_7L & _EBTR1_OFF_7L & _EBTR2_OFF_7L & _EBTR3_OFF_7L
	__CONFIG _CONFIG7H, _EBTRB_OFF_7H
	
	
	
		ORG 		0x000			
		GOTO		0x40





		ORG			0x40
					


	
	 	CLRF		PORTA			;Нулиране данните на PORTA
		CLRF		PORTB			;Нулиране данните на PORTВ
		MOVLW		0x32			;
		MOVWF		TMR0L			
		MOVLW		b'11000111'		;Определяне режима на работа на TMR0		
		MOVWF		T0CON			;Определя коеф. На деление 1:256
		CLRF		PIE1			
									
		CLRF		TRISA			;Конфигуриране на 
							;PORTA като изходи RS, R/W, E
		CLRF		TRISB			; Конфигуриране на
							;PORTB като изходи DB0...DB7
		
		CLRF		INTCON			
		BSF         INTCON,2					

E1		BTFSS		INTCON,T0IF		;Проверка bit T0IF t > 30mS
        
		GOTO		E1 		
;-------------------------------------------------------------	
;SEND: Function set, 2 line, display on	
                CALL            DELAY
		MOVLW		B'00111100'															
		CALL		COM_LCD				
		CALL		DELAY			;Извиква подпрограма
							;за закъснение t>40uS
;--------------------------------------------------------------				
;SEND: display on/of control, blik, cursor	
		
		MOVLW		B'00001111'			
		CALL		COM_LCD						
		CALL		DELAY			;Извиква подпрограма
							;за закъснение t>40uS
;--------------------------------------------------------------
;SEND: Display clear 


		MOVLW		B'00000001'
		CALL		COM_LCD
		CALL		DELAY
                CALL		DELAY
                CALL		DELAY
                CALL		DELAY

		MOVLW		B'00000110'		
		CALL            COM_LCD


;-------------------------------------------------------------
;установява адресният брояч на дисоплея 1 ред, 2 символ	
et_1		
		MOVLW		H'00'     ; POZICIONIRANE NA KURSORA 1 RED 1 SIMWOL			 
		MOVWF		PORTB
		CALL		COM_LCD


                MOVLW           A'H'
                CALL            WR_LCD
                CALL            DELAY
                MOVLW           A'E'
                CALL            WR_LCD
                CALL            DELAY
                MOVLW           A'L'
                CALL            WR_LCD
                CALL            DELAY
                MOVLW           A'L'
                CALL            WR_LCD
                CALL            DELAY
                MOVLW           A'O'
                CALL            WR_LCD
                CALL            DELAY


  
	        GOTO		et_1
;-------------- ПОДПРОГРАМИ  ------------
;Закъснение t>40us

DELAY		MOVLW		0x0F			; 	
		MOVWF		TMR0L
		MOVLW		b'11000000'		;Определяне режима на работа на TMR0		
		MOVWF		T0CON			;Определя коеф. На деление 1:1 
		CLRF		INTCON			;Забранява прекъсванията и
		BSF        INTCON,2					;нулира флага на TMR0	
E3		BTFSS		INTCON,T0IF		;Проверка bit T0IF  - t>40 us
		GOTO		E3
		RETURN


;***********************************************************
WR_LCD                  BSF   PORTA,0  ;RS=1
                        BCF   PORTA,1  ;R/W=1                                        
                        movwf PORTB                          
                        bsf   PORTA,2        
                        bcf   PORTA,2  
                        clrf  PORTB         
                        return

;************************************************************
COM_LCD                 
                        BCF   PORTA,1   ;R/W=0                                           
                        BCF   PORTA,0   ;RS=0      
                        MOVWF PORTB       
                        BSF   PORTA,2        
                        BCF   PORTA,2        
                        BSF   PORTA,0    ;RS=1   
                        CLRF  PORTB         
                        return          
		END
