各位大佬们,我最近在研究IAP15W4K58S4的内置ADC,根据STC公司的15数据手册,我写出了一个程序、但是、采集到的数据是固定不变的,这我就有点慌了、恳请各位帮忙!!
void delay_main(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void adc_init()
{
P1=0xff;
P1ASF=0x08;
CLK_DIV|=0X20;
ADC_CONTR|=0X80;
delay_main(80);
P1M1=0x04;P1M0=0x04;
}
uint ADC()
{
unsigned char DATA_H,DATA_L;
ADC_DATA =0; //清除转换结果
ADC_CONTR =0xE0; //保持电源开,设置转换速度
_nop_();
_nop_();
_nop_();
_nop_();
ADC_CONTR =0xE3;
delay(10);
ADC_CONTR =0xEB; // 开转换开关 ,开始转换
while(ADC_CONTR & 0x10==0);//查询转换是否结束,结束后读取结果
ADC_CONTR &=0xE7;
DATA_H=ADC_RES;
DATA_L=ADC_RESL;
ADC_DATA=DATA_H;
ADC_DATA=ADC_DATA<<2;
ADC_DATA |=ADC_RESL;
ADC_CONTR=0x00;
return(ADC_DATA); //返回转化结果
}
void main()
{
adc_init();
init();
delay_main(10);
while(1)
{
ADC();
write_com(0x80);
write_data((ADC_DATA/1000)+0x30);
write_data((ADC_DATA/100%10)+0x30);
write_data((ADC_DATA/10%10)+0x30);
write_data((ADC_DATA%10)+0x30);
delay_main(1000);
}
}
这是程序、请各位大佬指出错误、谢谢!! |