当前位置:首页 > 单片机 > 单片机
[导读]/**************** STC12c56 AD转换入口参数:通道数(0,1,2,3,4,5,6,7) 返回值: AD转换结果 *****************/#include<reg51.h>sfr ADC_CONTR=0xc5; //AD转换寄存器 sfr ADC_DATA=0xc6; //AD转换

/****************
STC12c56    AD转换

入口参数:通道数(0,1,2,3,4,5,6,7)
返回值:  AD转换结果


*****************/

#include<reg51.h>

sfr ADC_CONTR=0xc5;    //AD转换寄存器
sfr  ADC_DATA=0xc6;    //AD转换结果寄存器,为10位
sfr      P1M0=0x91;
sfr      P1M1=0x92;


/***************************
微秒延时函数
********************************/
void delay_us(unsigned int i)//延时 如果需要高精度延时 请嵌入汇编
{
  unsigned char a;
if (i == 0)
  { 
  return ; 
  }

for (a = 1; a < i; a++)
  {
     ;
   
}
}

 

/***************************
毫秒延时函数
********************************/
void delay_ms(int num)
{
    int x,y;
    for(y=0;y<num;y++)
    {
       for(x = 0;x <5000;x)
          x++;
    }
}

 

/*********************
入口参数:通道数(0,1,2,3,4,5,6,7)
返回值:  AD转换结果
**************************/
unsigned char  AD(unsigned char Channel)
{
  unsigned char ADResult;
  ADC_CONTR|=0x80;  //开AD转换电源
  delay_ms(1);  //延时1ms
  switch(Channel)
   {
     case 0:
          P1M0|=0x01;P1M1|=0x01; //设置开漏
    ADC_CONTR=0xe0;        //选择AD转换通道
    break;
  case 1:
          P1M0|=0x02;P1M1|=0x02;
    ADC_CONTR=0xe1;
    break;
  case 2:
          P1M0|=0x04;P1M1|=0x04;
    ADC_CONTR=0xe2;
    break;
  case 3:
          P1M0|=0x08;P1M1|=0x08;
    ADC_CONTR=0xe3;
    break;
  case 4:
          P1M0|=0x10;P1M1|=0x10;
    ADC_CONTR=0xe4;
    break;
  case 5:
          P1M0|=0x20;P1M1|=0x20;
    ADC_CONTR=0xe5;
    break;
  case 6:
          P1M0|=0x40;P1M1|=0x40;
    ADC_CONTR=0xe6;
    break;
  case 7:
          P1M0|=0x80;P1M1|=0x80;
    ADC_CONTR=0xe7;
    break;
   }
   delay_us(100);
   ADC_DATA=0x00;
   ADC_CONTR|=0x08;    //启动AD转换
   delay_us(200);  //等待转换完成
   ADC_CONTR&=0xe7;    //清0 ADC_FLAG,ADC_START 位,停止AD转换
   ADResult=ADC_DATA;   //保存转换结果
   switch(Channel)
   {
     case 0:
          P1M0&=0xfe;P1M1&=0xfe; //设置普通IO
    break;
  case 1:
          P1M0&=0xfd;P1M1&=0xfd;
    break;
  case 2:
          P1M0&=0xfb;P1M1&=0xfb;
    break;
  case 3:
          P1M0&=0xf7;P1M1&=0xf7;
    break;
  case 4:
          P1M0&=0xef;P1M1&=0xef;
    break;
  case 5:
          P1M0&=0xdf;P1M1&=0xdf;
    break;
  case 6:
          P1M0&=0xbf;P1M1&=0xbf;
    break;
  case 7:
          P1M0&=0x7f;P1M1&=0x7f;
    break;
   }
   return ADResult;
}
 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

在软件开发领域,版本控制是确保软件质量、追踪变更历史以及管理多个开发分支的关键环节。对于C语言这样的底层编程语言而言,虽然其直接操作硬件的能力强大,但在版本信息管理方面却相对“原始”,需要开发者手动维护版本信息。然而,通...

关键字: C程序 嵌入式开发

语言程序开发中,日志记录是不可或缺的一环。它不仅能帮助开发者在开发过程中快速定位问题,还能在程序部署后,为后续的故障排查和系统监控提供重要信息。本文将介绍几种实用的C程序日志打印方法,从基础的打印函数使用到高级的日志系统...

关键字: C程序 log 嵌入式开发

程序烧到什么地方?程序加载到内存什么地方?程序如何执行?

关键字: C程序 可执行文件

需要注意的是,两单片机要保证正确通信,主机的RXD连接从机的TXD,从机的RXD连接主机的TXD。

关键字: 51单片机 双机通信 C程序

1 、著名的Nyquist采样定理 尽管大家都知道,但还是提一提。大牛奥本海姆的《信号与系统》中是这样描述的: Let x(t) be a band-limited signal with X(jw) = 0 for |...

关键字: AD转换 模拟信号 信号采样

即使是像IBM这样的知名企业也开始实施区块链技术了。这也是初创企业和企业家们的一个热门话题。 该技术提供了一个系统,消除了集中控制和对信任框架的需要。它提供了去中心化、透明度和不变的记录

关键字: 区块链 加密 生态系统 C程序

即使是像IBM这样的知名企业也开始实施区块链技术了。这也是初创企业和企业家们的一个热门话题。 该技术提供了一个系统,消除了集中控制和对信任框架的需要。它提供了去中心化、透明度和不变的记录

关键字: 区块链 加密 生态系统 C程序

随着加密货币的使用稳步增加,并发现自己正与传统金融世界交叉,监管机构现在开始介入,以至于金融行动特别工作组(FATF)发布了关于其37个成员国应如何监管加密货币交易所的指南。 虽然业内许

关键字: 区块链 加密 C程序 分布式

随着加密货币的使用稳步增加,并发现自己正与传统金融世界交叉,监管机构现在开始介入,以至于金融行动特别工作组(FATF)发布了关于其37个成员国应如何监管加密货币交易所的指南。

关键字: 加密 区块链 C程序 分布式

即使是像IBM这样的知名企业也开始实施区块链技术了。这也是初创企业和企业家们的一个热门话题。 该技术提供了一个系统,消除了集中控制和对信任框架的需要。它提供了去中心化、透明度和不变的记录

关键字: 区块链 加密 生态系统 C程序
关闭