Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
01/22/04 14:52
Read: times


 
#63128 - re: help with this assembley code ......
hi once more.........


i had the lcd interfaced to the wrong port on the keil evaluation board, i got it hooked up to port 7 now 7.0- 7.0 and the control signals from the lcd are going to p8.0 - 8.3

i am having trouble initializing the display, i cant compile this piece of code......can anyone help ?


________________________________

; Oct 26th 2002. Sean O'Donovan
; This 8051 assembler program writes the words
; DISPLAY_IS_O.K. to an LMO86ALN LCD display.

; but first it initialises the display as
; instructed in the HD44780 lcd DRIVER data sheet.

ORG 0000H ; start the code at address 0H in the ROM.

JMP BEGIN ; LEAVE A FEW LINES FREE
ORG 20H
BEGIN:

; NOW WE INITIALISE THE LCD
;USING THE HD44780 lcd DRIVER data sheet page 86.

RW BIT P8.0
RS BIT P8.1
ENABLE BIT P8.2
P7 EQU 0f8H; port 7, the lcd dta port
CLEAR EQU 01H
FUNCTIONSET EQU 34H ;perhaps this should read 38h for 2 line display.
DISPLAYON EQU 0eH
ENTRYMODESET EQU 06H
BOTTOM EQU 0C0H
IT_IS_WORKING EQU 300H
;*****************************************************************************************
; THE LCD INITIALISATION ROUTINE SEE PAGE 86 OF HD44780 lcd DRIVER SPEC
MOV P1,#0FFH
MOV R6,#30
CALL DELAY ; THE DELAY GIVES THE LCD TIME TO ACT.

MOV A ,#CLEAR ; SEE PAGE 89/90 OF HD44780 lcd DRIVER SPEC.
CALL INSTRUCTION_TO_LCD ;SEE TIMING DIAGRAM P67OF LM093.

MOV A ,#FUNCTIONSET ; SEE PAGE 89/90 OF HD44780 lcd DRIVER SPEC.
CALL INSTRUCTION_TO_LCD ;SEE TIMING DIAGRAM P67OF LM093.

MOV A ,#DISPLAYON ; SEE PAGE 89/90 OF HD44780 lcd DRIVER SPEC.
CALL INSTRUCTION_TO_LCD ;SEE TIMING DIAGRAM P67OF LM093.

MOV A ,#ENTRYMODESET ; SEE PAGE 89/90 OF HD44780 lcd DRIVER SPEC.
CALL INSTRUCTION_TO_LCD ;SEE TIMING DIAGRAM P67OF LM093.

MOV A ,#CLEAR ; SEE PAGE 89/90 OF HD44780 lcd DRIVER SPEC.
CALL INSTRUCTION_TO_LCD ;SEE TIMING DIAGRAM P67OF LM093.
; THIS IS THE END OF THE LCD INITIALISATION ROUTINE
;*****************************************************************************************
;START MAIN PROGRAM
;NOW WE WRITE WORDS TO THE DISPLAY
REPEAT:
MOV R0,#0H
MOV R2,#0H
MOV DPTR, #IT_IS_WORKING ; MOV 300H TO DPTR
MOV A,#0H
CALL PRINTIT
MOV A,#BOTTOM ; MOVE CURSER TO BOTTOM ROW.
CALL INSTRUCTION_TO_LCD

JMP REPEAT ;KEEP ON REPEATING THE SENTENCE (DEMO CODE ONLY).
;END MAIN PROGRAM
; **********************************************************************************
INSTRUCTION_TO_LCD:
; THIS ROUTINE SENDS MESSAGE DOWN TO THE LCD
; TELLING IT HOW TO BEHAVE.
CLR RS ; THE RS BIT LOW INDICATES AN INSTRUCTION WRITE. SEE TIMING DIAGRAM P67OF LM093.
CLR RW
MOV R6, #100
CALL DELAY
SETB ENABLE
MOV P7,A
CLR ENABLE
RET

;END INSTRUCTION_TO_LCD ROUTINE
; **********************************************************************************
PRINTIT:
; THIS ROUTINE PRINTS THE LETTERS POINTED BY THE DPTR.
; REFER TO THE WRITE TIMING DIAGRAM PAGE 67 OF LMO93 SPEC.
SETB RS ; THE RS BIT HIGH INDICATES A DATA WRITE.
CLR RW
SETB ENABLE
MOV R6,#30
CALL DELAY
MOVC A, @A+DPTR
CJNE A,#'!',PRINT ;HAVE WE REACHED THE LAS LETTER ?
CLR ENABLE
CLR RS
RET

;END PRINTIT ROUTINE
; **********************************************************************************

; A DELAY ROUTINE DEPENDING ON THE VALUE NOW IN R6
DELAY:
MOV R5, #0
LOOP:
DJNZ R5,LOOP
DJNZ R6,LOOP
RET ; RETURN TO WHERE CALLED FROM
;END DELAY ROUTINE
; **********************************************************************************
PRINT:
MOV P7,A ;SEND LETTER OUT TO PORT2 I.E. TO DISPLAY. SEE TIMING DIAGRAM P67 LM093 DATA WRITE.
CLR ENABLE
CLR RS
INC R2
MOV A,R2
JMP PRINTIT

;END PRINT ROUTINE
; **********************************************************************************
; HERE WE STORE LETTERS IN ROM LOCATION 300H
ORG IT_IS_WORKING
DB 'BRIAN CUNNANE 2002 !' ; THIS STORES THESE LETTERS IN ROM 300H
; **********************************************************************************
END ; STOP COMPILING

List of 5 messages in thread
TopicAuthorDate
re: help with this assembley code ......            01/01/70 00:00      
   re: help with this assembley code ......            01/01/70 00:00      
   re: help with this assembley code ......            01/01/70 00:00      
   re: help with this assembley code ......            01/01/70 00:00      
   re: help with this assembley code ......            01/01/70 00:00      

Back to Subject List