STC的单片机如何读取已转换完成的AD结果?

void AD() //AD转换函数.使用P14口做AD转换(光敏电阻)
{
uint DATA;

ADC_CONTR = 0x84; //1000,0100 打开A/D转换电源 ,并选择P14作为AD转换接口
delayms(1);

ADC_RES = 0; //清A/D转换结果寄存器 高八位
ADC_CONTR= 0x8; //开始转换
delayms(1); //延时等待转换结束
while((ADC_CONTR & 0x10)==0); //00010000等待A/D转换结束
{
ADC_CONTR = ADC_CONTR & 0x84; //10000100清ADC_FLAG位,停止A/D转换
}
DATA = ACD_RES;
return(DATA)
}

这是我写的程序.我只是个爱好者.正在学51.用的是STC的单片机
这样读取的DATA应该是二进制的吧?
但是我想在return之前把他转换成10进制的要怎么办?

我是第一次写ADC..什么都不懂,上面的程序可能有些残缺或冗余..希望帮修改一下..谢谢!

你的函数是void但是你却有return语句,显然是错的。
如果你的AD是8位,可以这样:DATA定义为 unsigned char型数据,函数为 unsigned char AD()。假如你的AD输出端连接的是单片机P1口,在主函数中直接P1=AD();就可以了。
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-08-24
没有转换的必要,你只要把它按10进制数进行处理就可以了,c里面默认的是10进制数.
第2个回答  2009-08-25
用乘法吗,因为它的数据是存在寄存器里面的。寄存器的数值本来就可以用十进制表示的。
第3个回答  2009-08-25
使用的是stc带ad功能的单片机吧,我也不懂哦,学习了
相似回答