Vous êtes sur la page 1sur 3

F:\latest 877a\LCD-better world\display_Better_World.

asm
;
;
;
;
;

LCD IN 16X2 LINES - DISPLAYING 2 LINES


THIS IS THE COMPLETE CODE FOR DISPLAY DEMO.
DISPLAY THE WORD- LET US MAKE A BETTER WORLD.
WILL BE STORED IN RAM MEMORY- DISPLAY RAM AND
WILL BE SENT TO DISPLAY BY INDIRECT ADDRESSING MODE.

; PROGRAMMER-- SYED TASWAR MAHBUB


;-----------------------------------------------------

LIST P
#INCLUDE
__CONFIG

= 16F877A
"P16F877A.INC"
0X3F71
; CONFIGURATION SETTING

CBLOCK
0X20
COUNT1,COUNT2
ENDC
ORG
GOTO

0X00
INIT

;--------- MAIN PROGRAM STARTS HERE -------------------------------------INIT


BANKSEL TRISB
CLRF
TRISB
CLRF
TRISD
BANKSEL PORTB
CLRF
PORTB
CLRF
PORTD
START

CALL
CALL
CALL
CALL
CALL
GOTO

BLANKS
;FILL DISPLAY RAM WITH BLANKS.
MESSAGE ;CREATE MESSAGE IN DESPLAY RAM
DEL_5
;ALLOW LCD TIME TO INITIALIZE
INITLCD ;INITIALIZE LCD
DISPLAY_16 ;SEND 16 CHARACTERS TO DISPLAY
$

;--------------------------------------------------------------------------BLANKS

MOVLW
0X10
MOVWF
COUNT1
MOVLW
0X20
MOVWF
FSR
MOVLW
0X20 ; ASCII BLANK
STORE
MOVWF
INDF
DECFSZ COUNT1,F
GOTO
INCFSR
RETURN
INCFSR
INCF
FSR,F
GOTO
STORE
;------------------------------------------------------------------------MESSAGE
MOVLW
MOVWF
MOVLW
MOVWF
MOVLW
MOVWF
MOVLW
MOVWF
MOVLW
MOVWF
MOVLW
MOVWF
MOVLW
MOVWF
MOVLW

' '
0X30
'L'
0X31
'E'
0X32
'T'
0X33
' '
0X34
'U'
0X35
'S'
0X36
' '
1

F:\latest 877a\LCD-better world\display_Better_World.asm


MOVWF
MOVLW
MOVWF
MOVLW
MOVWF
MOVLW
MOVWF
MOVLW
MOVWF
MOVLW
MOVWF
MOVLW
MOVWF
MOVLW
MOVWF

0X37
'M'
0X38
'A'
0X39
'K'
0X3A
'E'
0X3B
' '
0X3C
'A'
0X3D
' '
0X3E

MOVWF
MOVLW
MOVWF
MOVLW
MOVWF
MOVLW
MOVWF
MOVLW
MOVWF
MOVLW
MOVWF
MOVLW
MOVWF
MOVLW
MOVWF
MOVLW
MOVWF
MOVLW
MOVWF
MOVLW
MOVWF
MOVLW
MOVWF
MOVLW
MOVWF
MOVLW
MOVWF

0X40
'B'
0X41
'E'
0X42
'T'
0X43
'T'
0X44
'E'
0X45
'R'
0X46
' '
0X47
'W'
0X48
'O'
0X49
'R'
0X4A
'L'
0X4B
'D'
0X4C
'!'
0X4D

RETURN
;-------------------------------------------------------------------------INITLCD

BCF
PORTB,2 ; E LINE LOW
BCF
PORTB,0 ; RS LINE LOW, FOR INSTRUCTION
CALL
DEL_125 ; DELAY 125 MICROSECONDS
MOVLW
0X38
; 8BIT, 5X7, 0X2LINES
MOVWF
PORTD
; 00111000
CALL
PULSE
; PULSE AND DELAY
MOVLW
0X0C
; DISPLAY ON, CURSOR OFF
MOVWF
PORTD
; 00001100
CALL
PULSE
MOVLW
0X06
; INCREMENT MODE, NO DISPLAY SHIFT
MOVWF
PORTD
; 00000110
CALL
PULSE
CALL
DEL_5
; DELAY 5 MILLISECONDS-REQUIRED
RETURN
; BEFORE SENDING DATA
;------------------------------------------------------------------------DISPLAY_16
BCF
PORTB,2 ; E LINE LOW
BCF
PORTB,0 ; RS LINE LOW, SET UP FOR INSTRS
CALL
DEL_125
MOVLW
0X80
; CON WORD- ADDRESS FIRST HALF
MOVWF
PORTD
CALL
PULSE
BSF
PORTB,0 ; RS= 1, SET UP FOR DATA
2

F:\latest 877a\LCD-better world\display_Better_World.asm


CALL
MOVLW
MOVWF

DEL_125
0X30
; INITIALIZE FSR
FSR

MOVF
MOVWF
CALL
MOVLW
SUBWF
BTFSC
GOTO
INCF
GOTO

INDF,W ; MOVING INDF TO W


PORTD
PULSE
0X3E
FSR,W
STATUS,2
HALF
FSR,F
GETCHAR

BCF
CALL
MOVLW
MOVWF
CALL
BSF
INCF
CALL

PORTB,0 ; RS=0, SET UP FOR INSTRS/CON


DEL_125
0XC0
PORTD
PULSE
PORTB,0 ; RS=1, SET UP FOR DATA
FSR,F
DEL_125

MOVF
MOVWF
CALL
MOVLW
SUBWF
BTFSC
RETURN
INCF
GOTO

INDF,W ; MOVING INDF TO W


PORTD
PULSE
0X4D
FSR,W
STATUS,2

GETCHAR

HALF

TUFF

FSR,F
TUFF

;--------------------------------------------------------------------------DEL_125

MOVLW
8A
MOVWF
COUNT1
REPEAT
DECFSZ COUNT1,F
GOTO
REPEAT
RETURN
;-----------------------------------------------------------------------DEL_5

MOVLW
0X28
MOVWF
COUNT2
DELAY
CALL
DEL_125
DECFSZ COUNT2,F
GOTO
DELAY
RETURN
;------------------------------------------------------------------------PULSE
BSF
PORTB,2 ; E LINE HIGH FOR PULSE
NOP
BCF
PORTB,2
CALL
DEL_125
RETURN
;-----------------------------------------------------------------------END
;------------------------------------------------------------------------

Vous aimerez peut-être aussi