|
void main()
{
AD_init(); //A/D轉(zhuǎn)換初始化
serial_init(); //串口初始化
while(1)
{
{
TI=1; //使用printf函數(shù)前須先將發(fā)送標(biāo)志位TI置1
printf("%f",AD_get() );
TI=0;
delay(1000); //延時約1s
}
}
}
uint AD_get(void)
{
ADC_CONTR=0xe8; //開啟AD轉(zhuǎn)換
_nop_(); _nop_(); _nop_(); _nop_();//要經(jīng)過4個CPU時鐘的延時,其值才能夠保證被設(shè)置進(jìn)ADC_CONTR 寄存器
while(!(ADC_CONTR&0x10)); //等待轉(zhuǎn)換完成
ADC_CONTR&=0xe7; //關(guān)閉AD轉(zhuǎn)換,ADC_FLAG位由軟件清0
return(ADC_RES*4+ADC_RESL); //返回AD轉(zhuǎn)換完成的10位數(shù)據(jù)(16進(jìn)制)
}
void AD_init()
{
P1ASF=0xff; //P1口全部作為模擬功能AD使用
ADC_RES=0; //清零轉(zhuǎn)換結(jié)果寄存器高8位
ADC_RESL=0; //清零轉(zhuǎn)換結(jié)果寄存器低2位
ADC_CONTR=0xe0;//開啟AD電源
delay(2); //等待1ms,讓AD電源穩(wěn)定
}
這個程序串口返回的一直是9F FA,外面電壓變了也是這個值
求大佬救救小白
|
|