找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

51单片机中断优先级问题

查看数: 2126 | 评论数: 8 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2023-11-9 19:26

正文摘要:

我现在的想法是,    1、同为低优先级或者高优先级时,遵循 外部中断0->定时器/计数器T0->外部中断1->定时器/计数器T1->串口中断(优先级由高到低),的自然优先级,那么在同级优先级(同为高优先 ...

回复

ID:1091094 发表于 2023-11-18 11:35
鹈鹕 发表于 2023-11-10 16:44
你【现在的想法】是不对的,你的【实验现象】是对的,这个实验现象就是51系列单片机的中断规则,而不是你【 ...

你说的这个,我好像也碰到过这种情况:
前几天看到一哥们贴出了他的一个程序,是个电子表程序(作者声称非常精确)里面就有这类错误,他的中断程序中有JMP类指令,目标地址下面肯定会碰到RET指令,这就不对了,之后的同级中断肯定永远也不会被执行的。
、、、、、、、、、、、、、、、、
不过你说的JMP类指令  和RET指令是什么啊?

、、、、、、、、、、、、、、
我碰到的情况是定时器中断,而且时间很快,然后外部中断就不起作用了,就是无论等多久都不会执行外部中断的服务程序。   后来设置了中断的优先级后就可以了。
ID:879348 发表于 2023-11-16 10:50
不存在打断的问题,最多就是竞争,同时标记中断,谁先谁后的问题
ID:401564 发表于 2023-11-15 22:56
中断优先级和查询顺序是两个不同的东西,在STC的单片机数据手册中有描述的,认真看一下就能理解了
ID:1097455 发表于 2023-11-15 08:41
高中断可以把低中断打断,结束高中断在执行较低中端
ID:647261 发表于 2023-11-14 16:44
所谓的“自然优先级”其实只是查询顺序,不存在高低之分
优先级只有两级——高优先级和低优先级
同级优先级的中断,进入了一个中断,就不能被其他中断打断
低优先级的中断执行中,可以被高优先级的中断打断
ID:624769 发表于 2023-11-11 16:55
纠正你一个理解错误, 同为低优先级,或者同为高优先级, 外部中断0 是不能打断 外部中断1的。
所谓的自然优先级,是STC的说法,正确的说法应当是,中断检索顺序,即:当发生了中断,单片机先看外部中断0是不是有中断请求,有则执行,没有的话则看看定时器中断0有没有中断请求,以此类推。只有多个中断都排队等待执行时,这个“自然优先级”才有意义。并不是说你在执行同等级中断时能被“自然优先级”高于你的中断打断。
ID:397054 发表于 2023-11-10 16:44
你【现在的想法】是不对的,你的【实验现象】是对的,这个实验现象就是51系列单片机的中断规则,而不是你【现在的想法】,即:“1、,,,,那么在同级优先级,,,低优先级可以被高优先级打断;”——是不对的,不能被打断,这是明确的,没有异议,你的试验也证明了这点。

我有一本书,这一内容说的很明了:51系列单片机的6个中断源(51子系列只有5个,没有定时计数器2)只分为两个优先级,由用户自由分配,低优先级可以被高优先级中断,反之不能,同级中断也不能互相中断;你所说的“自然优先级”那不是《优先级》,而是指在同时申请中断时被CPU响应的次序,当CPU正在执行中断程序时如果有同级别的中断申请,CPU不会立即响应要等处理完之后才会,这就是IRET指令的必要性,这个指令不同于RET。前几天看到一哥们贴出了他的一个程序,是个电子表程序(作者声称非常精确)里面就有这类错误,他的中断程序中有JMP类指令,目标地址下面肯定会碰到RET指令,这就不对了,之后的同级中断肯定永远也不会被执行的。所以你的原来的【现在的想法】是不对的,应该按照你的【实验现象】去做,那才是正确的规则。
ID:123289 发表于 2023-11-10 15:39
无法判断出你所讲的【A打断B】或【A不能打断B】的真伪。
比如:你说【A打断B】了,是凭什么认定的?
提供一下你认定的【打断、未打断】判定方法、思路。比如,在中断服务程序中亮不同色的灯……。
亦或给出中断程序。
所以,无法与你讨论。

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

Powered by 单片机教程网

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