📄 parallel port.lst
字号:
A51 MACRO ASSEMBLER PARALLEL_PORT 12/19/2006 20:55:17 PAGE 1
MACRO ASSEMBLER A51 V7.08a
OBJECT MODULE PLACED IN parallel port.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE parallel port.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;******************************************************************
2 ;* *
3 ;* ME500单片机开发系统演示程序 - 12864 图片与文字显示 *
4 ;* *
5 ;* ST7920控制芯片(汉字库),并口模式。 *
6 ;* *
7 ;* 版本: V1.0 (2006/11/20) *
8 ;* 作者: gguoqing (Email: gguoqing@willar.com) *
9 ;* 网站: www.willar.com(伟纳电子) www.mcusj.com(伟纳单片机世界)*
10 ;* 时间: 2006/12/15 *
11 ;* *
12 ;*【版权】COPYRIGHT(C)伟纳电子 www.willar.com ALL RIGHTS RESERVED *
13 ;*【声明】此程序仅用于学习与参考,引用请注明版权和作者信息! *
14 ;* *
15 ;******************************************************************
16
00A0 17 RS BIT P2.0
00A1 18 RW BIT P2.1
00A2 19 E BIT P2.2
00A3 20 PSB BIT P2.3
00A5 21 RST BIT P2.5
22
0030 23 LCD_X EQU 30H
0031 24 LCD_Y EQU 31H
0032 25 COUNT EQU 32H
0033 26 COUNT1 EQU 33H
0034 27 COUNT2 EQU 34H
0035 28 COUNT3 EQU 35H
29
0036 30 LCD_DATA EQU 36H
0037 31 LCD_DATA1 EQU 37H
0038 32 LCD_DATA2 EQU 38H
0039 33 STORE EQU 39H
34
35 ;**********************************************************
36
0000 37 ORG 0000H
0000 020030 38 LJMP MAIN
0030 39 ORG 0030H
40
41 ;**********************************************************
0030 42 MAIN:
0030 758160 43 MOV SP,#60H
0033 C2A5 44 CLR RST ;复位
0035 120249 45 LCALL DELAY4
0038 D2A5 46 SETB RST
003A 00 47 NOP
003B D2A3 48 SETB PSB ;通讯方式为8位数据并口
49
50 ;********************初始化**********************
51
003D 7434 52 LGS0: MOV A,#34H ;34H--扩充指令操作
003F 1201FA 53 LCALL SEND_I
0042 7430 54 MOV A,#30H ;30H--基本指令操作
0044 1201FA 55 LCALL SEND_I
0047 7401 56 MOV A,#01H ;清除显示
0049 1201FA 57 LCALL SEND_I
004C 7406 58 MOV A,#06H ;指定在资料写入或读取时,光标的移动方向
A51 MACRO ASSEMBLER PARALLEL_PORT 12/19/2006 20:55:17 PAGE 2
004E 1201FA 59 LCALL SEND_I ;DDRAM 的地址计数器(AC)加1
0051 740C 60 MOV A,#0CH ;开显示,关光标,不闪烁
0053 1201FA 61 LCALL SEND_I
62
63 ;**********************************************************
64
65 ;显示汉字和字符
66 ;加入80ms的延时,使你能够看清楚显示的过程
67 ;根据汉字显示坐标写入 (隔行写入)
68
69 ;**********************************************************
0056 70 HAN_WR1:
0056 1201CD 71 LCALL CLEAR_P
0059 90025F 72 MOV DPTR,#TAB1 ;显示汉字和字符
005C 753240 73 MOV COUNT,#40H ;地址计数器设为最大值 64。
005F 7480 74 MOV A,#80H ;起始地址
0061 1201FA 75 LCALL SEND_I
0064 1201DD 76 LCALL QUSHU
0067 12022A 77 LCALL DELAY3
006A 1201A4 78 LCALL FLASH
79
80 ;**********************************************************
81
82 ;显示汉字和字符
83 ;加入80ms的延时,使你能够看清楚显示的过程
84 ;根据汉字显示坐标分段写入(顺序写入)
85
86 ;**********************************************************
006D 87 HAN_WR2:
006D 1201CD 88 LCALL CLEAR_P
0070 89 HAN_WR2A:
0070 90025F 90 MOV DPTR,#TAB1A ;显示汉字和字符
0073 753210 91 MOV COUNT,#10H ;地址计数器设为16。
0076 7480 92 MOV A,#80H ;第一行起始地址
0078 1201FA 93 LCALL SEND_I
007B 1201DD 94 LCALL QUSHU
007E 95 HAN_WR2B:
007E 90027F 96 MOV DPTR,#TAB1B ;显示汉字和字符
0081 753210 97 MOV COUNT,#10H ;地址计数器设为16。
0084 7490 98 MOV A,#90H ;第二行起始地址
0086 1201FA 99 LCALL SEND_I
0089 1201DD 100 LCALL QUSHU
008C 101 HAN_WR2C:
008C 90026F 102 MOV DPTR,#TAB1C ;显示汉字和字符
008F 753210 103 MOV COUNT,#10H ;地址计数器设为16。
0092 7488 104 MOV A,#88H ;第三行起始地址
0094 1201FA 105 LCALL SEND_I
0097 1201DD 106 LCALL QUSHU
009A 107 HAN_WR2D:
009A 90028F 108 MOV DPTR,#TAB1D ;显示汉字和字符
009D 753210 109 MOV COUNT,#10H ;地址计数器设为16。
00A0 7498 110 MOV A,#98H ;第四行起始地址
00A2 1201FA 111 LCALL SEND_I
00A5 1201DD 112 LCALL QUSHU
00A8 12022A 113 LCALL DELAY3
00AB 1201A4 114 LCALL FLASH
00AE 1201CD 115 LCALL CLEAR_P
116
117 ;**********************************************************
118
119 ; 显示图片
120
121 ;**********************************************************
00B1 122 TU_PLAY1:
123
00B1 90029F 124 MOV DPTR,#TU_TAB1 ;显示图形
A51 MACRO ASSEMBLER PARALLEL_PORT 12/19/2006 20:55:17 PAGE 3
00B4 120115 125 LCALL PHO_DISP
00B7 12022A 126 LCALL DELAY3
127 ;LCALL FLASH
128
00BA 129 TU_PLAY2:
00BA 90069F 130 MOV DPTR,#TU_TAB2 ;显示图形
00BD 120115 131 LCALL PHO_DISP
00C0 12022A 132 LCALL DELAY3
133 ;LCALL FLASH
134
135 ;**********************************************************
136
137 ; 显示点阵
138
139 ;**********************************************************
00C3 140 LATPLAY1:
00C3 7401 141 MOV A,#01H ;清屏
00C5 1201FA 142 LCALL SEND_I
00C8 7537CC 143 MOV LCD_DATA1,#0CCH ;显示点阵
00CB 7538CC 144 MOV LCD_DATA2,#0CCH
00CE 120150 145 LCALL LAT_DISP
00D1 12022A 146 LCALL DELAY3
00D4 1201CD 147 LCALL CLEAR_P
148
149 ;**********************************************************
150
151 ;调字库半角字符显示
152
153 ;**********************************************************
00D7 154 KU_PLAY1:
00D7 1201CD 155 LCALL CLEAR_P
00DA 753240 156 MOV COUNT,#40H
00DD 7480 157 MOV A,#80H
00DF 1201FA 158 LCALL SEND_I
00E2 7910 159 MOV R1,#10H
00E4 160 LATPLAY11:
00E4 E9 161 MOV A,R1
00E5 1201EA 162 LCALL SEND_D
00E8 09 163 INC R1
00E9 D532F8 164 DJNZ COUNT,LATPLAY11
00EC 12022A 165 LCALL DELAY3
00EF 1201CD 166 LCALL CLEAR_P
167
168 ;**********************************************************
169
170 ;调字库汉字显示
171 ;从 B9F3 “贵”字处开始显示
172
173 ;**********************************************************
00F2 174 KU_PLAY2:
00F2 1201CD 175 LCALL CLEAR_P
00F5 753240 176 MOV COUNT,#40H
00F8 7480 177 MOV A,#80H
00FA 1201FA 178 LCALL SEND_I
00FD 79F3 179 MOV R1,#0F3H
00FF 180 KU_PLAY21:
00FF 74B9 181 MOV A,#0B9H
0101 1201EA 182 LCALL SEND_D ;写入第一字节数据(高位)
0104 E9 183 MOV A,R1
0105 1201EA 184 LCALL SEND_D ;写入第二字节数据(低位)
0108 09 185 INC R1
0109 D532F3 186 DJNZ COUNT,KU_PLAY21
010C 12022A 187 LCALL DELAY3
010F 1201CD 188 LCALL CLEAR_P
189
0112 0200B1 190 LJMP TU_PLAY1
A51 MACRO ASSEMBLER PARALLEL_PORT 12/19/2006 20:55:17 PAGE 4
191
192 ;**********************************************************
193
194 ;全屏显示图形子程序
195
196 ;**********************************************************
0115 197 PHO_DISP:
0115 753502 198 MOV COUNT3,#02H
0118 753080 199 MOV LCD_X,#80H
011B 200 PHO_DISP1:
011B 753180 201 MOV LCD_Y,#80H
011E 753420 202 MOV COUNT2,#20H
0121 203 PHO_DISP2:
0121 753310 204 MOV COUNT1,#10H
0124 12018F 205 LCALL WR_ZB
0127 206 PHO_DISP3:
0127 E4 207 CLR A
0128 93 208 MOVC A,@A+DPTR
0129 1201EA 209 LCALL SEND_D
012C A3 210 INC DPTR
012D D533F7 211 DJNZ COUNT1,PHO_DISP3
0130 0531 212 INC LCD_Y
0132 D534EC 213 DJNZ COUNT2,PHO_DISP2
0135 753088 214 MOV LCD_X,#88H
0138 D535E0 215 DJNZ COUNT3,PHO_DISP1
216
013B 7436 217 MOV A,#36H
013D 1201FA 218 LCALL SEND_I
0140 7430 219 MOV A,#30H
0142 1201FA 220 LCALL SEND_I
0145 22 221 RET
222
223 ;**********************************************************
224
225 ; GDRAM写0子程序
226
227 ;**********************************************************
0146 228 CLRRAM:
0146 753700 229 MOV LCD_DATA1,#00H
0149 753800 230 MOV LCD_DATA2,#00H
014C 120150 231 LCALL LAT_DISP
014F 22 232 RET
233 ;**********************************************************
234
235 ;显示点阵子程序
236
237 ;**********************************************************
0150 238 LAT_DISP:
0150 753502 239 MOV COUNT3,#02H
0153 753080 240 MOV LCD_X,#80H
0156 241 LAT_DISP1:
0156 753180 242 MOV LCD_Y,#80H
0159 C2D5 243 CLR F0
015B 753420 244 MOV COUNT2,#20H
015E 245 LAT_DISP2:
015E 753310 246 MOV COUNT1,#10H
0161 12018F 247 LCALL WR_ZB
0164 248 LAT_DISP3:
0164 20D505 249 JB F0,LAT_DISP32
0167 853736 250 MOV LCD_DATA,LCD_DATA1
016A 216F 251 AJMP LAT_DISP31
016C 252 LAT_DISP32:
016C 853836 253 MOV LCD_DATA,LCD_DATA2
016F 254 LAT_DISP31:
016F E536 255 MOV A,LCD_DATA
0171 1201EA 256 LCALL SEND_D
A51 MACRO ASSEMBLER PARALLEL_PORT 12/19/2006 20:55:17 PAGE 5
0174 D533F8 257 DJNZ COUNT1,LAT_DISP31
0177 0531 258 INC LCD_Y
0179 B2D5 259 CPL F0
017B D534E0 260 DJNZ COUNT2,LAT_DISP2
017E 753088 261 MOV LCD_X,#88H
0181 D535D2 262 DJNZ COUNT3,LAT_DISP1
263
0184 7436 264 MOV A,#36H
0186 1201FA 265 LCALL SEND_I
0189 7430 266 MOV A,#30H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -