51单片机采用外部中断tiao执行完中断程序几十秒才返回主程序

51单片机采用外部中断tiao执行完中断程序几十秒才返回主程序任务是:在八盏流水灯依次点亮的基础上,增加两个按键,采用外部中断T1方式一工作。0中断,点亮偶数盏灯,闪烁三次。1中断,点亮奇数盏灯,闪烁三次。1比0优先级高

我出现的问题是,按下按键,中断开始,闪烁三次后,过了三十多秒后,才继续主程序,我想问的是,怎么解决这个问题,还是外部中断本来就有这个问题,大佬赶紧来

第1个回答  2018-07-28
从现象看,程序应该跑“飞”了,能回到主程序,可能是“复位”的结果,因为是中断造成的,所以,可能堆栈出了问题,看看寄存器的使用或堆栈操作是否有误。
第2个回答  2017-06-08
中断处理函数要求尽可能的短,你这在中断里面有定时器延时闪灯,而且中断程序里定时器还会触发定时器中断很容易出问题
现在是有两个外部中断和一个定时器中断,你定时器用的是1,你将外部中断0的优先级设置为比1低,按优先级排:
外部中断1>外部中断0>定时器1,你在外部中断的中断程序里执行定时器延时,定时器的中断优先级根本不够,出问题也正常啊
正确的处理办法应该是将处理程序放到主函数里处理,例:定义两个标志数
bit sw1,sw2;
如果按键1按下,就在中断里将sw1赋值1.即sw=1;
在主函数里判断sw1=1就执行闪灯程序,然后将sw1标志清除,处理完一次按键程序
按键二处理方法也一样!
实在还想用自己的方法,你就将定时器1的优先级设最高,不过这样很可能按键又无响应,因主函数里流水灯程序定时器一直在不停的中断追问

先试试吧

本回答被提问者和网友采纳
相似回答
大家正在搜