⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 asm.lst

📁 本程序演示从P1.2采集外部电压值进行模数转换
💻 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 + -