PIC单片机william hill官网
直播中

程剑锋

6年用户 16经验值
私信 关注
[问答]

PIC16F1825的RC5引脚,在主程序中操作无效,在中断中可以改变是为什么?

简单的设置了一下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是好的
4.JPG
但把IO初始化函数中的//注释去掉,RC5就保持高电平不变
5.JPG
求大神指教。
已退回6积分

回帖(5)

jinyi7016

2018-7-20 21:46:09
可能是中断进入后设置了,程序中再设置还是被中断设置修改了
举报

李立

2018-7-20 22:51:14
仿真和实际会有差别的,建议弄个最小系统板,实际测试PIC是大公司,这种低级问题不会出现的
举报

程剑锋

2018-7-21 23:53:35
引用: jinyi7016 发表于 2018-7-20 21:46
可能是中断进入后设置了,程序中再设置还是被中断设置修改了

没有中断服务子函数,程序就我发出来的一点
举报

程剑锋

2018-7-21 23:55:11
引用: mzb2012 发表于 2018-7-20 22:51
仿真和实际会有差别的,建议弄个最小系统板,实际测试PIC是大公司,这种低级问题不会出现的

在等板子寄过来,所以先做了个仿真,试了试,结果出了这个问题
举报

程剑锋

2018-7-21 23:57:12
引用: jinyi7016 发表于 2018-7-20 21:46
可能是中断进入后设置了,程序中再设置还是被中断设置修改了

没有中断,程序中是一直管引脚,但是没用
举报

更多回帖

发帖
×
20
完善资料,
赚取积分