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); |