aaabbbad 发表于 2017-3-22 21:21:41

求助:PIC单片机GPIO端口初始化问题

最近在调试PIC单片机,发现GPIO初始化函数必须放在main函数的开始,放在其他子函数中后续调用就导致部分端口初始化无效,因为涉及到上电初始化时端口输出全部为高电平会改变外围器件的状态,所以某些端口的初始化必须放在子函数中,求教如何解决。我的代码如下void GPIO_Init(void)
{        //A端口
        TRISA = 0x02;                       //RA1配置成模拟输入,其他A端口均配置成输出       
        ADCON1bits.PCFG0 = 1;                //数字IO
        ADCON1bits.PCFG1 = 0;                //模拟输入
        ADCON1bits.PCFG2 = 1;                //数字IO       
        ADCON1bits.PCFG3 = 1;                //数字IO

        //B端口
        TRISB = 0x01;                       //RB0配置成模拟输入,其他B端口均配置成输出
        ADCON1bits.PCFG4 = 0;                //模拟输入
        ADCON1bits.PCFG5 = 1;                //数字IO
        ADCON1bits.PCFG6 = 1;                //数字IO               
}
具体来说是端口A的初始化不能放在其他子函数中,求指导!先谢谢了

d314361768 发表于 2017-3-22 22:02:33

楼主的意思是:在子函数中改变 A端口的 “模拟”与“数字”状态?

河图洛书 发表于 2017-3-23 08:21:27

用函数指针可以吗?

gaolf_2012 发表于 2017-3-23 08:36:43

你用的单片机有没有这个:ANSELx 寄存器

aaabbbad 发表于 2017-3-27 16:48:54

d314361768 发表于 2017-3-22 22:02
楼主的意思是:在子函数中改变 A端口的 “模拟”与“数字”状态?

是的,在子函数中改变端口A的模拟与数字状态无效,端口B就可以,你知道是什么情况吗

aaabbbad 发表于 2017-3-27 16:49:27

河图洛书 发表于 2017-3-23 08:21
用函数指针可以吗?

不太明白,这个跟函数指针有什么关系

xad74 发表于 2017-3-27 16:52:54

#define    LineInputGP1
#define    Output   GP2
#define    Diminput   GP4

xad74 发表于 2017-3-27 16:53:15

#define    LineInputGP1
#define    Output   GP2
#define    Diminput   GP4
页: [1]
查看完整版本: 求助:PIC单片机GPIO端口初始化问题