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