简单的设置了一下PIC16F1825的IO口输出状态,把RC5设为输出,输出为0,但在做Protues仿真时发现,一旦开启弱上拉( WPUEN),或操作RC端口任一位的弱上拉使能(WPUC),哪怕未开启WPUEN,RC5都会自动置1,且在主程序中操作无效,在中断中可以改变。附图如下,求大神解惑一下:
1.配置字
#pragma config FOSC = INTOSC
#pragma config WDTE = OFF
#pragma config PWRTE = OFF
#pragma config MCLRE = OFF
#pragma config CP = ON
#pragma config CPD = ON
#pragma config BOREN = OFF
#pragma config CLKOUTEN = OFF
#pragma config IESO = OFF
#pragma config FCMEN = ON #pragma config WRT = OFF
#pragma config PLLEN = OFF
#pragma config STVREN = OFF
#pragma config BORV = LO
#pragma config LVP = OFF
2 IO口初始化函数
void IO_Init(void)
{ TRISCbits.TRISC4 = 0;
TRISCbits.TRISC5 = 0;
LATCbits.LATC4 = 0;
LATCbits.LATC5 = 0;
// nWPUEN = 0;
// WPUC2 = 0;
}
3 主函数
void main(void) {
OSCCONbits.IRCF = 0b1110; IO_Init(); while(1){ LATCbits.LATC5 = 0;
}
}
此时仿真图右下角RC5是好的
但把IO初始化函数中的//注释去掉,RC5就保持高电平不变
求大神指教。