打印
[通用8051核FLASH系列]

51单片机中断处理过程

[复制链接]
609|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
OKAKAKO|  楼主 | 2023-9-22 19:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
中断标志在CPU时钟的上升沿被采样,如果一个标志被置起,那么CPU捕获到后中断系统调用一个
长转移指令(LCALL)调用其中断服务程序,但由硬件产生的LCALL会被下列任何条件阻止:
1. 同级或更高级的优先级中断在运行中。
2. 当前的周期不是执行中指令的最后一个周期。换言之,正在执行的指令完成前,任何中断请求
都得不到响应。
3. 正在执行的是一条 RETI 或者访问专用寄存器 IE/IE1 或是 IP0/IP1/IP2/IP3 的指令。换言之,在
RETI 或者读写 IE/IE1 或是 IP0/IP1/IP2/IP3 之后,不会马上响应中断请求,而至少在执行一条其它指
令之后才会响应。
中断服务程序ISR完成和该中断相应的一些操作。ISR以RETI(中断返回)指令结束,将PC值从栈
中取回,并恢复原来的中断设置,之后从主程序的断点处继续执行。
当某中断被响应时,被装载到程序计数器PC中的数值称为中断向量,是该中断源相对应的中断服
务程序的起始地址。各中断源服务程序的入口地址(即中断向量)明细可参照中断汇总。
由于中断向量入口地址位于程序存储器的开始部分,所以主程序的第1条指令通常为跳转指令,越
过中断向量区(LJMP MAIN)。
需要注意的是,不能用RET指令代替RETI指令,RET指令虽然也能控制PC返回到原来中断的地方,
但RET指令没有清零中断优先级状态触发器的功能,中断控制系统会认为中断仍在进行,其后果是与此
同级或低级的中断请求将不被响应。
若用户在中断服务程序中进行了入栈操作,则在RETI指令执行前应进行相应的出栈操作,即在中
断服务程序中PUSH指令与POP指令必须成对使用,否则不能正确返回。

使用特权

评论回复
沙发
tpgf| | 2023-10-21 11:49 | 只看该作者
所有单片机的中断处理过程一样吗

使用特权

评论回复
板凳
xiaoqizi| | 2023-10-21 13:11 | 只看该作者
哪些种类的中断是 不能被打断的呢

使用特权

评论回复
地板
八层楼| | 2023-10-21 13:46 | 只看该作者
xiaoqizi 发表于 2023-10-21 13:11
哪些种类的中断是 不能被打断的呢

应该是有些操作不能允许中断来打断

使用特权

评论回复
5
keaibukelian| | 2023-10-21 20:23 | 只看该作者
如果在中断执行过程中修改中断优先级会有什么后果呢

使用特权

评论回复
6
wowu| | 2023-10-21 21:00 | 只看该作者
这两条指令的作用是什么?是汇编语言的指令还是c语言的指令啊

使用特权

评论回复
7
paotangsan| | 2023-10-21 21:30 | 只看该作者
八层楼 发表于 2023-10-21 13:46
应该是有些操作不能允许中断来打断

坛友说的是不是类似于flash读写之类的操作啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

209

主题

1446

帖子

4

粉丝