中断系统的控制寄存器及中断程序举例
中断系统有两个控制寄存器IE和IP,它们分别用来设定各个中断源的打开/关闭和中断优先级 。此外,在TCON中另有4位用于选择引起外部中断的条件并作为标志位 。
1.中断允许寄存器--IE
IE在特殊功能寄存器中,字节地址为A8H,位地址(由低位到高位)分别是A8H-AFH 。
IE用来打开或关断各中断源的中断请求,基本格式如下图二所示:
图片1
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的基本格式如下图三所示:
图片1
×:无效位 。
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
图片1
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中断服务程序入口地址IST0IST0:MOV TL0,#0CH;重置定时器初值
MOV TH0,#0FEH;重置定时器初值
CPL P1.0;P1.0取反
RET1;中断返回
串行端口的控制寄存器:
串行端口共有2个控制寄存器SCON和PCON,用以设置串行端口的工作方式、接收/发送的运行状态、接收/发送数据的特征、波特率的大小,以及作为运行的中断标志等 。
①串行口控制寄存器SCON
SCON的字节地址是98H,位地址(由低位到高位)分别是98H一9FH 。SCON的格式如图五所示 。
图片1
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的溢出率(次/秒)计算式可表达成:
图片1
下面一段主程序和中断服务程序,是利用串行方式l从数据00H开始连续不断增大地串行发送一片数据的程序例 。设单片机晶振的频率为6MHZ,波特率为1200位/秒 。
ORG 2000H;1200位/秒的定时器初值MOV TL1,#0F3H
MOV TH1,#0F3H;使SMOD=0MOV PCON,#00H;T1方式2MOV TMOD,#20H
SETB EA
CLR ET1;关闭T1中断SETB ES;开串行中断SETB TR1;开T1定时MOV SCON,#40H;串行方式1CLR A
MOV SBUF,A;串行发送JNB T1,$;等待发送完CLR T1,;清标志SJMP $
ORG 0023H;串行中断入口地址MOV SBUF,A;连续发送JNB T1,$
INC A
CLR T1
RET1;中断返回【中断系统的控制寄存器及中断程序举例】
推荐阅读
- 卫生间需要门吸吗 卫生间门吸如何选购
- 卫生间装修合同怎么写?卫生间装修合同样本
- 卫生间风水禁忌 镜子和马桶的摆放
- 超实用的日本太太卫生间收纳方法, 简直绝了!
- 卫生间装修最易被忽略的细节
- 卫生间隔断门的选择和隔断注意事项
- 厨房与卫生间瓷砖的吸水要求
- 卫生间装修10个非常关键的细节!
- 小户型客厅沙发怎么摆放 小户型客厅沙发摆放的五种方法
- 开关插座的尺寸 开关插座的安装位置