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

📄 www.ourhc.cn.lst

📁 STC12C5A60S2精简开发板使用手机及其经典例程
💻 LST
字号:
C51 COMPILER V8.05a   WWW_OURHC_CN                                                         06/03/2012 18:31:11 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE WWW_OURHC_CN
OBJECT MODULE PLACED IN www.ourhc.cn.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE www.ourhc.cn.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /********************************************************************
   2                                      汇诚科技
   3          
   4          实现功能:STC12C5A60S2单片机之演示(ADC中断方式)
   5          使用芯片:STC12C5A60S2
   6          晶振:11.0592MHZ
   7          波特率:115200
   8          编译环境:Keil
   9          作者:zhangxinchun
  10          网站:www.ourhc.cn
  11          淘宝店:
  12          汇诚科技 http://ourhc.taobao.com
  13          郑兴电子直销部 http://shop68451856.taobao.com
  14          【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!  
  15            
  16          程序说明:
  17          1、P1口八路AD数据转换。
  18          2、将转换的数据通过串口发送出去。
  19          3、发送数据的格式是:(通道口-数据)
  20          
  21          注意:通道口必须有模拟量输入数据才有效。
  22          *********************************************************************/
  23          #include "reg52.h"
  24          #include "intrins.h"
  25          
  26          #define FOSC    18432000L
  27          #define BAUD    9600
  28          
  29          typedef unsigned char BYTE;
  30          typedef unsigned int WORD;
  31          
  32          /*Declare SFR associated with the ADC */
  33          sfr ADC_CONTR   =   0xBC;           //ADC control register
  34          sfr ADC_RES     =   0xBD;           //ADC hight 8-bit result register
  35          sfr ADC_LOW2    =   0xBE;           //ADC low 2-bit result register
  36          sfr P1ASF       =   0x9D;           //P1 secondary function control register
  37          
  38          /*Define ADC operation const for ADC_CONTR*/
  39          #define ADC_POWER   0x80            //ADC power control bit
  40          #define ADC_FLAG    0x10            //ADC complete flag
  41          #define ADC_START   0x08            //ADC start control bit
  42          #define ADC_SPEEDLL 0x00            //420 clocks
  43          #define ADC_SPEEDL  0x20            //280 clocks
  44          #define ADC_SPEEDH  0x40            //140 clocks
  45          #define ADC_SPEEDHH 0x60            //70 clocks
  46          
  47          void InitUart();
  48          void SendData(BYTE dat);
  49          void Delay(WORD n);
  50          void InitADC();
  51          
  52          BYTE ch = 0;                        //ADC channel NO.
  53          
  54          void main()
  55          {
C51 COMPILER V8.05a   WWW_OURHC_CN                                                         06/03/2012 18:31:11 PAGE 2   

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

 118          {
 119   1          WORD x;
 120   1      
 121   1          while (n--)
 122   1          {
 123   2              x = 5000;
 124   2              while (x--);
 125   2          }
 126   1      }
 127          
 128          /********************************************************************
 129                                        结束
 130          *********************************************************************/


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    135    ----
   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 + -