目录

1 什么是中断

2 中断的基本概念

2.1 中断源

2.2 中断的优先级别

3 中断的处理过程

4 中断系统的结构

4.1 中断系统的组成

4.2 中断系统的工作原理

5 中断源寄存器

5.1 定时器/计数器控制寄存器TCON

5.2 串行通信口控制寄存器SCON

6 中断允许寄存器IE

7 中断优先级控制寄存器IP


1 什么是中断

在生活中经常会遇到这样的情况:正在书房看书时,突然客厅的电话响了,人们往往会停止看书,转而去接电话,接完电话后又回书房接着看书。这种停止当前工作,转而去做其他工作,做完后又返回来做先前工作的现象称为中断。

单片机也有类似的中断现象,当单片机正在执行某程序时,如果突然出现意外情况,它就需要停止当前正在执行的程序,转而去执行处理意外情况的程序(又称中断子程序),执行处理完后又接着执行原来的程序。

2 中断的基本概念

2.1 中断源

要让单片机的CPU中断当前正在执行的程序转而去执行中断子程序,需要向CPU发出中断请求信号。让CPU产生中断的信号源称为中断源(又称中断请求源)。

8051单片机有5个中断源,分别是2个外部中断源、2个定时器/计数器中断源和1个串行通信口中断源。如果这些中断源向 CPU 发出中断请求信号,CPU 就会产生中断,停止执行当前的程序,转而去执行相应的中断子程序(又称中断服务程序),执行完后又返回来执行原来的程序。

2.2 中断的优先级别

单片机的CPU在工作时,如果一个中断源向它发出中断请求信号,它就会产生中断,如果同时有两个或两个以上的中断源同时发出中断请求信号,CPU会怎么办呢?CPU会先响应优先级别高的中断源的请求,然后再响应优先级别低的中断源的请求。8051单片机5个中断源的优先级别顺序见表1。

表1 5个中断源的优先级别顺序及中断入口地址

3 中断的处理过程

在前而的例子中,当正在看书时,电话铃响了,这里的电话就是中断源,它发出的铃声就是中断请求信号。在处理这个中断时,可采取这样的做法:记住书中刚看完的页码(记住某行可能比较困难),然后再去客厅接电话,接完电话后,返回到书房阅读已看完页码的下一页内容。单片机处理中断的过程与上述情况类似,具体过程如下:

① 响应中断请求。当CPU正在执行主程序时,如果接收到中断源发出的中断请求信号,就会响应中断请求,停止主程序,准备执行相应的中断子程序。

② 保护断点。为了在执行完中断子程序后能返回主程序,在准备执行中断子程序前,CPU会将主程序中已执行的最后一条指令的下一条指令的地址(又称断点地址)保存到RAM的堆栈中。

③ 寻找中断入口地址。保护好断点后,CPU开始寻找中断入口地址(又称矢量地址),中断入口地址存放着相应的中断子程序,不同的中断源对应着不同的中断入口地址。8051单片机5个中断源对应的中断入口地址,见表7-1。

④ 执行中断子程序。CPU 寻找到中断入口地址后,就开始执行中断入口地址处的中断子程序。由于几个中断入口地址之间只有8个单元空间(见表7-1,如0003H~000BH相隔8个单元),较小的中断子程序(程序只有一两条指令)可以写在这里,较大的中断子程序无法写入,通常的做法是将中断子程序写在其他位置,而在中断入口地址单元只写一条跳转指令,执行该指令时马上跳转到写在其他位置的中断子程序。

⑤ 中断返回。执行完中断子程序后,就会返回到主程序,返回的方法是从RAM的堆栈中取出之前保存的断点地址,然后执行该地址处的主程序,从而返回到主程序。

4 中断系统的结构

8051单片机中断系统的结构如图1所示。

图1 8051单片机中断系统的结构

4.1 中断系统的组成

8051单片机中断系统的主要组成部分有:

① 5个中断源。分别为外部中断源、外部中断源、定时器/计数器中断源T0、定时器/计数器中断源T1和串行通信口中断源(TX和RX)。

