深圳单片机开发网---专业提供单片机开发 培训 开发工具销售
51 单片机中断系统详解
8031 单片机的中断系统简单实用,其基本特点是:有 5 个固定的可屏
蔽中断源,3 个在片内,2 个在片外,它们在程序存储器中各有固定的
中断入口地址,由此进入中断服务程序;5 个中断源有两级中断优先级,
可形成中断嵌套;2 个特殊功能寄存器用于中断控制和条件设置的 编
程。
中断系统的结构:
5 个中断源的符号、名称及产生的条件如下。
INT0:外部中断 0,由 P3.2 端口线引入,低电平或下跳沿引起。
INT1:外部中断 1,由 P3.3 端口线引入,低电平或下跳沿引起。
T0:定时器/计数器 0 中断,由 T0 计满回零引起。
T1:定时器/计数器 l 中断,由 T1 计满回零引起。
TI/RI:串行 I/O 中断,串行端口完成一帧字符发送/接收后引起。
整个中断系统的结构框图见下图一所示。
深圳单片机开发网---专业提供单片机开发 培训 开发工具销售
由图一可见,外部中断有下跳沿引起和低电平引起的选择;串行中断有
发送(TI)相接收(R1)的区别;各个中断源打开与否,受中断自身的允许
位和全局允许位的控制,并具有高优先级和低优先级的选择。
中断系统的控制寄存器:
中断系统有两个控制寄存器 IE 和 IP,它们分别用来设定各个中断源的
打开/关闭和中断优先级。此外,在 TCON 中另有 4 位用于选择引起外
部中断的条件并作为标志位。
1.中断允许寄存器--IE
IE 在特殊功能寄存器中,字节地址为 A8H,位地址(由低位到高位)分别
是 A8H-AFH。
IE 用来打开或关断各中断源的中断请求,基本格式如下图二所示:
深圳单片机开发网---专业提供单片机开发 培训 开发工具销售
EA:全局中断允许位。EA=0,关闭全部中断;EA=1,打开全局中断控
制,在此条件下,由各个中断控制位确定相应中断的打开或关闭。
×:无效位。
ES:串行 I/O 中断允许位。ES=1,打开串行 I/O 中断;ES=0,关闭
串行 I/O 中断。
ETl;定时器/计数器 1 中断允许位。ETl=1,打开 T1 中断;ETl=O,
关闭 T1 中断。
EXl:外部中断 l 中断允许位。EXl=1,打开 INT1;EXl=0,关闭 INT1。
ET0:定时器/计数器 0 中断允许位。ET0=1,打开 T0 中断;ET0=0,
关闭 TO 中断。
EXO:外部中断 0 中断允许位。Ex0=1,打开 INT0;EX0=0,关闭 INT0.
中断优先寄存器--IP:
IP 在特殊功能寄存器中,字节地址为 B8H,位地址(由低位到高位)分别
是 B8H 一 BFH,IP 用来设定各个中断源属于两级中断中的哪一级,IP 的
基本格式如下图三所示:
深圳单片机开发网---专业提供单片机开发 培训 开发工具销售
×:无效位。
PS:串行 I/O 中断优先级控制位。PS=1,高优先级;PS=0,低优先
级。
PTl:定时器/计数器 1 中断优先级控制位。PTl=1,高优先级;PTl
=0,低优先级。
Pxl:外部中断 1 中断优先级控制位。Pxl=1,高优先级;PXl=O,低
优先级。
PT0:定时器/计数器 o 中断优先级控制位。PT0=1,高优先级;PTO
=0,低优先级。
Px0:外部中断 0 中断优先级控制位。Px0=1,高优先级;Px0=0,伤
优先级。
在 MCS-51 单片机系列中,高级中断能够打断低级中断以形成中断嵌套;
同级中断之间,或低级对高级中断则不能形成中断嵌套。若几个同级中
断同时向 CPU 请求中断响应,则 CPU 按如下顺序确定响应的先后顺序:
INT0 一 T0---INT1 一 T1 一 RI/T1.
中断的响应过程
深圳单片机开发网---专业提供单片机开发 培训 开发工具销售
若某个中断源通过编程设置,处于被打开的状态,并满足中断响应的条
件,而且①当前正在执行的那条指令已被执行完
1、当前末响应同级或高级中断
2、不是在操作 IE,IP 中断控制寄存器或执行 REH 指令则单片机响应此
中断。
在 正常的情况下,从中断请求信号有效开始,到中断得到响应,通常
需要 3 个机器周期到 8 个机器周期。中断得到响应后,自动清除中断请
求标志(对串行 I/O 端口 的中断标志,要用软件清除),将断点即程序
计数器之值(PC)压入堆栈(以备恢复用);然后把相应的中断入口地址装
入 PC,使程序转入到相应的中断服务程 序中去执行。
各个中断源在程序存储器中的中断入口地址如下:
中断源 入口地址
INT0(外部中断 0) 0003H
TF0(TO 中断) 000BH
INT1(外部中断 1) 0013H
TFl(T1 中断) 001BH
RI/TI(串行口中断) 0023H
由于各个中断入口地址相隔甚近,不便于存放各个较长的中断服务程
序,故通常在中断入口地址开始的二三个单元中,安排一条转移类指令,
以转入到安排在那儿的中断服务程序。以 T1 中断为例,其过程下如图
四所示。
由 于 5 个中断源各有其中断请求标志 0,TF0,IEl,TFl 以及 RI/TI,
深圳单片机开发网---专业提供单片机开发 培训 开发工具销售
在中断源满足中断请求的条件下,各标志自动置 1,以向 CPU 请求中断。
如果某 一中断源提出中断请求后,CPU 不能立即响应,只要该中断请
求标志不被软件人为清除,中断请求的状态就将一直保持,直到 CPU 响
应了中断为止,对串行口中 断而言,这一过程与其它 4 个中断的不同之
处在于;即使 CPU 响应了中断,其中断标志 RI/TI 也不会自动清零,
必须在中断服务程序中设置清除 RI/TI 的 指令后,才会再一次地提出
中断请求。
CPU 的现场保护和恢复必须由被响应的相应中断服务程序去完成,当执
行 RETI 中断返回指令后,断点值自动从栈顶 2 字节弹出,并装入 PC 寄
存器,使 CPU 继续执行被打断了的程序。
下面给出一个应用定时器中断的实例。
现要求编制一段程序,使 P1.0 端口线上输出周期为 2ms 的方波脉冲。
设单片机晶振频率
Fosc=6MHZ.
1、方法:利用定时器 T0 作 1ms 定时,达到定时值后引起中断,在中断
服务程序中,使 P1.0 的状态取一次反,并再次定时 1ms。
2、定时初值:机器周期 MC=12/fosc=2us。所以定时 lms 所需的机器
周期个数为 500D,亦即 0lF4H。设 T0 为工作方式 1(16 位方式),则定
时初值是(01F4H)求补=FEOCH
深圳单片机开发网---专业提供单片机开发 培训 开发工具销售
START: MOV TMOD,#01H ;T0 为定时器状态,工作方式 1
MOV TL0,#0CH ;T0 的低位定时初值
MOV TH0,#0FEH ;T0 的高位定时初值
MOV TCON,#10H ;打开 T0
SETB ET0 ;1ET0,即允许 T0 中断
SETB EA ;1EA,即充许全局中断
AJMP $ ;动态暂存
000BH: AJMP IST0 ;转入 T0 中断服务程序入口地址IST0
IST0: MOV TL0,#0CH ;重置定时器初值
MOV TH0,#0FEH ;重置定时器初值
CPL P1.0 ;P1.0 取反
RET1 ;中断返回
串行端口的控制寄存器:
串行端口共有 2 个控制寄存器 SCON 和 PCON,用以设置串行端口的工作
方式、接收/发送的运行状态、接收/发送数据的特征、波特率的大小,
以及作为运行的中断标志等。
①串行口控制寄存器 SCON
深圳单片机开发网---专业提供单片机开发 培训 开发工具销售
SCON 的字节地址是98H,位地址(由低位到高位)分别是 98H一 9FH。SCON
的格式如图五所示。
SMo,SMl:
串行口工作方式控制位。
00--方式 0;01--方式 1;
10--方式 2;11--方式 3。
SM2:
仅用于方式 2 和方式 3 的多机通讯控制位
发送机 SM2=1(要求程控设置)。
当为方式 2 或方式 3 时:
接收机 SM2=1 时,若 RB8=1,可引起串行接收中断;若 RB8=0,不
引起串行接收中断。SM2=0 时,若 RB8=1,可引起串行接收中断;若
RB8=0,亦可引起串行接收中断。
REN:
串行接收允许位。
0--禁止接收;1--允许接收。
TB8:
深圳单片机开发网---专业提供单片机开发 培训 开发工具销售
在方式 2,3 中,TB8 是发送机要发送的第 9 位数据。
RB8:
在方式 2,3 中,RB8 是接收机接收到的第 9 位数据,该数据正好来自
发
送机的 TB8。
TI:
发送中断标志位。发送前必须用软件清零,发送过程中 TI 保持零电平,
发送完一帧数据后,由硬件自动置 1。如要再发送,必须用软件再清零。
RI:
接收中断标志位。接收前,必须用软件清零,接收过程中 RI 保持零电
平,接收完一帧数据后,由片内硬件自动置 1。如要再接收,必须用软
件
再清零。
电源控制寄存器 PCON
PCON 的字节地址为 87H,无位地址,PCON 的格式如图六所示。需指出
的是,对 80C31 单片机而言,PCON 还有几位有效控制位。
SMOD:波特率加倍位。在计算串行方式 1,2,3 的波特率时;0---不加
倍;1---加倍。
深圳单片机开发网---专业提供单片机开发 培训 开发工具销售
串行中断的应用特点:
8031 单片机的串行 I/O 端口是一个中断源,有两个中断标志 RI 和 TI,
RI 用于接收,TI 用于发送。
串行端口无论在何种工作方式下,发送/接收前都必须对 TI/RI 清零。
当一帧数据发送/接收完后,TI/RI 自动置 1,如要再发送/接收,必
须先用软件将其清除。
在串行中断被打开的条件下,对方式 0 和方式 1 来说,一帧数据发送/
接收完后,除置位 TI/RI 外,还会引起串行中断请求,并执行串行中
侧目务程序。但对方式 2 和方式 3 的接收机而言,还要视 SM2 和 RB8 的
状态,才可确定 RI 是否被置位以及串行中断的开放:
SM2 RB8 接收机中断标志与中断状态
0 1 激活 RI,引起中断
1 0 不激活 RI,不引起中断
1 1 激活 RI,引起中断
单片机正是利用方式 2,3 的这一特点,实现多机间的通信。串行端口
的常用应用方法见相关章节。
波特率的确定:
对方式 0 来说,波特率已固定成 fosc/12,随着外部晶振的频率不同,
波特率亦不相同。常用的 fosc 有 12MHz 和 6MHz,所以波特率相应为
1000×103 和 500×103 位/s。在此方式下,数据将自动地按固定的波
特率发送/接收,完全不用设置。
深圳单片机开发网---专业提供单片机开发 培训 开发工具销售
对方式 2 而言,波特率的计算式为 2SMOD·fosc/64。当 SMOD=0 时,
波特率为 fm/64;当 SMOD=1 时,波特率为 fosc/32。在此方式下,
程控设置 SMOD 位的状态后,波特率就确定了,不需要再作其它设置。
对方式 1 和方式 3 来说,波特率的计算式为 2SMOD/32×T1 溢出率,根
据 SMOD 状态位的不同,波特率有 Tl/32 溢出率和 T1/16 溢出率两种。
由于 T1 溢出率的设置是方便的,因而波特率的选择将十分灵活。
前已叙及,定时器 Tl 有 4 种工作方式,为了得到其溢出率,而又不必
进入中断服务程序,往往使 T1 设置在工作方式 2 的运行状态,也就是
8 位自动加入时间常数的方式。由于在这种方式下,T1 的溢出率(次/
秒)计算式可表达成:
下面一段主程序和中断服务程序,是利用串行方式 l 从数据 00H 开始连
续不断增大地串行发送一片数据的程序例。设单片机晶振的频率为
6MHZ,波特率为 1200 位/秒。
ORG 2000H ;1200 位/秒的定时器初值
MOV TL1,#0F3H
深圳单片机开发网---专业提供单片机开发 培训 开发工具销售
MOV TH1,#0F3H ;使 SMOD=0
MOV PCON,#00H ;T1 方式 2
MOV TMOD,#20H
SETB EA
CLR ET1 ;关闭 T1 中断
SETB ES ;开串行中断
SETB TR1 ;开 T1 定时
MOV SCON,#40H ;串行方式 1
CLR A
MOV SBUF,A ;串行发送
JNB T1,$ ;等待发送完
CLR T1, ;清标志
SJMP $
ORG 0023H ;串行中断入口地址
MOV SBUF,A ;连续发送
JNB T1,$
INC A
CLR T1
RET1 ;中断返回
本文档为【51单片机中断系统详解】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。