发新帖我要提问
12
返回列表
打印

ADC问题

[复制链接]
楼主: huanghuac
手机看帖
扫描二维码
随时随地手机跟帖
21
miaoaixiang| | 2011-10-18 22:41 | 只看该作者 回帖奖励 |倒序浏览
/*******************************************************************************************
** 函数名称: Init_AD
** 函数描述: AD初始化
** 输入参数: 无
** 输出参数: 无
*******************************************************************************************/
void Init_AD(void)
{
   ADCH=Bin(00000000);             //AD0 AD1通道选择
   ADT=Bin(10000011);              //AD时钟为12个CLK  采样时间3个AD时钟
   ADCON=Bin(00000000);            //关闭AD模块
}
/*******************************************************************************************
** 函数名称: Sample_AD
** 函数描述: AD初始化
** 输入参数: ch  :采样的通道号   P4.0-P4.3 P3.4-P3.7
**           smdt:采样时间 0为短 1为长
** 输出参数: 无
*******************************************************************************************/
uint16 Sample_AD(uint8 ch)
{
   uint16 adval;
   switch(ch)
   {
      case 0:       //AN0
  //    P4CR&=Bin(11111110);   //P40
        ADCH =Bin(00000001);
         ADCON=Bin(10000001);                 //使能AD0 启动转换
        break;
      case 1:       //AN1
  //    P4CR&=Bin(11111101);   //P41
        ADCH =Bin(00000010);
         ADCON=Bin(10000011);                 //使能AD1 启动转换
        break;
      case 2:       //AN2
   //   P4CR&=Bin(11111011);   //P42
        ADCH =Bin(00000100);
         ADCON=Bin(10000101);                 //使能AD2 启动转换
        break;
      case 3:       //AN3
      P4CR&=Bin(11110111);   //P43
        ADCH =Bin(00001000);
         ADCON=Bin(10000111);                 //使能AD3 启动转换
        break;
      case 4:       //AN4
  //    P3CR&=Bin(11101111);   //P34
        ADCH =Bin(00010000);
         ADCON=Bin(10001001);                 //使能AD4 启动转换
        break;
      case 5:     //AN5
  //    P3CR&=Bin(11011111);   //P35
        ADCH =Bin(00100000);
         ADCON=Bin(10001011);                 //使能AD5 启动转换
        break;
   case 6:     //AN6
   //   P3CR&=Bin(10111111);   //P36
        ADCH =Bin(01000000);
         ADCON=Bin(10001101);                 //使能AD6 启动转换
        break;
      case 7:     //AN7
  //    P3CR&=Bin(01111111);   //P37
        ADCH =Bin(10000000);
         ADCON=Bin(10001111);                 //使能AD7 启动转换
        break;
   default:   
        break;
   }
   while((ADCON&Bin(01000000))==0)
   {
      _nop_();
   }   
   adval=ADDH*4+ADDL;
   ADCON=Bin(00000000);                 //关闭AD
   
   return(adval);
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则