请教STC的P1^2口的模数转换问题
我用P1的其它口都可以实现模数转换,但用p1^2口始终不行,请问这个口是不是有什么特殊的地方,查资料该口有比较器的功能,不知道是不是这个原因导致的,问了STC的技术支持直接叫我用他的程序去改,根本就不愿意回答我的问题,结果也是一样。 你注意AD寄存器的设置是否正确,输入通道设定中000表示选用第1通道,如果用P1^2应为010,还有需要把P1^2设定为AD模式。 楼主把程序贴上来吧,要不怎么帮你 楼主把程序贴上来吧,要不怎么帮你 void Init_ADC(void){
//模拟输入的IO口方向设置
P1M0 &= 0x73; // 0111 0011
P1M1 |= 0x8c; // 1000 1100
P1ASF = 0x8c;
Set_ADC_Channel(2);
delay(2000);
AUXR1 &= 0xfb; //ADC结果高8位在 ADC_RES
EADC = 1;//IE的bit 5 是ADC和SPI共用的总中断允许控制位 EADC_SPI
ADC_DATA = 0;
ADC_START();
}
/******************************************************************************
函 数 名 :
功能描述 :
输入参数 : 无
输出参数 : 无
返 回 值 : 无
*******************************************************************************/
void Set_ADC_Channel(u8 channel)
{
ADC_CONTR = (0xe0 | channel);
ADC_Channel = channel;
}
void int_ADC(void) interrupt 5
{
ADC_value = ADC_DATA;
if(2 == ADC_Channel)
{
Set_ADC_Channel(3);
return;
}
else
{
Set_ADC_Channel(2);
}
}
初始化就是2口,我用了2\3做模数转换,3口都正常,甚至我还试了1、7口都正常,偏偏2口不行,也试过将2口设为开漏式也不行
页:
[1]