英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流

 找回密码
 立即注册
搜索
电子烟方案单片机单片机开发深圳单片机开发
单片机方案国产单片机8位单片机电子烟方案开发
查看: 4075|回复: 1
打印 上一主题 下一主题

有关AD的一段代码

[复制链接]
跳转到指定楼层
1#
发表于 2009-4-25 14:55:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
其中AD2BUG用于对八路通道循环采样,结果放入长度为80的一个数组中,试验证明有效,AD2BUF_Single_Channel用于对同一条通道采样,结果同样存入数组,可是这时的采样值全部为零!请问什么地方出错。谢谢大家!
void AdcRead(u8 channel,u8 *adcvaule)
{
ADCON0 = (channel << 3) | 0x81;  // enable ADC
// Delay(3);
Delay(30);
ADGO = 1;
while(ADGO); // wait for conversion complete
*adcvaule = ADRESH;
}
void AD2BUF(void)
{
u8 bufcount;
    u8 *mid;
for(bufcount = 0; bufcount < 80; bufcount++) {
  AdcRead(bufcount % 8, mid);
  Receive_Buffer[bufcount] = *mid;
}

}
void AD2BUF_Single_Channel(u8 channel)
{
u8 bufcount;
    u8 *mid;
for(bufcount = 0; bufcount < 80; bufcount++) {
  AdcRead(channel, mid);
  Receive_Buffer[bufcount] = *mid;
}

}
2#
 楼主| 发表于 2009-4-25 14:55:18 | 只看该作者
在PICC中指针编译无错,但是实际上发现是无法有效执行的,因此只要把AdcRead()函数改为返回的形式就应该可以解决问题:

u8 AdcRead(u8 channel)
{

    u8 adcvaule;
ADCON0 = (channel << 3) | 0x81;  // enable ADC
Delay(30);
ADGO = 1;
while(ADGO); // wait for conversion complete
adcvaule = ADRESH;

return adcvaule;
}
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|公司首页|Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 ( 粤ICP备09008620号 )

GMT+8, 2024-12-25 09:21 , Processed in 0.052155 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表