pic16外部中断初始化,为何我设置RC4和RC5为弱上拉 不起作用 还有我的外部中断也进不去

#include <pic.h>
#include <pic16f616.h>

__CONFIG(0x3ED4);

void PIC_INTI(void) //IO口初始化
{
GIE = 0; //关闭全局中断,然后开始配置
//各模块初始化
PORT_INIT();
TMR0_INIT();
TMR1_INIT();
//PIC_AD_INIT();
External_INT_INIT();

PEIE = 1; //PEIE :外设中断允许位 1 = 允许所有未被屏蔽的外设中断 0 = 禁止所有外设中断
GIE = 1; //当器件被中断唤醒且GIE(全局中断允许位)位置1 时, PC 装入中断向量(0004h)
}

void PORT_INIT(void)
{
TRISA |= 0x37; //0X37 = 0011 0111B配置RA0、RA1、RA2,RA4、RA5引脚为输入
TRISC &= 0xcc; // 0Xcc =1100 1100B配置RC0,RC1,RC4,RC5,为输出
ANSEL = 0x01; //RA0为模拟输入。为1 = 模拟输入。引脚被配置为模拟输入,模拟输入的引脚将读为0,且不能产生中断。

//为0 = 数字I/O。分配引脚为端口或特殊功能。
RAPU = 0 ; //总使能弱上拉, 必须使能全局 RAPU (低电平有效)位才能使能单独的上拉功能。PORTA 上拉使能位
// WPUA |= 0x30; //0x30=0011 0000B 指定位(即指定引脚RA4、RA5)使能弱上拉 。手则第35页
//WPUA4 =1;
WPUA5 =1;
// RP0 = 0;
}

void main(void)
{
PIC_INTI();

while(1)

{

//`````

}



void External_INT_INIT(void)
{
ANSEL &= 0xFB; //将RA2设为数字IO口。为0 = 数字I/O;为1 = 模拟输入
TRISA |= 0x04; //0000 0100
INTEDG = 0; //为1上升沿中断,为0下降沿中断
INTF=0; //外部中断标志清0
INTE = 1; //INTE :RA2/INT 外部中断允许位 : 1 = 允许 RA2/INT 外部中断; 0 = 禁止 RA2/INT 外部中断
}

void interrupt ISR(void)
{
GIE = 0;
TIMER_0_ISR();
TIMER_1_ISR();
A_to_D_ISR();
External_INT_0_ISR();

//if( INTE && INTF )
// {
// INTF = 0;
// ground_count = 0;
// //#ifdef debug
// debug_LED('r');//调试用,‘r’或‘g’对应颜色的LED闪烁,1绿灯亮,2红灯亮,3两灯亮
// debug_LED(2);
// // #endif
//}
GIE = 1;
}

void External_INT_0_ISR(void)
{
if( INTE && INTF )
{
INTF = 0;
ground_count = 0;
//#ifdef debug
debug_LED('r');//调试用,‘r’或‘g’对应颜色的LED闪烁,1绿灯亮,2红灯亮,3两灯亮
debug_LED(2);
// #endif
}
}
外部中断已解决 弱上拉还没搞垫 求助

你程序前面包括的头文件是pic16f616.h,就是用PIC16F616这个芯片。但它的RC4和RC4根本就没有弱上拉功能,你怎么开弱上拉?还有,你的IO初始化设置也就是开了A口的弱上拉而已。
补充:
你提问的标题是要对RC4和RC5进行弱上啦,你现在操作的是对RA4和RA5进行弱上拉。你到底是做那个的弱上拉???
还有,你用什么方法证实弱上拉是否有用? ???你的程序里在设置完弱上拉后,根本没有读RA4和RA5的数值。不明白你到底想用弱上拉来做什么。

再补充:
从你的程序里猜想一下,你是否以为弱上拉跟输出什么数据一样。所以尝试着 WPUA4 =1; 或者 WPUA5 =1;
——首先,要告诉你的是WPUA4=1不是设置RC4的弱上拉,而是RA4的弱上拉;其次,WPUA4=1;之后RA4没有输出,因为此时是输入状态。你应该读一下RA4。好好看看弱上拉的一些知识。这东西最常用于按键输入方面的操作。
温馨提示:内容为网友见解,仅供参考
无其他回答

pic16外部中断初始化,为何我设置RC4和RC5为弱上拉 不起作用 还有我的外...
——首先,要告诉你的是WPUA4=1不是设置RC4的弱上拉,而是RA4的弱上拉;其次,WPUA4=1;之后RA4没有输出,因为此时是输入状态。你应该读一下RA4。好好看看弱上拉的一些知识。这东西最常用于按键输入方面的操作。

相似回答