51单片机,c 语言 为什么写2个外部中断程序,就会有一个不工作呢不是同时按的,不用考虑优先级

51单片机,c 语言 为什么写2个外部中断程序,就会有一个不工作呢不是同时按的,不用考虑优先级,第1张

首先两个中断是否都打开了,也就是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程序!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10120658.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存