📄 lcd1602.lst
字号:
A51 MACRO ASSEMBLER LCD1602 05/22/2006 14:58:54 PAGE 1
MACRO ASSEMBLER A51 V7.09
OBJECT MODULE PLACED IN LCD1602.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE LCD1602.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;===============================================================
2 ; 文件名称: LCD1602.ASM
3 ; 功能描述:
4 ;===============================================================
0095 5 RSPIN BIT 95H ;P1.5
0096 6 RWPIN BIT 96H ;P1.6
0097 7 EPIN BIT 97H ;P1.7
8
0030 9 XPOS DATA 30H
0031 10 YPOS DATA 31H
11
0000 12 ORG 0000H
0000 020100 13 LJMP START
14
0100 15 ORG 0100H
0100 00 16 START: NOP
0101 C297 17 CLR EPIN
0103 12017D 18 LCALL LCDINIT ; 调用初始化程序
0106 7401 19 ST1: MOV A, #01H
0108 120146 20 LCALL LCDWC
010B 7402 21 MOV A, #02H
010D 120146 22 LCALL LCDWC
0110 1201B5 23 LCALL DISPLAY ; 调用显示子程序
0113 7DFF 24 MOV R5, #0FFH ; 延时
0115 7EFF 25 ST2: MOV R6, #0FFH
0117 12011E 26 LCALL DELAY
011A DDF9 27 DJNZ R5, ST2
011C 80E8 28 SJMP ST1
29
30 ; 延时子程序
31 ; 入口参数: R6(增加延时)
32 ; 影响寄存器: R7
011E 7F0A 33 DELAY: MOV R7, #10
0120 DFFE 34 DLAY1: DJNZ R7, DLAY1
0122 DEFA 35 DJNZ R6, DELAY
0124 22 36 RET
37
38 ; 忙状态位判断
0125 39 LCDWAITIDLE:
0125 C0E0 40 PUSH ACC ; 保护累加器 A
0127 7580FF 41 MOV P0, #0FFH
012A C295 42 CLR RSPIN
012C D296 43 SETB RWPIN
012E D297 44 SETB EPIN
0130 E580 45 LWT1: MOV A, P0 ; 读取忙标志BF
0132 20E7FB 46 JB ACC.7, LWT1 ; BF 为1则等待
0135 C297 47 CLR EPIN
0137 D0E0 48 POP ACC
0139 22 49 RET
50
51 ; 写指令子程序(不程序忙标志)
52 ; 入口参数: A (命令字节)
013A C295 53 LCDWCN: CLR RSPIN
013C C296 54 CLR RWPIN
013E F580 55 MOV P0, A
0140 D297 56 SETB EPIN
0142 00 57 NOP
0143 C297 58 CLR EPIN
A51 MACRO ASSEMBLER LCD1602 05/22/2006 14:58:54 PAGE 2
0145 22 59 RET
60
61 ; 写指令子程序(查询忙标志)
62 ; 入口参数: A (命令字节)
0146 120125 63 LCDWC: LCALL LCDWAITIDLE ; 判断标志BF
0149 12013A 64 LCALL LCDWCN ; 写指令
014C 22 65 RET
66
67 ; 写数据子程序(查询忙标志)
68 ; 入口参数: A (数据字节)
014D 120125 69 LCDWD: LCALL LCDWAITIDLE
0150 D295 70 SETB RSPIN
0152 C296 71 CLR RWPIN
0154 F580 72 MOV P0, A ; 写数据
0156 D297 73 SETB EPIN
0158 00 74 NOP
0159 C297 75 CLR EPIN
015B 22 76 RET
77
78 ; 指定显示坐标;
015C 53303F 79 LCDPOS: ANL XPOS, #3FH
015F 533103 80 ANL YPOS, #03H
0162 E531 81 MOV A, YPOS
0164 B40009 82 CJNE A, #00H, LPOS1
0167 E530 83 MOV A, XPOS ;DDRAM地址设置 第1行
0169 4480 84 ORL A, #80H
016B 120146 85 LCALL LCDWC
016E 800C 86 SJMP LPOS2
0170 B40109 87 LPOS1: CJNE A, #01H, LPOS2
0173 E530 88 MOV A, XPOS ;DDRAM地址设置 第2行
0175 2440 89 ADD A, #40H
0177 4480 90 ORL A, #80H
0179 120146 91 LCALL LCDWC
017C 22 92 LPOS2: RET
93
94 ; LCD初始化子程序
017D 95 LCDINIT:
017D 7E96 96 MOV R6, #150
017F 12011E 97 LCALL DELAY
0182 7438 98 MOV A, #38H ; 总线8位, 两行显示, 5*7点阵字符体
0184 12013A 99 LCALL LCDWCN
100
0187 7E32 101 MOV R6, #50
0189 12011E 102 LCALL DELAY
018C 7438 103 MOV A, #38H
018E 12013A 104 LCALL LCDWCN
105
0191 7E32 106 MOV R6, #50
0193 12011E 107 LCALL DELAY
0196 7438 108 MOV A, #38H
0198 12013A 109 LCALL LCDWCN
110
019B 7438 111 MOV A, #38H
019D 120146 112 LCALL LCDWC
01A0 7408 113 MOV A, #08H ; 关闭显示, 光标消失, 闪烁禁止
01A2 120146 114 LCALL LCDWC
01A5 7401 115 MOV A, #01H ; 清屏
01A7 120146 116 LCALL LCDWC
01AA 7406 117 MOV A, #06H ; AC加1计数, 禁止滚动
01AC 120146 118 LCALL LCDWC
01AF 740E 119 MOV A, #0EH ; 开显示
01B1 120146 120 LCALL LCDWC
01B4 22 121 RET
122
123 ; LCD显示子程序
01B5 124 DISPLAY:
A51 MACRO ASSEMBLER LCD1602 05/22/2006 14:58:54 PAGE 3
01B5 753000 125 MOV XPOS, #00H
01B8 753100 126 DPLY1: MOV YPOS, #00H
01BB 12015C 127 LCALL LCDPOS ; 指定显示坐标
01BE 90021A 128 MOV DPTR, #TAB1
01C1 E530 129 MOV A, XPOS
01C3 93 130 MOVC A, @A+DPTR ; 指定显示数据
01C4 12014D 131 LCALL LCDWD
01C7 753101 132 MOV YPOS, #01H
01CA 12015C 133 LCALL LCDPOS ; 在第2行显示
01CD 900238 134 MOV DPTR, #TAB2
01D0 E530 135 MOV A, XPOS
01D2 93 136 MOVC A, @A+DPTR
01D3 12014D 137 LCALL LCDWD
01D6 7D60 138 MOV R5, #060H ; 延时
01D8 7EFF 139 DPLY3: MOV R6, #0FFH
01DA 12011E 140 LCALL DELAY
01DD DDF9 141 DJNZ R5, DPLY3
01DF 0530 142 INC XPOS
01E1 E530 143 MOV A, XPOS
01E3 B410D2 144 CJNE A, #16, DPLY1
145 ; MOV XPOS, #16
01E6 7418 146 DPLY2: MOV A, #18H ; 设置移到方式
01E8 120146 147 LCALL LCDWC
01EB 753100 148 MOV YPOS, #00H
01EE 12015C 149 LCALL LCDPOS
01F1 90021A 150 MOV DPTR, #TAB1
01F4 E530 151 MOV A, XPOS
01F6 93 152 MOVC A, @A+DPTR
01F7 12014D 153 LCALL LCDWD
01FA 753101 154 MOV YPOS, #01H
01FD 12015C 155 LCALL LCDPOS
0200 900238 156 MOV DPTR, #TAB2
0203 E530 157 MOV A, XPOS
0205 93 158 MOVC A, @A+DPTR
0206 12014D 159 LCALL LCDWD
0209 7D60 160 MOV R5, #060H
020B 7EFF 161 DPLY4: MOV R6, #0FFH
020D 12011E 162 LCALL DELAY
0210 DDF9 163 DJNZ R5, DPLY4
0212 0530 164 INC XPOS
0214 E530 165 MOV A, XPOS
0216 B41ECD 166 CJNE A, #30, DPLY2
0219 22 167 RET
168
169 ; 表1: TD-NMC+ Xi'an Tang Du Crop.
170 ; T D - N M C + X i ' a n
021A 54442D4E 171 TAB1: DB 54H,44H,2DH,4EH,4DH,43H,2BH,20H,20H,58H,69H,27H,61H,6EH,20H
021E 4D432B20
0222 20586927
0226 616E20
0229 54616E67 172 DB 54H,61H,6EH,67H,20H,44H,75H,20H,43H,72H,6FH,70H,2EH,20H,20H
022D 20447520
0231 43726F70
0235 2E2020
173 ; T a n g D u C r o p .
174
175 ; 表2: www.tangdu.com 029-88375025
176 ; w w w . t a n g d u . c o m
0238 7777772E 177 TAB2: DB 77H,77H,77H,2EH,74H,61H,6EH,67H,64H,75H,2EH,63H,6FH,6DH,20H
023C 74616E67
0240 64752E63
0244 6F6D20
0247 20303239 178 DB 20H,30H,32H,39H,2DH,38H,38H,33H,37H,35H,30H,32H,35H,20H,20H
024B 2D383833
024F 37353032
0253 352020
A51 MACRO ASSEMBLER LCD1602 05/22/2006 14:58:54 PAGE 4
179 ; 0 2 9 - 8 8 3 7 5 0 2 5
180
181 END
A51 MACRO ASSEMBLER LCD1602 05/22/2006 14:58:54 PAGE 5
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
ACC. . . . . . . . D ADDR 00E0H A
DELAY. . . . . . . C ADDR 011EH A
DISPLAY. . . . . . C ADDR 01B5H A
DLAY1. . . . . . . C ADDR 0120H A
DPLY1. . . . . . . C ADDR 01B8H A
DPLY2. . . . . . . C ADDR 01E6H A
DPLY3. . . . . . . C ADDR 01D8H A
DPLY4. . . . . . . C ADDR 020BH A
EPIN . . . . . . . B ADDR 0090H.7 A
LCDINIT. . . . . . C ADDR 017DH A
LCDPOS . . . . . . C ADDR 015CH A
LCDWAITIDLE. . . . C ADDR 0125H A
LCDWC. . . . . . . C ADDR 0146H A
LCDWCN . . . . . . C ADDR 013AH A
LCDWD. . . . . . . C ADDR 014DH A
LPOS1. . . . . . . C ADDR 0170H A
LPOS2. . . . . . . C ADDR 017CH A
LWT1 . . . . . . . C ADDR 0130H A
P0 . . . . . . . . D ADDR 0080H A
RSPIN. . . . . . . B ADDR 0090H.5 A
RWPIN. . . . . . . B ADDR 0090H.6 A
ST1. . . . . . . . C ADDR 0106H A
ST2. . . . . . . . C ADDR 0115H A
START. . . . . . . C ADDR 0100H A
TAB1 . . . . . . . C ADDR 021AH A
TAB2 . . . . . . . C ADDR 0238H A
XPOS . . . . . . . D ADDR 0030H A
YPOS . . . . . . . D ADDR 0031H A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -