?? main.lst
字號:
A51 MACRO ASSEMBLER MAIN 07/01/2006 11:22:20 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)
0094 11 SI BIT P1.4 ;74HC595串行輸入信號(Serial Input)
0095 12 SCK BIT P1.5 ;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 020060 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 0200F9 41 LJMP main
42
43
44 ;*************************************************************************
45 ;函數:void SysInit()
46 ;功能:系統初始化
47 ;*************************************************************************
0027 48 SysInit:
0027 D293 49 SETB STR
0029 C294 50 CLR SI
002B C295 51 CLR SCK
002D 53890F 52 ANL TMOD, #0x0F
0030 438910 53 ORL TMOD, #0x10
0033 758DFC 54 MOV TH1, #0xFC
0036 758B66 55 MOV TL1, #0x66 ;定時1ms
0039 D28E 56 SETB TR1
003B D2AB 57 SETB ET1
003D D2AF 58 SETB EA
A51 MACRO ASSEMBLER MAIN 07/01/2006 11:22:20 PAGE 2
003F 22 59 RET
60
61
62 ;*************************************************************************
63 ;定義漢字點陣數據表
64 ;*************************************************************************
0040 65 Zimo:
66 ;文字:漢,字體:Fixedsys12,大小:16×16,取模方式:縱向取模、字節正序
0040 08068061 67 DB 0x08,0x06,0x80,0x61,0x06,0x20,0x38,0x27,0x20,0x20,0x20,0x27,0x38,0x20,0x00,
0x00
0044 06203827
0048 20202027
004C 38200000
0050 20207E80 68 DB 0x20,0x20,0x7E,0x80,0x02,0x04,0x04,0x08,0xD0,0x20,0xD0,0x08,0x0C,0x06,0x04,
0x00
0054 02040408
0058 D020D008
005C 0C060400
69
70
71 ;*************************************************************************
72 ;函數:void T1INTSVC() interrupt 3
73 ;*************************************************************************
0060 74 T1INTSVC:
75 ;unsigned char d;
76 ;unsigned char i;
77 ;unsigned char j;
78 ;unsigned char buf[4];
79 ;處理定時器T1
0060 C28E 80 CLR TR1
0062 758DFC 81 MOV TH1, #0xFC
0065 758B66 82 MOV TL1, #0x66
0068 D28E 83 SETB TR1
84 ;保護寄存器
006A C0E0 85 PUSH ACC
006C C0D0 86 PUSH PSW
006E C083 87 PUSH DPH
0070 C082 88 PUSH DPL
0072 C000 89 PUSH 0x00
0074 C002 90 PUSH 0x02
0076 C003 91 PUSH 0x03
0078 C004 92 PUSH 0x04
93 ;分配數組buf[4]
007A E581 94 MOV A, SP
007C 04 95 INC A
007D FC 96 MOV R4, A
007E 2403 97 ADD A, #3
0080 F581 98 MOV SP, A
99 ;查表,取得要發送的數據
0082 A804 100 MOV R0, 0x04
0084 9000D9 101 MOV DPTR, #T1INTSVC_Tab
0087 E530 102 MOV A, T1INTSVC_n
0089 93 103 MOVC A, @A+DPTR
008A F6 104 MOV @R0, A
008B 08 105 INC R0
008C E530 106 MOV A, T1INTSVC_n
008E 2410 107 ADD A, #16
0090 93 108 MOVC A, @A+DPTR
0091 F6 109 MOV @R0, A
0092 08 110 INC R0
0093 900040 111 MOV DPTR, #Zimo
0096 E530 112 MOV A, T1INTSVC_n
0098 2410 113 ADD A, #16
009A 93 114 MOVC A, @A+DPTR
009B F6 115 MOV @R0, A
009C 08 116 INC R0
A51 MACRO ASSEMBLER MAIN 07/01/2006 11:22:20 PAGE 3
009D E530 117 MOV A, T1INTSVC_n
009F 93 118 MOVC A, @A+DPTR
00A0 F6 119 MOV @R0, A
00A1 0530 120 INC T1INTSVC_n
00A3 53300F 121 ANL T1INTSVC_n, #0x0F
122 ;向74HC595發送數據
00A6 C293 123 CLR STR
00A8 7A00 124 MOV R2, #0
00AA 125 T1INTSVC_for:
00AA EC 126 MOV A, R4
00AB 2A 127 ADD A, R2
00AC F8 128 MOV R0, A
00AD E6 129 MOV A, @R0
00AE 7B08 130 MOV R3, #8
00B0 131 T1INTSVC_do:
00B0 A2E0 132 MOV C, ACC.0
00B2 9294 133 MOV SI, C
00B4 D295 134 SETB SCK
00B6 03 135 RR A
00B7 C295 136 CLR SCK
00B9 DBF5 137 DJNZ R3, T1INTSVC_do
00BB 0A 138 INC R2
00BC BA04EB 139 CJNE R2, #4, T1INTSVC_for
00BF D293 140 SETB STR
141 ;釋放數組buf[4]
00C1 E581 142 MOV A, SP
00C3 C3 143 CLR C
00C4 9404 144 SUBB A, #4
00C6 F581 145 MOV SP, A
146 ;恢復寄存器
00C8 D004 147 POP 0x04
00CA D003 148 POP 0x03
00CC D002 149 POP 0x02
00CE D000 150 POP 0x00
00D0 D082 151 POP DPL
00D2 D083 152 POP DPH
00D4 D0D0 153 POP PSW
00D6 D0E0 154 POP ACC
155 ;中斷返回
00D8 32 156 RETI
00D9 157 T1INTSVC_Tab:
158 ;定義掃描數據表
00D9 FFFFFFFF 159 DB 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,
0xFE
00DD FFFFFFFF
00E1 7FBFDFEF
00E5 F7FBFDFE
00E9 7FBFDFEF 160 DB 0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF
00ED F7FBFDFE
00F1 FFFFFFFF
00F5 FFFFFFFF
161
162
163 ;*************************************************************************
164 ;函數:void main()
165 ;功能:主函數
166 ;*************************************************************************
00F9 167 main:
00F9 120027 168 LCALL SysInit
00FC 80FE 169 SJMP $
170
171
172 ;*************************************************************************
173 ;程序結束
174 ;*************************************************************************
A51 MACRO ASSEMBLER MAIN 07/01/2006 11:22:20 PAGE 4
175 END
A51 MACRO ASSEMBLER MAIN 07/01/2006 11:22:20 PAGE 5
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 00F9H A
P1 . . . . . . . . D ADDR 0090H A
PREMAIN. . . . . . C ADDR 001EH A
PSW. . . . . . . . D ADDR 00D0H A
SCK. . . . . . . . B ADDR 0090H.5 A
SI . . . . . . . . B ADDR 0090H.4 A
SP . . . . . . . . D ADDR 0081H A
STR. . . . . . . . B ADDR 0090H.3 A
SYSINIT. . . . . . C ADDR 0027H A
T1INTSVC . . . . . C ADDR 0060H A
T1INTSVC_DO. . . . C ADDR 00B0H A
T1INTSVC_FOR . . . C ADDR 00AAH A
T1INTSVC_N . . . . D ADDR 0030H A
T1INTSVC_TAB . . . C ADDR 00D9H A
TH1. . . . . . . . D ADDR 008DH A
TL1. . . . . . . . D ADDR 008BH A
TMOD . . . . . . . D ADDR 0089H A
TR1. . . . . . . . B ADDR 0088H.6 A
ZIMO . . . . . . . C ADDR 0040H A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -