首先两个中断是否都打开了,也就是EX0、EX1是否都等于1;
另外看看触发方式:IT0、IT1是什么置;
再看看你是否真的触发了,硬件上确认没有问题?
第四,你将两个中断函数后面using n ,使n不同,使用不同的工作组试试。
先在主函数里写上:
IT1=1;//下降沿触发
EA=1;//开总中断
EX=1;//开int中断
然后在主程序外面写中断服务函数
void Int1()interrupt 2
{
写入你想实现的功能
} 当你按下P33后 就会执行void Int1()interrupt 2 里的程序了
希望能帮到你。
跟外部的按键消抖一样处理就可以了。
void ext0() interrupt 0
{
delay(10);//
flag=0;//按键有效标志=0为无效
if(P3_2)
{
while(!P3_2);//等待按键抬起
flag=1;
}
}
51单片机的外部中断是有两种触发方式的,如外部中断0:
IT0(TCON0) ,外部中断 0触发方式控制位。
当IT0=0时,为电平触发方式。
当IT0=1时,为边沿触发方式(下降沿有效)。
51单片机中断系统初始化:
开相应中断源的中断; (IE)
设定中断优先级;(IP)
若为外部中断,设定外部中断的触发方式。
void Outside_Init(void)
{
EX0 = 1; //开外部中断0
IT0 = 1; //负边沿触发
EA = 1; //开总中断
}
void Outside_Int(void) interrupt 0 //外部0中断函数
{
EX0 = 0; //关中断
这里写要实现的功能
EX0 = 1; //开中断
}
以上就是关于51单片机,c 语言 为什么写2个外部中断程序,就会有一个不工作呢不是同时按的,不用考虑优先级全部的内容,包括:51单片机,c 语言 为什么写2个外部中断程序,就会有一个不工作呢不是同时按的,不用考虑优先级、在KEIL软件中“外部中断1由单片机的引脚P3.3下降沿触发”用C语言怎么写、51单片机的外部中断如何写按键消抖c程序!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)