首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

AD转换代码读不到数据,各位帮帮忙

2012-03-18 
AD转换代码读不到数据,各位帮帮忙~在线等下面是我从书上改的AD转换代码,是为了将电池的看、状态反映出来。用

AD转换代码读不到数据,各位帮帮忙~在线等
下面是我从书上改的AD转换代码,是为了将电池的看、状态反映出来。用P0.28和通道1进行转换的。但是读出来的数据却是0,请大虾们卡、你看错在哪了。谢谢了。 谢谢各位帮助了。 
 PINSEL0 =0x00000005; 
  PINSEL1 =1<<24;//

  AD0CR = (1<<1)|((Fpclk/1000000-1)<<8)|(0<<16)|(0<<17)|(1<<21)|(0<<22)|(1<<24)|(0<<27);
  Delay_NS(10);
  ADC_Data =AD0DR;
 
  AD0CR |=1<<24;
  while((AD0DR&0x80000000)==0);
  AD0CR |=1<<24;
  while((AD0DR&0x80000000)==0);//这条语句执行后ADC_Data = 0x81000000
  ADC_Data =AD0DR;
  ADC_Data =(ADC_Data>>6)&0x3ff;但是经过这里转换后变为0了。这是为什么?
  return ADC_Data;

[解决办法]
ADC_Data = 0x81000000?
左移6位?
与0x3ff?
运算后肯定是0啊。你是不是要左移24位?

[解决办法]
你在重新进行AD转换时也许应该先停一下吧
AD0CR &= 0xf8ffffff;
另外你的ADC的引脚是不是就是0呢
又或者你的ADC时钟打开了么
ADC_Data = 0x81000000
ADC_Data =(ADC_Data>>6)&0x3ff;
就是0啊,因为0x81000000右移6位是0x02400000, 在与0x3fff与当然是0了

热点排行