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

📄 www.ourhc.cn.lst

📁 STC12C5A60S2精简开发板使用手机及其经典例程
💻 LST
字号:
C51 COMPILER V8.05a   WWW_OURHC_CN                                                         06/03/2012 18:29:05 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                                       初始化设置
  33          *********************************************************************/
  34          sfr ADC_CONTR   =   0xBC;           //ADC 控制寄存器
  35          sfr ADC_RES     =   0xBD;           //ADC 转换结果寄存器
  36          sfr ADC_LOW2    =   0xBE;           //ADC 低2位结果寄存器
  37          sfr P1ASF       =   0x9D;           //Pl口模拟功能控制寄存器
  38          
  39          /********************************************************************
  40                                        ADC 数据转换函数
  41          *********************************************************************/
  42          
  43          #define ADC_POWER   0x80            //ADC 电源控制位
  44          #define ADC_FLAG    0x10            //ADC 转换结束标志位
  45          #define ADC_START   0x08            //ADC 开始转换控制位
  46          #define ADC_SPEEDLL 0x00            //420 个时钟周期转换一次
  47          #define ADC_SPEEDL  0x20            //280 个时钟周期转换一次
  48          #define ADC_SPEEDH  0x40            //140 个时钟周期转换一次
  49          #define ADC_SPEEDHH 0x60            //70 个时钟周期转换一次
  50          
  51          
  52          /********************************************************************
  53                                       延时函数
  54          *********************************************************************/
  55          void Delay(WORD n)
C51 COMPILER V8.05a   WWW_OURHC_CN                                                         06/03/2012 18:29:05 PAGE 2   

  56          {
  57   1          WORD x;
  58   1          while (n--)
  59   1          {
  60   2              x = 5000;
  61   2              while (x--);
  62   2          }
  63   1      }
  64          /********************************************************************
  65                                        串口初始化
  66          *********************************************************************/
  67          void InitUart()
  68          {
  69   1          SCON = 0x5a;                    
  70   1          TMOD = 0x20;                    
  71   1          TH1 = TL1 = -(FOSC/12/32/BAUD); 
  72   1          TR1 = 1;                        
  73   1      }
  74          /********************************************************************
  75                                       串口数据输出函数
  76          *********************************************************************/
  77          void SendData(BYTE dat)
  78          {
  79   1          while (!TI);      //等待数据             
  80   1          TI = 0;           //清零标志位            
  81   1          SBUF = dat;       //发送数据              
  82   1      }
  83          /********************************************************************
  84                                        ADC 初始化
  85          *********************************************************************/
  86          void InitADC()
  87          {
  88   1          P1ASF = 0xff;                                 //设置P1口为开漏模式,使用AD功能
  89   1          ADC_RES = 0;                                  //AD数据寄存器清空
  90   1          ADC_CONTR = ADC_POWER | ADC_SPEEDLL;  //打开AD电源,转换周期420
  91   1          Delay(2);                                     //延时
  92   1      }
  93          /********************************************************************
  94                                        ADC 数据转换函数
  95          *********************************************************************/
  96          BYTE GetADCResult(BYTE ch)
  97          {
  98   1          ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START;//开始转换
  99   1          _nop_();                        //延时一个机器周期
 100   1          _nop_();                                            //延时一个机器周期
 101   1          _nop_();                                            //延时一个机器周期
 102   1          _nop_();                                            //延时一个机器周期
 103   1          while (!(ADC_CONTR & ADC_FLAG));//等待转换结束
 104   1          ADC_CONTR &= ~ADC_FLAG;         //关闭AD转换
 105   1      
 106   1          return ADC_RES;                 //返回数据
 107   1      }
 108          /********************************************************************
 109                                        编辑数据函数
 110          *********************************************************************/
 111          void ShowResult(BYTE ch)
 112          {
 113   1          SendData(ch);                   //发送显示通道
 114   1          SendData(GetADCResult(ch));     //发送对应通道的数据
 115   1      //  SendData(ADC_LOW2);             //如果你想显示10位结果,选择下一行
 116   1      }
 117          /********************************************************************
C51 COMPILER V8.05a   WWW_OURHC_CN                                                         06/03/2012 18:29:05 PAGE 3   

 118                                       主函数
 119          *********************************************************************/
 120          void main()
 121          {
 122   1          InitUart();                     //串口初始化
 123   1          InitADC();                      //AD转换初始化
 124   1          while (1)
 125   1          {
 126   2              ShowResult(0);              //显示第一通道的数值
 127   2              ShowResult(1);              //显示第二通道的数值
 128   2      
 129   2          }
 130   1      }
 131          
 132          /********************************************************************
 133                                        结束
 134          *********************************************************************/


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    114    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   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 + -