打印

求助:C8051F060的ADC全速运行无法得到结果

[复制链接]
1884|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jiny05|  楼主 | 2007-9-16 11:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用060内部集成的16位ADC,单步运行的结果都是正确的,可是全速运行结果不是0就是ffff。请问各位高手是什么问题呢?ADC转换的代码如下:
void ADC_Init(void)
{char SFRPAGE_SAVE=SFRPAGE;
SFRPAGE=ADC0_PAGE;

AMX0SL=0x00;
REF0CN=0x03;
ADC0CF=0x80;           ADC0CN=0x80;

SFRPAGE=SFRPAGE_SAVE;
}

void ADC_Convert(void)
{
char SFRPAGE_SAVE=SFRPAGE;
SFRPAGE=ADC0_PAGE;

AD0INT=0;

AD0BUSY=1;

while(!AD0INT)
{j++;}

adc_temp=ADC0H;
adc_temp=adc_temp*256+ADC0L;
result=adc_temp;


SFRPAGE=SFRPAGE_SAVE;
}

相关帖子

沙发
jiny05|  楼主 | 2007-9-16 14:20 | 只看该作者

很诡异

我在char SFRPAGE_SAVE=SFRPAGE;
SFRPAGE=ADC0_PAGE;


AD0INT=0;
之间加了个delayms(10)
就好了 
不知道为什么

使用特权

评论回复
板凳
ayb_ice| | 2007-9-17 07:48 | 只看该作者

有可能软件问题...

ADC转换太快,读取太慢...
在中断中读数据...

使用特权

评论回复
地板
winloop| | 2007-9-17 08:46 | 只看该作者

间隔加大试试

使用特权

评论回复
5
minicatcat| | 2007-9-17 09:14 | 只看该作者

定义一个 sfr16 ADC ,一次性读会好一些


 

使用特权

评论回复
6
ayb_ice| | 2007-9-17 09:37 | 只看该作者

"定义一个 sfr16 ADC ,一次性读会好一些"

这是典型的掩耳盗铃...

使用特权

评论回复
7
jiny05|  楼主 | 2007-9-17 09:55 | 只看该作者

谢谢各位大侠~

使用特权

评论回复
8
iampoor| | 2007-9-17 10:44 | 只看该作者

不是关键问题

应该是你搞错了AD转换完成的标志,没有转换结束就读;单步执行是因为每一步中间有足够的时间完成转换。

自己看手册,搞清楚一些配置和控制寄存器的操作、含义。

有些同志回答问题存在误导,呵呵!

使用特权

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

本版积分规则

3

主题

10

帖子

1

粉丝