各位大神好,我是新人小白,最近刚刚接触zigbee相关内容,但由于不是电子或通信相关专业出身,学习起来比较吃力。 
最近在做CC2530  AD采集电压实验时,采集P0_7引脚电压,发现一直采集不到电压数据,显示0.0V,想问问是哪里出了问题,谢谢各位! 
 
 
#include<iocc2530.h> 
#define unit unsigned int 
#define LED1 P1_0 
char temp[2]; 
unit adc; 
float num; 
 
void Delay() 
{ 
  unsigned int i,j; 
  for(i=0;i<1000;i++) 
    for(j=0;j<200;j++); 
} 
char adcdata[]="0.0V"; 
 
void InitialAD(void)//采集P0_7的电压,数据寄存器清零 
                    //P0_7模拟I/O使能 
                    //单次转换,电源电压,抽样率512 
                    //启用ADC转换,启用前先关闭ADC转换 
{ 
  ADCH &=0x00; 
  ADCL &=0x00;//数据寄存器清零 
  APCFG |=0x80;//P0_7模拟外设I/O使能 
  
  /* P0SEL  |= 0x80;// 偏上外设 
  P0DIR  &= ~0x80;//输入*/ 
   
  ADCCON3=0xb7;//1011 0111 
   
  ADCCON1 =0x30;//0011 0000 
  ADCCON1 |=0x40;//0100 0000停止A/D转换,再启动A/D 
} 
 
void main(void)//LED1 指示,ADC转换完成LED1改变状态 
           //调用ADC初始函数 
           //ADC转换完成后将结果放入temp 
           //调用ADC初始函数进行下一次转换 
           //处理ADC结果 
 
{ 
  P1DIR |=0x01;//P1控制LED                     
  LED1 =1;//LED1灭 
  // LED2 =1; 
  InitialAD();//ADC初始化 
  while(1) 
  { 
    if(ADCCON1&0x80)//等待转换完成 
    { 
      temp[1]=ADCL; 
      temp[0]=ADCH;// 
      InitialAD();//ADC初始化 
      ADCCON1 |0x40;//下一次转换 
      
      adc |=(unit)temp[1]; 
      adc |=((unit)temp[0])<<8; //adc赋值 
      if(adc&0x8000) 
      { 
        adc=0; 
      } 
      else 
      { 
        num=adc*3.3/8192;//参考电压3.3V,16分辨率 
        adcdata[1]=(char)(num)%10+48; 
        adcdata[3]=(char)(num*10)%10+48; 
      } 
      Delay(); 
      LED1= ~LED1; 
      Delay(); 
    } 
  } 
 
} |   
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注册 
 
 
 
×
 
     
  
 |