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

2020-02-06 09:57发布

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

  8.         //B端口
  9.         TRISB = 0x01;                       //RB0配置成模拟输入,其他B端口均配置成输出
  10.         ADCON1bits.PCFG4 = 0;                //模拟输入
  11.         ADCON1bits.PCFG5 = 1;                //数字IO
  12.         ADCON1bits.PCFG6 = 1;                //数字IO               
  13. }
复制代码
具体来说是端口A的初始化不能放在其他子函数中,求指导!先谢谢了
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
d314361768
1楼-- · 2020-02-06 14:58
楼主的意思是:在子函数中改变 A端口的 “模拟”与“数字”状态?
河图洛书
2楼-- · 2020-02-06 17:26
用函数指针可以吗?
gaolf_2012
3楼-- · 2020-02-06 22:30
你用的单片机有没有这个:ANSELx 寄存器
aaabbbad
4楼-- · 2020-02-06 23:07
 精彩回答 2  元偷偷看……
aaabbbad
5楼-- · 2020-02-07 04:37
河图洛书 发表于 2017-3-23 08:21
用函数指针可以吗?

不太明白,这个跟函数指针有什么关系
xad74
6楼-- · 2020-02-07 04:48
#define    LineInput  GP1
#define    Output     GP2
#define    Diminput   GP4

一周热门 更多>