② 中断源寄存器。分定时器/计数器控制寄存器TCON和串行通信口控制寄存器SCON。

③ 中断允许寄存器IE。

④ 中断优先级控制寄存器IP。

4.2 中断系统的工作原理

单片机的中断系统默认是关闭的,如果要使用某个中断,需要通过编程的方法设置有关控制寄存器某些位的值将该中断打开,并为该中断编写相应的中断子程序。

以外部中断为例,如果需要使用该中断,应进行以下设置:

① 将定时器/计数器控制寄存器TCON的IT0位设为0(IT0=0),中断请求信号输入方式被设为低电平输入有效。

② 将中断允许寄存器IE的EA位设为1(EA=1),允许所有的中断(总中断允许)。

③ 将中断允许寄存器IE的EX0位设为1(EX0=1),允许外部中断源的中断。

工作过程:当单片机的端(P3.2引脚)输入一个低电平信号时,由于寄存器TCON的IT0=0,输入开关选择位置0,低电平信号被认为是的中断请求信号,该信号将TCON的外部中断0的标志位IE0置1(IE0=1),IE0位的“1”先经过允许开关(IE的EX0=1使开关闭合),然后经过中断总开关(IE的EA=1使中断总开关闭合),再经过优先级开关(只使用一个中断时无须设置,寄存器IP的PX0位默认为0,开关选择位置0),进入硬件查询,选中外部中断0的入口地址(0003H)并将其送给CPU的程序计数器PC,CPU开始执行该处的中断子程序。

5 中断源寄存器

中断源寄存器包括定时器/计数器控制寄存器TCON和串行通信口控制寄存器SCON。

5.1 定时器/计数器控制寄存器TCON

TCON寄存器的功能主要是接收外部中断源()和定时器/计数器(T0、T1)送来的中断请求信号。TCON的字节地址是88H,它有8位,每位均可直接访问(即可位寻址)。TCOM的字节地址、各位的位地址和名称如图2所示。

图7-2 定时器/计数器控制寄存器TCON的字节地址、各位的位地址和名称

TCON寄存器各位的功能说明:

① IE0位和IE1位:分别为外部中断0()和外部中断1()的中断请求标志位。当外部有中断请求信号输入单片机的引脚(即P3.2引脚)或引脚(即P3.3引脚)时,TCON的IE0和IE1位会被置“1”。

② IT0位和IT1位:分别为外部中断0和外部中断1的输入方式控制位。当IT0=0时,外部中断 0 端输入低电平有效(即端输入低电平时才表示输入了中断请求信号),当IT0=1时,外部中断0端输入下降沿有效。当IT1=0时,外部中断1端输入低电平有效,当IT1=1时,外部中断1端输入下降沿有效。

③ TF0位和 TF1位:分别是定时器/计数器0和定时器/计数器1的中断请求标志。当定时器/计数器工作产生溢出时,会将TF0或TF1位置“1”,表示定时器/计数器有中断请求。

④ TR0和TR1:分别是定时器/计数器0和定时器/计数器1的启动/停止位。在编写程序时,若将TR0或TR1设为“1”,那么相应的定时器/计数器开始工作;若设置为“0”,定时器/计数器则会停止工作。

注意:如果将IT0位设为1,则把IE0设为下降沿置“1”,中断子程序执行完后,IE0位自动变为“0”(硬件置“0”);如果将IT0位设为0,则把IE0设置为低电平置“1”,中断子程序执行完后,IE0位仍是“1”,所以在退出中断子程序前,要将[插图]端的低电平信号撤掉,再用指令将IE0置“0”(软件置“0”),若退出中断子程序后,IE0位仍为“1”,将会产生错误的再次中断。IT1、IE1位的情况与IT0、IE0位一样。在单片机复位时,TCON寄存器的各位均为“0”。

5.2 串行通信口控制寄存器SCON

SCON寄存器的功能主要是接收串行通信口发出的中断请求信号。SCON的字节地址是98H,它有8位,每位均可直接访问(即可位寻址),SCOM的字节地址、各位的位地址和名称如图3所示。

图3 SCON的字节地址、各位的位地址和名称

SCON寄存器的TI位和RI位与中断有关,其他位用作串行通信控制。

① TI 位:串行通信口发送中断标志位。在串行通信时,每发送完一帧数据,串行通信口会将TI位置“1”,表明数据已发送完成,向CPU发送中断请求信号。

② RI 位:串行通信口接收中断标志位。在串行通信时,每接收完一帧数据,串行通信口会将RI位置“1”,表明数据已接收完成,向CPU发送中断请求信号。注意:单片机执行中断子程序后,TI 位和 RI位不能自动变为“0”,需要在退出中断子程序时,用软件指令将它们清0。

6 中断允许寄存器IE

IE寄存器的功能用来控制各个中断请求信号能否通过。IE的字节地址是A8H,它有8位,每位均可直接访问(即可位寻址),IE 的字节地址、各位的位地址和名称如图4所示。

 图4 IE的字节地址、各位的位地址和名称

IE寄存器各位(有2位不可用)的功能说明如下。

① EA位:总中断允许位。当EA=1时,总中断开关闭合;当EA=0时,总中断开关断开,所有的中断请求信号都不能接受。

② ES位:串行通信口中断允许位。当ES=1时,允许串行通信口的中断请求信号通过;当ES=0时,禁止串行通信口的中断请求信号通过。

③ ET1位:定时器/计数器1中断允许位。当ET1=1时,允许定时器/计数器1的中断请求信号通过;当ET1=0时,禁止定时器/计数器1的中断请求信号通过。

④ EX1位:外部中断1允许位。当EX1=1时,允许外部中断1的中断请求信号通过;当EX1=0时,禁止外部中断1的中断请求信号通过。

⑤ ET0位:定时器/计数器0中断允许位。当ET0=1时,允许定时器/计数器0的中断请求信号通过;当ET0=0时,禁止定时器/计数器0的中断请求信号通过。

⑥ EX0位:外部中断0允许位。当EX0=1时,允许外部中断0的中断请求信号通过;当EX0=0时,禁止外部中断0的中断请求信号通过。

7 中断优先级控制寄存器IP

IP寄存器的功能是设置每个中断的优先级。其字节地址是B8H,它有8位,每位均可进行位寻址,IP的字节地址、各位的位地址和名称如图5所示。

图5 IP的字节地址、各位的位地址和名称

IP寄存器各位(有3位不可用)的功能说明如下。

① PS位:串行通信口优先级设定位。当PS=1时,串行通信口为高优先级;当PS=0时,串行通信口为低优先级。

② PT1位:定时器/计数器1优先级设定位。当PT1=1时,定时器/计数器1为高优先级;当PT1=0时,定时器/计数器1为低优先级。

③ PX1位:外部中断1优先级设定位。当PX1=1时,外部中断1为高优先级;当PX1=0时,外部中断1为低优先级。

④ PT0位:定时器/计数器0优先级设定位。当PT0=1时,定时器/计数器0为高优先级;当PT0=0时,定时器/计数器0为低优先级。

⑤ PX0位:外部中断0优先级设定位。当PX0=1时,外部中断0为高优先级;当PX0=0时,外部中断0为低优先级。

通过设置 IP寄存器相应位的值,可以改变5个中断源的优先顺序。若优先级一高一低的两个中断源同时发出请求,CPU 会先响应优先级高的中断请求,再响应优先级低的中断请求;若5个中断源有多个高优先级或多个低优先级中断源同时发出请求,CPU 会先按自然优先级顺序依次响应高优先级中断源,再按自然优先级顺序依次响应低优先级中断源。

51单片机——中断系统结构相关推荐

  1. 51单片机中断interrupt……using……

    51单片机中断细节的一些问题. interrupt0:外部中断0 interrupt1:定时器中断0 interrupt2:外部中断 interrupt3:定时器中断1 interrupt4:串口 u ...

  2. 单片机c语言reti的用法,基于51单片机中断跳出指令“RETI”浅议

    原标题:基于51单片机中断跳出指令"RETI"浅议 =RET指令+通知CPU中断服务已结束. 最近在基于编程的过程中出现了个很奇怪的问题"程序执行中在寄存器EA=1,ET ...

  3. c语言编写51单片机中断程序,执行过程是怎样的?

    Q:c语言编写51单片机中断程序,执行过程是怎样的? 例如程序: #include<reg52.h>   void main(void)   {    EA=1;      //开放总中断 ...

  4. 用51单片机中断控制LED灯亮灭

    用51单片机中断控制LED灯亮灭 #include<reg51.h>//头文件 sbit LED=P2^0;//位定义LED灯 sbit k3=P3^2;//位定义按键 void dela ...

  5. c语言T1中断程序编写步骤,用51单片机中断编写的4x4键盘程序

    当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章 用51单片机中断编写的4x4键盘程序 作者:未知   来源:山涧一溪流   点击数:-  更新时间:2014年06 ...

  6. 51单片机中断与计时器

    文章目录 1.配置下图中各寄存器 1. 定时器/计数器控制寄存器TCON 2.定时器.计数器模式控制寄存器TMOD 3.TH0及TL0 2.中断设置 二.中断程序 51单片机中断与计时器 # 一.定时 ...

  7. 51单片机 | 中断系统

    文章目录 一.中断介绍 1.中断概念 二.中断结构及相关寄存器 1.中断结构 2.中断相关寄存器   这一节专门介绍 51单片机的中断系统,为后面学习外部中断.定时器中断.串口中断做好铺垫. 一.中断 ...

  8. 51单片机中断系统实验

    51单片机中断系统实验 一.实验内容 INT0端接单次脉冲发生器.按一次脉冲产生一次中断,CPU使P1.0状态发生一次反转,P1.0接LED灯,以查看信号反转. 根据实验内容编写一个程序,并在实验系统 ...

  9. 单片机c语言中断意义,51单片机中断系统的重要性

    描述 在接下来的教程中,将会介绍定时器.串口通信等外设的基本使用,而这些外设的使用都要涉及中断,而且中断是单片机或嵌入式开发中一个相当重要的概念.不能掌握中断系统,就无法灵活应用这些外设. 1.什么是 ...

最新文章

  1. tensorflow tf.Variable 的用法
  2. Java线程详解(3)-线程栈模型与线程的变量
  3. python脚本画pie饼图_python 使用matplotlib.pyplot.pie绘制饼图
  4. 达梦数据库卡慢简单分析
  5. 1822. 数组元素积的符号
  6. 【比赛经验】ALL in BERT:一套操作冲进排行榜首页
  7. 交换机 Telnet远程登录配置
  8. Unix环境高级编程代码(实时更新)
  9. win7网上邻居_CentOS7 Linux访问Win7的共享文件夹
  10. 杭州云栖大会“弹性计算用户实践专场”等你来
  11. 怎么离线发布全国谷歌高清卫星影像地图瓦片
  12. pve 不订阅更新_魔兽世界PVE史:第二章 (四)国服那些年
  13. Canvas绘制抽奖转盘
  14. 我是鉴黄师,在工作中遇到了我的前女友……
  15. AI 助力智慧城市发展 | 腾讯视觉峰会回顾
  16. FPGA 任意分频器设计
  17. Cadence Allegro16.6完整安装包+和谐文件 下载
  18. ffmpeg h264文件转mp4
  19. 两个外企常用的电面网站
  20. vue 八大生命周期

热门文章

  1. Win10Ubuntu双系统安装教程
  2. android p三星,索尼XZ3新机采用Android P系统,对标三星note9,网友:外观
  3. 网络异常模拟测试方法
  4. 乐鑫Esp32学习之旅27 带你在Windows10平台下用自带的Linux安装 ESP8266/ESP32 环境,再无需额外安装虚拟机了。
  5. Numpy计算二维、三维、多维向量空间夹角余弦值
  6. 中国IT从业者的职业——计算机程序设计员
  7. 【附视频】GOOGLE 谷歌中国 首次与网民冲突事件实录
  8. 用Python实现火爆全网的「蚂蚁呀嘿」!这也太恶搞了吧!
  9. Spring IoC的理解----找女朋友的方法
  10. TCP/IP详解之环回接口(loopback interface)