STC12C5A60S2单片机的A/D转换问题

现将一个电位器的输出端接到STC12C5A60S2的P1.1口(即ADC1),利用A/D模块将电位器电压信号的转换结果通过串口2发送给PC,利用串口调试助手来看转换结果。... 现将一个电位器的输出端接到STC12C5A60S2的P1.1口(即ADC1),利用A/D模块将电位器电压信号的转换结果通过串口2发送给PC,利用串口调试助手来看转换结果。
程序如下:

#define ADC_POWER 0X80
#define ADC_FLAG 0X10
#define ADC_START 0X08

void AD_init()

{
ADC_CONTR |= ADC_POWER; //开启AD电源
delay_ms();
delay_ms();
P1ASF=0x02; // P1.1口作为模拟功能AD使用
ADC_RES=0; //清零转换结果寄存器高8位
ADC_LOW2=0; //清零转换结果寄存器低2位

ADC_CONTR |= 0x01; //P1.1作为A/D输入
ADC_CONTR |= ADC_START; //启动A/D转换
delay_ms();

}

void main()
{
serial2_init();
AD_init();

EA=1;
while(1)
{
ADC_CONTR |= ADC_START; //启动A/D转换
while(ADC_CONTR&ADC_FLAG); //等待ADC_FLAG置位
ADC_CONTR &= ~ADC_FLAG;; //ADC_FLAG清零
serial2_sendchar(ADC_RES);

serial2_sendchar(ADC_LOW2);
}

现在的问题是ADC_FLAG不置位,也就是没有完成A/D转换。上面程序是用查询方式,利用中断也是同样的问题。

请高手指教一下,问题出在哪儿?感谢~
展开
 我来答
listenhappy
2013-04-25
知道答主
回答量:42
采纳率:0%
帮助的人:15.7万
展开全部
while(ADC_CONTR&ADC_FLAG); //等待ADC_FLAG置位 这里错了吧,为1不就是死循环了,程序执行不到下面啊。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式