org 0h porta equ 8000h portb equ 8001h portp equ 8003h ;********* MAIN ******** main: mov dptr,#portp mov a,#82h movx @dptr,a mov r2,#2 lcall delay mov a,#00111000b lcall lcdwi mov a,#00001110b lcall lcdwi mov a,#01h lcall lcdwi main2: mov dptr,#maint1 lcall lcdld mov r2,#20h lcall delay sjmp main2 maint1: db " ANUCHA RATTANA " db " CoE.test disp " ;********* delay ************* delay: mov r3,#0 delay1: mov r4,#0 djnz r4,$ djnz r3,delay1 djnz r2,delay ret ;******* LCDDISPLAY ********* ;LOAD DATA TO LCD-MODULE ;IN = DPTR DTART BLOCK (40 Byte) ;REG = A,R2,DPTR lcdld: mov a,#80h lcall lcdlds mov a,#0c0h lcall lcdlds ret lcdlds: push dph push dpl lcall lcdwi pop dpl pop dph mov r2,#20 lcdlds1:clr a movc a,@a+dptr push dph push dpl lcall lcdwd pop dpl pop dph inc dptr djnz r2,lcdlds1 ret ;*********** LCDWI *************** ;LCD WRITE INSTRUCTION (RS=0) ;IN = A ;REG = A,DPTR lcdwi: mov dptr,#porta movx @dptr,a mov dptr,#portb movx a,@dptr clr acc.0 clr acc.1 clr acc.2 movx @dptr,a setb acc.2 movx @dptr,a clr acc.2 movx @dptr,a mov a,#0 lcdwi1: dec a jnz lcdwi1 ret ;******** LCDWD ********** ;LCD WRITE DATA (RS=1) ;IN =A ;REG= A,DPTR lcdwd: mov dptr,#porta movx @dptr,a mov dptr,#portb movx a,@dptr setb acc.0 clr acc.1 clr acc.2 movx @dptr,a setb acc.2 movx @dptr,a clr acc.2 movx @dptr,a mov a,#0 lcdwd1: dec a jnz lcdwd1 ret end