一、先知先会
1、什么是中断?
CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生);
CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务);
待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程称为中断 。
形象一些,把这图“理解记住
2、什么是中断源?
引起CPU中断的根源,称为中断源。
解释:中断源向CPU提出的中断请求。CPU暂时中断原来的事务A,转去处理事件B。对事件B处理完毕后,再回到原来被中断的地方(即断点),称为中断返回。实现上述中断功能的部件称为中断系统。
3、中断源具有的优点
随着计算机技术的应用,人们发现中断技术不仅解决了快速主机与慢速I/O设备的数据传送问题,而且还具有如下优点:
分时操作。CPU可以分时为多个I/O设备服务,提高了计算机的利用率;
实时响应。CPU能够及时处理应用系统的随机事件,系统的实时性大大增强;
可靠性高。CPU具有处理设备故障及掉电等突发性事件能力,从而使系统可靠性提高。
4、51单片机的中断系统结构
请对照图来理解记忆(用外部中断0来举例子)
(P3.2)可由IT0(TCON.0)选择其为低电平有效还是下降沿有效。当CPU检测到P3.2引脚上出现有效的中断信号时,中断标志IE0(TCON.1)置1,向CPU申请中断。
TF0(TCON.5),单片机内定时/计数器T0溢出中断请求标志。当定时/计数器T0发生溢出时,TF0=1,并向CPU申请中断。
RI(SCON.0)或TI(SCON.1),串行口中断请求标志。当串行口接收完一帧串行数据时置位RI或当串行口发送完一帧串行数据时TI=1,向CPU申请中断。
二、中断允许控制位
CPU对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器IE控制的。
三、中断请求标志
1、TCON的中断标志位
2、中断优先级(中断源、中断号)
同一优先级中的中断申请不止一个时,则有中断优先权排队问题。同一优先级的中断优先权排队,由中断系统硬件确定的自然优先级形成,其排列如所示:
中断号
51单片机的中断优先级有三条原则:
为了实现上述后两条原则,**中断系统内部设有两个用户不能寻址的优先级状态触发器。**其中一个置1,表示正在响应高优先级的中断,它将阻断后来所有的中断请求;另一个置1,表示正在响应低优先级中断,它将阻断后来所有的低优先级中断请求。
四、中断响应条件(必须同时满足)
五、代码演示+讲解【独立按键控制小灯的状态(含中断优先级)】
1、全部代码
#include sbit K1=P3^3;//外部中断0,使用K1触发 sbit K2=P3^4;//外部中断1,使用K2触发 sbit LED1=P2^0; void Delay(unsigned int ms); void main() {/*外部中断1可以打断外部中断0(优先级)*/ EA=1;//开中断总开关 EX0=1;//开外部中断0开关 EX1=1;//开外部中断1开关 IT0=1;//外部中断0:下降沿触发 IT1=1;//外部中断1:下降沿触发 while(1) { LED1=0;//LED常亮 } } void Delay(unsigned int ms) //ms*1毫秒延时函数 { int msi,msj; for(msi=0;msi } void LED1Flash() interrupt 0 //外部中断0服务程序 { int i; for(i=0;i<10;i++) { LED1=1; Delay(300); LED1=0; Delay(300);//LED1闪烁10次 } } void LEDAllFlash() interrupt 2//外部中断1服务程序 { int j; for(j=0;j<3;j++) { P2=0x00; Delay(300); P2=0xFF; Delay(300);//LED全部闪烁3次 } } 2、细节讲解 a.Why按键不调用,能起作用? 此处定义了两个按键,但是代码中并没有显示调用,因为外部中断0和外部中断1与按键K3和K4的地址是一样的。此时中断1和中断0为相同优先级,相互不能打断。 如下所示: b.设置中断优先级(中断嵌套) 此时,外部中断1可以打断外部中断0。 c.设置下降沿触发的原因 因为开发板的IO初始化都是高电平,如果用低电平触发中断,两者会发生冲突。 d.中断嵌套注意:中断号的使用 中断号的选择正确与否,决定中断能否执行成功。 外部中断1 和 外部中断0具体例子 六、(总结)要弄清的problems 1、你想使用的中断是哪个?选择相应的中断号; 2、你所希望的触发条件是什么? 3、你希望在中断之后干什么?
上一篇:【单片机学习】51单片机【串口】,详细介绍
下一篇:【单片机】【学习日志】51单片机学习日志[Day4、2022.1.12]
推荐阅读最新更新时间:2024-11-17 10:14
设计资源 培训 开发板 精华推荐
- Super Dial 电机旋钮屏——内测中
- 使用 Semtech 的 SC2688 的参考设计
- DER-879 - 10W 隔离反激电源,使用 LinkSwitch-TNZ 无损生成交流过零信号和 X 电容放电
- AM6TW-2412DH35Z ±12V 6 瓦单路输出 DC-DC 转换器的典型应用
- RT300-MKV-PACK#4 电源前后面板以及电源板固定板
- BM1Q101FJ QR AC/DC转换器应用电路
- 基于rm6203,6222,6401的LED实用电源含pc版,原理图,资料及元件清单
- 16 位、333KSPS、1 通道便携式 DAC
- TAR5S47U 点稳压器(低压降稳压器)的典型应用
- 【训练营】刚会走路的小白