单片机外部中断返回之后想再次响应中断该怎么响应?

单片机外部中断返回之后想再次响应中断该怎么响应?,第1张

8051单片机

有5个

中断源

和两个

中断优先级

,高优先级的中断源可以中断低优先级的服务程序,反之不行。INT0>T0>INT1>T1>串口中断。

8051没有专门的开中断和关中断的指令,中断的开放和关闭是由

特殊功能寄存器

IE来实现两级控制的。有个

总开关

EA,然后又有ES,ET1,EX1,ET0,EX0五个开关。为1表示开,为0表示关。

单片机在复位后,IE各位的状态为0,所以CPU处于关中断的状态。对于串口来说,其

中断请求

被响应后,CPU不能自动清除中断标志。用指令来实现关中断。其他中断源的中断标志在CPU响应中断后自动清除。

中断优先级由IP来控制,PS,

PT1

,PX1,PT0,

PX0

,置为1表示高优先级。

当几个中断源同时向CPU请求中断时,按所发生的实时事件的轻重缓急排队,优先处理最

紧急事件

的中断请求,于是单片机规定每个中断源的优先级别。

当CPU正在处理一个中断请求,又发生另一滚禅个优先级比它高的中断请求,CPU暂时中止对前一中断处理,转而去处理优先级更高的中断请求,待处理完后,再

继续执行

原来的中断处理程序,这样的过程称为

中断嵌套

,这样的

中断系统

称为

多级中断

系统。

由于外界异步事件中断CPU正在执行的程序时随机的,CPU转向去执行

中断服务程毁蔽序

时,除了硬件会自动把断电地址,即16位PC

程序计数器

的值压入堆栈之外,用户还得注意保护有关

工作寄存器

累加器

,标志位等信息,这个过程通常称为

保护现场

。以便在完成大余尘中断服务程序后,恢复原工作寄存器,累加器,标志位等的内容,这个过程称

恢复现场

;最后执行

中断返回指令

,自动d出断电到PC,返回

主程序

,继续执行被中断的程序。

外部中断0设置哪羡为低电平触发,去掉while循环后一直按下按键实际代码为delay()P1=0xfedelay()EX0=0P1=_crol_(P1,1)delay()EX0=1P1=0X00一直重复.之前的代码进入中断后会一直循环,并李陪拍不会退出中断。正确做法中断应该改为:voidtx0()interrupt0using0{unsignedcharidelay()P1=0xfedelay()EX0=0while(1){P1=_crol_(P1,1)delay()if(P3&0x04)//判断是否松开中断0的乱州按键{break}}EX0=1P1=0X00}


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

原文地址: http://outofmemory.cn/yw/12494486.html

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

发表评论

登录后才能评论

评论列表(0条)

保存