📄 ex9-8.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-8.ASM
Object File: EX9-8.HEX
List File: EX9-8.LST
Line I Addr Code Source
1:
2: N 0000 ORG 0000H
3: 0000 02 00 30 START: LJMP MAIN
4: N 0013 ORG 0013H
5: 0013 02 00 8E LJMP PKEYI
6: N 0030 ORG 0030H
7: 0030 75 81 60 MAIN: MOV SP,#60H ;主程序
8: 0033 75 70 00 MOV 70H,#00 ;设置显示缓冲区初值
9: 0036 75 71 01 MOV 71H,#01
10: 0039 75 72 02 MOV 72H,#02
11: 003C 75 73 03 MOV 73H,#03
12: 003F 75 74 04 MOV 74H,#04
13: 0042 75 75 05 MOV 75H,#05
14: 0045 75 76 06 MOV 76H,#06
15: 0048 75 77 07 MOV 77H,#07
16: 004B 12 00 53 LCALL INI79 ;调8279初始化子程序
17: 004E 12 00 67 LOOP: LCALL RDIR ;调8279显示更新子程序
18: 0051 80 FB SJMP LOOP
19:
20: ;8279初始化子程序
21: 0053 90 7F FF INI79: MOV DPTR,#7FFFH ;8279命令口地址
22: 0056 74 D1 MOV A,#0D1H ;清0命令
23: 0058 F0 MOVX @DPTR,A
24: 0059 E0 WNDU: MOVX A,@DPTR ;等待8279清0结束
25: 005A 20 E7 FC JB ACC.7,WNDU
26: 005D 74 00 MOV A,#00 ;设置8279为编码扫描方式,两键互锁
27: 005F F0 MOVX @DPTR,A
28: 0060 74 34 MOV A,#34H ;设置8279扫描频率
29: 0062 F0 MOVX @DPTR,A
30: 0063 75 A8 84 MOV IE,#84H ;允许8279中断
31: 0066 22 RET
32:
33: ;8279显示更新子程序
34: 0067 90 7F FF RDIR: MOV DPTR,#7FFFH ;8279命令口地址
35: 006A 74 90 MOV A,#90H ;写显示RAM命令
36: 006C F0 MOVX @DPTR,A
37: 006D 78 70 MOV R0,#70H ;显示缓冲器首地址→R0
38: 006F 7F 08 MOV R7,#8
39: 0071 90 7E FF MOV DPTR,#7EFFH
40: 0074 E6 RDLO: MOV A,@R0 ;取显示数据
41: 0075 24 05 ADD A,#5 ;加偏移量
42: 0077 83 MOVC A,@A+PC ;查表转换为段码数据
43: 0078 F0 MOVX @DPTR,A
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 2
Line I Addr Code Source
44: 0079 08 INC R0
45: 007A DF F8 DJNZ R7,RDLO
46: 007C 22 RET
47: 007D 3F 06 5B 4F SEG: DB 3fH,06H,5BH,4FH ;段码表
48: 0081 66 6D 7D 07 DB 66H,6DH,7DH,07H
49: 0085 7F 6F 77 7C DB 7FH,6FH,77H,7CH
50: 0089 39 5E 79 71 DB 39H,5EH,79H,71H
51: 008D 00 DB 00H
52:
53: ;8279按键输入中断服务程序
54: 008E C0 D0 PKEYI: PUSH PSW
55: 0090 C0 82 PUSH DPL
56: 0092 C0 83 PUSH DPH
57: 0094 C0 E0 PUSH ACC
58: 0096 C0 F0 PUSH B
59: 0098 D2 D3 SETB PSW.3 ;选工作寄存器1区
60: 009A 90 7F FF MOV DPTR,#7FFFH ;8279命令口地址
61: 009D E0 MOVX A,@DPTR ;读FIFO状态字
62: 009E 54 0F ANL A,#0FH
63: 00A0 60 26 JZ PKYR ;判FIFO中是否有数据?
64: 00A2 74 40 MOV A,#40H ;读FIFO命令
65: 00A4 F0 MOVX @DPTR,A
66: 00A5 90 7E FF MOV DPTR,#7EFFH ;8279数据口地址
67: 00A8 E0 MOVX A,@DPTR ;读数据
68: 00A9 FA MOV R2,A
69: 00AA 54 38 ANL A,#38H ;计算键值
70: 00AC 03 RR A
71: 00AD 03 RR A
72: 00AE 03 RR A
73: 00AF 75 F0 04 MOV B,#04H
74: 00B2 A4 MUL AB
75: 00B3 CA XCH A,R2
76: 00B4 54 07 ANL A,#7
77: 00B6 2A ADD A,R2
78: 00B7 F5 70 MOV 70H,A
79: 00B9 75 71 10 MOV 71H,#16
80: 00BC 75 72 10 MOV 72H,#16
81: 00BF 75 73 10 MOV 73H,#16
82: 00C2 75 74 10 MOV 74H,#16
83: 00C5 75 75 10 MOV 75H,#16
84: 00C8 D0 F0 PKYR: POP B
85: 00CA D0 E0 POP ACC
86: 00CC D0 83 POP DPH
87: 00CE D0 82 POP DPL
88: 00D0 D0 D0 POP PSW
89: 00D2 32 RETI
90:
91: END
register banks used: ---
no errors
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 3
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
DPH DATA 83
DPL DATA 82
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
INI79 CODE 0053 21
INT0 BIT B2
INT1 BIT B3
IP DATA B8
IT0 BIT 88
IT1 BIT 8A
LOOP CODE 004E 17
MAIN CODE 0030 7
OV BIT D2
P BIT D0
P0 DATA 80
P1 DATA 90
P2 DATA A0
P3 DATA B0
PCON DATA 87
PKEYI CODE 008E 54
PKYR CODE 00C8 84
PS BIT BC
PSW DATA D0
PT0 BIT B9
PT1 BIT BB
PX0 BIT B8
PX1 BIT BA
RB8 BIT 9A
RD BIT B7
RDIR CODE 0067 34
RDLO CODE 0074 40
REN BIT 9C
RESET CODE 0000
RI BIT 98
RS0 BIT D3
RS1 BIT D4
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 5
SYMBOL TYPE VALUE LINE
------------------------------------------------------------
RXD BIT B0
SBUF DATA 99
SCON DATA 98
SEG CODE 007D 47
SINT CODE 0023
SM0 BIT 9F
SM1 BIT 9E
SM2 BIT 9D
SP DATA 81
START CODE 0000 3
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
WNDU CODE 0059 24
WR BIT B6
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -