📄 asm.lst
字号:
A51 MACRO ASSEMBLER ASM 05/17/2009 10:31:28 PAGE 1
MACRO ASSEMBLER A51 V8.00d
OBJECT MODULE PLACED IN ASM.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE ASM.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;本程序演示从P1.2采集外部电压值进行模数转换,通过P1口显示其二进制值,并通过串口发送
00B7 2 LED_MCU_START EQU P3.7;定义P3.7为工作指示灯
00BC 3 ADC_CONTR EQU 0BCH;模数转换控制特殊功能寄存器
00BD 4 ADC_RES EQU 0BDH;模数转换结果高8位寄存器
009D 5 P1ASF EQU 9DH;P1口模拟功能控制寄存器
0082 6 ADC_POWER_ON_SPEED_CHANNEL_2 EQU 10000010B;打开模数转换电源,模数转换从通道2(P1.2)进行
0032 7 ADC_CHANNEL_2_RESULT EQU 32H;通道2的模数转换结果保存在32H单元上
8
0000 9 ORG 0000H
0000 020050 10 LJMP MAIN
11
0050 12 ORG 0050H
0050 C2B7 13 MAIN:CLR LED_MCU_START;打开工作指示灯
0052 857F81 14 MOV SP,7FH
0055 116C 15 ACALL INITIATE_RS232;初始化串口
0057 1187 16 ACALL ADC_POWER_ON;打开模数转换开关
0059 1193 17 ACALL SET_P12_ASF;设置P1.2为模数转换通道
005B 11A5 18 ACALL SET_ADC_CHANNEL_2;模数转换从通道2(P1.2)进行
005D 11B6 19 ACALL GET_AD_RESULT;开始模数转换
005F 11AD 20 ACALL SEND_AD_RESULT;发送模数转换结果
0061 119C 21 ACALL SET_P12_NORMAL_IO;设置P1.2为普通I/O口
0063 E532 22 MOV A,ADC_CHANNEL_2_RESULT;模数转换结果移至累加器
0065 F4 23 CPL A;取反
0066 F590 24 MOV P1,A;通过P1口的发光数码管显示
0068 11D1 25 ACALL DELAY
26
006A 27 MAIN_LOOP:
006A 80E4 28 SJMP MAIN
29
006C 30 INITIATE_RS232:
006C C2AC 31 CLR ES;禁止串口中断
006E 758920 32 MOV TMOD,#20H
0071 759850 33 MOV SCON,#50H
0074 758DD8 34 MOV TH1,#216;使用18.432MHz的晶振,波特率为1200bps
0077 758BD8 35 MOV TL1,#216
007A D28E 36 SETB TR1
007C 22 37 RET
38
007D 39 SEND_BYTE:
007D C299 40 CLR TI
007F F599 41 MOV SBUF,A
42
0081 43 SEND_BYTE_WAIT_FINISH:
0081 3099FD 44 JNB TI,SEND_BYTE_WAIT_FINISH
0084 C299 45 CLR TI
0086 22 46 RET
47
0087 48 ADC_POWER_ON:
0087 C0E0 49 PUSH ACC
0089 43BC80 50 ORL ADC_CONTR,#80H
008C 7420 51 MOV A,#20H
008E 11D1 52 ACALL DELAY
0090 D0E0 53 POP ACC
0092 22 54 RET
55
0093 56 SET_P12_ASF:
0093 C0E0 57 PUSH ACC
0095 7404 58 MOV A,#00000100B
A51 MACRO ASSEMBLER ASM 05/17/2009 10:31:28 PAGE 2
0097 429D 59 ORL P1ASF,A
0099 D0E0 60 POP ACC
009B 22 61 RET
62
009C 63 SET_P12_NORMAL_IO:
009C C0E0 64 PUSH ACC
009E 74FB 65 MOV A,#11111011B
00A0 529D 66 ANL P1ASF,A
00A2 D0E0 67 POP ACC
00A4 22 68 RET
69
00A5 70 SET_ADC_CHANNEL_2:
00A5 75BC82 71 MOV ADC_CONTR,#ADC_POWER_ON_SPEED_CHANNEL_2
00A8 7405 72 MOV A,#05H
00AA 11D1 73 ACALL DELAY
00AC 22 74 RET
75
00AD 76 SEND_AD_RESULT:
00AD C0E0 77 PUSH ACC
00AF E532 78 MOV A,ADC_CHANNEL_2_RESULT
00B1 117D 79 ACALL SEND_BYTE
00B3 D0E0 80 POP ACC
00B5 22 81 RET
82
00B6 83 GET_AD_RESULT:
00B6 C0E0 84 PUSH ACC
00B8 75BD00 85 MOV ADC_RES,#0
00BB 43BC08 86 ORL ADC_CONTR,#00001000B
00BE 00 87 NOP;启动模数转换后,等待4个机器周期方可正确读取ADC_CONTR的值
00BF 00 88 NOP
00C0 00 89 NOP
00C1 00 90 NOP
91
00C2 92 WAIT_AD_FINISH:
00C2 7410 93 MOV A,#00010000B
00C4 55BC 94 ANL A,ADC_CONTR
00C6 60FA 95 JZ WAIT_AD_FINISH
00C8 53BCE7 96 ANL ADC_CONTR,#11100111B
00CB E5BD 97 MOV A,ADC_RES
00CD F532 98 MOV ADC_CHANNEL_2_RESULT,A
00CF D0E0 99 POP ACC
100
00D1 101 DELAY:
00D1 C002 102 PUSH 02
00D3 C003 103 PUSH 03
00D5 C004 104 PUSH 04
00D7 FC 105 MOV R4,A
106
00D8 107 DELAY_LOOP0:
00D8 7BC8 108 MOV R3,#200
109
00DA 110 DELAY_LOOP1:
00DA 7AF9 111 MOV R2,#249
112
00DC 113 DELAY_LOOP:
00DC DAFE 114 DJNZ R2,DELAY_LOOP
00DE DBFA 115 DJNZ R3,DELAY_LOOP1
00E0 DCF6 116 DJNZ R4,DELAY_LOOP0
00E2 D004 117 POP 04
00E4 D003 118 POP 03
00E6 D002 119 POP 02
00E8 22 120 RET
121
122 END
A51 MACRO ASSEMBLER ASM 05/17/2009 10:31:28 PAGE 3
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
ACC. . . . . . . . . . . . . D ADDR 00E0H A
ADC_CHANNEL_2_RESULT . . . . N NUMB 0032H A
ADC_CONTR. . . . . . . . . . N NUMB 00BCH A
ADC_POWER_ON . . . . . . . . C ADDR 0087H A
ADC_POWER_ON_SPEED_CHANNEL_2 N NUMB 0082H A
ADC_RES. . . . . . . . . . . N NUMB 00BDH A
DELAY. . . . . . . . . . . . C ADDR 00D1H A
DELAY_LOOP . . . . . . . . . C ADDR 00DCH A
DELAY_LOOP0. . . . . . . . . C ADDR 00D8H A
DELAY_LOOP1. . . . . . . . . C ADDR 00DAH A
ES . . . . . . . . . . . . . B ADDR 00A8H.4 A
GET_AD_RESULT. . . . . . . . C ADDR 00B6H A
INITIATE_RS232 . . . . . . . C ADDR 006CH A
LED_MCU_START. . . . . . . . B ADDR 00B0H.7 A
MAIN . . . . . . . . . . . . C ADDR 0050H A
MAIN_LOOP. . . . . . . . . . C ADDR 006AH A
P1 . . . . . . . . . . . . . D ADDR 0090H A
P1ASF. . . . . . . . . . . . N NUMB 009DH A
P3 . . . . . . . . . . . . . D ADDR 00B0H A
SBUF . . . . . . . . . . . . D ADDR 0099H A
SCON . . . . . . . . . . . . D ADDR 0098H A
SEND_AD_RESULT . . . . . . . C ADDR 00ADH A
SEND_BYTE. . . . . . . . . . C ADDR 007DH A
SEND_BYTE_WAIT_FINISH. . . . C ADDR 0081H A
SET_ADC_CHANNEL_2. . . . . . C ADDR 00A5H A
SET_P12_ASF. . . . . . . . . C ADDR 0093H A
SET_P12_NORMAL_IO. . . . . . C ADDR 009CH A
SP . . . . . . . . . . . . . D ADDR 0081H A
TH1. . . . . . . . . . . . . D ADDR 008DH A
TI . . . . . . . . . . . . . B ADDR 0098H.1 A
TL1. . . . . . . . . . . . . D ADDR 008BH A
TMOD . . . . . . . . . . . . D ADDR 0089H A
TR1. . . . . . . . . . . . . B ADDR 0088H.6 A
WAIT_AD_FINISH . . . . . . . C ADDR 00C2H A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -