精华内容
下载资源
问答
  • 1. 中断的基本概念 1.1 中断与异常 上一章提到了,微处理器和外设有三种基本的IO方式,分别是直接程序控制方式、中断方式、DMA方式。在中断方式中,外设满足传输条件后向处理器发送中断请求信号,然后处理器调用中断...

    1. 中断的基本概念

    1.1 中断与异常

    上一章提到了,微处理器和外设有三种基本的IO方式,分别是直接程序控制方式、中断方式、DMA方式。在中断方式中,外设满足传输条件后向处理器发送中断请求信号,然后处理器调用中断服务程序,进而提高了处理器的效率。现在,我们正式地认识一下中断,中断是指微处理器在正常执行程序的过程中,当出现某些意外情况或某种外部设备请求时,暂停正在执行的程序,转而去执行某一个特定的程序,并在执行后返回原来暂停执行的程序继续执行的过程。

    而我们平时经常提到的异常其实是传统意义上的内部中断,也叫做异常中断,即因内部意外条件而改变程序执行流程以报告出错情况和非正常状态的过程;相反的,把因外部事件而改变程序执行流程的这个过程称为外部中断,也叫做硬件中断

    广义上的中断包括异常,二者的区别在于:中断处理异步发生的外部事件,异常处理同步发生的内部事件。

    异常的类型:

    1. 故障(Faults):有时称为失效,是在引起异常的指令执行前被检测和处理,故障异常可以正确执行下去。如除法出错、界限检查、无效操作码、协处理器不存在等。
    2. 陷阱(Traps):在引起异常的指令执行之后被报告,在服务程序完成后,返回主程序中引起异常指令的下一条指令继续执行。如用户定义的软件中断:单步陷阱、断点异常、溢出、INTn、BOUND等。
    3. 夭折(Abort):是一种不能确定引起异常指令确切位置的异常。

    中断的分类:

    1. 内部中断:即异常。
    2. 外部中断 / 硬件中断:主要包括不可屏蔽中断(NMI)和可屏蔽中断(INTR)。
      不可屏蔽中断:不能用软件来控制是否允许中断,常见的NMI中断有电源掉电、存储器检验出错、总线奇偶错。为这些紧急请求设置了不可屏蔽中断输入引脚NMI,这些重要的故障信号传至该引脚。
      可屏蔽中断:可用软件控制是否允许中断的外部中断,即STI使IF=1,允许中断;CLI使IF=0,禁止中断。所有外设中断都属于INTR,如键盘中断、串并口中断、硬盘中断等。系统中所有外设的中断请求信号都通过外接的中断控制器与微处理器的INTR相连
    3. 系统管理中断:与系统管理方式对应的中断源叫做系统管理中断-SMI。

    在这里插入图片描述

    1.2 中断过程

    中断过程分五步走:

    第一步,中断请求。 外部中断源发出中断请求或者内部产生某种异常都会通知微处理器。

    第二步,中断判优。 很好理解,如果微处理器同时收到多个中断请求,总得有个处理顺序,这就是中断判优,微处理器首先响应优先级最高的中断请求。

    第三步,中断响应。 这步有点麻烦,指的是当微处理器收到那个优先级最高的中断请求后,到开始处理它(进入中断服务程序)之前的这段时间。
    对于可屏蔽中断,当这个中断申请到达了处理器,处理器执行完当前指令,就开始进入中断响应周期,这期间CPU做了这些事情:

    1. 向外部中断控制器发送两个脉冲响应信号(INTA):第一个INTA告诉中断控制器已经响应外部中断请求,赶紧把中断类型号准备好;第二个INTA,CPU拿走中断类型号。
    2. 将标志位寄存器内容压栈,清IF、TF以禁止INTR和陷阱、单步中断。
    3. 将断点地址压栈(CS:IP),断点地址就是原来CPU执行的程序中的下一条指令的地址。
    4. CPU根据中断类型号找到中断服务程序入口地址,执行中断服务程序。

    第四步,中断处理。 第三步结束,微处理器顺利地找到了中断服务程序,于是CPU开始执行中断服务程序。

    1. step1 保护现场。 在上一步中断响应这个阶段,CPU已经自动完成了对标志位寄存器内容和断点地址的保护,这一步要做的是:将寄存器信息压栈保护,基本原则是,如果某些主程序用到的寄存器,中断程序也用到了,那么这些寄存器信息必须压栈保护,
    2. step2 开中断。 在上一步中断响应阶段,微处理器进行了清IF、TF标志位,是为了防止在中断响应过程中又有新的中断来干扰。那么现在已经进入了中断服务程序,该做的工作都做好了,已经不怕打扰了,所以开放所有可屏蔽中断,目的是允许中断嵌套。
    3. step3 执行中断服务程序。 针对外设请求,CPU执行I/O;针对内部异常,CPU做出相应处理。在这一步,允许响应更高一级的中断。
    4. step4 关中断。 使用关中断指令CLI。
    5. step5 恢复现场。

    第五步,中断返回。 中断服务程序最后一条指令无一例外使用中断返回指令(如IRET或IRETD),该指令将第三步中压栈的标志位寄存器信息和断点地址一次从堆栈中弹出。

    1.3 外部中断源的管理

    在微机系统中,中断优先级从高到低依次为:在这里插入图片描述
    其中NMI通过某种硬件结构确定多个不可屏蔽中断的优先级;INTR利用外部中断控制器决定和管理多级中断。

    当多个中断源共用一根中断请求线时,就涉及到了中断源的识别问题。有软件查询和硬件处理法:

    • 软件查询即按优先级从高到低依次查询,看看到底是哪一个。
    • 硬件处理,就是采用如编码器和比较器的优先权排队电路以及中断控制器等硬件来管理中断。

    2. 实地址方式和保护方式下的中断

    核心问题是怎么找到中断服务程序的入口地址,分两种方式。

    2.1 实地址方式

    先明确两个概念:

    • 中断向量: 中断服务程序的入口地址。每个中断服务程序对应一个中断向量。
      组成及格式:4个字节;低地址存偏移量,高地址存段地址(牢记!)
      在这里插入图片描述

    • 中断向量表: 顾名思义,存中断向量的地方,即中断向量表里面存着所有中断服务程序的入口地址。由于系统有256个中断类型号,每个中断类型号对应一个中断服务程序,每个中断服务程序对应一个4字节的中断向量,所以中断向量表大小为1KB。另外,它固定在内存的起始位置:00000H~003FFH,这就意味着中断向量表的基地址为0。

    所以从上面的分析可知,求一个中断类型号对应的中断服务程序入口地址的方法为:

    1. 算出它的起始地址和末地址分别为:4n,4n+3;
    2. 由中断向量的格式可以找到段地址和偏移量
    3. 入口地址就是:段地址 × 16 + 偏移量。(实地址下的寻址方式)

    2.2 保护方式

    很绕,先说几个概念,结合后面的例题看会清楚一点:

    • 中断描述符:主要为了提供中断服务程序在内存中的偏移地址段选择子
      组成及各式:8个字节;如下:
      在这里插入图片描述
    • 段选择子:偏移地址有了,就差段基地址了,段选择子就派上用场了。段选择子共16位,左边13位是索引,1位TI位,2位RPL位。其中TI位就用来指示在GDT还是LDT中找段描述符,一旦确定了之后,断描述符表的基地址就确定了(题目给你),再加上前面13位索引位就可以找到段描述符,从段描述符中可以找到段基地址;再加上中断描述符中的偏移地址,就得到了中断服务程序的入口地址。
    • 中断描述符表:系统有256个中断类型,每个中断类型的中断描述符8个字节,所以这个表有2KB。但是它不像实地址下的中断向量表在内存最低端,它有IDT(中断描述符表)首地址。

    例1:已知保护方式下,内存单元中有关单元存放的内容如右图所示,IDT的首地址为00280000H,GDT的首地址为00500000H,求20H号中断服务程序入口地址。
    在这里插入图片描述

    1. 找到20H号的中断描述符。 起始地址:20H * 8 + 00280000H = 00280100H,持续8个字节,即红框标出来的部分 (注意顺序)
    2. 在中断描述符里面找出偏移地址和段选择子。 分别是:00422012H,0013H。
    3. 拆开段选择子,找到索引值(段描述符偏移量)和TI值。 0000,0000,0001,0011B。
      高13位:0000,0000,00010B;
      TI:0,所以选择GDT(1对应LDT)。
    4. 通过索引值和段描述符基址(本题中是GDT)找到段描述符。
      段描述起始地址为:00500000H + 0000,0000,00010B * 8 = 00500010H,持续8位为段描述符,即蓝框部分。通过段描述找到段基址:39423400H。
    5. 通过偏移地址和段基址找到中断服务程序入口。 39423400H + 00422012H = 39845412H

    题目一般会给IDT、GDT、LDT基地址,中断描述符和段描述符格式,理一理这几个概念:

    • IDT是中断描述符表,它的基地址用来找中断描述符。
    • 中断描述符:存了中断服务程序在内存段内的偏移地址段选择子。而段选择子里面又存了选哪个段描述符表(TI)段描述符在段描述符表里面的偏移地址(索引值)
    • GDT/LDT是全局/局部段描述符表,用哪个是段选择子里面的TI位决定的,决定好了之后,这个表的基地址 + 索引值 = 段描述符
    • 段描述符:存了需要的这个内存段的基地址,这个内存段的基地址 + 偏移地址 = 入口地址

    例2:已知内存单元中有关单元存放的信息如表,CR0=60000001H,IDTR=6500000007FFH,GDTR=001000007FFFH,求类型号为11H的中断服务程序入口地址。
    在这里插入图片描述

    1. CR0的最低位PE=1,说明保护模式;最高位PG=0,说明不分页。
    2. IDTR高32位为IDT首地址,低16位为表长度,所以中断描述符地址为:65000088H。
    3. 取8个字节,由低到高排序(注意顺序) 得到中断描述符:0042EE0081132012H。
    4. 偏移地址:00422012H,段选择子:8113
    5. 段选择子展开,索引值:8110,TI=0:选GDT
    6. GDT首地址为GDTR前32位,所以段描述符地址:00100000+8110=00108110
    7. 取8个字节为段描述符:0144F20070001FFFH,段基址:01007000H
    8. 入口地址:01007000H+00422012H=01429012H

    2.3 两种方式下中断的主要区别

    1. 表的大小不同。 中断向量表1KB,中断描述符表2KB。因为同样有256个中断类型,实地址方式下中断向量4B,而保护模式下中断描述符有8B。
    2. 表的位置不同。 实地址方式下1KB的表基地址为内存空间的最低端,即放在0000H~03FFH;保护方式下2KB表的基地址由中断描述符寄存器IDTR决定。
    3. 中断服务程序存放位置不同。实地址只能存在1MB以下的内存区域,保护方式下可以在内存中随便放。

    3. 可编程中断控制器8259

    这块片子就是前面所说的通过硬件来管理中断的那个“硬件”。

    3.1 内部结构

    在这里插入图片描述
    拿到一块片子,肯定先搞清楚内部结构和外部引脚,下面介绍一下。

    数据总线缓冲器:

    1. CPU向8259发送命令;
    2. 8259向CPU传送状态信息;
    3. 在中断响应周期,CPU从中获取中断类型号。

    读写逻辑:平平无奇,不需要解释

    级联缓冲/比较器:一个8259只能容下8个中断请求,如果不够用就需要多个片子级联,这时就需要存放和比较设备的主从关系,这个部分就是干这个的。

    控制逻辑:控制8259内部各个部件的主要逻辑电路。

    1. 根据CPU传过来的命令字产生内部控制信号
    2. 对应于当时最高优先级的中断源,向CPU发中断请求信号INT,以便让CPU进行中断响应。
    3. 接受CPU在第一个脉冲赐予的中断响应信号(-INTA),并在此时让ISRi=1,IRRi=0。
    4. 把相应的中断类型号准备好,CPU在第二个脉冲的时候来取。

    中断请求寄存器 IRR:记录外部中断源的中断申请状态。

    1. 1 = 对应引脚有中断请求但是还没响应;
    2. 0 = 对应引脚无中断请求或者是刚刚有请求但是被响应了。

    优先权分辨器 PR:选出最高优先中断源的中断请求给控制逻辑,然后控制逻辑给CPU发INT。

    中断服务寄存器 ISR:记录外部中断源的中断申请是否在被处理。

    1. 1 = 对应引脚的中断请求已经被响应了,CPU正在处理但是还没处理完;
    2. 0 = 对应引脚的中断请求还没被响应

    中断屏蔽寄存器IMR: 设置外部中断源的屏蔽状态,对应引脚为1就给它屏蔽了,反之没屏蔽。需要注意的是,只有IMRi对应位=0且IF=1,CPU才有可能响应可屏蔽中断。

    3.2 工作过程

    顺着结构,介绍一下工作过程,挺重要的。

    1. 当外部中断源产生中断请求后,IRR对应引脚的IRRi = 1;
    2. PR判别优先级,将当前最高优先中断源的请求通知控制逻辑,控制逻辑向CPU发送INT信号。
    3. CPU决定响应该中断后,先在第一个时钟脉冲发送INTA信号,表示可以响应该中断;控制逻辑收到该响应后,将ISRi置位,将IRRi复位,同时准备中断类型号。
    4. CPU在第二个脉冲时取走中断类型号。
    5. CPU处理完中断服务程序后发送中断结束命令,控制逻辑使对应ISRi复位,结束中断过程。

    几个思考题,也写一下吧:

    1. 什么情况下IRR=FFH?
      所有中断源都发出中断请求但都还没被响应。
    2. 什么情况下ISR=FFH?
      八级中断嵌套的情况,从最低到最高优先级的中断源发出的中断请求依次被响应,但都还没结束。
    3. IMR=FFH,计算机会怎样?
      所有硬件中断全部被屏蔽,系统瘫痪。
    4. IRR=0AH,ISR=0AH是否有可能出现?
      有可能,对应IR1和IR3的中断请求都已被响应且没结束,IR1和IR3又产生了新的申请的情况。

    3.3 多片级联

    • 级联时,有一个主8259,最多八个从8259 ;
    • 级联时,主8259的三条级连线CAS0~CAS2作为输出线,连至每个从8259A的CAS0~CAS2;
    • 每个从8259的中断请求信号INT,连至主8259的一个中断请求输入端IR;主8259的INT线连至CPU的中断请求输入端;
    • -SP/-EN,在非缓冲方式下,规定该8259是主片(-SP=1)还是从片(SP*=0)。

    3.4 8259编程

    老规矩,先初始化编程(ICW Initialization Command Word),再写命令字(OCW Operation Command Word)。直接按照格式写写程序就好了,注意只有ICW1是往偶端口写,其余的都是往奇数端口写,没什么难度。
    初始化编程流程:
    在这里插入图片描述
    对8259进行了初始化之后,8259就进入了工作状态,准备就收中断请求信号。可以通过操作命令字OCW使其以不同的方式工作,有三个操作命令字:

    • OCW1:中断屏蔽命令字,用于向中断屏蔽寄存器IMR写入屏蔽信息。
    • OCW2:用于非自动中断结束方式下发出中断结束命令和设置优先级循环方式。
    • OCW3:屏蔽查询状态命令字,用于管理特殊的屏蔽方式和读取8259状态寄存器中的内容。
    展开全文
  • 中断系统

    2021-01-19 21:49:11
    (1)中断概念:CPU正在执行一个事件,然后响应中断源的请求,进而去执行另外一件事,执行完毕后,返回继续原来的事件,这是一个完整的中断系统。 (2)中断知识:对于51单片机来说,有5个中断源,分别是外部中断0、...

    (1)中断概念:CPU正在执行一个事件,然后响应中断源的请求,进而去执行另外一件事,执行完毕后,返回继续原来的事件,这是一个完整的中断系统。
    (2)中断知识:对于51单片机来说,有5个中断源,分别是外部中断0、定时器/计数器中断0、外部中断1、定时器/计数器中断1、串行中断。中断优先级也是按照这个顺序来的。
    (3)中断原理:要实现触发一个中断,要满足条件。
    1、中断允许寄存器IE中的中断允许位要允许。
    EX0(IE.0),外部中断0允许位;
    ET0(IE.1),定时/计数器T0中断允许位;
    EX1(IE.2),外部中断0允许位;
    ET1(IE.3),定时/计数器T1中断允许位;
    ES(IE.4),串行口中断允许位;
    EA (IE.7), CPU中断允许(总允许)位。
    2、设置中断触发方式
    IT0(TCON.0),外部中断0触发方式控制位。
    当IT0=0时,为电平触发方式。
    当IT0=1时,为边沿触发方式(下降沿有效)。
    IE0(TCON.1),外部中断0中断请求标志位。
    IT1(TCON.2),外部中断1触发方式控制位。
    IE1(TCON.3),外部中断1中断请求标志位。
    TF0(TCON.5),定时/计数器T0溢出中断请求标志位。
    TF1(TCON.7),定时/计数器T1溢出中断请求标志位。
    3、打开总中断开关
    4、中断号要对应
    在这里插入图片描述(4)源代码:K3按键控制8个LED灯的熄灭和点亮

    #include<reg51.h>
    #define LED P2
    sbit K3=P3^3;
    typedef unsigned char u8;
    typedef unsigned int u16;
    void delay(u16 i)//延时函数
    {
    	while(i--);
    }
    void Init0Init()//配置中断
    {		
    	EX0=1;//中断允许位
    	IT0=1;//下降沿触发
    	EA=1;
    }
    void main()
    {
    	Init0Init ();
    	while(1);
    }
    void Init0() interrupt 0//中断响应
    {
    	delay(1000);
    	if(K3==0)
    	{
    		LED=~LED;
    	}
    }
    
    展开全文
  • 本文主要介绍什么是中断、中断的基本概念、中断的处理过程、中断系统的结构和中断系统控制寄存器

    目录

    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个中断源。分别为外部中断源\overline{INT0}\、外部中断源\overline{INT1}\、定时器/计数器中断源T0、定时器/计数器中断源T1和串行通信口中断源(TX和RX)。

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

            ③ 中断允许寄存器IE。

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

    4.2 中断系统的工作原理

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

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

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

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

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

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

    5 中断源寄存器

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

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

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

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

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

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

            ② IT0位和IT1位:分别为外部中断0和外部中断1的输入方式控制位。当IT0=0时,外部中断 0 端输入低电平有效(即\overline{INT0}\端输入低电平时才表示输入了中断请求信号),当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单片机中断系统

    2021-10-04 12:51:24
    单片机中断系统的概念 什么是中断,我们从一个生活中的例程引入。 你正在家中看书,突然电话铃响了,你放下书本,去接电话,和来电话的人交谈,然后放下电话,回来继续看你的书。这就是生活中的“中断”的现象,...

    一、单片机中断系统的概念

    什么是中断,我们从一个生活中的例程引入。

    你正在家中看书,突然电话铃响了(中断发生),你放下书本,去接电话,和来电话的人交谈(中断响应和中断服务),然后放下电话,回来继续看你的书(中断返回)。这就是生活中的“中断”的现象,就是正常的工作过程被外部的事件打断了。仔细研究一下生活中的中断,对于我们学习单片机的中断也很有好处。

    中断响应和处理过程:

    能够实现中断处理功能的部件称为中断系统;产生中断的请求源称为中断请求源

    中断源向CPU提出的处理请求,称为中断请求(或中断申请)。

    中断源向CPU提出的中断请求。CPU暂时中断原来的事务A,转去处理事件B。对事件B处理完毕后,再回到原来被中断的地方(即断点),称为中断返回。   

    实现上述中断功能的部件称为中断系统(如下图所示):

    进入中断→保护现场→中断处理 → 恢复现场 →中断返回

    中断方式优点:1、大大地提高了CPU的工作效率。

                             2、中断技术不仅解决了快速主机与慢速I/O设备的数据传送问题

                             3、分时操作。CPU可以分时为多个I/O设备服务,提高了计算机的利用率

                             4、实时响应。CPU能够及时处理应用系统的随机事件,系统的实时性大大增强;

                             5、可靠性高。CPU具有处理设备故障及掉电等突发性事件能力,从而使系统可靠性提高。

    二、中断系统结构

            中断系统结构见图。中断系统有5个中断请求源(简称中断源),2个中断优先级,可实现2级中断服务程序嵌套。每一中断源可用软件独立控制为允许中断或关闭中断状态;每一个中断源的优先级均可用软件设置。

    2.1中断请求源    

    由图,中断系统共有5个中断请求源,它们是:

    (1)INT0*—(P3.2)可由INT0(TCON.0)选择其为低电平有效还是下降沿有效。当CPU检测到P3.2引脚上出现有效的中断信号时,中断标志IE0(TCON.1)置1,向CPU申请中断。

    (2)INT1*—(P3.3)可由INT1(TCON.2)选择其为低电平有效还是下降沿有效。当CPU检测到P3.3引脚上出现有效的中断信号时,中断标志IE1(TCON.3)置1,向CPU申请中断。

    (3)TF0(TCON.5),片内定时/计数器T0溢出中断请求标志。当定时/计数器T0发生溢出时,置位TF0,并向CPU申请中断。

    (4)TF1(TCON.7),片内定时/计数器T1溢出中断请求标志。当定时/计数器T1发生溢出时,置位TF1,并向CPU申请中断。

    (5)RI(SCON.0)或TI(SCON.1),串行口中断请求标志。当串行口接收完一帧串行数据时置位RI或当串行口发送完一帧串行数据时置位TI,向CPU申请中断。

    三、中断允许控制

            CPU对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器IE控制的。

            各中断源开放或屏蔽,是由片内中断允许寄存器IE控制。IE字节地址为A8H,可进行位寻址,格式见图。

    IE对中断开放和关闭实现两级控制。两级控制就是有一个总的中断开关控制位EA(IE.7位),当EA=0,所有中断请求被屏蔽,CPU对任何中断请求都不接受;当EA=1时,CPU开中断,但5个中断源的中断请求是否允许,还要由IE中的低5位所对应的5个中断请求允许控制位的状态来决定。
    IE中各位的功能如下:
    IE寄存器中与中断系统有关各标志位功能如下:
    EX0(IE.0):外部中断0允许位;
    ET0(IE.1):定时/计数器T0中断允许位;
    EX1(IE.2):外部中断0允许位;
    ET1(IE.3):定时/计数器T1中断允许位;
    ES(IE.4):串行口中断允许位;
    EA (IE.7): CPU中断允许(总允许)位。

     四、中断请求标志

            为定时器/计数器的控制寄存器,字节地址为88H,可位寻址。既包括定时器/计数器T0、T1溢出中断请求标志位TF0和TF1,也包括两个外部中断请求的标志位IE1与IE0,还包括两个外部中断请求源的中断触发方式选择位。TCON格式见图。 

    TCON寄存器中与中断系统有关各标志位功能如下:
    IT0(TCON.0): 外部中断0触发方式控制位。

            当IT0=0时,为电平触发方式。

            当IT0=1时,为边沿触发方式(下降沿有效)。

    IE0(TCON.1): 外部中断0中断请求标志位。
    IT1(TCON.2): 外部中断1触发方式控制位。
    IE1(TCON.3): 外部中断1中断请求标志位。
    TF0(TCON.5): 定时/计数器T0溢出中断请求标志位。
    TF1(TCON.7): 定时/计数器T1溢出中断请求标志位。

    五、响应优先级

            同一优先级中的中断申请不止一个时,则有中断优先权排队问题。同一优先级的中断优先权排队,由中断系统硬件确定的自然优先级形成,其排列如所示:

            51单片机的中断优先级原则:

            1、CPU同时接收到几个中断时,首先响应优先级别最高的中断请求。

            2、正在进行的中断过程不能被新的同级或低优先级的中断请求所中断。

    3、正在进行的低优先级中断服务,能被高优先级中断请求所中断。

    为了实现上2、3两条原则,中断系统内部设有两个用户不能寻址的优先级状态触发器。其中一个置1,表示正在响应高优先级的中断,它将阻断后来所有的中断请求;另一个置1,表示正在响应低优先级中断,它将阻断后来所有的低优先级中断请求。

    六、中断源  

    七、51单片机中断处理过程

             中断响应条件

    1、 中断源有中断请求;
    2、 此中断源的中断允许位为1;
    3、 CPU开中断(即EA=1)。

    以上三条同时满足时,CPU才有可能响应中断。

            以外部中断0为例:

            主程序中需要有以下代码:

            EA=1;//打开总中断开关

            EX0=1;//开外部中断0

            IT0=0/1;//设置外部中断的触发方式

     中断服务函数:
     
             void   int0   ()  interrupt   0    using  1

            {

                      do anything that you want

            }

    八、例子代码

    #include "reg52.h"
    #include "intrins.h"
    
    typedef	unsigned char u8;
    typedef unsigned int u32;
    
    sbit LED=P0^0;
    sbit KEY3=P3^2;
    
    void delay(u32 i)//i==1 10us
    {
    	while(i--);
    }
    /**
     *Funtion:外部中断0中断处理函数(格式固定 interrupt 0(0为中断号))
     *IN	 : void
     *OUT    : void
     *
     */
    void Int0() interrupt 0
    {
    	 delay(1000);//按键消抖
    
    	 if(KEY3 == 0)
    	 {
    	 	LED=~LED;
    	 }
    }
    
    /**
     *Funtion:外部中断0初始化函数
     *IN	 : void
     *OUT    : void
     *
     */
    void Int0Init(void)
    {
    	/* IE寄存器*/
    	EA  = 1; //CPU中断允许(总允许)位
    	EX0 = 1; //外部中断0允许位
    	/* TCON寄存器*/
    	IT0 = 1; //外部中断0触发方式控制位
    }
    
    int main( void )
    {
    	LED=0;
    
    	Int0Init();
    
    	while(1)
    	{
    	     
    	}
    
    	return 0;
    }
         

    展开全文
  • 中断系统的基本使用中断系统的基本概念五个中断源及其基本结构中断的处理函数中断相关的4个寄存器一个例题注意事项 中断系统的基本概念 五个中断源及其基本结构 51单片机一共有五个中断源 按优先级从上到下 中断...
  • 第6章 中断与DMA第2节 中断及中断系统第二节 中断及中断系统2.1 中断的概念1、 中断与中断系统"中断(Interrupt)"是一种操作,它使CPU中止正在执行的程序,而转入称为"中断处理程序(Interrupt Handler)"(或称中断...
  • 一、操作系统的运行机制 (一)程序是如何运行的? 在这里插入图片描述 “指令”就是处理器(CPU)能识别、执行的最基本命令。 注:很多人习惯把 Linux、Windows、MacOS 的“小黑框”中使用的命令也称为“指令”,...
  • 中断系统设计步骤: 1.思考自己使用中断的原因及想要到达的效果 中断类似于用硬件方式执行的if语句,如果在程序执行过程中硬件满足某种条件,则硬件中断正在执行的routine,转而执行预设好的中断程序。 2.思考该...
  • F28335中断系统

    2021-04-09 19:34:14
    中断:是当CPU执行原来程序时,由于发生某种随机的事件(内部或外部),引起CPU暂时中断正在运行程序,转去执行一段特殊的服务程序(中断服务子程序或者中断处理程序),当执行完特殊的服务程序,CPU则返回继续执行原来...
  • 目录:一、STM32中断系统二、NVIC中断管理三、中断配置相关函数 一、STM32中断系统 中断概念   • 中断是CPU对系统发生的某个事件作出的一种反应。   • 引起中断的事件称为中断源。   • 中断源向CPU提出处理的...
  • STM32中断系统

    多人点赞 2021-04-19 15:04:39
    10.1 Cortex-M3 的中断和优先级 正常情况下,微处理器根据代码内容,按顺序执行指令。执行过程中,如果遇到其它紧急的事件需要处理,则先暂停当前任务,执行紧急事件,待紧急事件处理完后,再恢复到刚才暂停的地方...
  • 本发明实施例涉及通信技术领域,尤其涉及一种PCIe中断方法和系统。背景技术:PCIe(Peripheral Component Interconnect Express,高速外围组件互联)是最新的总线和接口标准,这个新标准将全面取代现行的PCI和AGP,...
  • 改进系统的结构,开发系统的并行性 并行:包含同时性和并发性两方面。 同时性指两个或多个事件在同一时刻发生,并发性指两个或多个事件在同一时间段发生。 在同一时刻或同一时间段内完成两种或两种以上性质相同或...
  • MCS-51单片机的中断系统

    千次阅读 2021-01-05 22:44:03
    在任何一款事件驱动型的CPU里面都应该会有中断系统,因为中断就是为响应某种事件而存在的。中断的灵活应用不仅能够实现想要的功能,而且合理的中断安排可以提高事件执行的效率,因此中断在单片机应用中的地位是非常...
  • 在一个计算机系统当中,CPU执行的程序类型包括两种:应用程序(用户自编程序)和内核程序。但是要注意到,这两种程序同时有主从关系,主要体现在前者对后者的管理上。而主要的原因是内核程序能够执行某些特权指令而...
  • ​ 在学习操作系统中,经常性的会看到中断这个概念,最典型的就是汇编代码中的int命令。 ​ 用一个比较通俗的概念来说,就是计算机会连接许多外接设备,包括磁盘、显示器、键盘鼠标等等,而如何处理这些输入呢?对于...
  • Linux中断系统(一)中断控制器及驱动分析 Linux中断系统(二)-通用框架处理 吐血整理 | 肝翻Linux中断所有知识点 Linux kernel中断系统之(五):驱动申请中断API 前言   中断的处理主要有以下几个功能...
  • 一、STM32的中断系统 二、STM的外部中断 外部中断EXIT是STM32芯片实时处理外部事件的一种机制,由于中断请求来自GPIO端口的引脚,所以称为外部中断 三、外部中断的程序设计思路 传统STM32外部中断设计步骤: ...
  • 中断概念是50年代中期提出的,在这以前,计算机虽然能自动运行程序,但有两个问题不能很好解决: 不能自动处理异常情况或特殊请求,如电源掉电等。 CPU与外设串行工作,CPU得不到充分利用。CPU是电子设备,基本...
  • 中断是指CPU在执行当前程序时系统出现了某种状况,使得CPU必须停止当前程序,而去执行另一段程序来处理的出现的紧急事务,处理结束后CPU再返回到原先暂停的程序继续执行,这个过程就称为中断
  • 操作系统作为系统资源的管理者(这些资源包括软件、硬件、文件等) 功能:处理器管理,存储器管理,文件管理,设备管理 目标:安全,高效 操作系统作为用户与计算机硬件之间的接口,要为其上层的用户、应用程序...
  • [专业课笔记] 单片机 第五章 中断系统正文 正文
  • Linux中断系统

    2021-01-03 18:21:54
    首先感谢原文作者 LoyenWang 的分享,可以点击章节阅读原作者原文,或者查看本文的转载地址,再次感谢原作者分享,已经在公众号上... SoC:系统级芯片System on Chip SGI:软件产生的中断(software-generated inter..
  • STM32单片机(五). 中断系统

    千次阅读 多人点赞 2021-04-18 20:43:33
    中断的概念: 中断是当单片机的CPU在执行程序时,外部或内部发生了一个随机事件,导致CPU暂时中断...在Crotex-M3内核中支持256个中断,其中包含16个内核中断以及240个外部中断。STM32F10X芯片中只用了其中的84个中断
  • 中断优先级

    千次阅读 2021-07-25 04:32:43
    为使系统能及时响应并处理发生的所有中断系统根据引起中断事件的重要性和紧迫程度,硬件将中断源分为若干个级别,称作中断优先级。在实际系统中,常常遇到多个中断源同时请求中断的情况,这时CPU必须确定首先为哪...
  • 最近,某团外卖被爆出大数据杀熟,所谓的大数据杀熟指的是平台利用户的数据,分析你是否是钱多的人,或者是否是不...刹车,大数据杀熟的话题就说到这了,我们还是回归到今日的技术主题:什么是软中断?。 中断是什
  • 操作系统第3次理论课作业(时钟中断-访管中断-系统功能调用) ** 一. 单选题(共5题,5分) 1. (单选题, 1分) (2010年统考真题)下列选项中,操作系统提供的给应用程序的接口是()。 A. 系统功能调用 B. 中断 C. ...
  • 一种linux实时操作系统中断响应时间测试方法,其特征在于,所述linux实时操作系统中断响应时间测试方法包括以下步骤:第一步,对应用程序传递测试参数,测试间隔、测试时长;测试应用根据设置控制内核中的驱动向目标...
  • 系统结构-3-3中断级屏蔽位设置   中断响应次序的基本规则:一般在处理某级的某个中断请求时,是不能被与它同级的或比它低一级的中断请求所中断的。只有比它高一级的中断请求才能中断其处理,等响应和处理完后再...
  • 文章目录并发的进程切换中断技术中断中断的过程特权指令和非特权指令进程调度 并发的进程切换 要了解并发进程的切换,首先要清楚知道什么是并发的进程!! 并发的进程最主要的特点就是走走停停的状态,从运行的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 416,778
精华内容 166,711
关键字:

中断系统包括