📄 ex3-9.lst
字号:
A51 MACRO ASSEMBLER EX3_9 06/23/2007 17:15:17 PAGE 1
MACRO ASSEMBLER A51 V7.09
OBJECT MODULE PLACED IN ex3-9.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE ex3-9.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;--------------程序信息-----------------
2 ;文件名 : ex3-9.asm
3 ;版本 : 1.0
4 ;作者 :
5 ;修改时间 :
6
7 ;--------------程序说明------------------
8 ;CHAP 3.9 液晶显示复杂自制图形实例
9
10 ;-----------常量和变量声明---------------
00B7 11 DI EQU P3.7; DATA(1)\INSTRUCTION
00B6 12 RW EQU P3.6; READ(1)\WRITE
00B5 13 E EQU P3.5; ENABLE
00B4 14 CS1 EQU P3.4; CHIP SELECT RIGHT SIDE
00B3 15 CS2 EQU P3.3; CHIP SELECT LEFT SIDE
0090 16 LCMP EQU P1;
00A0 17 KEYIN EQU P2;
18
0032 19 PAGEADD EQU 32H;
0033 20 YNUM EQU 33H
21
0034 22 STPAGE EQU 34H;
0035 23 STY EQU 35H;
0036 24 LNGTH EQU 36H;
0037 25 WIDTH EQU 37H;
26
0038 27 PX EQU 38H;
0039 28 PY EQU 39H;
29
003A 30 HEADX EQU 3AH;
003B 31 HEADY EQU 3BH;
003C 32 TAILX EQU 3CH;
003D 33 TAILY EQU 3DH;
34
003E 35 DIR EQU 3EH; DIRECTION
003F 36 HEADXA EQU 3FH;
0040 37 HEADYA EQU 40H;
0041 38 SNAGLNG EQU 41H;
39
0042 40 TAILXA EQU 42H;
0043 41 TAILYA EQU 43H;
0044 42 TDIR EQU 44H;
43
0045 44 SPOT EQU 45H;
0046 45 SPOTED EQU 46H;
46
0000 47 ERR BIT 00H;
0001 48 ENSPOT BIT 01H;
0002 49 ALL BIT 02H;
50 ;--------------INTERRUPT PRG ADDRESS----------
51
52
53 ;--------------PRE-DEFINATION--------------------
0000 54 ORG 000H
0000 020003 55 LJMP START
56 ;ORG 0030H
57
0003 58 START:
A51 MACRO ASSEMBLER EX3_9 06/23/2007 17:15:17 PAGE 2
59 ;--------------INITIAL PRG----------------
0003 758160 60 MOV SP,#60H;
0006 C200 61 CLR ERR;
0008 C201 62 CLR ENSPOT;
000A C202 63 CLR ALL;
64 ;--------------MAIN PRG--------------------
000C 65 MAIN:
000C 12002D 66 LCALL INIT;
000F 120578 67 LCALL INITBMP;
0012 12058E 68 LCALL BMP;
0015 1200EC 69 LCALL INITSNAG;
70 ;LJMP INITSNAG;
0018 71 MAINLOOP:
0018 200006 72 JB ERR,MAINLOOP1;
001B 200203 73 JB ALL,MAINLOOP1;
001E 1202D6 74 LCALL SNAG;
75 ;LJMP SNAG;
0021 76 MAINLOOP1:
0021 1203E2 77 LCALL KEYBOARD;
0024 12046B 78 LCALL KEYEXE;
0027 1205FB 79 LCALL DELAY100MS;
002A 020018 80 LJMP MAINLOOP;
81
82
83 ;--------------SUB PRG------------------
002D 12009E 84 INIT: LCALL RIGHTSIDE;
0030 120040 85 LCALL INITLCM;
0033 1200A3 86 LCALL CLS;
0036 120099 87 LCALL LEFTSIDE;
0039 120040 88 LCALL INITLCM;
003C 1200A3 89 LCALL CLS;
003F 22 90 RET;
91 ;--------------LCM SUB------------------
0040 92 INITLCM:
0040 D2B5 93 SETB E;
94
0042 75903E 95 MOV LCMP,#3EH; DISPLAY OFF
0045 120067 96 LCALL WI;
97
0048 7590C0 98 MOV LCMP,#0C0H; SET INITIAL ROW
004B 120067 99 LCALL WI;
100
004E 7590B8 101 MOV LCMP,#0B8H; SET PAGEADD
0051 120067 102 LCALL WI;
0054 7532B8 103 MOV PAGEADD,#0B8H;
104
0057 759040 105 MOV LCMP,#40H; SET Y
005A 120067 106 LCALL WI;
005D 753340 107 MOV YNUM,#40H;
108
0060 75903F 109 MOV LCMP,#3FH; DISPLAY ON;
0063 120067 110 LCALL WI;
111
0066 22 112 RET;
113 ;-------------------------------------
0067 C2B7 114 WI: CLR DI
0069 C2B6 115 CLR RW
006B 1205CF 116 LCALL DELAYLCD
006E C2B5 117 CLR E
0070 1205CF 118 LCALL DELAYLCD
0073 D2B5 119 SETB E
0075 22 120 RET;
121
0076 C2B6 122 WD: CLR RW
0078 D2B7 123 SETB DI;
007A 1205CF 124 LCALL DELAYLCD
A51 MACRO ASSEMBLER EX3_9 06/23/2007 17:15:17 PAGE 3
007D C2B5 125 CLR E;
007F 1205CF 126 LCALL DELAYLCD;
0082 D2B5 127 SETB E;
0084 C2B7 128 CLR DI;
0086 22 129 RET;
130
0087 D2B6 131 RDD: SETB RW
0089 D2B7 132 SETB DI;
008B 1205CF 133 LCALL DELAYLCD
008E C2B5 134 CLR E;
0090 1205CF 135 LCALL DELAYLCD;
0093 D2B5 136 SETB E;
0095 1205CF 137 LCALL DELAYLCD
138 ;CLR DI;
139 ;CLR RW;
0098 22 140 RET;
141
0099 142 LEFTSIDE:
0099 D2B4 143 SETB CS1;
009B C2B3 144 CLR CS2;
009D 22 145 RET;
146
009E 147 RIGHTSIDE:
009E D2B3 148 SETB CS2;
00A0 C2B4 149 CLR CS1;
00A2 22 150 RET;
151 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
00A3 152 CLS: ;LCALL LEFTSIDE;
00A3 753340 153 MOV YNUM,#40H;
00A6 7532B8 154 MOV PAGEADD,#0B8H;
155
00A9 7808 156 MOV R0,#08H;
00AB 7940 157 CLS0: MOV R1,#64;
00AD 853290 158 MOV LCMP,PAGEADD;
00B0 120067 159 LCALL WI;
00B3 853390 160 MOV LCMP,YNUM;
00B6 120067 161 LCALL WI;
00B9 162 CLS1:
00B9 759000 163 MOV LCMP,#00H;
00BC 120076 164 LCALL WD;
00BF D9F8 165 DJNZ R1,CLS1;
00C1 0532 166 INC PAGEADD;
00C3 D8E6 167 DJNZ R0,CLS0;
168
00C5 22 169 RET;
170
00C6 171 CLSDRAW:
00C6 12009E 172 LCALL RIGHTSIDE;
00C9 75334C 173 MOV YNUM,#4CH;
00CC 7532B9 174 MOV PAGEADD,#0B9H;
175
00CF 7806 176 MOV R0,#06H;
00D1 7928 177 CLS2: MOV R1,#40;
00D3 853290 178 MOV LCMP,PAGEADD;
00D6 120067 179 LCALL WI;
180
00D9 853390 181 MOV LCMP,YNUM;
00DC 120067 182 LCALL WI;
00DF 183 CLS3:
00DF 759000 184 MOV LCMP,#00H;
00E2 120076 185 LCALL WD;
00E5 D9F8 186 DJNZ R1,CLS3;
00E7 0532 187 INC PAGEADD;
00E9 D8E6 188 DJNZ R0,CLS2;
189
00EB 22 190 RET;
A51 MACRO ASSEMBLER EX3_9 06/23/2007 17:15:17 PAGE 4
191 ;--------------SNAG SUB-----------------
192 ;
00EC 193 INITSNAG:
00EC 753902 194 MOV PY,#02H;
00EF 753820 195 MOV PX,#20H;
00F2 7B0A 196 MOV R3,#0AH;
197 ;INITIALIZE HEAD AND TAIL
00F4 85383C 198 MOV TAILX,PX;
00F7 85393D 199 MOV TAILY,PY;
00FA E538 200 MOV A,PX;
00FC 2B 201 ADD A,R3;
00FD 14 202 DEC A;
00FE F53A 203 MOV HEADX,A;
0100 85393B 204 MOV HEADY,PY;
205
0103 754280 206 MOV TAILXA,#80H;
0106 7543C0 207 MOV TAILYA,#0C0H;
0109 75410A 208 MOV SNAGLNG,#0AH; THE SAME WITH THE R3
209 ; SO WE CAN INFER THE TAILXAYA FROM IT
010C E542 210 MOV A,TAILXA;
010E 2541 211 ADD A,SNAGLNG;
0110 14 212 DEC A;
0111 F53F 213 MOV HEADXA,A;
0113 7440 214 MOV A,#40H;
0115 253F 215 ADD A,HEADXA;
0117 F540 216 MOV HEADYA,A;
217
0119 A842 218 MOV R0,TAILXA;
011B A943 219 MOV R1,TAILYA;
220
011D 221 INITSNAG1:
011D E9 222 MOV A,R1;
011E C0E0 223 PUSH ACC;
0120 E8 224 MOV A,R0;
0121 C0E0 225 PUSH ACC;
226
0123 12015E 227 LCALL DISPXY;
228 ; INITIALIZE ALL THE BODY OF THE SNAG;
0126 D0E0 229 POP ACC;
0128 F8 230 MOV R0,A;
0129 D0E0 231 POP ACC;
012B F9 232 MOV R1,A;
233
234 ;MOV R0,TAILXA;
012C A638 235 MOV @R0,PX;
236 ;MOV R0,TAILYA;
012E A739 237 MOV @R1,PY;
238
0130 08 239 INC R0;
0131 09 240 INC R1;
0132 0538 241 INC PX;
0134 DBE7 242 DJNZ R3,INITSNAG1;
243
0136 753E11 244 MOV DIR,#00010001B;
245
246 ;INITIALIZE THE SNAGSPOT MAP
0139 754509 247 MOV SPOT,#09H; ;THE VARIABLE SPOT MEAN THE NUMBER OF THE SPOT IN MAP
013C 754600 248 MOV SPOTED,#00H; ;SPOTXDB AND SPOTYDB STORE THE X Y COORDINATION
013F 7800 249 MOV R0,#00H;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -