szzyq 发表于 2012-4-26 17:06:57

请教STC的P1^2口的模数转换问题

我用P1的其它口都可以实现模数转换,但用p1^2口始终不行,请问这个口是不是有什么特殊的地方,查资料该口有比较器的功能,不知道是不是这个原因导致的,问了STC的技术支持直接叫我用他的程序去改,根本就不愿意回答我的问题,结果也是一样。

liweiqiang668 发表于 2012-4-26 21:01:17

你注意AD寄存器的设置是否正确,输入通道设定中000表示选用第1通道,如果用P1^2应为010,还有需要把P1^2设定为AD模式。

longwu911 发表于 2012-4-26 22:13:38

楼主把程序贴上来吧,要不怎么帮你

longwu911 发表于 2012-4-26 22:13:55

楼主把程序贴上来吧,要不怎么帮你

szzyq 发表于 2012-4-27 08:51:17

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]
查看完整版本: 请教STC的P1^2口的模数转换问题