高金鹏:男,银川科技学院计算机与人工智能学院,2022级别计算机科学与技术本科生,单片机原理及应用课程第六组。
指导教师:王兴泽
电子邮件:高金鹏3535558665@qq.com
个人CSDN:暴躁的海绵宝宝 暴躁的海绵宝宝-CSDN博客
单片机作为计算机科学与技术中的最重要的学科之一,csdn是有着极大的流量和专业人才的网站,故借此平台提高我的博客写作能力,并且提高对单片机原理和应用的了解更好的掌握这门学科。
本篇文章是参考《单片机原理及应用(c语言版)第2版》杨居易·编著编写的笔记
由海鹏、赵若晨、徐丽钧、开海洋共同完成此篇文章,其中海鹏负责定时控制寄存器,徐丽钧负责串行口控制寄存器的内容,赵若晨负责中断优先级寄存器Ip,开海洋负责C51外部中断扩展,高金鹏负责总结核对校验文档编写最后确认
模块五:单片机中断系统原理
项目21:中断控制器与项目实践
TCON寄存器的结构
TCON寄存器的主要作用是控制定时器/计数器的启动、停止,以及管理外部中断,并标志定时器的溢出和中断情况。通过TCON寄存器,可以实现对定时器/计数器的精确控制,以及对外部事件的及时响应。
TCON寄存器通常是一个8位寄存器,每个位都有特定的功能。以下是一些常见的TCON寄存器位字段及其功能:
- TF1(TCON.7):定时器1溢出标志位。当定时器1计数溢出时,TF1位被硬件自动置1,软件需要手动清除该标志位。
- TR1(TCON.6):定时器1运行控制位。用于控制定时器1的启动和停止。当TR1=1时,定时器1运行;当TR1=0时,定时器1停止。
- TF0(TCON.5):定时器0溢出标志位。当定时器0计数溢出时,TF0位被硬件自动置1,软件需要手动清除该标志位。
- TR0(TCON.4):定时器0运行控制位。用于控制定时器0的启动和停止。当TR0=1时,定时器0运行;当TR0=0时,定时器0停止。
- IE1(TCON.3):外部中断1边沿检测标志位。当外部中断1(INT1)检测到边沿变化时,IE1位被置1,软件需要手动清除该标志位。
- IT1(TCON.2):外部中断1类型控制位。用于控制外部中断1的触发方式。当IT1=1时,INT1为边沿触发;当IT1=0时,INT1为电平触发。
- IE0(TCON.1):外部中断0边沿检测标志位。当外部中断0(INT0)检测到边沿变化时,IE0位被置1,软件需要手动清除该标志位。
- IT0(TCON.0):外部中断0类型控制位。用于控制外部中断0的触发方式。当IT0=1时,INT0为边沿触发;当IT0=0时,INT0为电平触发。
串行口控寄存器SCON
- 串行数据发送:通过设置SCON寄存器中的相关位(如SM0、SM1、TB8等),并写入数据到发送缓冲器(如SBUF),可以启动串行数据的发送过程。发送完成后,TI位被置位,可以触发中断或查询该位来处理发送完成事件。
- 串行数据接收:通过设置SCON寄存器中的REN位为1,允许串行口接收数据。当接收到数据时,RI位被置位,可以触发中断或查询该位来处理接收完成事件。在接收过程中,还可以根据SM2和RB8的状态来决定是否接收数据并置位RI位。
- 多机通信:在方式2和方式3中,SCON寄存器支持多机通信。通过设置SM2位和TB8位,可以实现地址帧和数据帧的区分和接收。
中断允许寄存器IE
- 整体赋值 :可以通过对IE寄存器进行整体赋值来同时设置多个中断允许位。例如,
IE=0x81;
表示开启全局中断(EA=1)并允许外部中断0(EX0=1)。 - 单独赋值 :也可以单独对IE寄存器中的某个位进行赋值,以允许或禁止特定的中断源。例如,
EA=1;
表示开启全局中断,EX0=1;
表示允许外部中断0。
位序号 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
---|---|---|---|---|---|---|---|---|
说明 | EA(全局中断位) | -(无效位) | ET2(定时/计数2中断允许位,8052用) | ES(串行口中断允许位) | ET1(定时/计数1中断允许位) | EX1(外部中断1允许位) | ET0(定时/计数0中断允许位) | EX0(外部中断0允许位) |
位符号 | EA | - | ET2 | ES | ET1 | EX1 | ET0 | EX0 |
位地址 | AFH | - | AEH | ACH | ABH | AAH | A9H | A8H |
中断优先级寄存器IP
- 设置优先级:通过对IP寄存器中的相应位进行赋值,可以设置各个中断源的优先级。例如,在8051单片机中,可以通过将PX0设置为1来将外部中断0的优先级设置为高优先级。
- 组合使用:IP寄存器通常与IE寄存器组合使用。IE寄存器用于允许或禁止中断源,而IP寄存器用于设置中断源的优先级。当某个中断源被允许(IE寄存器中对应位为1)且其优先级较高时,CPU将优先处理该中断源的中断请求。
- 注意事项:在修改IP寄存器时,需要谨慎操作以避免意外地改变中断源的优先级顺序或导致系统不稳定。同时,不同的单片机型号可能有不同的IP寄存器结构和功能,因此在使用时需要查阅具体单片机的手册或文档。
位序号 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
---|---|---|---|---|---|---|---|---|
说明 | -(无效位或保留位) | PT2(定时/计数2中断优先级位,8052用) | PS(串口中断优先级位) | PT1(定时/计数1中断优先级位) | PX1(外部中断1优先级位) | -(无效位或保留位) | PT0(定时/计数0中断优先级位) | PX0(外部中断0优先级位) |
位符号 | - | PT2 | PS | PT1 | PX1 | - | PT0 | PX0 |
位地址 | (根据具体单片机型号而定) |
中断源的自然优先级,中断入口地址及中断编号
中断源 | 自然优先级 | 中断入口地址 | C51编译器对中断的编号 |
---|---|---|---|
串口通信中断RI或TI | 高 到 低 | 0023H | 0 |
定时器1溢出中断 | 高 到 低 | 001BH | 1 |
外部中断 | 高 到 低 | 0013H(注:可能表示某个特定的外部中断,但具体编号需根据上下文确定) | 2 |
定时器0溢出中断 | 高 到 低 | 000BH | 3 |
外部中断0 | 高 到 低 | 0003H | 4 |
中断处理过程
- 中断响应:当CPU检测到有效的中断请求信号,并且系统处于允许中断的状态时,CPU会暂停当前指令的执行,并准备进入中断处理过程。
- 保存现场:在中断响应后,CPU会自动将当前程序的执行状态(包括程序计数器PC、状态寄存器和其他重要寄存器的值)保存到堆栈或特定的内存区域中。这一过程称为保存现场,以确保中断处理完成后能够准确地恢复到被中断的程序中继续执行。
- 中断向量号与中断处理程序:CPU会根据中断请求信号确定中断向量号,这是一个唯一的标识符,用于标识不同的中断事件和对应的中断处理程序。然后,CPU会跳转到与该中断向量号相对应的中断处理程序入口点开始执行。
- 执行中断处理程序:中断处理程序是预先定义好的一段程序,用于处理特定的中断事件。它会根据中断事件的具体类型执行相应的操作,如读取外部设备的数据、更新内部定时器的值等。中断处理程序可能包含多个子程序或中断服务例程,这些子程序专门用于执行特定的中断处理任务。
- 恢复现场:当中断处理程序执行完成后,CPU会从堆栈或特定的内存区域中弹出之前保存的程序执行状态和寄存器值,以恢复被中断的程序的执行环境。这一过程称为恢复现场。
- 中断返回:恢复现场后,CPU会返回到被中断的程序中继续执行。此时,程序会从中断点开始继续执行,直到遇到下一个中断事件或程序结束为止。
外部中断扩展
-
使用硬件扩展电路:
- 通过硬件电路(如二极管、逻辑门电路等)将多个外部中断源连接到单片机或微控制器的有限外部中断引脚上。
- 例如,可以使用二极管将多个外部中断源并联到同一个外部中断引脚上,并通过软件查询来确定是哪个外部中断源触发了中断。
-
使用定时器/计数器作为外部中断:
- 单片机的定时器/计数器本质上是一个加一计数器,当计数输入端有一个"1-0"的负跳变时,计数器加一。
- 可以将外部中断源输入到定时器/计数器的输入端,当外部中断源触发时,定时器/计数器会产生一个溢出中断,从而实现对外部中断的扩展。
-
使用专用中断扩展芯片:
- 专用中断扩展芯片(如8259A)具有多个中断请求输入端,可以接收多个外部中断源的请求。
- 通过编程设置,可以将这些中断请求映射到单片机或微控制器的中断向量表上,从而实现对外部中断的扩展。
中断系统的初始化
中断初始化:
使用中断前,必须打开中断。
EA=1; //打开总中断,必备。
ET0=1; //根据中断源打开相应的中断允许位,必备。
TR0=1; //如果使用定时器,则记得打开定时器
EX0=1; //如果检测外部中断,则记得选择中断触发方式
中断初始化:
使用中断前,必须打开中断。
EA=1; //打开总中断,必备。
ET0=1; //根据中断源打开相应的中断允许位,必备。
TR0=1; //如果使用定时器,则记得打开定时器
EX0=1; //如果检测外部中断,则记得选择中断触发方式
总结
中断控制器在项目实践中发挥着至关重要的作用,它确保了系统对外部事件的快速响应和高效处理。通过合理配置和管理中断控制器,可以实现对系统资源的合理分配和高效利用,提高系统的整体性能和稳定性。同时,在项目实践中也需要关注中断信号冲突、中断处理程序编写与调试以及硬件兼容性与软件适配等挑战,并采取相应的解决方案来应对这些挑战。