P21_中断概述

高抢占式优先级的中断可以打断低抢占式优先级的中断。 但是,抢占式优先级相同时,后来的中断只能在前一个中断处理完成后才被处理,不能打断。如果两个同时来临,先处理高响应优先级的中断。如果两个优先级都相同,则按中断向量表顺序决定先处理那一个。

也就是抢占式优先级>响应优先级>中断表中的排位顺序(其中“>”理解为比较的方向)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
stc12c5a60s2的P22和P21脚分别对应外部中断0和定时器0溢出中断。 下面是使用C语言编写的一个简单的例子,演示如何在STC12系列单片机中实现对外部中断0和定时器0溢出中断的响应。 ```c #include <stc12c5a60s2.h> void ext0_isr() interrupt 0 // 外部中断0的中断服务函数 { // 处理外部中断0的事件 } void timer0_isr() interrupt 1 // 定时器0的中断服务函数 { // 处理定时器0的事件 } void main() { // 配置P21和P22为输入模式 P2M1 &= ~(1 << 1); P2M0 &= ~(1 << 1); P2M1 &= ~(1 << 2); P2M0 &= ~(1 << 2); // 配置外部中断0的触发方式为下降沿触发 IT0 = 1; // 配置定时器0为模式1,使其每隔1ms产生一次中断 TMOD |= 0x01; // 定时器0初值为65536-1000=64536 TH0 = 0xFC; TL0 = 0x18; // 使能外部中断0和定时器0中断 EX0 = 1; ET0 = 1; // 全局中断使能 EA = 1; // 启动定时器0 TR0 = 1; while (1) { // 在主循环中执行其他任务 } } ``` 在上面的代码中,我们分别定义了`ext0_isr()`和`timer0_isr()`函数作为外部中断0和定时器0的中断服务函数,并通过`interrupt`关键字告诉编译器这是中断服务函数。在`main()`函数中,我们首先配置P21和P22为输入模式,然后配置外部中断0的触发方式为下降沿触发,并将定时器0配置为模式1,使其每隔1ms产生一次中断。接着,我们使能外部中断0和定时器0中断,并启用全局中断。最后,我们启动定时器0并进入了一个无限循环中,在这个循环中可以执行其他任务。当P22引脚的电平发生下降沿时,就会触发外部中断0并跳转到对应的中断服务函数中执行相应的事件处理;而当定时器0溢出时,就会触发定时器0中断并跳转到对应的中断服务函数中执行相应的事件处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值