??? 06/06/06 14:35 Modified: 06/06/06 14:38 Read: times |
#117866 - Some things Responding to: ???'s previous message |
Since I missed the fact that you are checking the busy flag, I've formatted your code and added a couple of questions/comments. Do you have a simulator? Pinnacle will simulate an LCD, you can get the demo here http://www.vaultbbs.com/pinnacle/p52v1130.exe
It still may be necessary to put some NOP's when you set and clear a bit such as EN, but this will depend on your clock speed. Jon DB0 EQU P1.0 DB1 EQU P1.1 DB2 EQU P1.2 DB3 EQU P1.3 DB4 EQU P1.4 DB5 EQU P1.5 DB6 EQU P1.6 DB7 EQU P1.7 EN EQU P3.7 RS EQU P3.6 RW EQU P3.5 DATA EQU P1 SETB RW CLR EN SETB EN WAIT_LCD: CLR EN ;Start LCD command CLR RS ;It's a command SETB RW ;It's a read command MOV DATA,#0FFh ;Set all pins to FF initially SETB EN ;Clock out command to LCD MOV A,DATA ;Read the return value JB ACC.7,WAIT_LCD ;If bit 7 high, LCD still busy ^------------------------^ should it be looping here? CLR EN ;Finish the command CLR RW ;Turn off RW for future commands RET CLR RS <--- How does this ever get executed? MOV DATA,#38h SETB EN CLR EN LCALL WAIT_LCD CLR RS MOV DATA,#06h SETB EN CLR EN LCALL WAIT_LCD INIT_LCD: CLR RS MOV DATA,#38h SETB EN CLR EN LCALL WAIT_LCD CLR RS MOV DATA,#0Eh SETB EN CLR EN LCALL WAIT_LCD CLR RS MOV DATA,#06h SETB EN CLR EN LCALL WAIT_LCD RET CLEAR_LCD: CLR RS MOV DATA,#01h SETB EN CLR EN LCALL WAIT_LCD RET WRITE_TEXT: SETB RS MOV DATA,A SETB EN CLR EN LCALL WAIT_LCD RET LCALL INIT_LCD <-- how does program get here? LCALL CLEAR_LCD MOV A,#'H' LCALL WRITE_TEXT MOV A,#'E' LCALL WRITE_TEXT MOV A,#'L' LCALL WRITE_TEXT MOV A,#'L' LCALL WRITE_TEXT MOV A,#'O' LCALL WRITE_TEXT MOV A,#' ' LCALL WRITE_TEXT MOV A,#'W' LCALL WRITE_TEXT MOV A,#'O' LCALL WRITE_TEXT MOV A,#'R' LCALL WRITE_TEXT MOV A,#'L' LCALL WRITE_TEXT MOV A,#'D' LCALL WRITE_TEXT CLR RS MOV DATA,#0C4h SETB EN CLR EN LCALL WAIT_LCD LCALL INIT_LCD LCALL CLEAR_LCD MOV A,#'H' LCALL WRITE_TEXT MOV A,#'E' LCALL WRITE_TEXT MOV A,#'L' LCALL WRITE_TEXT MOV A,#'L' LCALL WRITE_TEXT MOV A,#'O' LCALL WRITE_TEXT CLR RS MOV DATA,#0C4h SETB EN CLR EN LCALL WAIT_LCD MOV A,#'W' LCALL WRITE_TEXT MOV A,#'O' LCALL WRITE_TEXT MOV A,#'R' LCALL WRITE_TEXT MOV A,#'L' LCALL WRITE_TEXT MOV A,#'D' LCALL WRITE_TEXT end |
Topic | Author | Date |
i cant send letters to my lcd | 01/01/70 00:00 | |
Probably need... | 01/01/70 00:00 | |
it is an insult | 01/01/70 00:00 | |
Formatted code | 01/01/70 00:00 | |
is it????? | 01/01/70 00:00 | |
Wait_LCD too soon | 01/01/70 00:00 | |
lcd | 01/01/70 00:00 | |
Wokring hardware ? | 01/01/70 00:00 | |
yes, remove all uncommented crap | 01/01/70 00:00 | |
Comments are essential!![]() | 01/01/70 00:00 | |
Some things | 01/01/70 00:00 |