1、LCD汇编程序示例lm016l;-逐字依次输入方式- COM EQU 20H ; 指令寄存器DAT EQU 21H ; 数据寄存器CW_Add EQU 8000H ; 指令口写地址CR_Add EQU 8200H ; 指令口读地址DW_Add EQU 8100H ; 数据口写地址DR_Add EQU 8300H ; 数据口读地址ORG 0000HMAIN:MOV SP,#60HMOV A,#30H ;功能指令设置MOV DPTR,#CW_AddMOV R2,#03HL1:MOVX DPTR,ALCALL DELAYDJNZ R2,L1MOV COM,#38H ;设置工作方式LCALL PR1M
2、OV COM,#01H ;清屏LCALL PR1MOV COM,#06H ;设置输入方式LCALL PR1MOV COM,#0FH ;设置显示方式LCALL PR1MOV COM,#80H ;设置DDRAM地址00HLCALL PR1MOV DPTR,#TAB MOV R2,#12 ;显示前8位 MOV R3,#00WRIN: MOV A,R3MOVC A,A+DPTRMOV DAT,ALCALL PR2LCALL DELAYINC R3DJNZ R2,WRINSJMP $;-写指令代码子程序-PR1: PUSH DPH PUSH DPLPUSH ACCMOV DPTR,#CR_ADDPR11
3、: MOVX A,DPTRJB ACC.7,PR11MOV A,COMMOV DPTR,#CW_ADDMOVX DPTR,APOP ACCPOP DPLPOP DPHRET;-写显示数据子程序-PR2: PUSH DPHPUSH DPLPUSH ACCMOV DPTR,#CR_ADDPR21:MOVX A,DPTRJB ACC.7,PR21MOV A,DATMOV DPTR,#DW_ADDMOVX DPTR,APOP ACCPOP DPLPOP DPHRETDELAY:MOV R6,#00HMOV R7,#00HDELAY1:NOPDJNZ R7,DELAY1DJNZ R6,DELAY1RET
4、TAB: DB 43H,75H,72H,73H,6FH,72H,20H ;CursorDB 57H,72H,69H,74H,65H ;writeEND;-逐字依次输入,两行显示方式- COM EQU 20H ; 指令寄存器DAT EQU 21H ; 数据寄存器CW_Add EQU 8000H ; 指令口写地址CR_Add EQU 8200H ; 指令口读地址DW_Add EQU 8100H ; 数据口写地址DR_Add EQU 8300H ; 数据口读地址ORG 0000HMAIN:MOV SP,#60HMOV A,#30H ;功能指令设置MOV DPTR,#CW_ADDMOV R2,#03H
5、L1:MOVX DPTR,ALCALL DELAYDJNZ R2,L1MOV COM,#38H ;设置工作方式LCALL PR1MOV COM,#06H ;设置显示方式LCALL PR1MOV COM,#0fH ;清屏LCALL PR1MOV COM,#01H ;设置输入方式LCALL PR1MOV COM,#80H ;设置DDRAM地址00HLCALL PR1MOV DPTR,#TAB MOV R2,#07 ;显示前8位 MOV R3,#00HWRIN: MOV A,R3MOVC A,A+DPTRMOV DAT,ALCALL PR2LCALL DELAYINC R3DJNZ R2,WRINM
6、OV COM,#0C0H ;设置DDRAM地址40HLCALL PR1MOV R2,#05H ;显示后4位WRIN1: MOV A,R3MOVC A,A+DPTRMOV DAT,ALCALL PR2LCALL DELAYINC R3DJNZ R2,WRIN1SJMP MAIN;-写指令代码子程序-PR1: PUSH DPH PUSH DPLPUSH ACCMOV DPTR,#CR_ADDPR11: MOVX A,DPTRJB ACC.7,PR11MOV A,COMMOV DPTR,#CW_ADDMOVX DPTR,APOP ACCPOP DPLPOP DPHRET;-写显示数据子程序-PR2:
7、 PUSH DPHPUSH DPLPUSH ACCMOV DPTR,#CR_ADDPR21:MOVX A,DPTRJB ACC.7,PR21MOV A,DATMOV DPTR,#DW_ADDMOVX DPTR,APOP ACCPOP DPLPOP DPHRETDELAY:MOV R6,#00HMOV R7,#00HDELAY1:NOPDJNZ R7,DELAY1DJNZ R6,DELAY1RETTAB: DB 43H,75H,72H,73H,6FH,72H,20H ;CursorDB 57H,72H,69H,74H,65H ;writeEND;-光标左移输入,两行显示方式- COM EQU 2
8、0HDAT EQU 21HCW_ADD EQU 8000HCR_ADD EQU 8200HDW_ADD EQU 8100HDR_ADD EQU 8300HORG 0000HMAIN:MOV SP,#60HMOV A,#30H ;功能指令设置MOV DPTR,#CW_ADDMOV R2,#03HL1:MOVX DPTR,ALCALL DELAYDJNZ R2,L1MOV COM,#38H ;设置工作方式LCALL PR1MOV COM,#01H ;清屏LCALL PR1MOV COM,#06H ;设置输入方式LCALL PR1MOV COM,#0FH ;设置显示方式LCALL PR1MOV CO
9、M,#04H ;设置输入方式,减方式LCALL PR1MOV COM,#0C5H ;设置DDRAM地址44HLCALL PR1MOV DPTR,#TAB MOV R2,#05 ;显示后5位 MOV R3,#11 ;从第12位开始显示WRIN: MOV A,R3MOVC A,A+DPTRMOV DAT,ALCALL PR2LCALL DELAYDEC R3DJNZ R2,WRINMOV COM,#87H ;设置DDRAM地址07HLCALL PR1MOV R2,#08H ;显示前8位WRIN1: MOV A,R3MOVC A,A+DPTRMOV DAT,ALCALL PR2LCALL DELAYDEC R3DJNZ R2,WRIN1SJMP $;-写指令代码子程序-PR1: PUSH DPH