i've written following code for 44780 standard lcd display using AT89s52........but its not working..... noting is displayed on the lcd...could anyone suggest what could be the mistake
$mod51
org 0000h
DB0 EQU P0.0 DB1 EQU P0.1 DB2 EQU P0.2 DB3 EQU P0.3 DB4 EQU P0.4 DB5 EQU P0.5 DB6 EQU P0.6 DB7 EQU P0.7 EN EQU P2.7 RS EQU P2.6 RW EQU P2.5 DATAWD EQU P0
CSEG
MOV SP,#30H
CALL BLANK_LCD
mov a,#'W' mov 70h,a mov a,#'E' mov 71h,a mov a,#'L' mov 72h,a mov a,#'C' mov 73h,a mov a,#'O' mov 74h,a mov a,#'M' mov 75h,a mov a,#'E' mov 76h,a call disp_on_lcd
WAIT_LCD:CLR EN CLR RS SETB RW MOV DATAWD,#0FFh SETB EN MOV A,DATAWD JB ACC.7,WAIT_LCD CLR EN CLR RW RET
INITIALIZE_LCD:CLR RS MOV DATAWD,#38h SETB EN CLR EN CALL WAIT_LCD CLR RS MOV DATAWD,#0Eh SETB EN CLR EN CALL WAIT_LCD CLR RS MOV DATAWD,#06h SETB EN CLR EN LCALL WAIT_LCD RET
WRITE_TEXT:SETB RS MOV DATAWD,@R0 SETB EN CLR EN CALL WAIT_LCD RET
blank_LCD:CLR RS MOV DATAWD,#01h SETB EN CLR EN CALL WAIT_LCD RET
DISP_ON_LCD: CALL INITIALIZE_LCD MOV R0,#70H REWRITE:CALL WRITE_TEXT INC R0 CJNE R0,#7AH,REWRITE RET
END