51单片机——中断系统

一、中断的概念

中断是为使单片机具有对外部或内部随机发生的事件实时处理而设置的, 中断功能的存在,很大程度上提高了单片机处理外部或内部事件的能力。它也是 单片机最重要的功能之一,是我们学习单片机必须要掌握的。 我们先来举一个生活事例: 你打开火, 烧上一壶水。然后去洗衣服,在洗衣服的过程中,突然听到水壶发出水开的报警 声,这时,你停止洗衣服动作,立即去关掉火,然后将开水灌入暖水瓶中,灌完 开水后,你又回去继续洗衣服。这个过程中实际上就发生了一次中断。 对于单片机来讲,中断是指 CPU 在处理某一事件 A 时,发生了另一事件 B, 请求 CPU 迅速去处理(中断发生);CPU 暂时停止当前的工作(中断响应), 转去 处理事件 B(中断服务);待 CPU 将事件 B 处理完毕后,再回到原来事件 A 被 中断的地方继续处理事件 A(中断返回),这一过程称为中断。
 
0a785fcbf870437faf1276c18d216cec.jpeg

中断响应过程

中断系统:实现中断的硬件逻辑和实现中断功能的指令统称为中断系统。

中断源:引起中断的事件称为中断源,实现中断功能的处理程序称为中断服务程序。51单片机有5各中断源。如表所示:

51单片机的中断源
符号名称中断引原因中断信号
INT0外部中断0P3.2引脚低电平或下降沿信号0
T0定时器/计数器0中断定时/计数器0计数回0溢出1
INT1外部中断1P3.3引脚低电平或下降沿信号2
T1定时器/计数器1中断定时/计数器1计数回0溢出3
TI/RI串口中断串行端口完成一帧字符的发送/接受引起4

二、中断优先级和中断嵌套

当单片机正在执行主程序时,如果同时发生了几个中断请求,单片机会响应哪一个中断请求呢?如果单片机正在执行某个中断请求服务程序的过程中,又发生了另一个中断请求,单片机是立即响应还是不响应呢?这取决于单片机内部的一个特殊功能寄存器——中断优先级寄存器的设置情况。51单片机默认中断优先级如下图表所示:

51单片机中断源响应优先级
中断源中断标志中断服务程序入口优先级顺序
外部中断0(INT0)IE00003H
定时/计数器0(T0)TF0000BH 
外部中断1(INT1)IE10013H
定时/计数器1(T1)TF1001BH
串行口RI或TI0023H

所谓中断嵌套,就是如果单片机正在处理一个中断程序,又有另外一个级别高的中断请求发生,则单片机会停止当前的中断请求转而去执行级别较高的中断程序,执行完毕后再返回到刚才已经停止的中断点处继续执行,执行完毕后在返回到主程序的断点处继续执行。中断嵌套的流程图如下图所示:

946556df91674b758069dbeb3668189f.jpeg

中断嵌套流程图

三、应用中断需要设置的4个寄存器

1.中断允许寄存器IE

CPU对中断源是开放或屏蔽,由片内的中断允许寄存器IE控制。IE在特殊功能寄存器中,字节地址为A8H,位从低到高分别为A8H~AFH,该寄存器可以进行位寻址。单片机复位时IE的各个位全部被清0。

e321a0ab472549c8893bcd976cdb7c10.png

中断允许寄存器IE各位的意义
位序号位符号位地址位符号的意义

  D7

EA=1AFHEA=0时,屏蔽所有的中断请求,EA=1时,CPU开放中断,但5个中断源还要由IE的第5位对各个控制位的状态进行中断允许控制。
D6-

     -

 
D5 - - 
D4ESACH串口中断允许位。当ES=1时,开启中断,当ES=0时,关闭中断
D3ET1ABH定时/计数器1中断允许位。ET1=1时,开启中断,ET1=0时,关闭中断。
D2EX1AAH外部中断1的中断允许位。当EX1=1时,开启外部中断1;EX1=0时关闭外部中断1
D1ET0A9H定时/计数器0中断允许位。ET1=1时,开启中断,ET1=0时,关闭中断。
D0EX0A8H外部中断0的中断允许位。当EX1=1时,开启外部中断0;EX1=0时关闭外部中断0

2.中断控制寄存器TCON

TCON在特殊寄存器中,字节地址为88H,位地址从低到高为88H~8FH,可以进行位寻址。该寄存器用于控制定时器/计数器的开始、停止、标志定时器/计数器的溢出和中断情况,还可以对外部中断进行设置。单片机复位时TCON全部清0。

e70165448dbb455c90c44ed3fbf8bc35.png

