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

📄 adc.lst

📁 宏晶单片机的AD演示程序
💻 LST
字号:
A51 MACRO ASSEMBLER  ADC                                                                  07/05/2010 15:01:00 PAGE     1


MACRO ASSEMBLER A51 V8.00
OBJECT MODULE PLACED IN ADC.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE ADC.asm SET(SMALL) DEBUG EP

LOC  OBJ            LINE     SOURCE

                       1     ;/*------------------------------------------------------------------*/
                       2     ;/* --- STC MCU International Limited -------------------------------*/
                       3     ;/* --- STC 1T Series MCU A/D Conversion Demo -----------------------*/
                       4     ;/* --- Mobile: (86)13922805190 -------------- ----------------------*/
                       5     ;/* --- Fax: 86-755-82944243 ----------------------------------------*/
                       6     ;/* --- Tel: 86-755-82948412 ----------------------------------------*/
                       7     ;/* --- Web: www.STCMCU.com -----------------------------------------*/
                       8     ;/* If you want to use the program or the program referenced in the  */
                       9     ;/* article, please specify in which data and procedures from STC    */
                      10     ;/*------------------------------------------------------------------*/
                      11     
                      12     ;/*Declare SFR associated with the ADC */
  00C5                13     ADC_CONTR   EQU 0C5H            ;ADC control register
  00C6                14     ADC_RES     EQU 0C6H            ;ADC high 8-bit result register
  00BE                15     ADC_LOW2    EQU 0BEH            ;ADC low 2-bit result register
  0091                16     P1M0        EQU 091H            ;P1 mode control register0
  0092                17     P1M1        EQU 092H            ;P1 mode control register1
                      18     
                      19     ;/*Define ADC operation const for ADC_CONTR*/
  0080                20     ADC_POWER   EQU 80H             ;ADC power control bit
  0010                21     ADC_FLAG    EQU 10H             ;ADC complete flag
  0008                22     ADC_START   EQU 08H             ;ADC start control bit
  0000                23     ADC_SPEEDLL EQU 00H             ;420 clocks
  0020                24     ADC_SPEEDL  EQU 20H             ;280 clocks
  0040                25     ADC_SPEEDH  EQU 40H             ;140 clocks
  0060                26     ADC_SPEEDHH EQU 60H             ;70 clocks
                      27     
  0020                28     ADCCH       DATA 20H            ;ADC channel NO.
                      29     
                      30     ;-----------------------------------------
0000                  31         ORG   0000H
0000 020100           32         LJMP  MAIN
                      33         
002B                  34         ORG   002BH
002B 020111           35         LJMP  ADC_ISR
                      36     ;-----------------------------------------
0100                  37         ORG   0100H
0100                  38     MAIN:
0100 75813F           39         MOV   SP,#3FH
0103 752000           40         MOV   ADCCH,#0
0106 12014A           41         LCALL INIT_UART             ;Init UART, use to show ADC result
0109 120133           42         LCALL INIT_ADC              ;Init ADC sfr
010C 75A8A0           43         MOV   IE,#0A0H              ;Enable ADC interrupt and Open master interrupt switch
010F 80FE             44         SJMP  $
                      45     
                      46     ;/*----------------------------
                      47     ;ADC interrupt service routine
                      48     ;----------------------------*/
0111                  49     ADC_ISR:
0111 C0E0             50         PUSH  ACC
0113 C0D0             51         PUSH  PSW
                      52     
0115 53C5EF           53         ANL   ADC_CONTR,#NOT ADC_FLAG;Clear ADC interrupt flag
0118 E520             54         MOV   A,ADCCH
011A 120159           55         LCALL SEND_DATA             ;Send channel NO.
011D E5C6             56         MOV   A,ADC_RES             ;Get ADC high 8-bit result
011F 120159           57         LCALL SEND_DATA             ;Send to UART
                      58     
A51 MACRO ASSEMBLER  ADC                                                                  07/05/2010 15:01:00 PAGE     2

                      59     ;//if you want show 10-bit result, uncomment next 2 lines
                      60     ;    MOV   A,ADC_LOW2            ;Get ADC low 2-bit result
                      61     ;    LCALL SEND_DATA             ;Send to UART
                      62     
0122 0520             63         INC   ADCCH
0124 E520             64         MOV   A,ADCCH
0126 5407             65         ANL   A,#07H
0128 F520             66         MOV   ADCCH,A
012A 4488             67         ORL   A,#ADC_POWER | ADC_SPEEDLL | ADC_START
012C F5C5             68         MOV   ADC_CONTR,A           ;ADC power-on delay and re-start A/D conversion
012E D0D0             69         POP   PSW
0130 D0E0             70         POP   ACC
0132 32               71         RETI
                      72     
                      73     ;/*----------------------------
                      74     ;Initial ADC sfr
                      75     ;----------------------------*/
0133                  76     INIT_ADC:
0133 74FF             77             MOV   A,#0FFH
0135 F590             78             MOV   P1,A
0137 F591             79             MOV   P1M0,A
0139 F592             80             MOV   P1M1,A                            ;Set all P1 as Open-Drain mode
013B 75C600           81         MOV   ADC_RES,#0            ;Clear previous result
013E E520             82         MOV   A,ADCCH
0140 4488             83         ORL   A,#ADC_POWER | ADC_SPEEDLL | ADC_START
0142 F5C5             84         MOV   ADC_CONTR,A           ;ADC power-on delay and Start A/D conversion
0144 7402             85         MOV   A,#2                  
0146 120161           86         LCALL DELAY
0149 22               87         RET
                      88     
                      89     ;/*----------------------------
                      90     ;Initial UART
                      91     ;----------------------------*/
014A                  92     INIT_UART:
014A 75985A           93         MOV   SCON,#5AH             ;8 bit data ,no parity bit
014D 758920           94         MOV   TMOD,#20H             ;T1 as 8-bit auto reload
0150 74FB             95         MOV   A,#-5                 ;Set Uart baudrate -(18432000/12/32/9600)
0152 F58D             96         MOV   TH1,A                 ;Set T1 reload value
0154 F58B             97         MOV   TL1,A
0156 D28E             98         SETB  TR1                   ;T1 start running
0158 22               99         RET
                     100     
                     101     ;/*----------------------------
                     102     ;Send one byte data to PC
                     103     ;Input: ACC (UART data)
                     104     ;Output:-
                     105     ;----------------------------*/
0159                 106     SEND_DATA:
0159 3099FD          107         JNB   TI,$                  ;Wait for the previous data is sent
015C C299            108         CLR   TI                    ;Clear TI flag
015E F599            109         MOV   SBUF,A                ;Send current data
0160 22              110         RET
                     111     
                     112     ;/*----------------------------
                     113     ;Software delay function
                     114     ;----------------------------*/
0161                 115     DELAY:
0161 FA              116         MOV   R2,A
0162 E4              117         CLR   A
0163 F8              118         MOV   R0,A
0164 F9              119         MOV   R1,A
0165                 120     DELAY1:
0165 D8FE            121         DJNZ  R0,DELAY1
0167 D9FC            122         DJNZ  R1,DELAY1
0169 DAFA            123         DJNZ  R2,DELAY1
016B 22              124         RET
A51 MACRO ASSEMBLER  ADC                                                                  07/05/2010 15:01:00 PAGE     3

                     125     
                     126         END
A51 MACRO ASSEMBLER  ADC                                                                  07/05/2010 15:01:00 PAGE     4

SYMBOL TABLE LISTING
------ ----- -------


N A M E             T Y P E  V A L U E   ATTRIBUTES

ACC. . . . . . . .  D ADDR   00E0H   A   
ADCCH. . . . . . .  D ADDR   0020H   A   
ADC_CONTR. . . . .  N NUMB   00C5H   A   
ADC_FLAG . . . . .  N NUMB   0010H   A   
ADC_ISR. . . . . .  C ADDR   0111H   A   
ADC_LOW2 . . . . .  N NUMB   00BEH   A   
ADC_POWER. . . . .  N NUMB   0080H   A   
ADC_RES. . . . . .  N NUMB   00C6H   A   
ADC_SPEEDH . . . .  N NUMB   0040H   A   
ADC_SPEEDHH. . . .  N NUMB   0060H   A   
ADC_SPEEDL . . . .  N NUMB   0020H   A   
ADC_SPEEDLL. . . .  N NUMB   0000H   A   
ADC_START. . . . .  N NUMB   0008H   A   
DELAY. . . . . . .  C ADDR   0161H   A   
DELAY1 . . . . . .  C ADDR   0165H   A   
IE . . . . . . . .  D ADDR   00A8H   A   
INIT_ADC . . . . .  C ADDR   0133H   A   
INIT_UART. . . . .  C ADDR   014AH   A   
MAIN . . . . . . .  C ADDR   0100H   A   
P1 . . . . . . . .  D ADDR   0090H   A   
P1M0 . . . . . . .  N NUMB   0091H   A   
P1M1 . . . . . . .  N NUMB   0092H   A   
PSW. . . . . . . .  D ADDR   00D0H   A   
SBUF . . . . . . .  D ADDR   0099H   A   
SCON . . . . . . .  D ADDR   0098H   A   
SEND_DATA. . . . .  C ADDR   0159H   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   


REGISTER BANK(S) USED: 0 

ASSEMBLY COMPLETE.  0 WARNING(S), 0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -