MCS-51单片机的中断系统(原理+案例,汇编+c语言)

第4章MCS-51单片机的中断系统


这个是我的单片机作业,我想既然都整理了,那就发出来和各路高手大侠一同讨论学习,也供大家参考。

4.1 中断的基本概念

中断存在的意义:保证cpu与外设间的同步通信。通过中断机制, 单片机可以及时响应外部请求,如按键输入、引脚电平变化等; 可用于处理实时任务, 比如实时控制系统中的传感器数据采集和实时反馈等。

  • 中断技术的优点
    1. 提高CPU效率
    2. 提高实时数据的处理时效
    3. 故障处理

4.1.1 中断定义

  • 中断

CPU在执行当前程序的过程中,遇到了某种内部或外部随机事件或特殊情况暂停当前执行的任务,转而执行对随机事件或特殊情况进行处理的程序,处理完毕后,CPU再返回暂停处继续执行原程序,这一过程称为中断。

在这里插入图片描述

  • 中断和子程序调用的区别
中断 子程序调用
发生位置 发生位置随机 由主程序决定
发生时间 发生时间随机 由主程序决定
和主程序的关系 没有直接管理 完成主程序要求的功能
  • 中断源

中断源是指引起中断的原因或产生中断请求的设备。中断源包含软件中断源和硬件中断源。计算机中断处理的复杂性就体现在中断源的多样性上。

4.1.2 中断应用

  1. 故障处理
  2. 实时处理
  3. 实现主机与外设的并行工作
  4. 人机交互

4.1.3 中断优先级

中断优先级是指在多个中断请求同时到达时,确定哪个中断先被处理的优先级顺序。

当一个中断正在处理时, 另一个更高优先级的中断请求到达, 导致当前正在执行的中断被中断打断。高优先级可以打断低优先级的执行,低优先级中嵌套高优先级多个断点。

在这里插入图片描述

4.1.4 中断分类

  1. 可屏蔽中断和不可屏蔽中断

    按照中断请求是否能被屏蔽,可将中断源分为两大类:可屏蔽中断 (Interrupt Require,INTR) 和不可屏蔽中断(Nonmaskable Interrupt,NMI)。

  2. 硬件中断和软件中断

    硬件中断是通过中断输入信号来请求CPU执行任务,软件中断是CPU通过特殊指令进行特殊任务处理的一个中断过程,不需要由外部信号线触发。

  3. 外部中断和内部中断

    根据硬件中断信号来源可分为外部中断和内部中断两类。外部中断一般是指由单片机或计算机外设发出的中断请求。内部中断是指因CPU硬件出错(如突然掉电、复位、奇偶校验错等)或运算出错(除数为零、运算溢出、单步中断等)所引起的中断。

4.1.5 中断处理过程

  • 中断源向CPU发出中断请求;

  • CPU接收到请求信号并在一定条件下暂停执行原来程序而转去执行中断服务子程序;

  • 处理完毕再返回原来程序继续执行。

中断流程

  1. 中断请求
  2. 中断响应
  3. 中断服务

其中中断服务流程图如下:

在这里插入图片描述

4.2 MCS-51单片机中断的概念与结构

  • 特殊功能寄存器

MCS-51单片机(8051系列)的中断系统由4个与中断有关的特殊功能寄存器组成。分别是:

  1. 定时/计数器控制寄存器 TCON

  2. 串口控制寄存器 SCON

  3. 中断允许控制寄存器 IE

  4. 中断优先级寄存器 IP

  • 中断源

5个中断源,具有二个中断优先级,可实现二级中断服务程序的嵌套。每个中断源均可软件编程为高优先级或低优先级中断,允许或禁止向CPU请求中断。

  1. INT0 外部中断0:中断请求型号由于 P3.2 端口先引入低电平或下降沿引起。

  2. INT1 外部中断1:中断请求型号由于 P3.3 端口先引入低电平或下降沿引起。

  3. T0 : 定时/计数器0溢出中断,对外部脉冲计数由 P3.4输入,由T0计满回零引起。

  4. T1 : 定时/计数器1溢出中断,对外部脉冲计数由 P3.5输入,由T1计满回零引起。

  5. 串行中断:包括串行接受中断RI和串行发送中断TI

    发送中断TI和接收中断RI逻辑或后,做为内部的一个中断源。响应串行口中断后,CPU并不清零中断标志位,必须软件清零。(SCON第两位)

在这里插入图片描述

外部中断源 INT0INT1

中断标志和触发方式控制位在TCON的低四位。

在这里插入图片描述

字节 取值 表示意义
IE0(IE1) 0 无中断
IE0(IE1) 1 正在向CPU申请中断,响应后由硬件自动清零。
IT0(IT1) 0 电平(低电平)触发
IT0(IT1) 1 边沿(下跳沿)触发

【例】通过 INTERRUPT 触发一个外部中断

            ORG 0H; 	设置程序起始地址
            MOV P1, 	#0FFH; 设置P1口为输入模式
            SETB IT0; 	将 IT0 置位,选择边沿触发方式
            SETB EX0; 	打开外部中断 0 允许
            SETB EA; 	打开总控中断允许
MAIN:   	SJMP MAIN; 	主程序循环
INTERRUPT:  PUSH ACC; 	保存现场
			PUSH PSW;	在此处开始编写中断处理代码
			
			POP PSW;	恢复现场
			POP ACC; 	 
			RETI;		返回中断
END

中断允许寄存器 IE 的设置

在这里插入图片描述

  1. EA (IE.7):CPU中断允许(总允许)位。EA=0,所有中断关闭;EA=1,CPU打开中断。
  2. ES(IE.4):串行口中断允许位。ES=1,允许串口中断,否则关闭串口中断。
  3. ET1(IE.3):定时/计数器T1中断允许位。ET1=1,允许T1中断,否则关闭T1中断。
  4. EX1(IE.2):外部中断1允许位。EX1=1,允许外部中断1中断,否则关闭外部中断1。
  5. ET0(IE.1):定时/计数器T0中断允许位。其功能与ET1相同。
  6. EX0(IE.0):外部中断0允许位。其功能与EX1相同。

优先级寄存器 IP 的设置</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值