TCON各位的意义
位序号位符号位地址位符号的意义
D7TF18FH定时器T1中断请求标志位。当定时器1计满溢出时,由硬件自动将此位置1,进入中断服务程序后由硬件自动清0。
D6TR18EH定时器1的运行控制位。当TMOD高4位中的GATE=1时,编程时将此位置1,且INT1=1时,才能启动T1。当TMOD高4位中的GATE=0时,编程时将该位置1,启动T1,置0时关闭T1
D5TF08DH定时器T0的中断请求标志位。操作方法同TF1
D4TR08CH定时器0的运行控制位。操作方法同TR1
D3IE18BH外部中断1的请求位。有中断请求置1,没有或中断程序执行完毕硬件自动清0
D2IT18AH

外部中断1触发方式选择位。当IT1=0时,为电平触发方式,即每个机器周期的S5P2采样INT1脚(即P3.3脚),若为低电平,则产生中断请求,IE1由硬件置1,否则IE1置0;

当IT1=1时,为下降沿触发方式,即在单片机采样INT1脚(即P3.3脚)的电平由高变低时,产生中断请求,IE1=1,否则IE1清0

D1IE089H外部中断0请求标志位,操作方法同IE1
D0IT088H

外部中断0的触发方式选择位,操作方法同IT1

3.定时器/计数器工作方式寄存器TMOD

TMOD在单片机内部的特殊功能寄存器中,字节地址为89H,不能位寻址(即编程时不能单独操作各个位,只能采取字节操作)。该寄存器用来设定定时器的工作方式及功能选择。

定时器/计数器工作方式寄存器TMOD各位的意义
 位序号位符号位符号的意义
高4位用于设置T1D7GATE门控制位。若GATE=0,则只要在编程时将TCON中的TR0或TR1的值置1,就可以启动T0/T1;若GATE=1,则需要将TR0或TR1置为1,同时还需要将外部中断引脚(INT0或INT1)也置为高电平,才能启动定时器/计数器T0/T1
D6C/〒定时器/计数器模式选择位。当C位1时,为计数模式,为0时,为定时模式
D5M1

工作方式选择位。T0和T1都有三种工作方式:

M1=0且M0=0,为方式0,即13定时器/计数器

M1=0且M0=1,为方式1,即16定时器/计数器

M1=1且M0=0,为方式2,即8位初始值自动重装的8定时器/计数器

D4M0
低4位用于设置T0D3GATE同高四位
D2C/〒同高四位
D1M1

工作方式选择位。T0和T1都有4种工作方式:

M1=0且M0=0,为方式0,即13定时器/计数器

M1=0且M0=1,为方式1,即16定时器/计数器

M1=1且M0=0,为方式2,即8位初始值自动重装的8定时器/计数器

M1=1且M0=1,为方式3,仅适用于T0,分成俩个8位计数器,T1停止

D0M0

4.中断优先级寄存器IP

中断优先级寄存器IP在特殊功能寄存器中,字节地址为B8H,位地址从低位到高位分别为B8H~BFH,该寄存器可以进行位寻址。IP用于设定各个中断源属于两级中断中的哪一级。一般情况下采用默认设置。

中断优先级寄存器IP各位的意义
位序号位符号位地址位符号意义
D7-AFH 
D6-- 
D5-- 
D4PSBCH串口的中断优先级控制位。PS=1时,串口定义为高级中断;PS=0时,为低级中断
D3PT1BBH定时器/计数器1中断优先级控制位。1高,0低
D2PX1BAH外部中断1优先级控制位。1高,0低
D1PT0B9H定时器/计数器0中断优先级控制位。1高,0低
D0PX0B8H外部中断0优先级控制位。1高,0低

四、定时器T0和T1的工作方式1

1.时钟周期

时钟周期就是时钟频率的倒数。

2.机器周期

机器周期为单片机的基本操作周期,在一个基本操作周期内单片机可完成一个基本的操作(如存储器的读写、取指令等)。机器周期为时钟周期的12倍。

3.指令周期

指令周期指CPU执行一条指令所需的时间,一般一个指令周期为1~4个机器周期。

4.定时器的工作方式1工作详解

工作方式1的计数位是16位。以T0为例进行说明(T0和T1的工作方式1是一样的)。T0由两个寄存器TL0和TH0构成,TL0为低8位,TH0为高8位。

启动T0后,TL便在机器周期的作用下从0000 0000开始计数(计数依次为:0000 0001-0000 0010-0000 0011-....)当TL0记满也就到1111 1111(即十进制255)时,再计1个数计到256,此时TL0清0,同时向TH0进一位;当TH0也计满(此时TH0、TL0内数到1111 1111,即65535),再计1个数就溢出,产生中断请求,进入中断服务处理程序,同时TF0(中断标志位)由硬件自动置1。

可以看出,TH0中每增加一“1”,就相当于计了256个数。这是再方式1给定时器装初始值时,TH0中装入的初始值对256取模、TL0中装入的初值对256取余的原因。

中断系统的使用https://mp.csdn.net/mp_blog/creation/editor/136484016

 

 

  • 33
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值