c51中断优先级c语言,51单片机中断优先级设置,中断优先级如何设置

Q1:请教高人C51单片机C语言中的中断优先级怎么设置?

C51中设置中断优先级,需要对中断寄存器IP进行配置。具体值需要根据用户需要的优先级顺序进行确定,具体的设置方法就是直接写如下C语言语句:

IP = 06H;// 如果5个中断同时发生,则响应次序为:定时器0 -> 外中断1 -> 外中断0 -> 定时器1 -> 串行中断

下面给出IP寄存器中每位(共8位)的含义:

PX0(IP.0),外部中断0优先级设定位;

PT0(IP.1),定时/计数器T0优先级设定位;

PX1(IP.2),外部中断0优先级设定位;

PT1(IP.3),定时/计数器T1优先级设定位;

PS(IP.4),串行口优先级设定位;

PT2 (IP.5), 定时/计数器T2优先级设定位(80C52的T2)

IP.6和IP.7无意义,均为0(在C51中PT2也设置为0)。

ps:IP默认值为00H,此时优先级顺序为:

外部中断0 > 定时/计数器0 > 外部中断1 > 定时/计数器1 > 串行中断

Q2:51单片机具体如何设置IP值改变优先级

设置不了。51单片机就只有二级中断优先级而已。

51单片机的中断可嵌套,但至多支持二级嵌套。

51单片机的默认(此时的IP寄存器不做设置)中断优先级为:

外部中断0 > 定时/计数器0 > 外部中断1 > 定时/计数器1 > 串行中断;

但这种优先级只是逻辑上的优先级,当同时有几种中断到达时,高优先级中断会先得到服务。这种优先级实际上是中断同时到达的情况下,谁先得到服务的优先级,而不是可提供中断嵌套能力的优先级。这种优先级被称为逻辑优先级。

例如:当计数器0中断和外部中断1(优先级 计数器0中断>外部中断1)同时到达时,会进入计时器0的中断服务函数;但是在外部中断1的中断服务函数正在服务的情况下,这时候任何中断都是打断不了它的,包括逻辑优先级比它高的外部中断0计数器0中断。

要实现真正的嵌套形式的优先级,也即高优先级中断服务可以打断低优先级中断服务的情况,必须通过设置中断优先级寄存器IP来实现;这种优先级被称为物理优先级。

例如:设置IP = 0x10,即设置串口中断为最高优先级,则串口中断可以打断任何其他的中断服务函数实现嵌套,且只有串口中断能打断其他中断的服务函数。若串口中断没有触发,则其他几个中断之间还是保持逻辑优先级,相互之间无法嵌套。

Q3:51单片机怎么设置外部中断和时钟中断的优先级?使得外部中断优先级大于时钟中断!

这个问题不难!51单片机中断源总共有5个,即2个外部中断、2个定时/计数器中断、1个串行口中断。

没有时钟中断,你说的时钟中断是指定时器中断吧。

中断优先级的设定主要是对中断优先级寄存器IP的设置,

其8位内容如下:XXPT2PSPT1PX1PT0PX0其中PX0为外部中断0的优先级设定位,

PX1为外部中断1的优先级设定位,PT0PT1为定时器的优先级设定位,

设置优先级设定位=1时,该优先级最高为高级中断。

设置优先级设定位=0时,该优先级最低为低级中断。

同一级别的中断内部优先级顺序是

外部中断0最高

定时器0

外部中断1、定时器2、串行口最低

最简单的方法是,将你用到的外部中断设为高级中断,其它的中断设为低级中断。

可以在程序中使用置1指令SETBPX0,将外部中断0设为高级中断。

WWW.Zd%yaN.CoM

Q4:请问51单片机的中断,是不是要设置了中断优先级,才会有中断嵌套?

同优先级,先到先处理,不同优先级,高优先级会打断低优先级优先处理

  • 11
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值