LIST P=16F877 #INCLUDE __CONFIG 0X3F32 ;========================MACRO ================================== BANK0 MACRO BCF STATUS,RP0 BCF STATUS,RP1 ENDM BANK1 MACRO BSF STATUS,RP0 BCF STATUS,RP1 ENDM CLOCK_E MACRO BSF PORTD,3 CALL DELAY2 BCF PORTD,3 CALL DELAY2 ENDM ;========== VARIABLE =========================================== D1 EQU 0X20 D2 EQU 0X21 D3 EQU 0X22 D4 EQU 0X23 D5 EQU 0X24 D6 EQU 0X25 ;=============================================================== ;========== MAIN PROGRAMME ==================================== ;=============================================================== ORG 0X000 GOTO START STOP ORG 0X004 GOTO STOP START BANK0 CLRF PORTA CLRF PORTB CLRF PORTC CLRF PORTD CLRF PORTE BANK1 MOVLW 0x06 MOVWF ADCON1 CLRF TRISA CLRF TRISB CLRF TRISC CLRF TRISD CLRF TRISE BANK0 CLRF PORTB ;*****************LCD INITIALIZED********************************** CALL DELAY1 BCF PORTD,2 MOVLW B'00110000' MOVWF PORTB ;FUNCTION SET: 8 BIT INTERFACE CLOCK_E CALL DELAY2 MOVLW B'00001101' MOVWF PORTB ;DISPALY & CURSOR: SET TO DISPLAY ON; CURSOR UNDERLINE OFF; CURSOR BLINK ON CLOCK_E CALL DELAY3 MOVLW B'00111000' MOVWF PORTB ;FUNCTION SET: 8 BIT; 2 LINE MODE; 5X10 DOT FORMAT CLOCK_E MOVLW B'00000001' MOVWF PORTB ;CLEAR DISPLAY CLOCK_E MOVLW B'00000110' MOVWF PORTB ;CHARACTER ENTRY MODE: INCREMENT; DISPLAY SHIFT ON CLOCK_E ;****************MESSAGES DISPLAY IN LINE 1 ************************ BSF PORTD,2 MOVLW H'59' MOVWF PORTB ;DISPLAY "YES" CLOCK_E MOVLW H'45' MOVWF PORTB CLOCK_E MOVLW H'53' MOVWF PORTB CLOCK_E ;****************SET LCD TO SECOND LINE************************* BCF PORTD,2 MOVLW B'11000000' MOVWF PORTB ; JUMP TO 2ND LINE CLOCK_E ;****************MESSAGES DISPLAY IN LINE 2********************** BSF PORTD,2 MOVLW H'31' MOVWF PORTB ;DISPLAY 123 CLOCK_E MOVLW H'32' MOVWF PORTB CLOCK_E MOVLW H'33' MOVWF PORTB CLOCK_E GOTO $-1 ;=============================================================== ;========== SUBROUTINE FOR DELAY =============================== ;=============================================================== DELAY1 MOVLW D'65' ;DELAY 50ms MOVWF D2 MOVLW D'238' MOVWF D1 LOOP1 DECFSZ D1,1 GOTO LOOP1 DECFSZ D2,1 GOTO LOOP1 RETURN DELAY2 MOVLW D'13' ;DELAY 10ms MOVWF D4 MOVLW D'251' MOVWF D3 LOOP2 DECFSZ D3,1 GOTO LOOP2 DECFSZ D4,1 GOTO LOOP2 RETURN DELAY3 MOVLW D'1' ;DELAY 100us MOVWF D6 MOVLW D'31' MOVWF D5 LOOP3 DECFSZ D5,1 GOTO LOOP3 DECFSZ D6,1 GOTO LOOP3 RETURN END