📄 ex9-6.lst
字号:
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 1
MCS-51 Family Cross Assembler A S E M - 5 1 V 1.2
=====================================================
Source File: EX9-6.ASM
Object File: EX9-6.HEX
List File: EX9-6.LST
Line I Addr Code Source
1: N 0000 ORG 0000H
2: 0000 02 00 30 START: LJMP MAIN
3: N 0030 ORG 0030H
4: 0030 75 81 60 MAIN: MOV SP,#60H
5: 0033 75 7A 00 MOV 7AH,#00
6: 0036 75 7B 01 MOV 7BH,#01
7: 0039 75 7C 02 MOV 7CH,#02
8: 003C 75 7D 03 MOV 7DH,#03
9: 003F 75 7E 04 MOV 7EH,#04
10: 0042 75 7F 05 MOV 7FH,#05
11: 0045 90 7F 00 MOV DPTR,#7F00H ;8155命令口地址
12: 0048 74 03 MOV A,#03H ;置8155PA、PB口为输出,PC口为输入
13: 004A F0 MOVX @DPTR,A
14: 004B 12 00 A1 LOOP: LCALL DISP
15: 004E 12 00 6A LCALL KEY
16: 0051 EC MOV A,R4
17: 0052 B4 88 02 CJNE A,#88H,DSP
18: 0055 80 F4 SJMP LOOP
19: 0057 F5 7A DSP: MOV 7AH,A ;键值送入显示缓冲区单元7AH
20: 0059 75 7B 10 MOV 7BH,#010H
21: 005C 75 7C 10 MOV 7CH,#010H
22: 005F 75 7D 10 MOV 7DH,#010H
23: 0062 75 7E 10 MOV 7EH,#010H
24: 0065 75 7F 10 MOV 7FH,#010H
25: 0068 80 E1 SJMP LOOP
26: ;按键识别子程序
27: 006A 7C 00 KEY: MOV R4,#00H ;0→键号寄存器R4
28: 006C 7A 01 MOV R2,#01H ;扫描模式01H→R2
29: 006E 90 7F 02 KEY1: MOV DPTR,#7F02H
30: 0071 EA MOV A,R2
31: 0072 F0 MOVX @DPTR,A ;扫描模式→8155PB口
32: 0073 A3 INC DPTR
33: 0074 E0 MOVX A,@DPTR ;读8155PC口
34: 0075 20 E0 04 JB ACC.0,KEY2 ;0列无键闭合,转判1列
35: 0078 74 00 MOV A,#00H ;0列有键闭合,0→A
36: 007A 01 8F AJMP KEY5
37: 007C 20 E1 04 KEY2: JB ACC.1,KEY3 ;1列无键闭合,转判2列
38: 007F 74 01 MOV A,#01H ;1列有键闭合,列线号01H→A
39: 0081 01 8F AJMP KEY5
40: 0083 20 E2 04 KEY3: JB ACC.2,KEY4 ;2列无键闭合,转判3列
41: 0086 74 02 MOV A,#02H ;2列有键闭合,02H→A
42: 0088 01 8F AJMP KEY5
43: 008A 20 E3 05 KEY4: JB ACC.3,NEXT ;3列无键闭合,转判下一行
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 2
Line I Addr Code Source
44: 008D 74 03 MOV A,#03H ;3列有键闭合,03H→A
45: 008F 2C KEY5: ADD A,R4 ;列线号+(R4)作为键值→A
46: 0090 FC MOV R4,A ;键值→R4
47: 0091 22 RET ;返回
48: 0092 EC NEXT: MOV A,R4;
49: 0093 24 04 ADD A,#04 ;键号寄存器加4
50: 0095 FC MOV R4,A
51: 0096 EA MOV A,R2
52: 0097 20 E3 04 JB ACC.3,NEXT1 ;判别是否已扫描到最后一行
53: 009A 23 RL A ;扫描模式左移一位
54: 009B FA MOV R2,A
55: 009C 01 6E AJMP KEY1 ;重新开始扫描下一行
56: 009E 7C 88 NEXT1: MOV R4,#88H ;扫描到最后一行仍无按键置无键闭合标志
57: 00A0 22 RET
58: ;数码管显示组程序
59: 00A1 78 7A DISP: MOV R0,#7AH ;置显示缓冲器指针初值
60: 00A3 7B 01 MOV R3,#01H ;置扫描模式初值
61: 00A5 90 7F 02 DISPB1: MOV DPTR,#7F02H ;8155 PB口地址
62: 00A8 74 00 MOV A,#0h ;熄灭所有LED
63: 00AA F0 MOVX @DPTR,A
64: 00AB 90 7F 01 MOV DPTR,#7F01H ;8155 PA口地址
65: 00AE E6 MOV A, @R0 ;取显示数据
66: 00AF 24 14 ADD A,#014H ;加偏移量
67: 00B1 83 MOVC A, @A+PC ;查表取段码
68: 00B2 F0 MOVX @DPTR,A ;段码→8155 PA口
69: 00B3 EB MOV A,R3
70: 00B4 90 7F 02 MOV DPTR,#7F02H ;8155 PB口地址
71: 00B7 F0 MOVX @DPTR,A ;扫描模式→8155 PB口
72: 00B8 11 DD ACALL DELAY ;延时
73: 00BA 08 INC R0
74: 00BB EB MOV A,R3
75: 00BC 20 E6 04 JB ACC.6,DISPB2 ;判6位LED显示完否
76: 00BF 23 RL A ;扫描模式左移1位
77: 00C0 FB MOV R3,A
78: 00C1 01 A5 AJMP DISPB1
79: 00C3 7B 01 DISPB2: MOV R3,#01H
80: 00C5 22 RET
81: 00C6 3F 06 5B 4F SEGPT2: Db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h ;段码表
00CA 66 6D 7D 07
82: 00CE 7F 6F 77 7C db 7fh,6fh,77h,7ch,39h,5eh,79h,71h
00D2 39 5E 79 71
83: 00D6 00 02 08 00 db 00h,02h,08h,00h,59h,0fh,76h
00DA 59 0F 76
84: ;延时子程序
85: 00DD 7C FF DELAY: MOV R4,#0FFH
86: 00DF DC FE DELAY1: DJNZ R4,DELAY1
87: 00E1 22 RET
88:
89:
90: END
register banks used: ---
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 3
no errors
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 4
L I S T O F S Y M B O L S
=============================
SYMBOL TYPE VALUE LINE
------------------------------------------------------------
AC BIT D6
ACC DATA E0
B DATA F0
CY BIT D7
DELAY CODE 00DD 85
DELAY1 CODE 00DF 86
DISP CODE 00A1 59
DISPB1 CODE 00A5 61
DISPB2 CODE 00C3 79
DPH DATA 83
DPL DATA 82
DSP CODE 0057 19
EA BIT AF
ES BIT AC
ET0 BIT A9
ET1 BIT AB
EX0 BIT A8
EX1 BIT AA
EXTI0 CODE 0003
EXTI1 CODE 0013
F0 BIT D5
IE DATA A8
IE0 BIT 89
IE1 BIT 8B
INT0 BIT B2
INT1 BIT B3
IP DATA B8
IT0 BIT 88
IT1 BIT 8A
KEY CODE 006A 27
KEY1 CODE 006E 29
KEY2 CODE 007C 37
KEY3 CODE 0083 40
KEY4 CODE 008A 43
KEY5 CODE 008F 45
LOOP CODE 004B 14
MAIN CODE 0030 4
NEXT CODE 0092 48
NEXT1 CODE 009E 56
OV BIT D2
P BIT D0
P0 DATA 80
P1 DATA 90
P2 DATA A0
P3 DATA B0
PCON DATA 87
PS BIT BC
PSW DATA D0
PT0 BIT B9
PT1 BIT BB
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 5
SYMBOL TYPE VALUE LINE
------------------------------------------------------------
PX0 BIT B8
PX1 BIT BA
RB8 BIT 9A
RD BIT B7
REN BIT 9C
RESET CODE 0000
RI BIT 98
RS0 BIT D3
RS1 BIT D4
RXD BIT B0
SBUF DATA 99
SCON DATA 98
SEGPT2 CODE 00C6 81
SINT CODE 0023
SM0 BIT 9F
SM1 BIT 9E
SM2 BIT 9D
SP DATA 81
START CODE 0000 2
T0 BIT B4
T1 BIT B5
TB8 BIT 9B
TCON DATA 88
TF0 BIT 8D
TF1 BIT 8F
TH0 DATA 8C
TH1 DATA 8D
TI BIT 99
TIMER0 CODE 000B
TIMER1 CODE 001B
TL0 DATA 8A
TL1 DATA 8B
TMOD DATA 89
TR0 BIT 8C
TR1 BIT 8E
TXD BIT B1
WR BIT B6
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -