📄 ex8-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: EX8-6.ASM
Object File: EX8-6.HEX
List File: EX8-6.LST
Line I Addr Code Source
1: N 0000 ORG 0000H
2: 0000 02 00 30 START: LJMP MAIN
3: N 0003 ORG 0003H ;外部中断 入口
4: 0003 02 00 47 LJMP INSER ;转到中断服务程序
5: N 0030 ORG 0030H
6: 0030 90 7F FF MAIN: MOV DPTR,#7FFFH ;DAC0832地址
7: 0033 D2 A8 SETB EX0 ;允许 中断
8: 0035 D2 88 SETB IT0 ;负边沿触发方式
9: 0037 D2 AF SETB EA ;开中断
10: 0039 20 00 3A HERE: JB 20H.0,ST ;阶梯波处理
11: 003C 20 01 41 JB 20H.1,TRI ;三角波处理
12: 003F 20 02 50 JB 20H.2,SQ ;方波处理
13: 0042 20 03 5D JB 20H.3,SIN ;正弦波处理
14: 0045 80 F2 SJMP HERE ;等待中断
15:
16: 0047 30 90 02 INSER: JNB P1.0, LL1 ;中断服务程序,查询按键
17: 004A 80 07 SJMP L1
18: 004C 75 20 00 LL1: MOV 20H,#00H
19: 004F D2 00 SETB 20H.0 ;设置阶梯波标志
20: 0051 80 22 SJMP RT
21: 0053 30 92 02 L1: JNB P1.2, LL2
22: 0056 80 07 SJMP L2
23: 0058 75 20 00 LL2: MOV 20H,#00H
24: 005B D2 01 SETB 20H.1 ;设三角梯波标志
25: 005D 80 16 SJMP RT
26: 005F 30 94 02 L2: JNB P1.4, LL3
27: 0062 80 07 SJMP L3
28: 0064 75 20 00 LL3: MOV 20H,#00H
29: 0067 D2 02 SETB 20H.2 ;设置方波标志
30: 0069 80 0A SJMP RT
31: 006B 30 96 02 L3: JNB P1.6, LL4
32: 006E 80 05 SJMP RT
33: 0070 75 20 00 LL4: MOV 20H,#00H
34: 0073 D2 03 SETB 20H.3 ;设置正弦波标志
35: 0075 32 RT: RETI ;中断返回
36:
37: 0076 74 00 ST: MOV A,#00H ;阶梯波
38: 0078 F0 LOOPP: MOVX @DPTR,A ;启动D/A转换
39: 0079 04 INC A
40: 007A 20 00 FB JB 20H.0,LOOPP ;连续输出波形
41: 007D 02 00 39 LJMP HERE
42:
43: 0080 74 00 TRI: MOV A,#00H ;三角波
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 2
Line I Addr Code Source
44: 0082 F0 UP: MOVX @DPTR,A ;启动D/A转换
45: 0083 04 INC A ;上升沿
46: 0084 B4 FF FB CJNE A,#0FFH,UP
47: 0087 F0 DOWN: MOVX @DPTR,A ;启动D/A转换
48: 0088 14 DEC A ;下降沿
49: 0089 B4 00 FB CJNE A,#00H,DOWN
50: 008C 20 01 F3 JB 20H.1, UP ;连续输出波形
51: 008F 02 00 39 LJMP HERE
52:
53: 0092 74 00 SQ: MOV A,#00H ;方波
54: 0094 F0 MOVX @DPTR,A ;DAC输出低电平
55: 0095 11 E7 ACALL DELAY ;延时1
56: 0097 74 FF MOV A,#0FFH
57: 0099 F0 MOVX @DPTR,A ;DAC输出高电平
58: 009A 11 E7 ACALL DELAY ;延时2
59: 009C 20 02 F3 JB 20H.2, SQ ;连续输出波形
60: 009F 02 00 39 LJMP HERE
61:
62: 00A2 90 00 D4 SIN: MOV DPTR,#SINTAB ;正弦波
63: 00A5 78 6D MOV R0,#6DH
64: 00A7 E4 LOOP: CLR A
65: 00A8 93 MOVC A,@A+DPTR
66: 00A9 F6 MOV @R0,A
67: 00AA A3 INC DPTR
68: 00AB 08 INC R0
69: 00AC B8 80 F8 CJNE R0,#80H,LOOP
70: 00AF 90 7F FF MOV DPTR,#7FFFH ;DAC0832端口地址
71: 00B2 78 6D MOV R0,#6DH
72: 00B4 E6 LOOP1: MOV A,@R0 ;取得第一个1/4周期的数据
73: 00B5 F0 MOVX @DPTR,A ;送往DAC0832
74: 00B6 08 INC R0
75: 00B7 B8 7F FA CJNE R0,#7FH,LOOP1
76: 00BA E6 LOOP2: MOV A,@R0 ;取得第二个1/4周期的数据
77: 00BB F0 MOVX @DPTR,A ;送往DAC0832
78: 00BC 18 DEC R0
79: 00BD B8 6D FA CJNE R0,#6DH,LOOP2
80: 00C0 E6 LOOP3: MOV A,@R0 ;取得第三个1/4周期的数据
81: 00C1 F4 CPL A ;数据取反
82: 00C2 F0 MOVX @DPTR,A ;送往DAC0832
83: 00C3 08 INC R0
84: 00C4 B8 7F F9 CJNE R0,#7FH,LOOP3
85: 00C7 E6 LOOP4: MOV A,@R0 ;取得第四个1/4周期的数据
86: 00C8 F4 CPL A ;数据取反
87: 00C9 F0 MOVX @DPTR,A ;送往DAC0832
88: 00CA 18 DEC R0
89: 00CB B8 6D F9 CJNE R0,#6DH,LOOP4
90: 00CE 20 03 E3 JB 20H.3, LOOP1 ;输出连续波形
91: 00D1 02 00 39 LJMP HERE
92: 00D4 7F 89 94 9F SINTAB: DB 7FH,89H,94H,9FH,0AAH,0B4H,0BEH,0C8H,0D1H,0D9H
00D8 AA B4 BE C8
00DC D1 D9
93: 00DE E0 E7 ED F2 DB 0E0H,0E7H,0EDH,0F2H,0F7H,0FAH,0FCH,0FEH,0FFH
00E2 F7 FA FC FE
00E6 FF
94:
95: 00E7 7C 0F DELAY: MOV R4,#0FH ;延时子程序
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 3
Line I Addr Code Source
96: 00E9 7D 10 LOOP11: MOV R5,#10H
97: 00EB 00 LOOP22: NOP
98: 00EC 00 NOP
99: 00ED 00 NOP
100: 00EE DD FB DJNZ R5,LOOP22
101: 00F0 DC F7 DJNZ R4,LOOP11
102: 00F2 22 RET
103:
104: END
register banks used: ---
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 00E7 95
DOWN CODE 0087 47
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
HERE CODE 0039 10
IE DATA A8
IE0 BIT 89
IE1 BIT 8B
INSER CODE 0047 16
INT0 BIT B2
INT1 BIT B3
IP DATA B8
IT0 BIT 88
IT1 BIT 8A
L1 CODE 0053 21
L2 CODE 005F 26
L3 CODE 006B 31
LL1 CODE 004C 18
LL2 CODE 0058 23
LL3 CODE 0064 28
LL4 CODE 0070 33
LOOP CODE 00A7 64
LOOP1 CODE 00B4 72
LOOP11 CODE 00E9 96
LOOP2 CODE 00BA 76
LOOP22 CODE 00EB 97
LOOP3 CODE 00C0 80
LOOP4 CODE 00C7 85
LOOPP CODE 0078 38
MAIN CODE 0030 6
OV BIT D2
P BIT D0
P0 DATA 80
P1 DATA 90
P2 DATA A0
P3 DATA B0
PCON DATA 87
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 5
SYMBOL TYPE VALUE LINE
------------------------------------------------------------
PS BIT BC
PSW DATA D0
PT0 BIT B9
PT1 BIT BB
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
RT CODE 0075 35
RXD BIT B0
SBUF DATA 99
SCON DATA 98
SIN CODE 00A2 62
SINT CODE 0023
SINTAB CODE 00D4 92
SM0 BIT 9F
SM1 BIT 9E
SM2 BIT 9D
SP DATA 81
SQ CODE 0092 53
ST CODE 0076 37
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
TRI CODE 0080 43
TXD BIT B1
UP CODE 0082 44
WR BIT B6
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -