产品选型

51单片机ip MCS-51的中断结构与控制

小编 2025-06-08 产品选型 23 0

MCS-51的中断结构与控制

MCS-51的中断源及中断结构

(一)中断源

向CPU发出中断请求的信号称为中断源。在2.1.2节中我们已经了解到MCS-51系列单片机中有5个中断源,其中2个外部中断源,3个内部中断源,具体如下:

:外部中断,由引脚P3.2引入中断请求。

:外部中断,由引脚P3.3引入中断请求。

➢ 定时计数器T0: 内部中断,定时计数器0溢出时发出中断请求。

➢ 定时计数器T1: 内部中断,定时计数器1溢出时发出中断请求。

➢ 串行口中断: 内部中断,包括串行接收中断RI和串行发送中断TI。

MCS-51单片机自然优先级如表4-1所示。

表4-1 优先级的排列

(二)中断结构

MCS-51系列单片机的中断系统结构如图4-2所示。

图4-2 MCS-51中断结构

由图4-2可以看出,中断系统中涉及TCON、SCON、IE以及IP四个特殊功能寄存器,它们主要有以下功能:

➢ 锁存中断请求标志: TCON和SCON锁存各中断源的中断请求标志位。

➢ 中断允许寄存器IE: 控制CPU是否响应中断源的请求。

➢ 中断优先级寄存器IP: 设置各中断源的优先级,每个中断源可编程为高优先级中断或低优先级中断。

1. TCON中的中断标志位

TCON的字节地址为88H,可进行位寻址,其具体的结构、位名称、位地址以及功能如表4-2所示。

表4-2 TCON的结构、位名称、位地址以及功能

IT0(D0位): 外部中断

的触发方式控制位,由软件进行置“1”和清“0”。IT0=1时,为边沿触发方式(即当引脚P3.2出现下降沿脉冲信号时,中断请求有效);IT0=0时,为电平触发方式(即当引脚P3.2为低电平信号时,中断请求有效)。

IE0(D1位): 外部中断

的请求标志位。当CPU检测到外部中断请求时,该标志位置“1”,当CPU转向中断处理子程序时,由硬件自动清“0”(只适用于边沿触发方式)。

注意

在电平触发方式中,CPU转向中断处理子程序时,不能自动清除IE标志位,也不能由软件进行清除。所以在中断返回前需撤销引脚上的低电平,否则就会产生CPU多次响应一次中断的错误。

IT1(D2位)和IE1(D3位): 外部中断

的触发方式控制位和请求标志位,其

含义与IT0和IE0相同。

➢ TR0(D4位): 定时计数器T0的启动停止标志位,由用户编程确定。TR0=1时,定时器开始计数(即从设定的初值作加1计数);TR0=0时,定时器停止。

➢ TF0(D5位): 定时计数器T0的中断溢出标志位。定时器作加1计数,当最高位产生进位时,定时器计数溢出,此时,由硬件置位TF0=1,CPU响应中断后,由硬件清“0”,TF0=0。

➢ TR1(D6位)和TF1(D7位): 定时计数器T0的启动停止标志位和中断溢出标志位,其含义与TR0和TF0相同。

2. SCON中的中断标志位

SCON的字节地址为98H,可进行位寻址,其具体的结构、位名称、位地址以及功能如表4-3所示。

表4-3 SCON的结构、位名称、位地址以及功能

➢ RI: 串行口接收中断标志位,当串行口接收到一帧数据时,RI置1,CPU响应中断后,硬件不能自动清除RI,需要由软件清“0”。

➢ TI: 串行口发送中断标志位,当串行口发送一帧数据时,T1置1,CPU响应中断后,硬件不能自动清除RI,同样需要由软件清“0”。

提示

RI和TI通过一个或门向CPU发中断请求,CPU响应中断请求后,首先需要判断是RI和TI哪一个中断源发出的请求,才能去执行相应的中断子程序。

串行中断的有关内容以及SCON中的其他标志位含义将在项目六中进行详细讲述。

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

IE控制所有中断源的开放和屏蔽,字节地址为A8H,可进行位寻址,其具体的结构、位名称、位地址以及控制的相应中断源如表4-4所示。

表4-4 IE的结构、位名称、位地址以及功能

EX0: 外部中断

的中断允许控制位。EX0=1时,

开中断;EX0=0时,

关中断。

➢ ET0: 定时计数器T0中断允许控制位。ET0=1时,T0开中断;ET0=0时,T0关中断。

EX1: 外部中断

的中断允许控制位。EX1=1时,

开中断;EX1=0时,

关中断。

➢ ET1: 定时计数器T1中断允许控制位。ET0=1时,T1开中断;ET0=0时,T1关中断。

➢ ES: 串行口中断允许控制位。ES=1时,串行口开中断;ES=0时,串行口关中断。

➢ EA: CPU中断允许控制位。EA=1时,CPU全部开中断;EA=0时,CPU全部关中断。

提示

CPU复位时,IE各位清0,禁止所有中断。

4. 中断优先级控制寄存器IP

MCS-51单片机中有两个中断优先级,中断优先级控制寄存器IP用来定义每个中断源的中断优先级。IP的结构、位名称、位地址以及控制的中断源如表4-5所示。

表4-5 IP的结构、位名称、位地址以及功能

IP的状态由用户来设定,某位为1,则相应的中断源处于高优先级中断;某位为0,则相应的中断源处于低优先级中断。

提示

单片机复位时,IP各位清0,各中断源处于低优先级中断。

MCS-51的中断处理过程

图4-3 中断处理过程

中断处理过程如图4-3所示,单片机工作时,在每个机器周期中都去查询各个中断标记位,如果某位是“1”,就说明有中断请求了;接下来需要判断中断请求是否满足响应条件;如果满足响应条件,CPU将进行相应的中断处理;中断处理完毕,进行中断返回,继续执行指令。

如果本次查询中没有中断请求或中断请求不能满足响应条件,CPU将继续原来的指令执行操作。

(一)中断响应

CPU检测到中断请求后,需要判断此中断请求是否满足响应条件,中断响应条件如下:

(1)CPU开中断,申请中断请求的中断源开中断。

(2)没有响应同级别或更高级别的中断。

提示

中断二级嵌套的响应原则:

① 同一中断优先级中,有多个中断请求时,按自然优先级进行响应(即查询顺序)。

② 当前进行的中断只能被高优先级的中断所打断(同级别或低优先级的中断请求不予响应)。

(3)当前处在所执行指令的最后一个周期。单片机有单周期指令、双周期指令、三周期指令和两个四周期指令,如果正在执行的是多字节指令,需要等整条指令执行结束,才能响应中断。

(4)如果正执行的指令是返回指令(RETI)或访问IP、IE寄存器的指令,那么CPU将至少再执行一条指令才能响应中断。

满足中断条件的情况下,CPU响应中断过程如下:

① 将IP中相应的优先级控制位置1,以阻断后来的同级和低级的中断请求。

② 撤销该中断源的中断请求标志,否则,中断返回后将重复响应该中断。

③ 保护断点地址,程序转向执行中断服务子程序。

提示

中断响应时间:

以外部中断0为例,INT0的引脚电平在每个机器周期的S5P2时刻经反相器锁存到TCON的IE0标志位,CPU在下一个机器周期查询新置入的IE0和IE1,满足相应条件,CPU将执行一条两个机器周期的长调用指令LCALL,由硬件将中断矢量地址装到PC中,使程序转入中断矢量入口。所以,从产生外部中断到中断执行,至少需要3个机器周期。

若正在处理的程序为RETI或访问IP,IE等,则额外等待的时间不会多于5个机器周期。所以外部中断的响应时间在3~8个机器周期之间。

(二)中断处理

中断处理过程一般可以分为保护现场、执行中断服务程序和恢复现场三个过程。

(1)保护现场

执行中断服务子程序之前,CPU只保护了一个地址(PC的值),如果主程序和中断服务子程序中都用到一些公共存储空间(如A、PSW和DPTR等),那么执行中断服务子程序前需要将这些数据保存起来,以免返回主程序时出现错误。

(2)执行中断服务程序

在MCS-51系列单片机中,五个中断源都有它们各自的中断入口地址。

:0003H

➢ T0: 000BH

:0013H

➢ T1: 001BH

➢ 串口中断: 0023H

可以看出,中断服务程序的存储空间很小,如果我们需要的程序超出了空间的限制,这时可以在中断处安排一条LJMP指令把中断服务程序跳转到其他地址。

提示

中断响应标志的清除:

CPU在响应中断请求后,该中断的中断请求在中断返回前应当清除,以免重复中断,被再次响应。

边沿触发的外部中断,定时器中断,均有硬件自动清除;串行口中断,需由软件清除;电平触发的外部中断需由外接触发器控制清除。

(3)恢复现场

恢复现场和保护现场相对,返回主程序前需要将保护现场过程中压入堆栈的相关数据弹出,以保证程序返回断点时能正确执行。

(三)中断返回

中断返回由中断返回指令RETI来实现。这条指令的功能是把断点地址从堆栈中弹出,送回到程序计数器PC;通知中断系统已完成中断处理,并同时清除优先级状态。

C51中断函数的定义

C51编译器支持在C源程序中直接开发中断过程,C51编译器及其对C语言的扩充允许编程者对中断所有方面的控制和寄存器组的使用。中断服务函数的完整语法如下:

函数的返回值 函数名([参数]) interrupt n [using m]

{

函数体;

}

关于函数的使用进行以下说明:

(1)对中断程序而言,函数的返回值和参数一般为void。

(2)interrupt n 中n的取值为0~31的常数,不允许用表达式,表示中断向量的编号。在8051中,一般0代表外部中断0,1代表定时器0,2代表外部中断1,3代表定时器1,4代表串行中断。

(3)using m 中m的取值为0~3的常数,不允许用表达式,表示内部RAM中的第r组工作寄存器。在调用中断函数时,要求中断过程调用的函数所使用的寄存器组必须与其相同。

下面我们看一个使用C51语言编写的中断程序。

【例】 设单片机的fosc=12MHz,要求用T0的方式1编程,在P1.0脚输出周期为2ms的方波。

用C语言编写的中断服务程序如下:

在编写中断服务程序时必须注意不能进行参数传递,不能有返回值。

单片机学习系列教程——《初识51单片机》

亲爱的朋友们,本周我们邀请嘉糖给我们讲解嵌入式学习系列教程,每天连载更新,学习过程中,有任何疑问,欢迎大家关注微信公众号ickeybbs提问。

什么是 51 单片机?

51单片机是对所有兼容Intel 8031指令系统的单片机的统称。51单片机是基础入门的一个单片机,51系列的单片机一般不具备自编程能力。

51单片机的功能

·8位CPU·4kbytes程序存储器(ROM) (52为8K)

·128bytes的数据存储器(RAM) (52有256bytes的RAM)

·32条I/O口线·111条指令,大部分为单字节指令

·21个专用寄存器

·2个可编程定时/计数器·5个中断源,2个优先级(52有6个)

·一个全双工串行通信口

·外部数据存储器寻址空间为64kB

·外部程序存储器寻址空间为64kB

·逻辑操作位寻址功能·双列直插40PinDIP封装

·单一+5V电源供电

CPU:由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器;

RAM:用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;

ROM:用以存放程序、一些原始数据和表格;

I/O口:四个8位并行I/O口,既可用作输入,也可用作输出

T/C:两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式;

五个中断源的中断控制系统;

一个全双工UART(通用异步接收发送器)的串行I/O口,用于实现单片机之间或单片机与微机之间的串行通信;

片内振荡器和时钟产生电路,石英晶体和微调电容需要外接。最佳振荡频率为6M—12M。

51单片机的时钟电路?

51单片机的时钟电路包括两部分,即芯片内的振荡器和芯片外跨接的晶振及负载电容器。

定时器计数器

定时器/计数器简称定时器,其作用主要包括产生各种时标间隔、记录外部事件的数量等,是微机中最常用、最基本的部件之一。803l单片机有2个16位的定时器/计数器:定时器0(T0)和定时器1(T1)。

T0由2个定时寄存器TH0和TL0构成,T1则由TH1和TL1构成,它们都分别映射在特殊功能寄存器中,从而可以通过对特殊功能寄存器中这些寄存器的读写来实现对这两个定时器的操作。作定时器时,每一个机器周期定时寄存器自动加l,所以定时器也可看作是计量机器周期的计数器。由于每个机器周期为12个时钟振荡周期,所以定时的分辨率是时钟振荡频率的1/12。作计数器时,只要在单片机外部引脚T0(或T1)有从1到0电平的负跳变,计数器就自动加1。计数的最高频率一般为振荡频率的l/24。

工作方式:

T0或T1无论用作定时器或计数器都有4种工作方式:方式0、方式1、方式2和方式3。除方式3外,T0和T1有完全相同的工作状态。下面以T1为例,分述各种工作方式的特点和用法。

1 、工作方式0

13位方式由TL1的低5位和TH1的8位构成13位计数器(TL1的高3位无效)。工作方式0的结构见下图:

图中,C/T为定时/计数选择:C/T=0,T1为定时器,定时信号为振荡周期12分频后的脉冲;C/T=l,T1为计数器,计数信号来自引脚T1的外部信号。

定时器T1能否启动工作,还受到了R1、GATE和引脚信号INT1的控制。由图中的逻辑电路可知,当GATE=0时,只要TR1=1就可打开控制门,使定时器工作;当GATE=1时,只有TR1=1且INT1=1,才可打开控制门。GATE,TR1,C/T的状态选择由定时器的控制寄存器TMOD,TCON中相应位状态确定,INT1则是外部引脚上的信号。

在一般的应用中,通常使GATE=0,从而由TRl的状态控制Tl的开闭:TRl=1,打开T1;TRl=0,关闭T1。在特殊的应用场合,例如利用定时器测量接于INT1引脚上的外部脉冲高电平的宽度时,可使GATE=1,TRl=1。当外部脉冲出现上升沿,亦即INT1由0变1电平时,启动T1定时,测量开始;一旦外部脉冲出现下降沿,亦即INT1由l变O时就关闭了T1。

定时器启动后,定时或计数脉冲加到TLl的低5位,从预先设置的初值(时间常数)开始不断增1。TL1计满后,向THl进位。当TL1和THl都计满之后,置位T1的定时器回零标志TFl,以此表明定时时间或计数次数已到,以供查询或在打开中断的条件下,可向CPU请求中断。如需进一步定时/计数,需用指令重置时间常数。

2 、工作方式1

16位方式。与工作方式0基本相同,区别仅在于工作方式1的计数器TL1和TH1组成16位计数器,从而比工作方式0有更宽的定时/计数范围。工作方式1的结构见下图。

3 、工作方式2

8位自动装入时间常数方式。由TLl构成8位计数器,THl仅用来存放时间常数。启动T1前,TLl和THl装入相同的时间常数,当TL1计满后,除定时器回零标志TFl置位,具有向CPU请求中断的条件外,THl中的时间常数还会自动地装入TLl,并重新开始定时或计数。所以,工作方式2是一种自动装入时间常数的8位计数器方式。由于这种方式不需要指令重装时间常数,因而操作方便,在允许的条件下,应尽量使用这种工作方式。当然,这种方式的定时/计数范围要小于方式0和方式1。工作方式2的结构见下图.

4 、工作方式3

2个8位方式。工作方式3只适用于定时器0。如果使定时器1为工作方式3,则定时器1将处于关闭状态。

当T0为工作方式3时,THo和TL0分成2个独立的8位计数器。其中,TL0既可用作定时器,又可用作计数器,并使用原T0的所有控制位及其定时器回零标志和中断源。TH0只能用作定时器,并使用T1的控制位TRl、回零标志TFl和中断源,见下图。

通常情况下,T0不运行于工作方式3,只有在T1处于工作方式2,并不要求中断的条件下才可能使用。这时,T1往往用作串行口波特率发生器(见1.4),TH0用作定时器,TL0作为定时器或计数器。所以,方式3是为了使单片机有1个独立的定时器/计数器、1个定时器以及1个串行口波特率发生器的应用场合而特地提供的。这时,可把定时器l用于工作方式2,把定时器0用于工作方式3。

下才可能使用。这时,T1往往用作串行口波特率发生器,TH0用作定时器,TL0作为定时器或计数器。所以,方式3是为了使单片机有1个独立的定时器/计数器、1个定时器以及1个串行口波特率发生器的应用场合而特地提供的。这时,可把定时器l用于工作方式2,把定时器0用于工作方式3。

控制寄存器

定时器/计数器T0和T1有2个控制寄存器-TMOD和TCON,它们分别用来设置各个定时器/计数器的工作方式,选择定时或计数功能,控制启动运行,以及作为运行状态的标志等。其中,TCON寄存器中另有4位用于中断系统。

1 、定时器方式控制寄存器TMOD

TMOD在特殊功能寄存器中,字节地址为89H,无位地址。TMOD的格式如下图年示。

由图可见,TMOD的高4位用于T1,低4使用于T0,4种符号的含义如下:

GATE:门控制位。其作用见图1.6。GATE和软件控制位TR、外部引脚信号INT的状态,共同控制定时器/计数器的打开或关闭。

C/T:定时器/计数器选择位。C/T=1,为计数器方式;C/T=0,为定时器方式。

M1M0:工作方式选择位,定时器/计数器的4种工作方式由M1M0设定。

M1M0=00:工作方式0(13位方式)。

M1M0=01:工作方式1(16位方式)。

M1M0=10:工作方式2(8位自动装入时间常数方式)。

MlM0=11:工作方式3(2个8位方式--仅对T0)。

2. 定时器控制寄存器--TCON

TCON在特殊功能寄存器中,字节地址为88H,位地址(由低位到高位)为88H一8FH,由于有位地址,十分便于进行位操作。

TCON的格式如下图所示。其中,TFl,TRl,TF0和TR0位用于定时器/计数器;IEl,ITl,IEo和IT0位用于中断系统。

TFl,TRl用于定时器T1;TF0,TR0用于定时器T0。两组符号有相同的含义。

TF:定时器/计数器中断请求标志位。当定时器计满回零时,TF=1,并可申请中断;当CPU响应中断并进入中断服务程序后,TF自动清零。如对TF查询,定时器回零后,要用指令将TF清零。

TR:定时器/计数器开闭控制位。

IEl,ITl用于外部中断1(1NTl);IE0,IT0用于外部中断0(1NT0)。两组符号的含义相同。

IT:下跳沿/低电平引起外部中断请求的选择位。IT=1,由下跳沿引起;IT=0,由低电平引起。

IE:外部中断的中断申请标志。IE=0,表明无外部中断请求;IE=1,表明有外部中断请求。当有外部中断请求时,IE自动为1,单片机CPU响应此中断后,IE自动清零。

先要有一个定时器的函数声明对TH0定时器的高八位低八位附初值。

然后打开总中断,和启用定时器。

8051单片机提供5个中断请求源,具有2个中断优先级,可实现两级中断服务程序嵌套,由片内特殊功能寄存器中的中断允许寄存器IE控制CPU是否响应中断请求;由中断优先级寄存器IP安排各中断源的优先级,同一优先级内各中断同时提出中断请求时,由内部的查询逻辑确定其响应次序。用户可以用关中断指令(或复位)来屏蔽所有的中断请求,也可以用开中断指令使CPU接收中断请求。每一个中断源可以用软件独立地控制为开中断或关中断状态;每一个中断源的中断级别均可用软件设置

MCS-51提供了五个中断源,其中两个外部中断源,由INT0、INT1引脚输入;两个为片内的定时/计数器T0、T1溢出时产生的中断请求TF0、TF1;一个片内串行口的发送中断TI或接收中断RI。

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

以下是给初学者的一点个人建议!

作为一个初学者,如何单片机入门?

首先把C 语言学好是必须的,51单片机编程对C 语言还是有一定的要求。

然后要把电路搞懂,学会看原理图,会画简单的电路图,51单片机对原理图要求不是很高,只要用心很快就能理解。

个人觉得,你在学51时,不要着急着去敲代码,先看它的资料文档,建议看官方的资料,看datasheeed,看它的管脚定义,单片机的使用比较简单,通俗的说就是给高低电平去控制即可。

了解了51的特性,知道它能干嘛之后,先从最简单的点亮LED 开始。不过这里要求你能后灵活快速的在进制数值之间转换,给1或者0去控制LED 。通过第一个小项目,你应该对它有一点了解了,这时可以做流水灯,数码管之类的东西了。

几个玩意下来,该学它的定时器和中断了,个人觉得这个是玩51最重要的,没有这两个,基本玩不出什么花样。这里就不详细说它们的原理了,基本走下来就完了吧,这时候玩一些小项目,得靠自己了。比如智能小车,蓝牙小车,远程控制系统等等。

本文属于原创,如需转载,请联系微信公众号 ickeybbs ,最新电子行业资讯、教程以及开发板样片申请,请关注“云汉电子社区”官方微信公众号ickeybbs

相关问答

51单片机ip 值怎么设置?

1:51单片机ip值怎么设置51单片机的IP值设置是通过软件编程方式实现的。1.首先,要明确的是,IP值是用于网络通信的地址信息,它标识了设备在网络中的唯一位置。...

51单片机 怎么区分内外部中断引脚?

五个中断有指定的IO口,一般51单片机是P3.2是INT0,P3.3是INT1,P3.4是T0,P3.5是T1,INT0和INT1是外部中断,T0和T1是定时器,ES是串行口中断允许位,ET1是定时....

51单片机 能设置几个优先级别?同一级别的中断源同时发出中断请求,CPU先响应哪一个?怎么确定?

51单片机有2个优先级,高优先级和低优先级,由IP(中断优先级寄存器)确定,对应位为1是高,为0是低。同一级别的中断源同时发出中断请求,则按自然优先级先后来响...

如果说C语言的灵魂在于指针,那么 单片机 的灵魂在于什么(以 51单片机 为例)?

提到数据存储器,它其实是个可以随时存取数据的一块存储器,也就是可以读(取)也可以写(存)的存储器,简称RAM.现在的单片机里面使用的RAM属于静态RAM或S...当我们学...

51单片机 特殊功能寄存器有多少?

8051单片机内部有21个特殊功能寄存器,在物理上是分散在片内各功能部件中,在数学上把它们组织在内部数据存储器地址空间80H~FFH中,以便能使用统一的直接寻址方...

51单片机 内部的中源优先级处理原则?

51单片机内部的中断优先级处理原则是根据中断的优先级来确定中断的响应顺序。优先级高的中断会打断正在执行的低优先级中断或者主程序,优先执行高优先级中断的...

MCS- 51 系列 单片机 的中断系统分为几个优先级?如何设定?

MCS-51单片机有两个中断优先级。在51单片机中,有2个可编程定时/计数器·5个中断源,2个优先级,21个专用寄存器。另有8位CPU的4kbytes程序存储器(ROM),128byt...

MCS 51单片机 的中断优先级别由什么决定?

MCS51首先中断分为1:外部中断0(int0管角)IE02:timer0中断...MCS51首先中断分为1:外部中断0(int0管角)IE...

51单片机 t0t1由哪些寄存器组成?

51单片机定时器T0和T1的结构类似,都是由高低位两个寄存器组成,即TH0/TL0组成T0,TH1/TL1组成T1。T0和T1本身的工作机理很简单,都是高低位寄存器联合组成一个1...

简述mcs 51单片机 的中断系统结构?

8051有两个外部中断源。内部三个:两个定时器/计数器中断源和一个串行口中断源中断系统主要有中断允许控制器IE和中断优先级控制器IP等电路组成8051有两个外...

猜你喜欢