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语言编写的中断服务程序如下:
在编写中断服务程序时必须注意不能进行参数传递,不能有返回值。
《单片机汇编考试宝典(第二版))》小知识点汇总一
配合《单片机汇编考试宝典(第二版))》视频教程学习
小知识点补充29:简述汇编语言中的标号有什么规定答:(1)标号由 1—8 字符组成,头一个字符必须是字母。(2)不能使用汇编语言已定义的符号。(3)标号后必须跟冒号:(4)同一标号在一个程序中只能定义一次。小知识点补充30:1,A/D 转换器转换数据的传送有几种方式答:(1)定时传送方式: A/D启动后,调用延时时间大于转换时间的延时程序后即可读取。(2)查询方式: A/D 启动后,查询 EOC(转换结束信号),转换一完成即可读取转换数据。(3)中断方式:将 EOC作为外中断请求信号,转换一结束,即引起中断,读取转换数据。2, MCS-51单片机系统 I/O 端口编址方式有哪几种?分别对其进行简要描述:答:I/O 端口编址两种方式:独立编址与统一编址。1)独立编址方式: I/O 寄存器地址空间和存储器地址空间分开编址,但需一套专门的读写 I/O 的指令和控制信号。2)统一编址方式: I/O 寄存器与数据存储器单元同等对待,统一编址。不需要专门的 I/O 指令,直接使用访问数据存储器的指令进行 I/O 操作,简单、方便且功能强。MCS-51使用统一编址的方式,每一接口芯片中的一个功能寄存器(端口)的地址就相当于一个 RAM单元。
小知识点补充47简述在使用普通按键的时候,为什么要进行去抖动处理,如何处理?答:键抖动会引起一次按键被误读多次。为了确保 CPU 对键的一次闭合仅做一次处理,必须去除键抖动。在键闭合稳定时,读取键的状态,并且必须判别;在键释放稳定后,再作处理。按键的抖动,可用硬件或软件两种方法消除,一般使用软件消抖,延时20毫秒左右
1,8051单片机的定时器 T1用作计数方式时计数脉冲是由 T1(P3.5)输入2,8051 单片机的机器周期为1.5μs, 则其晶振频率 fosc为8MHz3,用 8051 的定时器,若用软启动,应使 TOMD中的GATE位置 04,MCS-51单片机在同一级别里除 INT0 外,级别最高的中断源是定时器 T05,用8051的定时器T0 定时,用模式 2,则应启动T0前向TH0、TL0置入相同的计数初值,以后不再置入6,MCS-51单片机定时器 T0的溢出标志 TF0,若计满数在 CPU响应中断后由硬件清零7,8051响应中断后,中断的一般处理过程是关中断,保护现场,开中断,中断服务,关中断,恢复现场,开中断,中断返回8,执行中断处理程序最后一句指令 RETI后程序返回到响应中断时一句的下一句9,MCS-51单片机响应中断矢量地址是中断服务程序的入口地址10,ADC 0809芯片是 m路模拟输入的 n 位 A/D转换器, m=8,n=811,当 DAC 0832 D/A转换器的 CS接 8031 的 P2.0 时,程序中 0832 的地址指针DPTR寄存器应置为:0832H或FE00H或FEF8H等12,8051的定时 /计数器 T0 的有几种工作模式,对各工作模式作简单的叙述:答: 定时/计数器 T0 的模式 : 0:13 位计数器;1:16 位计数器;2:8 位循环计数器;3:2 个独立的 8 位计数器 串行通信模式13,8051的串行通信的有几种工作模式,请对各工作模式作简单的叙述:答:串行通信共有 4 种工作模式 ,分别是:模式 0:同步移位寄存器;模式 1:波特率可变的8位两机异步通信;模式 2:波特率固定的9位可多机的异步通信;模式 3:波特率可变的9位可多机的异步通信
口线 第二功能信号 第二功能信号名称P3.0 RXD 串行数据接收P3.1 TXD 串行数据发送P3.2 INT0 外部中断 0 申请P3.3 INT1 外部中断 1 申请P3.4 T0 定时器 /计数器 0 P3.5 T1 定时器 /计数器 1 P3.6 WR 外部 RAM 写选通P3.7 RD 外部 RAM 读选通
***(伪指令)***ORG 指明程序的开始位置DB 定义数据表DW 定义16位的地址表EQU 给一个表达式或一个字符串起名DATA 给一个8位的内部RAM起名XDATA 给一个8位的外部RAM起名BIT 给一个可位寻址的位单元起名END 指出源程序到此为止
4,三极管有几种工作状态?答案:导通,饱和,截止
小知识点补充28:. 简述变址寻址方式并举例说明:答:(1)变址寻址是以 DPTR或 PC作基址寄存器,累加器 A作变址寄存器以两者内容相加形式的 16 位地址作为操作数地址。(2)变址寻址只能对移定存储器寻址,其指令只有三条: MOVC A,@A+DPTR MOVC A,@A+PC JMP @A+DPTR
小知识点补充26:MCS-51单片机系统中, 外接程序存储器和数据存储器公用 16 位地址线和 8 位数据线,为什么不会发生冲突?答:因为 MCS-51单片机访问外部程序存储器用的指令是 MOVC,控制线为 PSEN,而访问外部数据存储器时,使用的指令是 MOVX,有效的控制信号是 RD ,WR。所以不会发生冲突小知识点补充27:简述动态显示与静态显示的区别及优缺点答:静态显示 :就是当显示器显示某一个字符时, 相应的发光二极管恒定的导通或截止。这种显示方式每一位都需要有一个 8 位输出口控制, 亮度大,耗电也大。需要的 I/O 端口较多,如四个七段数码管需要 32 根口线,适用于显示位数较少的场合。但编程简单。**动态显示:**就是一位一位地轮流点亮显示器各个位(扫描) ,对于显示器的每一位来说,每隔一段时间点亮一次。 利用人的视觉暂留功能可以看到整个显示,但必须保证扫描速度足够快, 字符才不闪烁。将各显示器的段码同名端边在一起,用一个 I/O 端口驱动;位码用另一个 I/O 端口分别控制。如四个七段数码管只需要 11 根口线。编程较复杂
1,两位十六进制数最多可以表示 256 个存储单元2,89C51是 ATMEL公司的产品3,MCS-51系列单片机,属于哈佛结构体系体系结构。 哈佛结构是一种将程序指令存储和数据存储分开的存储器结构。中央处理器首先到程序指令存储器中读取程序指令内容,解码后得到数据地址,再到相应的数据存储器中读取数据,并进行下一步的操作(通常是执行)4,在 89C51 中,一个机器周期包括 12 个振荡周期,而每条指令都由一个或几个机器周期组成,分别有单周期指令、双周期指令和4 周期指令5,在 89C51 中,有两种方式可使单片机退出空闲模式,方法一是: 任何的中断请求被响应,方法二是: 硬件复位,而只有 硬件复位 方式才能让进入掉电模式的单片机退出掉电模式6,串行通信中,为使设备同步工作,需要通信双方有两个共同的要求,一是: 通信双方必须采用统一的编码方式 ,二是: 通信双方必须能产生相同的传送速率 7,设 89C51 的晶振频率为 11.0592MHz,选用定时器 T 工作模式 2 作波特率发生器,波特率为2400b/s,且 SMOD 置 0,则定时器的初值为 F4H8,键盘可分为 独立连接 式和 行列(矩阵) 式两类9.键盘可分为 编码 式和 非编码 式两类10,LED 数码管有 静态 显示和 动态 显示两种方式
1,在变址寻址(基址寄存器+变址寄存器间接寻址)中,以累加器A作为变址寄存器,以DPTR或PC作为基址寄存器2,串行口扩展并行口时,串口工作在方式03,51单片机并行I/O口信息有读I/O口和读锁存器两种方式,读改写操作是针对并行口中的锁存器进行的4,在中断服务程序中,至少有一条中断返回指令5,定时器1有**三**种工作模式6,定时器0工作在方式3时,分为两个独立的8位计数器,且TH0占用T1的状态控制位TR1和TF1(此时T0不能作为外部计数模式)7,设 MCS-51单片机晶振频率为 12MHz,定时器作计数器使用时,其最高的输入计数频率为 500KHz8,主程序中调用子程序后返回主程序,堆栈指针 SP的值不变9,单片机中使用 MOVX A,@R1指令, C与 P2口配合能寻址数据存储器 1111H单元(前文有专门的例题讲解)10,下列指令判断若 P1 口最低位为高电平就转 L00P,否则就执行下一句的是JB P1.0 ,L00P11,MCS-51单片机在执行 MOVX A,@DPTR指令时,其寻址单元的地址是由P0口送低 8 位,P2口送高 8 位12,使累加器 A的最高位置 1 的是:ORL A,#80H13,使 R0的最高位置 0 的是:ANL R0,#7FH14,使 R1的最高位取反的是XRL R1,#80H15,MCS-51指令系统中,格式为: ORG 16位地址 的指令功能是用来定义汇编程序的起始地址16,指令 ANL A,R0的功能是:将 A与寄存器 R0的内部容按位逻辑与17,LJMP跳转空间最大可达到:64KB18,在编程中使用伪指令的目的是指示和引导汇编程序进行汇编19,8051单片机的定时器 T1用作定时方式时是由内部时钟频率定时,一个机器周期加120,8051单片机的定时器 T0用作计数方式时是由外部计数脉冲计数,下降沿加1
例题:MCS-51指令系统中,执行下列程序后,程序计数器 PC的内容为: ORG 000H MOV DPDR,#1000 MOV A , #00H MOV 20H ,A LJMP 1500 END答案:(PC)=1500
一,小问:1,输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。2,START上升沿将逐次逼近寄存器复位。下降沿启动 A/D转换,之后EOC输出信号变低,指示转换正在进行,直到A/D转换完成。3,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。4,当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。
三,小问: ORG 0000H AJMP START ORG 0050HSTART: MOV SP,#66H MOV R7,#05H MOV R6,#04H MOV R0,#30H MOV DPTR,#0FEF8HL0: ACALL ADC0809 MOV @R0,A INC R0 DJNZ R7,L0 MOV R7,#05H INC DPTR ;0FEF9H DJNZ R6,L0 SJMP $ ORG 006AHADC0809: CLR A MOVX @DPTR,A ;WR=0 MOV R5,#10DELAY: NOP NOP NOP DJNZ R5,DELAY SETB P3.3 ;IO读取,首先写个1 JB P3.3,$ MOVX A,@DPTR RET END
相关问答
单片机 程序中 TF0 是什么意思? 定时器T0溢出中断 - 专业提问师...定时器/计数器0的溢出中断标志位当T0从初值开始加一计数到产生溢出时,由硬件使TF0置1,直到CPU响应中断由硬件复位定时器0溢出标志
51 单片机 中断tf1与 tf0 的区别?这里TF、TR、IE、IT后面跟的0和1是对单片机寄存器中位的命名,因为有两个定时/计数器、两个中断,所以用0、1来区分。各位的定义如下:TF1、TF0:分别是定时器1...
单片机 程序编写中。THO TFO TLO这些分别代表什么?TH0,代表定时/计数器0的高八位TL0,代表定时/计数器0的低8位TF0,代表定时/计数器0的溢出标志TH0,代表定时/计数器0的高八位TL0,代表定时/计数器0的低8...
单片机 什么叫软件清零?软件清零,就是需要你的程序来完成清零,你说的应该是单片机中断标志位吧,假如发生中断时,TF0=1(TF0位中断标志位),当你执行中断程序时,你需要写一句程序:...软...
TR0等于1什么意思?TR0是51单片机定时器T0的定时器启动位。TR0=1表示开启定时器(在EA打开的前提下)。EA是51单片机的总中断开关,所有中断都必须先使EA=1。51单片机中的定...
单片机 片内ram20h单元的最低地址为何值21个SFRACC累加器B用于辅助累加器做某些运算的寄存器PSW程序状态字其中最高位是进/借位标志C;PSW.6是辅助进位标志AC,用于标识加减运算中低...
单片机 的中断源如何清零中断请求源:(1)外部中断请求源:即外中断0和1,经由外部引脚引入的,在单片机上有两个引脚,名称为INT0、INT1,也就是P3.2、P3.3这两个引脚。在内部的T...
【设振荡频率为12MHz,如果用定时/计数器T0产生周期为100ms的...[回答]查询方式和中断方式都可以实现!解释如下:由于振荡频率为12MHz,如果按常规标准的12分频的51系列单片机算的话,一个机器周期就是1uS.定时器/计数器数...
单片机 12m如何产生40k频率当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频时,压电晶片将会发生共振,并带动共振板振动,便产生超声波。...采用AT89C51或AT89S51单片...
定时器在 单片机 中程序的运行过程 - yn4Wk5LPWx 的回答 - 懂得我觉得是这样的,单片机的定时器,它的计数过程是相当于电脑里面一个后台运行的东东一样。在计数时单片机同时在执行其他程序,计数周期就是单片机的一...