| ??? 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 |
| Topic | Author | Date |
| 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 |



