📄 test_disp.lst
字号:
A51 MACRO ASSEMBLER TEST_DISP 09/17/2007 09:53:25 PAGE 1
MACRO ASSEMBLER A51 V7.07
OBJECT MODULE PLACED IN test_disp.OBJ
ASSEMBLER INVOKED BY: D:\Keil\C51\BIN\A51.EXE test_disp.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;----------------------------------------------
2 ; 用汇编编制的显示程序
3 ; 2007.8.29
4
0090 5 spk BIT P1.0 ;蜂鸣器
0091 6 k1 BIT P1.1 ;k1
00A4 7 k2 BIT P2.4 ;k2
8
0097 9 led_di bit p1.7 ;74ls164 数据输入
00B3 10 led_clk bit p3.3 ;74ls164 时钟输入
11
1000 12 disp_s EQU 1000h ;十位地址
2000 13 disp_g EQU 2000h ;个位地址
4000 14 clr_led equ 4000h ;74ls164(清零)
15
16
0030 17 numb_s equ 30h ;个位数据
0031 18 numb_g equ 31h ;十位数据
0032 19 led equ 32h ;led要显示的数
20
0033 21 numb equ 33h ;
22
0000 23 org 0000h ;复位入口
0000 020198 24 ljmp main ;跳到主程序
25
0100 26 org 0100h
27
0100 28 delay_0: ;延时子程序
0100 7E02 29 mov r6,#02h
30 ;del_22: djnz r6,del_22
0102 22 31 ret
32
0103 33 delay_1: ;延时子程序
0103 7D00 34 mov r5,#00h ;
0105 7E00 35 del_2: mov r6,#00h
0107 DEFE 36 del_1: djnz r6,del_1
0109 DDFA 37 djnz r5,del_2
010B 22 38 ret
010C 39 delay_2:;;延时子程序
010C 120103 40 lcall delay_1
010F 120103 41 lcall delay_1
0112 120103 42 lcall delay_1
0115 120103 43 lcall delay_1
0118 120103 44 lcall delay_1
011B 120103 45 lcall delay_1
011E 120103 46 lcall delay_1
0121 120103 47 lcall delay_1
0124 120103 48 lcall delay_1
0127 120103 49 lcall delay_1
012A 120103 50 lcall delay_1
012D 120103 51 lcall delay_1
0130 22 52 ret
0131 53 sprak_on: ;蜂鸣器发声
0131 C290 54 clr spk;
0133 120103 55 lcall delay_1
0136 D290 56 setb spk
0138 22 57 ret
0139 58 clr_led_d:
A51 MACRO ASSEMBLER TEST_DISP 09/17/2007 09:53:25 PAGE 2
0139 904000 59 mov dptr,#clr_led;
013C E0 60 movx a,@dptr
013D 22 61 ret
62
013E 63 disp_led: ;led=?
64 ;lcall clr_led_d;清零
013E E532 65 mov a,led;
0140 753308 66 mov numb,#08h
0143 C2B3 67 clr led_clk
68
0145 69 c_disp_led:
70
0145 33 71 rlc a
0146 9297 72 mov led_di,c
0148 120100 73 lcall delay_0;
74
014B D2B3 75 setb led_clk;
014D 120100 76 lcall delay_0;
0150 C2B3 77 clr led_clk;
0152 120100 78 lcall delay_0;
79
0155 D533ED 80 djnz numb,c_disp_led
0158 22 81 ret
82
0159 83 loop_led:
0159 7F80 84 mov r7,#80h
015B 85 loop_led1:
015B 8F32 86 mov led,r7
015D 12013E 87 lcall disp_led;显示
0160 120103 88 lcall delay_1
89
0163 EF 90 mov a,r7
0164 13 91 rrc a
0165 FF 92 mov r7,a
0166 309105 93 jnb k1,quit_k1
0169 30A402 94 jnb k2,quit_k1
016C 80ED 95 sjmp loop_led1
016E 96 quit_k1:
016E 22 97 ret
98 ;
99 ;----------------------------------------------
016F 100 tab: ;数码管显示0,1,2,3,4,5,6,7,8,9代码(查表用)
016F 3F 101 db 3fh; "0"
0170 06 102 db 06h; "1"
0171 5B 103 db 5bh; "2"
0172 4F 104 db 4fh; "3"
0173 66 105 db 66h; "4"
0174 6D 106 db 6dh; "5"
0175 7D 107 db 7dh; "6"
0176 07 108 db 07h; "7"
0177 7F 109 db 7fh; "8"
0178 67 110 db 67h; "9"
0179 77 111 db 77h; "a"
017A 7C 112 db 7ch; "b"
017B 39 113 db 39h; "c"
017C 5E 114 db 5eh; "d"
017D 79 115 db 79h; "e"
017E 71 116 db 71h; "f"
017F 00 117 db 00h; " "
118
119 ;--------------------------------
0180 120 f_numb: ;a=?
0180 90016F 121 mov dptr,#tab ;置表的头
0183 93 122 movc a,@a+dptr ;查表
0184 22 123 ret
124
A51 MACRO ASSEMBLER TEST_DISP 09/17/2007 09:53:25 PAGE 3
0185 125 display: ;numb_s=? numb_g=?
0185 E530 126 mov a,numb_s
0187 120180 127 lcall f_numb; 查表
018A 901000 128 mov dptr,#disp_s;置十位的地址
018D F0 129 movx @dptr,a;写数
130
018E E531 131 mov a,numb_g;
0190 120180 132 lcall f_numb; 查表
0193 902000 133 mov dptr,#disp_g;置个位的地址
0196 F0 134 movx @dptr,a;写数
0197 22 135 ret
136
137
0198 138 main: ;主程序入口
0198 758190 139 mov sp,#90h ;设堆栈
019B 75B800 140 mov ip,#00h ;关中断
141
019E 120131 142 lcall sprak_on ;发声
01A1 12010C 143 lcall delay_2
01A4 120131 144 lcall sprak_on ;发声
145
01A7 753002 146 mov numb_s,#02h ;显示2
01AA 753101 147 mov numb_g,#01h ;显示1
01AD 120185 148 lcall display ;调用显示程序
149
01B0 120159 150 lcall loop_led
01B3 753255 151 mov led,#55h; 显示55
01B6 12013E 152 lcall disp_led;
01B9 153 loop:
154 ;jnb k1,to_disp
155 ;jnb k2,to_led
156 ;sjmp loop
157
01B9 158 to_disp:
159
01B9 753000 160 mov numb_s,#00h ;显示0
01BC 753101 161 mov numb_g,#01h ;显示1
162
01BF 163 loop1:
01BF 120185 164 lcall display ;显示
01C2 12010C 165 lcall delay_2 ;延时
166
01C5 0530 167 inc numb_s
01C7 C3 168 clr c
01C8 E530 169 mov a,numb_s
01CA 9409 170 subb a,#09h
01CC 5019 171 jnc clr_numb_s
172
01CE 173 tnumb_g:
01CE 0531 174 inc numb_g
01D0 C3 175 clr c
01D1 E531 176 mov a,numb_g
01D3 9409 177 subb a,#09h
01D5 5015 178 jnc clr_numb_g
01D7 179 tnumb_gg:
01D7 E532 180 mov a,led
01D9 F4 181 cpl a
01DA F532 182 mov led,a
01DC 12013E 183 lcall disp_led
01DF 3091B6 184 jnb k1,main ;查键
01E2 30A4B3 185 jnb k2,main ;查键
01E5 80D8 186 sjmp loop1
187
01E7 188 clr_numb_s:
01E7 753000 189 mov numb_s,#00h
01EA 80E2 190 sjmp tnumb_g
A51 MACRO ASSEMBLER TEST_DISP 09/17/2007 09:53:25 PAGE 4
191
01EC 192 clr_numb_g:
01EC 753100 193 mov numb_g,#00h
01EF 80E6 194 sjmp tnumb_gg
195
196
01F1 197 to_led:
01F1 80FE 198 sjmp $
199
200 end
A51 MACRO ASSEMBLER TEST_DISP 09/17/2007 09:53:25 PAGE 5
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
CLR_LED. . . . . . N NUMB 4000H A
CLR_LED_D. . . . . C ADDR 0139H A
CLR_NUMB_G . . . . C ADDR 01ECH A
CLR_NUMB_S . . . . C ADDR 01E7H A
C_DISP_LED . . . . C ADDR 0145H A
DELAY_0. . . . . . C ADDR 0100H A
DELAY_1. . . . . . C ADDR 0103H A
DELAY_2. . . . . . C ADDR 010CH A
DEL_1. . . . . . . C ADDR 0107H A
DEL_2. . . . . . . C ADDR 0105H A
DISPLAY. . . . . . C ADDR 0185H A
DISP_G . . . . . . N NUMB 2000H A
DISP_LED . . . . . C ADDR 013EH A
DISP_S . . . . . . N NUMB 1000H A
F_NUMB . . . . . . C ADDR 0180H A
IP . . . . . . . . D ADDR 00B8H A
K1 . . . . . . . . B ADDR 0090H.1 A
K2 . . . . . . . . B ADDR 00A0H.4 A
LED. . . . . . . . N NUMB 0032H A
LED_CLK. . . . . . B ADDR 00B0H.3 A
LED_DI . . . . . . B ADDR 0090H.7 A
LOOP . . . . . . . C ADDR 01B9H A
LOOP1. . . . . . . C ADDR 01BFH A
LOOP_LED . . . . . C ADDR 0159H A
LOOP_LED1. . . . . C ADDR 015BH A
MAIN . . . . . . . C ADDR 0198H A
NUMB . . . . . . . N NUMB 0033H A
NUMB_G . . . . . . N NUMB 0031H A
NUMB_S . . . . . . N NUMB 0030H A
P1 . . . . . . . . D ADDR 0090H A
P2 . . . . . . . . D ADDR 00A0H A
P3 . . . . . . . . D ADDR 00B0H A
QUIT_K1. . . . . . C ADDR 016EH A
SP . . . . . . . . D ADDR 0081H A
SPK. . . . . . . . B ADDR 0090H.0 A
SPRAK_ON . . . . . C ADDR 0131H A
TAB. . . . . . . . C ADDR 016FH A
TNUMB_G. . . . . . C ADDR 01CEH A
TNUMB_GG . . . . . C ADDR 01D7H A
TO_DISP. . . . . . C ADDR 01B9H A
TO_LED . . . . . . C ADDR 01F1H A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -