📄 003.lst
字号:
A51 MACRO ASSEMBLER 003 08/29/2008 18:26:42 PAGE 1
MACRO ASSEMBLER A51 V7.08a
OBJECT MODULE PLACED IN 003.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE 003.ASM SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
00A0 1 RS EQU P2.0
00A1 2 RW EQU P2.1
00A2 3 E EQU P2.2
4
5 ;-----------------------------------------------
0030 6 LCD_X EQU 30H
0031 7 LCD_Y EQU 31H
0032 8 COUNT EQU 32H
0033 9 COUNT1 EQU 33H
0034 10 COUNT2 EQU 34H
0035 11 COUNT3 EQU 35H
12 ;-----------------------------------------------
0036 13 LCD_DATA EQU 36H
0037 14 LCD_DATA1 EQU 37H
0038 15 LCD_DATA2 EQU 38H
0039 16 STORE EQU 39H
17 ;-----------------------------------------------
18
19 ;ad输出口
0080 20 out equ p0
21 ;-----------------------------------------------
22
23 ;-----------------------------------------------
0000 24 ORG 0000H
0000 020030 25 LJMP MAIN
0030 26 ORG 0030H
27 ;-----------------------------------------------
0030 28 MAIN:
0030 75815F 29 MOV SP,#5FH
30
0033 120260 31 LCALL DELAY4
32
33 ;通讯方式为8位数据并口
34
35 ;********************初始化**********************
0036 7434 36 LGS0: MOV A,#34H ;34H--扩充指令操作
0038 120211 37 LCALL SEND_I
003B 7430 38 MOV A,#30H ;30H--基本指令操作
003D 120211 39 LCALL SEND_I
0040 7401 40 MOV A,#01H ;清除显示
0042 120211 41 LCALL SEND_I
0045 7406 42 MOV A,#06H ;指定在资料写入或读取时,光标的移动方向
0047 120211 43 LCALL SEND_I ;DDRAM 的地址计数器(AC)加1
004A 740C 44 MOV A,#0CH ;开显示,关光标,不闪烁
004C 120211 45 LCALL SEND_I
46 ;===============================================
004F 47 TU_PLAY1:
004F 90029C 48 MOV DPTR,#TU_TAB1 ;显示图形
0052 120127 49 LCALL PHO_DISP
0055 50 han1:
0055 900276 51 mov dptr ,#zz1 ;显示"液体"
0058 753204 52 mov count,#04h
005B 7486 53 mov a ,#86h
005D 120211 54 lcall send_i
0060 1201EF 55 lcall qushu
0063 56 han2:
0063 90027A 57 mov dptr ,#zz2 ;显示"电压"
0066 753204 58 mov count,#04h
A51 MACRO ASSEMBLER 003 08/29/2008 18:26:42 PAGE 2
0069 7496 59 mov a ,#96h
006B 120211 60 lcall send_i
006E 1201EF 61 lcall qushu
0071 62 han3:
0071 90027E 63 mov dptr ,#zz3 ;显示"程序"
0074 753204 64 mov count,#04h
0077 748E 65 mov a ,#8eh
0079 120211 66 lcall send_i
007C 1201EF 67 lcall qushu
007F 68 han4:
007F 900282 69 mov dptr ,#zz4 ;显示"现在的电压是 . V"
0082 753210 70 mov count,#10h
0085 7498 71 mov a ,#98h
0087 120211 72 lcall send_i
008A 1201EF 73 lcall qushu
74
75 ;AD转换 程序
008D 76 start:
008D 120102 77 LCALL STARTAD ;假程序
0090 120241 78 LCALL DELAY3
0093 120106 79 LCALL READAD
80 ;取结果乘C4约得50000(5V)
0096 75F0C4 81 MOV B,#0C4H
0099 A4 82 MUL AB
009A 85F050 83 MOV 50H,B ;高位
009D F551 84 MOV 51H,A ;低位
009F 1200C9 85 LCALL BCDMA ;取BCD码
86 ;显个位多少V
00A2 900292 87 MOV DPTR,#BM
00A5 753201 88 MOV COUNT,#01H
00A8 749E 89 MOV A,#9EH
00AA 120211 90 LCALL SEND_I
00AD E548 91 MOV A,48H
00AF 540F 92 ANL A,#0FH
00B1 1201F9 93 LCALL ADSHU
94 ;显示小数一位,0.几V
00B4 900292 95 MOV DPTR,#BM
00B7 753201 96 MOV COUNT,#01H
00BA 749F 97 MOV A,#9FH
00BC 120211 98 LCALL SEND_I
00BF E547 99 MOV A,47H
00C1 54F0 100 ANL A,#0F0H
00C3 C4 101 SWAP A
00C4 1201F9 102 LCALL ADSHU
103
104
00C7 018D 105 ajmp START
106
107 ;-----------------------------------------------
108 ;BCD转换程序 IN:50,51H OUT:48,47,46H
109 ;-----------------------------------------------
00C9 110 BCDMA:
00C9 7844 111 MOV R0,#44H
00CB E551 112 MOV A,51H
00CD F6 113 MOV @R0,A
00CE 08 114 INC R0
115
00CF E550 116 MOV A,50H
00D1 F6 117 MOV @R0,A
00D2 08 118 INC R0
00D3 7600 119 MOV @R0,#00H
00D5 08 120 INC R0
00D6 7600 121 MOV @R0,#00H
00D8 08 122 INC R0
00D9 7600 123 MOV @R0,#00H
00DB 08 124 INC R0
A51 MACRO ASSEMBLER 003 08/29/2008 18:26:42 PAGE 3
00DC 7600 125 MOV @R0,#00H
00DE 754910 126 MOV 49H,#16
00E1 127 S1:
00E1 7844 128 MOV R0,#44H
00E3 7A02 129 MOV R2,#02H
00E5 C3 130 CLR C
00E6 131 S2:
00E6 E6 132 MOV A,@R0
00E7 33 133 RLC A
00E8 F6 134 MOV @R0,A
00E9 08 135 INC R0
00EA DAFA 136 DJNZ R2,S2
00EC 7A03 137 MOV R2,#03H
00EE 138 S3:
00EE E6 139 MOV A,@R0
00EF F5F0 140 MOV B,A
00F1 35F0 141 ADDC A,B
00F3 D4 142 DA A
00F4 F6 143 MOV @R0,A
00F5 08 144 INC R0
00F6 DAF6 145 DJNZ R2,S3
00F8 D549E6 146 DJNZ 49H,S1
147
00FB AA48 148 MOV R2,48H
00FD AB47 149 MOV R3,47H
00FF AC46 150 MOV R4,46H
151
0101 22 152 RET
153
154
155 ;-----------------------------------------------
156 ;开始转换AD程序 ;假程序
157 ;-----------------------------------------------
0102 158 startad:
0102 00 159 nop
160 ;clr WRAD
0103 00 161 nop
162 ;setb WRAD
0104 00 163 nop
0105 22 164 ret
165
166 ;-----------------------------------------------
167 ;读取AD程序
168 ;-----------------------------------------------
0106 169 readad:
0106 7580FF 170 mov out,#0ffh
0109 00 171 nop
172 ;clr RDAD ;假
010A 00 173 nop
010B E4 174 CLR A
010C E580 175 mov a,out
010E 00 176 nop
177 ;setb RDAD ;假
010F 22 178 ret
179
180 ;-----------------------------------------------
181 ;显示点阵
182 ;-----------------------------------------------
0110 183 LATPLAY1:
0110 7401 184 MOV A,#01H ;清屏
0112 120211 185 LCALL SEND_I
0115 7537CC 186 MOV LCD_DATA1,#0CCH ;显示点阵
0118 7538CC 187 MOV LCD_DATA2,#0CCH
011B 120162 188 LCALL LAT_DISP
011E 120241 189 LCALL DELAY3
0121 1201DF 190 LCALL CLEAR_P
A51 MACRO ASSEMBLER 003 08/29/2008 18:26:42 PAGE 4
191
0124 192 KU_PLAY2:
193
0124 02004F 194 LJMP TU_PLAY1
195
196 ;===============================================
197 ;全屏显示图形子程序
198 ;===============================================
0127 199 PHO_DISP:
0127 753502 200 MOV COUNT3,#02H
012A 753080 201 MOV LCD_X,#80H
012D 202 PHO_DISP1:
012D 753180 203 MOV LCD_Y,#80H
0130 753420 204 MOV COUNT2,#20H
0133 205 PHO_DISP2:
0133 753310 206 MOV COUNT1,#10H
0136 1201A1 207 LCALL WR_ZB
0139 208 PHO_DISP3:
0139 E4 209 CLR A
013A 93 210 MOVC A,@A+DPTR
013B 120201 211 LCALL SEND_D
013E A3 212 INC DPTR
013F D533F7 213 DJNZ COUNT1,PHO_DISP3
0142 0531 214 INC LCD_Y
0144 D534EC 215 DJNZ COUNT2,PHO_DISP2
0147 753088 216 MOV LCD_X,#88H
014A D535E0 217 DJNZ COUNT3,PHO_DISP1
218
014D 7436 219 MOV A,#36H
014F 120211 220 LCALL SEND_I
0152 7430 221 MOV A,#30H
0154 120211 222 LCALL SEND_I
0157 22 223 RET
224
225
226
227 ;----------------------------------------------
0158 228 CLRRAM:
0158 753700 229 MOV LCD_DATA1,#00H ;GDRAM写0子程序
015B 753800 230 MOV LCD_DATA2,#00H
015E 120162 231 LCALL LAT_DISP
0161 22 232 RET
233 ;==============================================
234 ;显示点阵子程序
235 ;==============================================
0162 236 LAT_DISP:
0162 753502 237 MOV COUNT3,#02H
0165 753080 238 MOV LCD_X,#80H
0168 239 LAT_DISP1:
0168 753180 240 MOV LCD_Y,#80H
016B C2D5 241 CLR f0
016D 753420 242 MOV COUNT2,#20H
0170 243 LAT_DISP2:
0170 753310 244 MOV COUNT1,#10H
0173 1201A1 245 LCALL WR_ZB
0176 246 LAT_DISP3:
0176 20D505 247 JB F0,LAT_DISP32
0179 853736 248 MOV LCD_DATA,LCD_DATA1
017C 2181 249 AJMP LAT_DISP31
017E 250 LAT_DISP32:
017E 853836 251 MOV LCD_DATA,LCD_DATA2
0181 252 LAT_DISP31:
0181 E536 253 MOV A,LCD_DATA
0183 120201 254 LCALL SEND_D
0186 D533F8 255 DJNZ COUNT1,LAT_DISP31
0189 0531 256 INC LCD_Y
A51 MACRO ASSEMBLER 003 08/29/2008 18:26:42 PAGE 5
018B B2D5 257 CPL F0
018D D534E0 258 DJNZ COUNT2,LAT_DISP2
0190 753088 259 MOV LCD_X,#88H
0193 D535D2 260 DJNZ COUNT3,LAT_DISP1
261
0196 7436 262 MOV A,#36H
0198 120211 263 LCALL SEND_I
019B 7430 264 MOV A,#30H
019D 120211 265 LCALL SEND_I
01A0 22 266 RET
267 ;---------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -