8051单片机的中断系统
- 格式:doc
- 大小:785.50 KB
- 文档页数:14
MCS-51单⽚机的中断系统单⽚机中断技术概述在任何⼀款事件驱动型的CPU⾥⾯都应该会有中断系统,因为中断就是为响应某种事件⽽存在的。
中断的灵活应⽤不仅能够实现想要的功能,⽽且合理的中断安排可以提⾼事件执⾏的效率,因此中断在单⽚机应⽤中的地位是⾮常重要的。
单⽚机中断(Interrupt)是硬件驱动事件,它使得CPU暂停当前的主程序,转⽽去执⾏⼀个中断服务⼦程序。
为了更形象地理解中断,下⾯以学⽣上⾃习时接电话为例阐述⼀下中断的概念。
单⽚机的中断系统有5个中断源、2个中断优先级,可实现两级中断服务程序嵌套。
如果单⽚机没有中断系统,单⽚机的⼤量时间可能会浪费在查询是否有服务请求发⽣的定时査询操作上。
采⽤中断技术完全消除了单⽚机在査询⽅式中的等待现象,⼤⼤地提⾼了单⽚机的⼯作效率和实时性。
单⽚机中断系统结构及中断控制中断系统结构图如图5-2所⽰。
由图5-2可见,MCS-51中断系统共有5个中断请求源:INT0——外部中断请求0,中断请求信号由INT0引脚输⼊。
定时/计数器T0计数溢出发出的中断请求。
INT1——外部中断请求1,中断请求信号由INT1引脚输⼊。
定时/计数器T1计数溢出发出的中断请求。
串⾏⼝中断请求。
中断优先级从⾼到底排列。
单⽚机如何知道有中断请求信号?是否能够响应该中断?若5个中断源请求信号同时到来,单⽚机如何响应?这些问题都可以由中断寄存器来解决。
单⽚机中断寄存器有中断标志寄存器TCON和SCON、中断使能寄存器IE和中断优先级寄存器IP,这些寄存器均为8位。
中断标志寄存器5个中断请求源的中断请求标志分别由TCON和SCON的相应位锁存,单⽚机通过这些中断标志位的状态便能知道具体是哪个中断源正在申请中断。
TCON寄存器TCON寄存器为定时/计数器的控制寄存器,字节地址为88H,可位寻址。
特殊功能寄存器TCON的格式如图5-3所⽰。
TCON各标志位功能如下。
TF1——定时/计数器T1的溢出中断请求标志位。
51单片机中断系统结构的理解
在51单片机中,中断系统结构是实现中断处理的关键组成部分。
中断是通过外部事件触发的,可以打断当前正在执行的程序,执行一个预定义的中断服务程序。
这种机制使得单片机能够实现多任务处理,增强了系统的实时性和响应能力。
51单片机的中断系统结构包括中断向量表、中断控制寄存器和中断
服务程序。
中断向量表是一个固定的内存区域,存放了每个中断向量的入口地址。
当发生中断时,单片机会根据中断号查找中断向量表,获取相应中断服务程序的入口地址。
中断控制寄存器用于控制中断的使能和优先级设置。
通过设置中断控制寄存器,可以选择开启或关闭某个中断,并设置中断的优先级,以确保系统按照一定的优先级顺序处理中断请求。
中断服务程序是中断事件发生时需要执行的代码块。
中断服务程序一般比较短小精悍,以尽快完成对中断事件的响应。
在中断服务程序中,通常需要保存现场(保存CPU寄存器的值),执行中断处理代码,最
后恢复现场。
中断服务程序的执行完毕后,程序会回到中断发生前的状态,继续执行原有的程序。
在51单片机中,中断系统结构的设计和实现需要根据具体的应用需
求进行调整。
例如,可以根据不同的中断源设置不同的优先级,以确
保高优先级的中断能够及时得到处理;还可以通过软件的方式模拟多级中断系统,实现更复杂的任务调度和处理。
总之,51单片机中断系统结构的合理设计和使用,可以提高系统的实时性和可靠性,使得单片机在应对各种外部事件时能够快速、准确地响应和处理。
51系列单片机具有几个中断源,分别是如何定义的?其中哪些中断源可以被定义为高优先级中断,如何定义?答:具有5个中断源,分别是外部中断INT0和外部中断INT1、定时器溢出中断0和定时器溢出中断1以及串行中断。
通过对中断优先级寄存器IP的设置,每个中断源都可以被定义为高优先级中断。
2.堆栈的特性是,8051的堆栈一般开辟在,其堆栈指针是。
先进后出;内部RAM30H~7FH的范围内;SP8051的定时器/计数器有几个?是多少位的?有几种工作方式?其工作原理如何?答:8051有2个16位的定时器/计数器,有4种工作方式。
定时器与计数器的工作原理是相同的,8051的定时器/计数器是根据输入的脉冲进行加1计数,当计数器溢出时,将溢出标志位置1,表示计数到预定值。
8051有哪几个中断源?哪些是内部中断源?哪些是外部中断源?答:8051有5个中断源,分别是定时器/计数器T0、T1的溢出中断TF0、TF1,串行口的收/发中断RI/TI,外部中断;其中定时器/计数器T0、T1的溢出中断TF0、TF1、串行口的收/发中断RI/TI是内部中断源,外部中断是外部中断源。
设定T1为计数器方式,工作方式2,则TMOD中的值为 60H(高位为6即可)。
P0、P1、P2、P3四个均是___位的____口(填“串行”还是“并行”),其中P0的功能是______________________;P2口的功能是___________;而_________是双功能口;______是专门的用户口。
8,并行,地址/数据分时复口,高8位地址口,P1。
I接口芯片,8255A的A通道有________种作方式。
8255A属于可编程的________ O并行, 38051 的引脚RST是____(IN脚还是OUT脚),当其端出现____电平时,8051进入复位状态。
8051一直维持这个值,直到RST脚收到____电平,8051才脱离复位状态,进入程序运行状态,从ROM H单元开始取指令并翻译和执行。
单片机中断系统详细教程一、中断系统的原理中断系统是一种异步事件响应机制,它允许设备在正常程序运行的过程中插入一个特殊事件,中断请求触发后,处理器即刻中断当前程序的执行,执行特定的中断服务程序,完成对事件的处理。
其流程如下:1.当外设需要处理器响应时,会向处理器发送中断请求信号,通常为一个引脚的高电平触发。
2.处理器在接收到中断请求信号后,暂停当前的程序执行,保存当前现场(保存中断发生时的CPU状态),并进入中断服务程序执行,执行完成后再返回到原来的程序继续执行。
二、中断系统的使用方法1.初始化中断控制器:对中断向量表进行初始化,设置中断优先级等。
2.配置外设的中断请求触发方式:设置外设的中断触发方式,包括电平触发和边沿触发。
3.编写中断服务程序:根据需要,编写中断服务程序来处理中断事件。
4.启动中断系统:启动中断系统,使处理器能够响应外设的中断请求。
三、中断系统的实例下面以8051单片机为例,演示如何使用中断系统。
1.初始化中断控制器使用8051单片机的中断系统,首先需要初始化中断控制器,设置中断向量表和中断优先级。
具体步骤如下:```cvoid init_interrup//设置中断向量表EA=1;//打开总中断使能ET0=1;//打开定时器0中断EX0=1;//打开外部中断0EX1=1;//打开外部中断1//设置中断优先级IP=0x10;//设置定时器0中断为高优先级P3=0x0F;//设置外部中断0和中断1为低优先级```2.配置外设的中断请求触发方式在8051单片机中,外部中断0和中断1的触发方式可由用户进行配置,可以选择为低电平触发或上升沿触发。
例如,将外部中断0配置为上升沿触发:```cvoid init_external_interrupIT0=1;//设置外部中断0为边沿触发方式(上升沿触发)EX0=1;//打开外部中断0使能```3.编写中断服务程序根据需要,编写相应的中断服务程序来处理中断事件。
8051单片机的中断系统在单片机的世界里,8051 单片机的中断系统就像是一个有条不紊的交通指挥中心,能够让单片机在应对各种复杂任务时做到有条不紊、高效快捷。
什么是中断呢?打个比方,你正在家里专心致志地看书,突然门铃响了,这时候你就得放下手中的书去开门,处理完开门这件事之后再回来继续看书。
对于单片机来说,中断就像是这个突然响起的门铃,它会打断单片机正在进行的主程序,让单片机先去处理更紧急、更重要的任务,处理完后再回到原来的主程序继续执行。
8051 单片机的中断系统有 5 个中断源,分别是外部中断 0(INT0)、外部中断 1(INT1)、定时/计数器 0 溢出中断(TF0)、定时/计数器1 溢出中断(TF1)和串行口中断(RI 或 TI)。
外部中断 0 和 1 通常是由外部信号触发的。
比如说,连接一个传感器,当传感器检测到特定的条件时,就会产生一个信号触发外部中断,让单片机去处理相应的操作。
定时/计数器 0 和 1 溢出中断则是在定时/计数器计满溢出时产生中断。
这就好比你设定了一个闹钟,时间到了闹钟就响,单片机就知道该去执行相应的任务了。
串行口中断是在串行通信过程中,当接收或发送完一帧数据时产生的中断。
每个中断源都有自己的中断标志位。
当相应的中断事件发生时,中断标志位就会被置位。
单片机通过查询这些中断标志位来判断是否有中断请求。
为了有效地管理这些中断,8051 单片机设置了中断允许寄存器 IE和中断优先级寄存器 IP。
中断允许寄存器 IE 就像是一个总开关,决定了哪些中断源可以被响应。
如果某个中断源对应的位被设置为 1,那么它就是被允许的;如果是 0,就会被禁止。
中断优先级寄存器 IP 则决定了多个中断同时请求时的响应顺序。
就像在一个拥挤的路口,警车、救护车等具有更高优先级的车辆会先通过。
在 8051 单片机中,默认的中断优先级顺序是:外部中断 0 >定时/计数器 0 溢出中断>外部中断 1 >定时/计数器 1 溢出中断>串行口中断。
51单片机中断系统工作原理
51单片机中断系统是处理器与外部设备之间通信的一种机制,它允许外设在需要时中断CPU的正常程序执行,从而执行一些高优先级的任务。
本文将从以下几个方面介绍51单片机中断系统的工作原理:
1. 中断源和中断向量表
51单片机中断系统的中断源可以是内部或外部的。
内部中断源包括定时器、串口、ADC等模块,而外部中断源则可以是外部中断引脚、外部数据存储器等。
中断向量表则是一个存储各中断服务程序入口地址的表格,它可以在CPU执行中断时快速定位相应的中断服务程序。
2. 中断控制器和优先级
中断控制器是一个用于控制中断的硬件模块,它可以根据中断源的优先级来决定哪个中断请求会被响应。
优先级高的中断请求会被优先响应,而低优先级的则会被忽略。
在中断控制器中还有一个中断允许寄存器,它用于允许或禁止特定的中断源。
3. 中断服务程序的编写
中断服务程序是一段特殊的程序,它用于响应中断请求并执行相应的操作。
在编写中断服务程序时,需要注意以下几点:首先,中断服务程序必须尽快完成,以便让CPU恢复正常的程序执行;其次,中断服务程序需要保存现场,即保存一些特定的寄存器值,以便后续程序恢复时可以正确地执行;最后,中断服务程序需要执行IRET指令,
以便将中断返回地址出栈并返回到原来的程序执行点。
通过深入了解51单片机中断系统的工作原理,我们可以更好地理解中断系统的原理和应用,并在实际应用中更好地使用它。
8051单片机的中断响应过程解析8051的CPU在每个机器周期期间,顺序采样每个中断源,CPU在下一个机器周期按优先级顺序查询中断标志,如查询到某个中断标志为1,将在下一个机器周期期间按优先级来进行中断处理。
在下列任一种情况存在时,中断申请将被封锁。
1、CPU正在执一个同级或高级的中断服务程序2、当前机器周期不是当前指令周期的最后一个机器周期,即要保证把当前指令执行完。
CPU响应中断,由硬件自动将相应的中断矢量地址装入程序程序计数器PC,转入该中断服务程序进行处理。
对于有些中断源,CPU在响应中断后会自动清除中断标志,如定时器溢出标志TF0,TF1,以及部中断标志IE0,IE1。
而有些中断标志,不会自动清除,只能由用户用户软件清除,如串行口接收发送中断标志RI,T1。
CPU执行中断服务程序之前,自动将程序计数器PC内容压入堆栈保护,然后将对应的中断矢量装入程序计数器PC,使程序转向该中断矢量地址单元中,以执行中断服务程序,中断服务程序从矢量地址开始执行,一直到返回指令“RETI”为止。
“RETI”指令的操作,一方面告诉中断系统中断服务程序以执行完毕,另一方面把原来压入堆栈保护的断电地址从栈顶弹出,装入程序计数器PC,使程序返回被中断的程序断点处,以便继续执行。
外部中断响应时间外部中断INT0和INT1的电平在每个机器周期,经反向后锁存到IE0和IE1的标志位,CPU在下一个机器周期才会查询到新置入的IE0和IE1,这时如果满足响应条件,CPU响应中断时,要用二个机器周期执行一条硬件长调用指令“LCALL”。
所以,从产生外部中断到开始执行中断程序至少需要三个完整的机器周期。
如果在中断申请时,CPU正在长指令,如乘法和除法指令等四周期指令,则额外等待时间增加三个周期;若正在执行“RETI”指令或访问IE,IP的指令,则额外等待时间又增加两个周期。
综上估计,在单一中断系统里,外部中断响应时间约在3-8个机器周期之间。
第6章8051单片机的中断系统6.1 微型计算机中断技术概述6.1.1 中断的概念1.中断及中断技术的特点计算机在执行某一程序的过程中,由于计算机系统之外的某种原因,有必要尽快地中止当前程序的运行,而去执行相应的处理程序,待处理程序结束后,再返回来继续执行被中止了的那个程序。
这种某一程序在执行过程中由于外界的原因,中间被打断的情况就称为“中断”。
“中断”类似于程序设计中的调用子程序,区别在于这些外部原因的发生是随机的,而子程序调用是程序设计人员事先安排好的。
能够打断当前程序的外部事件,被称为中断源。
中断属于一种对事件的实时处理过程,中断源可能随时迫使CPU停止当前正在执行的工作,转而去处理中断源指示的另一项工作,待后者完成后,再返回原来工作的“断点”处,继续原来的工作。
一个计算机一般具有多个中断源,这就存在中断优先权和中断嵌套的问题。
例如,一个人在读书时如果接了电话并且正在通话时,又有人敲门,由于敲门的优先权更高,这个人又“响应”这个敲门的中断申请,暂停通话,去与敲门人交谈;交谈完毕,接着原来的话茬继续通话,直到通话完毕,再返回书桌前继续看书。
这里,敲门的中断源就比电话的中断源优先权高,因此,出现了中断嵌套,即高级优先权的中断源可以打断低级中断优先权的中断服务程序,而去执行高级中断源的中断处理,直至该处理程序完毕,再返回接着执行低级中断源的中断服务程序,直至这个处理程序完毕,最后返回主程序。
计算机响应中断的条件是,计算机的CPU是处于开中断状态的,同时只能在一条指令执行完毕后才能响应中断请求。
2.中断功能利用中断技术,使计算机能够完成更多的功能。
(1)可实现高速CPU;(2) 可实现实时处理;(3) 实现故障的紧急处理;(4)便于人机联系。
总之,随着计算机硬件软件技术的发展,中断技术也在不断丰富,所以中断功能已经成为评价计算机系统的整体性能的一项重要指标。
6.1.2中断处理过程CPU响应中断源的中断请求后,就转去进行中断处理。
不同的中断源,其中断处理内容可能不同,但其主要内容及顺序都如图6-1所示。
图6-1 中断处理流程从图6-1可以看到中断处理的过程,下面做几点补充说明:1. 保护现场与恢复现场为了使中断服务程序的执行不破坏CPU中寄存器或存储单元的原有内容,以免在中断返回后影响主程序的运行,因此,要把CPU中有关寄存器或存储单元的内容推入堆栈中保护起来,这就是所谓保护现场。
而在中断服务程序结束时和返回主程序之前,则需要把保护起来的那些现场内容从堆栈中弹出,以便恢复寄存器或存储单元原有的内容,这就是恢复现场。
注意一定要按先进后出的原则进行推入和弹出堆栈。
2. 开中断与关中断在中断处理正在进行的过程中,可能又有新的中断请求到来,一般说来,为防止这种高于当前优先级的中断请求打断当前的中断服务程序的执行,CPU响应中断后应关断(很多CPU是自动关中断的,但8051单片机不是自动关闭的,需要用软件指令关闭),而在编写保护现场和恢复现场的程序时,也应在关闭中断后进行,以免使保护现场和恢复现场的工作不被干扰,这样,就可屏蔽其他中断请求了。
如果要想响应更高级的中断源的中断请求.那么应在现场保护之后,将CPU处于开中断的状态,这样就使系统具有中断嵌套的功能。
对于不同的CPU, 开中断和关中断的方法有所不同,有关8051单片机的开中断和关中断的办法将在下节叙述。
3.中断服务中断服务是中断处理程序的主要内容,将根据中断功能去编写,以满足用户的需要。
复杂的中断服务程序也可以用子程序形式。
4.中断返回中断返回是把当前运行的中断服务程序转回到被中断请求中断的主程序上来。
中断返回指令与子程序返回不同,用专用的中断返回指令RETI来完成。
因此,这条指令是中断服务程序的最后一条指令;另外,开中断后,必须运行一条指令后才有响应中断的可能性,所以,后面紧跟一条RETI指令,在执行完RETI指令前不可能响应新的中断申请。
6.2 8051单片机的中断控制由于单片机的结构和功能有限,中断系统不算复杂。
但从实际应用的角度来看,8051单片机的中断系统已足够。
下面针对8051单片机的中断系统做详细介绍。
6.2.1中断源与中断标志位8051型单片机提供了5个中断源:两个外部中断源和三个内部中断源,8052增加了一个中断源——定时器2中断。
每一个中断源都有一个中断申请标志,但串行口占两个中断标志位,一共六个中断标志,表6-1给出了它们的名称。
表6-1 中断源和中断申请标志(1)外部中断源,指可以向单片机提出中断申请的外部原因引起的,共有两个中断源:外部中断0和外部中断1,它们的请求信号分别由引脚0INT(P3.2)和1INT(P3.3 )接入。
外部中断的信号被称为外部事件,这个信号究竟是低电平有效还是下降沿有效,可以被软件设定,称之为“外部中断触发方式选择”。
(2)内部中断源,有定时器中断和串行中断两种。
定时器中断是为满足定时或计数的需要而设置的。
在8051单片机内部有两个定时器/计数器,当其内部计数器溢出时,即表明定时时间已到或计数值已满,这时就以计数溢出作为中断请求去置位一个标志位,作为单片机接收中断请求的标志。
这个中断请求是在单片机内部发生的,因此,无需从单片机芯片的外部引入输入端。
串行中断是为串行数据传送的需要而设计的,每当串行口接收和发送完一帧串行数据时,就产生一个中断请求。
至于中断申请标志位,是在两个特殊功能寄存器TCON和SCON 中定义了相应位作为中断标志位;当其中某位为0时,相应的中断源没有提出中断申请,当其中某位变成1时,表示相应中断源已经提出了中断申请。
对于这些申请何时予以响应,由硬件和软件共同确定。
所有的中断申请标志位都可以由软件置位或清0,其效果与硬件置位(置1)或清0标志位是相同的。
这就是说,可以由软件产生或者撤销一次中断申请。
8052单片机增加了定时器2,当定时/计数器方式的计数器(TH2,TL2)计数满后溢出,置位中断请求标志位TF2(T2CON.7),向CPU申请中断处理;当外部输入端口T2EX(P1.1)发生从1→0下降沿时,也将置位中断请求标志位EXF2(T2CON.6),向CPU申请中断处理。
6.2.2 与中断有关的特殊功能寄存器SFR与中断有关的特殊功能寄存器是中断允许控制寄存器(IE)、定时器控制寄存器(TCON)、中断优先级控制寄存器(IP)及串行口控制寄存器(SCON)。
这四个寄存器都属于专用寄存器,且可以位寻址,通过置位和清零这些位以便对中断进行控制。
1. 中断允许控制寄存器(IE) 这个特殊功能寄存器的字节地址为0A8H,其位地址为0A8H~0AFH,也可以用IE.0~IE.7表示。
该寄存器中各位的定义及位地址表示如下:其中只有7位有定义,它们是:EA—中断允许的总控制位。
EA=0时,中断总禁止相当于关中断,即禁止所有中断。
EA=1时,中断总允许,相当于开中断。
总的中断允许后,各个中断源是否可以申请中断,则由其余各中断源的中断允许位进行控制。
EX0—外部中断0允许控制位,当EX0=0,禁止外中断0;EX0=1,允许外中断0。
EX1—外部中断1允许控制位,当EX1=0,禁止外中断1;EX1=1,允许外中断1。
ET0—定时器0中断允许控制位,当ET0=0, 禁止该中断;ET0=1,允许定时器0中断。
ET1—定时器1中断允许控制位,当ET1=0,禁止该中断;ET1=1,允许定时器1中断。
ES—串行口中断允许控制位,当ES=0,禁止串行中断;ES=1,允许串行中断。
ET2—定时器2中断允许控制位,当ET2=0,禁止该中断;ET2=1,允许定时器2中断。
由上可见,8051单片机通过中断允许控制寄存器进行两级中断控制。
EA位作为总控制位,以各中断源的中断允许位作为分控制位。
但总控制位为禁止(EA=0)时,无论其它位是1或0,整个中断系统是关闭的。
只有总控制位为1时,才允许由各分控制位设定禁止或允许中断,因此,单片机复位时,IE寄存器的初值是(IE)=00H,中断系统是处于禁止状态,即关中断。
还要注意,单片机在响应中断后不会自动关中断(8086等很多CPU响应中断后则自动关中断),因此,如果在转入中断处理程序后,如果想禁止更高级的中断源的中断申请,可以用软件方式关闭中断。
对于中断允许寄存器状态的设置,由于IE既可以字节寻址又可以位寻址,因此,对该寄存器的设置既能够用字节操作指令,也可以使用位操作指令进行设置。
例如,假定要开放外中断0,使用字节操作的指令是:MOV IE, #81H如果使用位操作指令则需要两条指令,但更清晰SETB EASETB EX02.定时器控制寄存器(TCON) 该寄存器的字节地址为88H,位地址88H~8FH,也可以用TCON.0~TCON.7表示。
寄存器的定义及位地址表示如下:这个寄存器既有中断控制功能,又有定时器/计数器的控制功能。
其中与中断有关的控制位有6位:IE0 —外部中断0 (0INT)请求标志位,当CPU采样到0INT引脚出现中断请求后,此位由硬件置1。
在中断响应完成后转向中断服务程序时,再由硬件自动清0。
这样,就可以接收下一次外中断源的请求。
IE1 —外中断1 (0INT)请求标志位,功能同上。
IT0 —外中断0请求信号方式控制位,当IT0 =1,后沿负跳变有效;IT0 = 0,低电平有效。
此位可由软件置1或清0。
IT1 —外中断1请求信号方式控制位,IT1=1,后沿负跳变有效;IT1 = 0,低电平有效。
TF0—计数器0溢出标志位,当计数器0产生计数溢出时,该位由硬件置1,当转到中断服务程序时,再由硬件自动清0。
这个标志位的使用有两种情况:当采用中断方式时,把它作为中断请求标志位用,该位为1,当CPU开中断时,则CPU响应中断;而采用查询方式时,作查询状态位使用。
TF1 —计数器1溢出标志位,功能同TF0。
3.中断优先级控制寄存器(IP) 8051中断优先级的控制比较简单,因为系统只定义了高低两个优先级,各中断源的优先级由特殊功能寄器IP设定。
通过对特殊功能寄器IP的编程,可以把五个(8052六个)中断源分别定义在两个优先级中。
IP是中断优先级寄存器,可以位寻址。
IP的低6位分别各对应一个中断源:某位为1时,相应的中断源定义为高优先级;某位为0时,定义为低优先级。
软件可以随时对IP的各位清零或置位。
IP寄存器的字节地址为0B8H,位地址为0B8H~0BFH,或用IP.0~IP.7表示。
寄存器的定义和位地址表如下:PX0-外部中断0优先级设定位;该位为0优先级为低;该位为1,优先级为高。
PT0-定时中断0优先级设定位;定义同上。
PX1-外部中断1优先级设定位;定义同上。
PT1-定时中断1优先级设定位;定义同上。