找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 12938|回复: 5
打印 上一主题 下一主题
收起左侧

51单片机中断优先级详解

[复制链接]
跳转到指定楼层
楼主
相信不少和我一样的新手也有过对51单片机的中断优先级有过迷惑,之前我在自己的博客上做过简单的整理,现在搬运过来,希望能给和我一样的新手一个看得懂的解释。

51单片机有两种优先级——查询优先级&&执行优先级。

查询优先级:
查询优先级是指当51单片机的多个中断源同时引起中断时,CPU逐个查询中断标志位的次序,高优先级的中断标志位将被优先查询到,但并不代表查询优先级高的中断一定可以打断正在执行中断处理的低优先级中断。查询优先级由单片机硬件决定,不可更改,可在相应的数据手册中得知,如下:
(不熟悉本论坛的排版,图片可能会在文章末尾显示,请见谅)
举个栗子:
1、当定时器中断0和外部中断1同时引起时(没有设置中断优先级控制寄存器),则会首先执行定时器中断0的请求;
2、当定时器中断0和外部中断1同时引起且外部中断1正在执行请求时(没有设置中断优先级控制寄存器),外部中断1不能被任何中断(包括定时器中断0)所打断。


执行优先级:
执行优先级由中断优先级控制寄存器IP来控制。
(不熟悉本论坛的排版,图片可能会在文章末尾显示,请见谅)
寄存器IP设置如下:
高两位置0
PT2:定时器中断2优先级控制位
PS:串口中断优先级控制位
PT1:定时器中断1优先级控制位
PX1:外部中断1优先级控制位
PT0:定时器中断0优先级控制位
PX0:外部中断0优先级控制位

如果只设置IP,执行优先级则只有两级——高优先级(IP中的相应位置1)和低优先级(IP中的相应位置0)。若寄存器IP没有设置(即寄存器IP所有位全为0),则只按照查询优先级进行。
当多个中断源同时引起中断时,优先响应执行优先级高的中断;
同一执行优先级的中断则根据查询优先级依次响应;
一个正在执行的低优先级中断能被高优先级中断所打断,反之则不能;
一个正在执行的中断不能被新的同优先级中断所打断。

举个栗子:
当IP中的PX1位和PT0位置1,其余位置0时,中断的响应次序依次为:

定时器中断0 → 外部中断1 → 外部中断0 → 定时器中断1 → 串口中断 → 定时器中断2

中断优先级控制寄存器.png (12.84 KB, 下载次数: 123)

中断优先级控制寄存器

中断优先级控制寄存器

中断查询次序.png (87.15 KB, 下载次数: 113)

查询优先级,截取自STC89C52数据手册

查询优先级,截取自STC89C52数据手册

评分

参与人数 1黑币 +100 收起 理由
admin + 100 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:889094 发表于 2021-5-18 23:38 来自手机 | 只看该作者
有心了,其实芯片不同大体中断优先级是相同的,具体每个芯片都有手册,stc都有中文手册,用前查一查,或者直接打印放手边,查得次数多了就记住了
回复

使用道具 举报

板凳
ID:47286 发表于 2021-5-19 00:10 | 只看该作者
搭车问个问题 当高优先级中断执行中 低优先级中断产生 那么后产生的中断请求是挂起还是丢弃
回复

使用道具 举报

地板
ID:711539 发表于 2021-5-19 08:26 | 只看该作者
dzbj 发表于 2021-5-19 00:10
搭车问个问题 当高优先级中断执行中 低优先级中断产生 那么后产生的中断请求是挂起还是丢弃

挂起。等待高优先级的中断处理完再处理低优先级的中断
回复

使用道具 举报

5#
ID:47286 发表于 2021-5-19 13:10 | 只看该作者
菜鸟yc 发表于 2021-5-19 08:26
挂起。等待高优先级的中断处理完再处理低优先级的中断

感谢回复
回复

使用道具 举报

6#
ID:825513 发表于 2021-5-20 00:06 | 只看该作者
birdzhyli 发表于 2021-5-18 23:38
有心了,其实芯片不同大体中断优先级是相同的,具体每个芯片都有手册,stc都有中文手册,用前查一查,或者 ...

确实,有些东西不需要刻意去记住,多用几次就熟了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表