帮忙看看哪里有错误,AD转换程序!
时间:10-02
整理:3721RD
点击:
#include "stc12c5204ad.h"
#include "delay.h"
#define uchar unsigned char
#define uint unsigned int
sfr ADC_RES=0xbd;
sfr P1ASF=0x9d;
uchar ch=0x07;//P1.7作为AD输入来用,多路AD时,把ch得值加1就可以切换输入通道
uchar result;
uchar ad(void)
{
ADC_CONTR=0xc0;//开启电源,选择速度为140clock
P1ASF=0x00; //设置P1.0为AD转换通道
ADC_CONTR=0x08;//启动AD转换
delay_usx2(5);
while((ADC_CONTR&0x10)==0);//等待转换结束,即ADC_FLAG=1
ADC_CONTR&=0xe7;//置零ADC_FLAG,把ADC_START置零
return ADC_RES;//保存AD转换之后的值
//ADC_RES=0x00; //清零转换结果寄存器
//ADC_CONTR=power|speedh|start|ch; //开启电源,140个时钟,开始转换
//delay_usx2(5); //延时4个机器周期才能正确读取ADC_CONTR的值
}
void main()
{
while(1)
{
result=ad();
P2=result;
}
}
#include "delay.h"
#define uchar unsigned char
#define uint unsigned int
sfr ADC_RES=0xbd;
sfr P1ASF=0x9d;
uchar ch=0x07;//P1.7作为AD输入来用,多路AD时,把ch得值加1就可以切换输入通道
uchar result;
uchar ad(void)
{
ADC_CONTR=0xc0;//开启电源,选择速度为140clock
P1ASF=0x00; //设置P1.0为AD转换通道
ADC_CONTR=0x08;//启动AD转换
delay_usx2(5);
while((ADC_CONTR&0x10)==0);//等待转换结束,即ADC_FLAG=1
ADC_CONTR&=0xe7;//置零ADC_FLAG,把ADC_START置零
return ADC_RES;//保存AD转换之后的值
//ADC_RES=0x00; //清零转换结果寄存器
//ADC_CONTR=power|speedh|start|ch; //开启电源,140个时钟,开始转换
//delay_usx2(5); //延时4个机器周期才能正确读取ADC_CONTR的值
}
void main()
{
while(1)
{
result=ad();
P2=result;
}
}
你是看下你的AD是8位的还是10位的,第二就是说具体你的问题到底是什么?