📄 ex9-10.sdi
字号:
,,,COM EQU 50H ; LCD指令寄存器
,,,DAT EQU 51H ; LCD数据寄存器
,,,
000B,,,RS EQU P2.1 ; LCD寄存器选择信号
000B,,,RW EQU P2.2 ; LCD读/写选择信号
000B,,,E EQU P2.3 ; LCD使能信号
,,,
,,, ORG 0000H
0000,02 00 30,, LJMP MAIN ;主程序入口
,,, ORG 0030H ;主程序
0030,,MAIN,MAIN:
0030,75 81 60,, MOV SP,#60H ;主程序
0033,12 00 6B,, LCALL INT ;调LCD间接控制方式下的初始化子程序
0036,75 50 01,, MOV COM,#01H ;LCd清0命令
0039,12 00 BD,, LCALL PR1 ;调写指令代码子程序
003C,75 50 06,, MOV COM,#06H ;输入方式命令,光标右移
003F,12 00 BD,, LCALL PR1 ;调写指令代码子程序
0042,75 50 80,, MOV COM,#080H ;设置DDRAM地址
0045,12 00 BD,, LCALL PR1 ;调写指令代码子程序
0048,90 00 5B,, MOV DPTR,#TAB ;DPTR指向显示字符表首地址
004B,7A 10,, MOV R2,#10H ;共显示16字符
004D,7B 00,, MOV R3,#00H
004F,EB,WRIN,WRIN: MOV A,R3
0050,93,, MOVC A,@A+DPTR ;取出显示字符
0051,F5 51,, MOV DAT,A
0053,12 00 DF,, LCALL PR2 ;调写显示数据子程序
0056,0B,, INC R3
0057,DA F6,, DJNZ R2,WRIN
0059,80 FE,, SJMP $
005B,48 65 6C 6C,TAB,TAB: DB "Hello Everybody!";
,,,
,,,
,,,;LCD 间接控制方式下的初始化子程序
006B,12 00 9D,INT,INT: LCALL DELAY ; 调延时子程序
006E,75 80 38,, MOV P0,#38H ; 工作方式设置指令代码
0071,C2 A1,, CLR RS ; RS=0
0073,C2 A2,, CLR RW ; R/W=0
0075,7A 03,, MOV R2,#03 ; 循环量=3
0077,D2 A3,INTT1,INTT1: SETB E ; E=1
0079,C2 A3,, CLR E ; E=0
007B,DA FA,, DJNZ R2,INTT1
007D,75 80 38,, MOV P0,#38H ; 设置工作方式*
0080,D2 A3,, SETB E ; E=1
0082,C2 A3,, CLR E ; E=0
0084,75 50 38,, MOV COM,#38H ; 设置工作方式
0087,12 00 BD,, LCALL PR1
008A,75 50 01,, MOV COM,#01H ; 清屏
008D,12 00 BD,, LCALL PR1
0090,75 50 06,, MOV COM,#06H ; 设置输入方式
0093,12 00 BD,, LCALL PR1
0096,75 50 0E,, MOV COM,#0EH ; 设置显示方式
0099,12 00 BD,, LCALL PR1
009C,22,, RET
,,,
009D,7E 0F,DELAY,DELAY: MOV R6,#0FH ; 延时子程序
009F,7F 10,DELAY2,DELAY2: MOV R7,#10H
00A1,00,DELAY1,DELAY1: NOP
00A2,DF FD,, DJNZ R7,DELAY1
00A4,DE F9,, DJNZ R6,DELAY2
00A6,22,, RET
,,,
,,,;LCD 间接控制方式的驱动子程序如下
,,,
,,,;1 读BF和AC值
00A7,C0 E0,PR0,PR0: PUSH ACC
00A9,75 80 FF,, MOV P0,#0FFH ; P0置位, 准备读
00AC,C2 A1,, CLR RS ; RS=0
00AE,D2 A2,, SETB RW ; R/W=1
00B0,D2 A3,, SETB E ; E=1
00B2,12 00 9D,, LCALL DELAY
00B5,85 80 50,, MOV COM,P0 ; 读BF和AC6-4值
00B8,C2 A3,, CLR E ; E=0
00BA,D0 E0,, POP ACC
00BC,22,, RET
,,,
,,,;2 写指令代码子程序
00BD,C0 E0,PR1,PR1: PUSH ACC
00BF,C2 A1,, CLR RS ; RS=0
00C1,D2 A2,, SETB RW ; R/W=1
00C3,75 80 FF,PR11,PR11: MOV P0,#0FFH; P0置位, 准备读
00C6,D2 A3,, SETB E ; E=1
00C8,12 00 9D,, LCALL DELAY
00CB,00,, NOP
00CC,E5 80,, MOV A,P0
00CE,C2 A3,, CLR E
00D0,20 E7 F0,, JB ACC.7,PR11;BF=1?
00D3,C2 A2,, CLR RW ; R/W=0
00D5,85 50 80,, MOV P0,COM
00D8,D2 A3,, SETB E ; E=1
00DA,C2 A3,, CLR E ; E=0; E=0
00DC,D0 E0,, POP ACC
00DE,22,, RET
,,,
,,,;3 写显示数据子程序
00DF,C0 E0,PR2,PR2: PUSH ACC
00E1,C2 A1,, CLR RS ; RS=0
00E3,D2 A2,, SETB RW ; R/W=1
00E5,75 80 FF,PR21,PR21: MOV P0,#0FFH
00E8,D2 A3,, SETB E ; E=1
00EA,12 00 9D,, LCALL DELAY
00ED,E5 80,, MOV A,P0 ; 读BF和AC6-4值
00EF,C2 A3,, CLR E ; E=0
00F1,20 E7 F1,, JB ACC.7,PR21
00F4,D2 A1,, SETB RS
00F6,C2 A2,, CLR RW
00F8,85 51 80,, MOV P0,DAT; 写入数据高4位
00FB,D2 A3,, SETB E ; RS=1
00FD,C2 A3,, CLR E ; R/W=0
00FF,D0 E0,, POP ACC
0101,22,, RET
,,,
,,,;4 读显示数据子程序
0102,C0 E0,PR3,PR3: PUSH ACC
0104,C2 A1,, CLR RS ; RS=0
0106,D2 A2,, SETB RW ; R/W=1
0108,75 80 FF,PR31,PR31: MOV P0,#0FFH ; P0置位, 准备读
010B,D2 A3,, SETB E ; E=1
010D,12 00 9D,, LCALL DELAY
0110,E5 80,, MOV A,P0 ; 读BF和AC6-4值
0112,C2 A3,, CLR E ; E=0
0114,20 E7 F1,, JB ACC.7,PR31
0117,D2 A1,, SETB RS ; E=1
0119,D2 A2,, SETB RW ; R/W=1
011B,75 80 FF,, MOV P0,#0FFH ; 读数据
011E,D2 A3,, SETB E ; E=1
0120,85 80 51,, MOV DAT,P0
0123,C2 A3,, CLR E ; E=0
0125,D0 E0,, POP ACC
0127,22,, RET
000E,,, END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -