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

📄 adc.lst

📁 宏晶单片机的AD演示程序
💻 LST
字号:
C51 COMPILER V8.02   ADC                                                                   07/05/2010 15:01:44 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE ADC
OBJECT MODULE PLACED IN ADC.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ADC.c BROWSE DEBUG OBJECTEXTEND

line level    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          #include "reg51.h"
  13          #include "intrins.h"
  14          
  15          #define FOSC    18432000L
  16          #define BAUD    9600
  17          
  18          typedef unsigned char BYTE;
  19          typedef unsigned int WORD;
  20          
  21          /*Declare SFR associated with the ADC */
  22          sfr ADC_CONTR   =   0xC5;           //ADC control register
  23          sfr ADC_RES     =   0xC6;           //ADC high 8-bit result register
  24          sfr ADC_LOW2    =   0xBE;           //ADC low 2-bit result register
  25          sfr P1M0        =   0x91;           //P1 mode control register0
  26          sfr P1M1        =   0x92;           //P1 mode control register1
  27          
  28          /*Define ADC operation const for ADC_CONTR*/
  29          #define ADC_POWER   0x80            //ADC power control bit
  30          #define ADC_FLAG    0x10            //ADC complete flag
  31          #define ADC_START   0x08            //ADC start control bit
  32          #define ADC_SPEEDLL 0x00            //420 clocks
  33          #define ADC_SPEEDL  0x20            //280 clocks
  34          #define ADC_SPEEDH  0x40            //140 clocks
  35          #define ADC_SPEEDHH 0x60            //70 clocks
  36          
  37          void InitUart();
  38          void SendData(BYTE dat);
  39          void Delay(WORD n);
  40          void InitADC();
  41          
  42          BYTE ch = 0;                        //ADC channel NO.
  43          
  44          void main()
  45          {
  46   1          InitUart();                     //Init UART, use to show ADC result
  47   1          InitADC();                      //Init ADC sfr
  48   1          IE = 0xa0;                      //Enable ADC interrupt and Open master interrupt switch
  49   1                                          //Start A/D conversion
  50   1          while (1);
  51   1      }
  52          
  53          /*----------------------------
  54          ADC interrupt service routine
  55          ----------------------------*/
C51 COMPILER V8.02   ADC                                                                   07/05/2010 15:01:44 PAGE 2   

  56          void adc_isr() interrupt 5 using 1
  57          {
  58   1          ADC_CONTR &= !ADC_FLAG;         //Clear ADC interrupt flag
  59   1      
  60   1          SendData(ch);                   //Show Channel NO.
  61   1          SendData(ADC_RES);              //Get ADC high 8-bit result and Send to UART
  62   1      
  63   1      //if you want show 10-bit result, uncomment next line
  64   1      //    SendData(ADC_LOW2);             //Show ADC low 2-bit result
  65   1          
  66   1          if (++ch > 7) ch = 0;           //switch to next channel
  67   1          ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ADC_START | ch;
  68   1      }
  69          
  70          /*----------------------------
  71          Initial ADC sfr
  72          ----------------------------*/
  73          void InitADC()
  74          {
  75   1          P1 = P1M0 = P1M1 = 0xff;        //Set all P1 as Open-Drain mode
  76   1          ADC_RES = 0;                    //Clear previous result
  77   1          ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ADC_START | ch;
  78   1          Delay(2);                       //ADC power-on delay and Start A/D conversion
  79   1      }
  80          
  81          /*----------------------------
  82          Initial UART
  83          ----------------------------*/
  84          void InitUart()
  85          {
  86   1          SCON = 0x5a;                    //8 bit data ,no parity bit
  87   1          TMOD = 0x20;                    //T1 as 8-bit auto reload
  88   1          TH1 = TL1 = -(FOSC/12/32/BAUD); //Set Uart baudrate
  89   1          TR1 = 1;                        //T1 start running
  90   1      }
  91          
  92          /*----------------------------
  93          Send one byte data to PC
  94          Input: dat (UART data)
  95          Output:-
  96          ----------------------------*/
  97          void SendData(BYTE dat)
  98          {
  99   1          while (!TI);                    //Wait for the previous data is sent
 100   1          TI = 0;                         //Clear TI flag
 101   1          SBUF = dat;                     //Send current data
 102   1      }
 103          
 104          /*----------------------------
 105          Software delay function
 106          ----------------------------*/
 107          void Delay(WORD n)
 108          {
 109   1          WORD x;
 110   1      
 111   1          while (n--)
 112   1          {
 113   2              x = 5000;
 114   2              while (x--);
 115   2          }
 116   1      }
 117          
C51 COMPILER V8.02   ADC                                                                   07/05/2010 15:01:44 PAGE 3   



MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    141    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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