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

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
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 



List of 11 messages in thread
TopicAuthorDate
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      

Back to Subject List