RS BIT P3.0 RW BIT P3.1 E BIT P3.5 DB0_DB7 DATA P1 ;******************************** ORG 00H AJMP START ORG 000BH AJMP INSE ;******************************** ORG 50H START: MOV TMOD,#0 MOV TL0,#0 MOV TH0,#0 SETB EA SETB ET0 SETB TR0 MOV R5,#50 MOV SP,#60H ACALL INIT MOV A,#10000000B ACALL Write MOV A,#01000011B ACALL WriteDDR ACALL DELAY MOV A,#01001000B ACALL WriteDDR ACALL DELAY MOV A,#01000101B ACALL WriteDDR ACALL DELAY MOV A,#01001110B ACALL WriteDDR ACALL DELAY MOV A,#01000111B ACALL WriteDDR ACALL DELAY MOV A,#00000000B ACALL WriteDDR ACALL DELAY MOV A,#00101011B ACALL WriteDDR ACALL DELAY LOOP: AJMP LOOP ;******************************* INSE: MOV TL0,#0 MOV TH0,#0 DJNZ R5,NO MOV R5,#50 NO: RETI ;****************************** INIT: MOV A,#00111000B LCALL Write MOV A,#00001110B LCALL Write MOV A,#00000110B LCALL Write RET ;******************************* CheckBusy: PUSH ACC CB_Loop: CLR RS SETB RW CLR E SETB E MOV A,DB0_DB7 CLR E JB ACC.7,CB_Loop POP ACC ACALL DELAY RET ;******************************** Write: ACALL CheckBusy CLR E CLR RS CLR RW SETB E MOV DB0_DB7,ACC CLR E RET ;******************************** WriteDDR: ACALL CheckBusy CLR E SETB RS CLR RW SETB E MOV DB0_DB7,ACC CLR E RET ;********************************** DELAY: MOV R6,#100 D1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 RET END