📄 12864_chs.lst
字号:
A51 MACRO ASSEMBLER 12864_CHS 03/16/2008 03:20:22 PAGE 1
MACRO ASSEMBLER A51 V7.10
OBJECT MODULE PLACED IN 12864_chs.OBJ
ASSEMBLER INVOKED BY: d:\Keil\C51\BIN\A51.EXE 12864_chs.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1
2
3
4 ;****************TS12864A-3 并口****************
5
00A5 6 RS EQU P2.5
00A6 7 RW EQU P2.6
00A7 8 E EQU P2.7
00B7 9 PSB EQU P3.7
00A5 10 RST EQU P2.5
11 ;-----------------------------------------------
0030 12 LCD_X EQU 30H
0031 13 LCD_Y EQU 31H
0032 14 COUNT EQU 32H
0033 15 COUNT1 EQU 33H
0034 16 COUNT2 EQU 34H
0035 17 COUNT3 EQU 35H
18 ;-----------------------------------------------
0036 19 LCD_DATA EQU 36H
0037 20 LCD_DATA1 EQU 37H
0038 21 LCD_DATA2 EQU 38H
0039 22 STORE EQU 39H
23
24 ;-----------------------------------------------
0000 25 ORG 0000H
0000 020100 26 LJMP MAIN
0100 27 ORG 0100H
28 ;-----------------------------------------------
0100 29 MAIN:
0100 C2A6 30 clr P2.6
0102 C2A7 31 clr P2.7
0104 75815F 32 MOV SP,#5FH
0107 C2A5 33 CLR RST ;复位
0109 120331 34 LCALL DELAY4
010C D2A5 35 SETB RST
010E 00 36 NOP
010F D2B7 37 SETB PSB ;通讯方式为8位数据并口
38
39 ;********************初始化**********************
0111 7434 40 LGS0: MOV A,#34H ;34H--扩充指令操作
0113 1202E2 41 LCALL SEND_I
0116 7430 42 MOV A,#30H ;30H--基本指令操作
0118 1202E2 43 LCALL SEND_I
011B 7401 44 MOV A,#01H ;清除显示
011D 1202E2 45 LCALL SEND_I
0120 7406 46 MOV A,#06H ;指定在资料写入或读取时,光标的移动方向
0122 1202E2 47 LCALL SEND_I ;DDRAM 的地址计数器(AC)加1
0125 740C 48 MOV A,#0CH ;开显示,关光标,不闪烁
0127 1202E2 49 LCALL SEND_I
50 ;===============================================
012A 51 TU_PLAY1:
012A 9003C1 52 MOV DPTR,#TU_TAB3 ;显示图形
012D 1201FD 53 LCALL PHO_DISP
0130 120312 54 LCALL DELAY3
55
56 ;===============================================
57 ;显示汉字和字符
58 ;加入80ms的延时,使你能够看清楚显示的过程
A51 MACRO ASSEMBLER 12864_CHS 03/16/2008 03:20:22 PAGE 2
59 ;根据汉字显示坐标写入 (隔行写入)
60 ;===============================================
0133 61 HAN_WR1:
0133 1202B5 62 LCALL CLEAR_P
0136 900347 63 MOV DPTR,#TAB1 ;显示汉字和字符
0139 753240 64 MOV COUNT,#40H ;地址计数器设为最大值 64。
013C 7480 65 MOV A,#80H ;起始地址
013E 1202E2 66 LCALL SEND_I
0141 1202C5 67 LCALL QUSHU
0144 120312 68 LCALL DELAY3
0147 12028C 69 LCALL FLASH
70 ;=================================================
71 ;;显示汉字和字符
72 ;加入80ms的延时,使你能够看清楚显示的过程
73 ;根据汉字显示坐标分段写入(顺序写入)
74 ;=================================================
014A 75 HAN_WR2:
014A 1202B5 76 LCALL CLEAR_P
014D 77 HAN_WR2A:
014D 900347 78 MOV DPTR,#TAB1A ;显示汉字和字符
0150 753210 79 MOV COUNT,#10H ;地址计数器设为16。
0153 7480 80 MOV A,#80H ;第一行起始地址
0155 1202E2 81 LCALL SEND_I
0158 1202C5 82 LCALL QUSHU
015B 83 HAN_WR2B:
015B 900369 84 MOV DPTR,#TAB1B ;显示汉字和字符
015E 753210 85 MOV COUNT,#10H ;地址计数器设为16。
0161 7490 86 MOV A,#90H ;第二行起始地址
0163 1202E2 87 LCALL SEND_I
0166 1202C5 88 LCALL QUSHU
0169 89 HAN_WR2C:
0169 900359 90 MOV DPTR,#TAB1C ;显示汉字和字符
016C 753210 91 MOV COUNT,#10H ;地址计数器设为16。
016F 7488 92 MOV A,#88H ;第三行起始地址
0171 1202E2 93 LCALL SEND_I
0174 1202C5 94 LCALL QUSHU
0177 95 HAN_WR2D:
0177 900378 96 MOV DPTR,#TAB1D ;显示汉字和字符
017A 753210 97 MOV COUNT,#10H ;地址计数器设为16。
017D 7498 98 MOV A,#98H ;第四行起始地址
017F 1202E2 99 LCALL SEND_I
0182 1202C5 100 LCALL QUSHU
0185 120312 101 LCALL DELAY3
0188 12028C 102 LCALL FLASH
018B 1202B5 103 LCALL CLEAR_P
018E 8009 104 JMP TU_PLAY2
105 ;----------------------------------------------
106 ;TU_PLAY1:
0190 9007C1 107 MOV DPTR,#TU_TAB4 ;显示图形
0193 1201FD 108 LCALL PHO_DISP
0196 120312 109 LCALL DELAY3
110 ;LCALL FLASH
111 ;----------------------------------------------
0199 112 TU_PLAY2:
0199 9003C1 113 MOV DPTR,#TU_TAB3 ;显示图形
019C 1201FD 114 LCALL PHO_DISP
019F 120312 115 LCALL DELAY3
116 ;LCALL FLASH
117 ;----------------------------------------------
01A2 118 TU_PLAY3:
01A2 9007C1 119 MOV DPTR,#TU_TAB4 ;显示图形
01A5 1201FD 120 LCALL PHO_DISP
01A8 120312 121 LCALL DELAY3
122 ;LCALL FLASH
123 ;-----------------------------------------------
124 ;显示点阵
A51 MACRO ASSEMBLER 12864_CHS 03/16/2008 03:20:22 PAGE 3
125 ;-----------------------------------------------
01AB 126 LATPLAY1:
01AB 7401 127 MOV A,#01H ;清屏
01AD 1202E2 128 LCALL SEND_I
01B0 7537CC 129 MOV LCD_DATA1,#0CCH ;显示点阵
01B3 7538CC 130 MOV LCD_DATA2,#0CCH
01B6 120238 131 LCALL LAT_DISP
01B9 120312 132 LCALL DELAY3
01BC 1202B5 133 LCALL CLEAR_P
134 ;LJMP TU_PLAY1
135 ;===============================================
136 ;调字库半角字符显示
137 ;===============================================
01BF 138 KU_PLAY1:
01BF 1202B5 139 LCALL CLEAR_P
01C2 753240 140 MOV COUNT,#40H
01C5 7480 141 MOV A,#80H
01C7 1202E2 142 LCALL SEND_I
01CA 7910 143 MOV R1,#10H
01CC 144 LATPLAY11:
01CC E9 145 MOV A,R1
01CD 1202D2 146 LCALL SEND_D
01D0 09 147 INC R1
01D1 D532F8 148 DJNZ COUNT,LATPLAY11
01D4 120312 149 LCALL DELAY3
01D7 1202B5 150 LCALL CLEAR_P
151 ;LJMP TU_PLAY1
152
153 ;===============================================
154 ;调字库汉字显示
155 ;从 B9F3 “贵”字处开始显示
156 ;===============================================
01DA 157 KU_PLAY2:
01DA 1202B5 158 LCALL CLEAR_P
01DD 753240 159 MOV COUNT,#40H
01E0 7480 160 MOV A,#80H
01E2 1202E2 161 LCALL SEND_I
01E5 79F3 162 MOV R1,#0F3H
01E7 163 KU_PLAY21:
01E7 74B9 164 MOV A,#0B9H
01E9 1202D2 165 LCALL SEND_D ;写入第一字节数据(高位)
01EC E9 166 MOV A,R1
01ED 1202D2 167 LCALL SEND_D ;写入第二字节数据(低位)
01F0 09 168 INC R1
01F1 D532F3 169 DJNZ COUNT,KU_PLAY21
01F4 120312 170 LCALL DELAY3
01F7 1202B5 171 LCALL CLEAR_P
01FA 02012A 172 LJMP TU_PLAY1
173 ;JMP $
174 ;===============================================
175 ;全屏显示图形子程序
176 ;===============================================
01FD 177 PHO_DISP:
01FD 753502 178 MOV COUNT3,#02H
0200 753080 179 MOV LCD_X,#80H
0203 180 PHO_DISP1:
0203 753180 181 MOV LCD_Y,#80H
0206 753420 182 MOV COUNT2,#20H
0209 183 PHO_DISP2:
0209 753310 184 MOV COUNT1,#10H
020C 120277 185 LCALL WR_ZB
020F 186 PHO_DISP3:
020F E4 187 CLR A
0210 93 188 MOVC A,@A+DPTR
0211 1202D2 189 LCALL SEND_D
0214 A3 190 INC DPTR
A51 MACRO ASSEMBLER 12864_CHS 03/16/2008 03:20:22 PAGE 4
0215 D533F7 191 DJNZ COUNT1,PHO_DISP3
0218 0531 192 INC LCD_Y
021A D534EC 193 DJNZ COUNT2,PHO_DISP2
021D 753088 194 MOV LCD_X,#88H
0220 D535E0 195 DJNZ COUNT3,PHO_DISP1
196
0223 7436 197 MOV A,#36H
0225 1202E2 198 LCALL SEND_I
0228 7430 199 MOV A,#30H
022A 1202E2 200 LCALL SEND_I
022D 22 201 RET
202 ;----------------------------------------------
022E 203 CLRRAM:
022E 753700 204 MOV LCD_DATA1,#00H ;GDRAM写0子程序
0231 753800 205 MOV LCD_DATA2,#00H
0234 120238 206 LCALL LAT_DISP
0237 22 207 RET
208 ;==============================================
209 ;显示点阵子程序
210 ;==============================================
0238 211 LAT_DISP:
0238 753502 212 MOV COUNT3,#02H
023B 753080 213 MOV LCD_X,#80H
023E 214 LAT_DISP1:
023E 753180 215 MOV LCD_Y,#80H
0241 C2D5 216 CLR F0
0243 753420 217 MOV COUNT2,#20H
0246 218 LAT_DISP2:
0246 753310 219 MOV COUNT1,#10H
0249 120277 220 LCALL WR_ZB
024C 221 LAT_DISP3:
024C 20D505 222 JB F0,LAT_DISP32
024F 853736 223 MOV LCD_DATA,LCD_DATA1
0252 4157 224 AJMP LAT_DISP31
0254 225 LAT_DISP32:
0254 853836 226 MOV LCD_DATA,LCD_DATA2
0257 227 LAT_DISP31:
0257 E536 228 MOV A,LCD_DATA
0259 1202D2 229 LCALL SEND_D
025C D533F8 230 DJNZ COUNT1,LAT_DISP31
025F 0531 231 INC LCD_Y
0261 B2D5 232 CPL F0
0263 D534E0 233 DJNZ COUNT2,LAT_DISP2
0266 753088 234 MOV LCD_X,#88H
0269 D535D2 235 DJNZ COUNT3,LAT_DISP1
236
026C 7436 237 MOV A,#36H
026E 1202E2 238 LCALL SEND_I
0271 7430 239 MOV A,#30H
0273 1202E2 240 LCALL SEND_I
0276 22 241 RET
242 ;---------------------------------------------
0277 243 WR_ZB:
0277 7434 244 MOV A,#34H
0279 1202E2 245 LCALL SEND_I
027C E531 246 MOV A,LCD_Y
027E 1202E2 247 LCALL SEND_I
0281 E530 248 MOV A,LCD_X
0283 1202E2 249 LCALL SEND_I
0286 7430 250 MOV A,#30H
0288 1202E2 251 LCALL SEND_I
028B 22 252 RET
253
254 ;===============================================
028C 255 FLASH:
028C 7408 256 MOV A,#08H ;关闭显示
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -