void ADC_Read(void)
{
unsigned int i16Tem;
ADC_CONTR|=0x02; // 設定轉換的通道,P3.2是0100,增加這句
ADC_CONTR |= 0x40; //繼續AD轉換
_nop_();
_nop_();
while (!(ADC_CONTR & 0x20)); //查詢ADC完成標志
ADC_CONTR &= ~0x20; //清中斷標志
i16Tem = ADC_RES<<8|ADC_RESL; // 讀取通道2 (P3.2) 的ADC值
ADC_RES=0;
ADC_RESL=0;
ADC_CH =i16Tem;
}
void ADC_Test(void)
{
if(ADC_CH>560)
{
PWM_Output_Capp1(10);
}
else if((ADC_CH <= 500 ) &&(ADC_CH >= 100 ))
{
PWM_Output_Capp1(10);
}
else
{
PWM_Output_Capp1(256);
}
}
我嘗試著修改了代碼,能讀取到ADC值,但是這個值似乎有些問題,我的PWM1是控制繼電器的,我在對板子上電以后,繼電器上電瞬間會吸合,然后立刻就斷開了。ADC輸入引腳的電壓一直是1.5V,MCU的供電電壓是3.3V,所以理論上ADC_CH 的值應該是466左右,但是執行的是PWM_Output_Capp1(256); |