本帖最后由 pzsh 于 2021-9-13 13:38 编辑
为什么我的RB0口进入不了中断?是哪里的问题?
#include<pic.h>
#include<pic16f877a.h>
#define uchar unsigned char
#define uint unsigned int
__CONFIG(0x3731);
void delay(uint x)
{
uint a,b;
for(a=x;a>0;a--)
for(b=110;b>0;b--);
}
void init() //初始化
{
OPTION_REG=0x00; //RBPU=0使能B口上拉电阻,INTEDG=0下降沿触发中断
INTCON=0xD0; //GIE为1允许总中断,INTE=1使能RB0/INT外部中断,INTF=0清RB0外部中断标志位
TRISB=0x01; //B口低2位设为键盘的输入
TRISD=0; //D口低4位设为LED的输出
// PORTB=0x01;
PORTD=0; //D口清零
}
void interrupt INT()
{
if(INTF==1) //查询中断标志位是否被置1
{
INTF=0; //清中断标志位
if(RB0==0) //再次检测RB0口是否被按下
{
PORTD=0x02; //马达反转
}
}
}
void main()
{
init();
while(1)
{
PORTD=0x00; //马达反转
}
} |
你在INTF清零的地方设断点,看能不能进入。