📄 main.lst
字号:
A51 MACRO ASSEMBLER MAIN 07/01/2006 11:25:27 PAGE 1
MACRO ASSEMBLER A51 V7.09
OBJECT MODULE PLACED IN main.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE main.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;*************************************************************************
2 ; main.asm
3 ; 16×16 LED点阵的扫描显示:显示一个汉字
4 ;*************************************************************************
5
6
7 ;*************************************************************************
8 ;定义I/O端口
9 ;*************************************************************************
0093 10 STR BIT P1.3 ;74HC595存储寄存器时钟(Stroage register clock)
11 ;SI BIT P3.0 ;74HC595串行输入信号(Serial Input)
12 ;SCK BIT P3.1 ;74HC595移位寄存器时钟(Shift register clock)
13
14
15 ;*************************************************************************
16 ;定义变量
17 ;*************************************************************************
0030 18 T1INTSVC_n DATA 0x30 ;用于函数T1INTSVC()
19
20
21 ;*************************************************************************
22 ;复位入口
23 ;*************************************************************************
0000 24 ORG 0x0000
0000 02001E 25 LJMP PreMain
26
27
28 ;*************************************************************************
29 ;定时器T1中断入口
30 ;*************************************************************************
001B 31 ORG 0x001B
001B 02005F 32 LJMP T1INTSVC
33
34
35 ;*************************************************************************
36 ;进入主程序之前的初始化
37 ;*************************************************************************
001E 38 PreMain:
001E 758130 39 MOV SP, #0x30
0021 753000 40 MOV T1INTSVC_n, #0x00
0024 0200F2 41 LJMP main
42
43
44 ;*************************************************************************
45 ;函数:void SysInit()
46 ;功能:系统初始化
47 ;*************************************************************************
0027 48 SysInit:
0027 D293 49 SETB STR
0029 759800 50 MOV SCON, #0x00 ;设置串行口工作在方式0(同步移位寄存器)
002C 53890F 51 ANL TMOD, #0x0F
002F 438910 52 ORL TMOD, #0x10
0032 758DFC 53 MOV TH1, #0xFC
0035 758B66 54 MOV TL1, #0x66 ;定时1ms
0038 D28E 55 SETB TR1
003A D2AB 56 SETB ET1
003C D2AF 57 SETB EA
003E 22 58 RET
A51 MACRO ASSEMBLER MAIN 07/01/2006 11:25:27 PAGE 2
59
60
61 ;*************************************************************************
62 ;定义汉字点阵数据表
63 ;*************************************************************************
003F 64 Zimo:
65 ;文字:汉,字体:Fixedsys12,大小:16×16,取模方式:纵向取模、字节正序
003F 08068061 66 DB 0x08,0x06,0x80,0x61,0x06,0x20,0x38,0x27,0x20,0x20,0x20,0x27,0x38,0x20,0x00,
0x00
0043 06203827
0047 20202027
004B 38200000
004F 20207E80 67 DB 0x20,0x20,0x7E,0x80,0x02,0x04,0x04,0x08,0xD0,0x20,0xD0,0x08,0x0C,0x06,0x04,
0x00
0053 02040408
0057 D020D008
005B 0C060400
68
69
70 ;*************************************************************************
71 ;函数:void T1INTSVC() interrupt 3
72 ;*************************************************************************
005F 73 T1INTSVC:
74 ;unsigned char i;
75 ;unsigned char buf[4];
76 ;处理定时器T1
005F C28E 77 CLR TR1
0061 758DFC 78 MOV TH1, #0xFC
0064 758B66 79 MOV TL1, #0x66
0067 D28E 80 SETB TR1
81 ;保护寄存器
0069 C0E0 82 PUSH ACC
006B C0D0 83 PUSH PSW
006D C083 84 PUSH DPH
006F C082 85 PUSH DPL
0071 C000 86 PUSH 0x00
0073 C002 87 PUSH 0x02
0075 C003 88 PUSH 0x03
0077 C004 89 PUSH 0x04
90 ;分配数组buf[4]
0079 E581 91 MOV A, SP
007B 04 92 INC A
007C FC 93 MOV R4, A
007D 2403 94 ADD A, #3
007F F581 95 MOV SP, A
96 ;查表,取得要发送的数据
0081 A804 97 MOV R0, 0x04
0083 9000D2 98 MOV DPTR, #T1INTSVC_Tab
0086 E530 99 MOV A, T1INTSVC_n
0088 93 100 MOVC A, @A+DPTR
0089 F6 101 MOV @R0, A
008A 08 102 INC R0
008B E530 103 MOV A, T1INTSVC_n
008D 2410 104 ADD A, #16
008F 93 105 MOVC A, @A+DPTR
0090 F6 106 MOV @R0, A
0091 08 107 INC R0
0092 90003F 108 MOV DPTR, #Zimo
0095 E530 109 MOV A, T1INTSVC_n
0097 2410 110 ADD A, #16
0099 93 111 MOVC A, @A+DPTR
009A F6 112 MOV @R0, A
009B 08 113 INC R0
009C E530 114 MOV A, T1INTSVC_n
009E 93 115 MOVC A, @A+DPTR
009F F6 116 MOV @R0, A
A51 MACRO ASSEMBLER MAIN 07/01/2006 11:25:27 PAGE 3
00A0 0530 117 INC T1INTSVC_n
00A2 53300F 118 ANL T1INTSVC_n, #0x0F
119 ;向74HC595发送数据
00A5 C293 120 CLR STR
00A7 7A00 121 MOV R2, #0
00A9 122 T1INTSVC_for:
00A9 EC 123 MOV A, R4
00AA 2A 124 ADD A, R2
00AB F8 125 MOV R0, A
00AC E6 126 MOV A, @R0
00AD F599 127 MOV SBUF, A
00AF 3099FD 128 JNB TI, $
00B2 C299 129 CLR TI
00B4 0A 130 INC R2
00B5 BA04F1 131 CJNE R2, #4, T1INTSVC_for
00B8 D293 132 SETB STR
133 ;释放数组buf[4]
00BA E581 134 MOV A, SP
00BC C3 135 CLR C
00BD 9404 136 SUBB A, #4
00BF F581 137 MOV SP, A
138 ;恢复寄存器
00C1 D004 139 POP 0x04
00C3 D003 140 POP 0x03
00C5 D002 141 POP 0x02
00C7 D000 142 POP 0x00
00C9 D082 143 POP DPL
00CB D083 144 POP DPH
00CD D0D0 145 POP PSW
00CF D0E0 146 POP ACC
147 ;中断返回
00D1 32 148 RETI
00D2 149 T1INTSVC_Tab:
150 ;定义扫描数据表
00D2 FFFFFFFF 151 DB 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,
0xFE
00D6 FFFFFFFF
00DA 7FBFDFEF
00DE F7FBFDFE
00E2 7FBFDFEF 152 DB 0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF
00E6 F7FBFDFE
00EA FFFFFFFF
00EE FFFFFFFF
153
154
155 ;*************************************************************************
156 ;函数:void main()
157 ;功能:主函数
158 ;*************************************************************************
00F2 159 main:
00F2 120027 160 LCALL SysInit
00F5 80FE 161 SJMP $
162
163
164 ;*************************************************************************
165 ;程序结束
166 ;*************************************************************************
167 END
A51 MACRO ASSEMBLER MAIN 07/01/2006 11:25:27 PAGE 4
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
ACC. . . . . . . . D ADDR 00E0H A
DPH. . . . . . . . D ADDR 0083H A
DPL. . . . . . . . D ADDR 0082H A
EA . . . . . . . . B ADDR 00A8H.7 A
ET1. . . . . . . . B ADDR 00A8H.3 A
MAIN . . . . . . . C ADDR 00F2H A
P1 . . . . . . . . D ADDR 0090H A
PREMAIN. . . . . . C ADDR 001EH A
PSW. . . . . . . . D ADDR 00D0H A
SBUF . . . . . . . D ADDR 0099H A
SCON . . . . . . . D ADDR 0098H A
SP . . . . . . . . D ADDR 0081H A
STR. . . . . . . . B ADDR 0090H.3 A
SYSINIT. . . . . . C ADDR 0027H A
T1INTSVC . . . . . C ADDR 005FH A
T1INTSVC_FOR . . . C ADDR 00A9H A
T1INTSVC_N . . . . D ADDR 0030H A
T1INTSVC_TAB . . . C ADDR 00D2H A
TH1. . . . . . . . D ADDR 008DH A
TI . . . . . . . . B ADDR 0098H.1 A
TL1. . . . . . . . D ADDR 008BH A
TMOD . . . . . . . D ADDR 0089H A
TR1. . . . . . . . B ADDR 0088H.6 A
ZIMO . . . . . . . C ADDR 003FH A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -