(一)MCS-51中断系统的控制寄存器
定时器/计数器控制寄存器TCON(地址是88H,可以按位寻址) D7 D6 TF1 D5 TF0 D4 D3 IE1 D2 IT1 D1 IE0 D0 IT0 · IE1/IE0:外部边沿触发中断请求标志,其功能和操作类似于TF0。
· IT1/IT0:外部中断类型控制位,通过软件设置或清除,用于控制外中断的触发信号类型。IT1=1是边沿触发,IT=0是电平触发。
·SCON是串行口控制寄存器,地址为98H,低二位是串行口的发送/接收中断标志:
· TI:MCS-51串行口的发送中断标志,在串行口以方式0发送时,发送完8位数据,由硬件置位。但是CPU响应中断请求后,必须有“CLR TI”或“ANL SCON, #0FDH”等指令来清零TI。
· RI:串行口接收中断标志,若串行口接收器允许接收,并以方式0工作,每当接收到8位数据时,RI被置1,若以方式1、2、3方式工作,当接收到半个停止位时,TI被置1表示串口接收器正向CPU申请中断。同样RI标志由用户的软件清“0”
中断允许寄存器IE(地址为A8H,可以按位寻址)
D7 EA D6 D5 D4 ES D3 ET1 D2 EX1 D1 ET0 D0 EX0 · EA:中断总控制位,EA=1,CPU开放中断。EA=0,CPU禁止所有中断
· ES:串行口中断控制位,ES=1允许串行口中断,ES=0,屏蔽串行口中断。
.专业.专注.
· ET1/0:定时/计数器T1中断控制位。ET1为1允许T1中断,为0禁止T1中断。
· EX1/0:外中断1中断控制位,EX1为1允许外中断1中断,为0禁止中断。
中断优先级寄存器IP
8051单片机有高/低优先级两个中断优先级,每个中断源都可以编程为高优先级和低优先级。两级中断通过使用IP寄存器设置,地址为B8H,可以按位寻址:
D7 D6 D5 D4 PS D3 PT1 D2 PX1 D1 PT0 D0 PX0 其中各位为1时,被声明为高优先级中断,为0时声明为低优先级中断。
8051复位时,IP被请“0” ,5个中断源都在同一优先级,若几个中断源同时产生中断请求,则CPU按照片硬件优先级链路的顺序响应中断,顺序如下: 中断源
外部中断0(IE0) 高
定时器/计数器0(TF0)
外部中断1(IE1)
.专业.专注.
定时器/计数器1(TF1)
串行口中断(RI/TI) 低
(二)中断响应过程
中断响应的条件:MCS-51工作时,在每个机器周期中都会去查询一下各个中断标记,在下列三种情况之一时,CPU将封锁对中断的响应:
(1)CPU正在处理一个同级或更高级别的中断请求。
(2)现行的机器周期不是当前正执行指令的最后一个周期。要等整条指令都执行完了,才能响应中断。
(3)当前正执行的指令是返回批令(RETI)或访问IP、IE寄存器的指令,则CPU至少再执行一条指令才应中断。
CPU响应中断时,把当前下一条指令的地址送入堆栈,根据中断标记,将中断入口地址送入PC程序指针,CPU取指令根据PC中的值,程序就会转到中断入口处继续执行。每个中断向量地址间隔了8个单元,如0003-000B,在中断处安排一个LJMP指令,这样就可以把中断程序跳转到任何地方,例如:
ORG 0000H
.专业.专注.
LJMP START ;跳转主程序
ORG 0003H
LJMP INT0 ;转外中断
0ORG 000BH RETI
中断程序完成后,执行一条RETI指令,执行这条指令后,CPU将会把堆栈中保存着的地址取出,送回PC,那么主程序就会从主程序的中断处继续往下执行了。
中断优先级处理与中断嵌套:优先级的问题发生在几个中断同时产生的情况,或者是已发生在一个中断,又有一个中断产生时的情况。如果有低优先级的中断正在执行,那么高优先级的中断出现,CPU则会响应这个高优先级中断,即高优先级中断可以打断低优先级中断,反之则不行。下图面是一个中断嵌套流程:
.专业.专注.
2.1.1.6、控制寄存器
8051单片机通过引脚RXD(P3.0,串行数据接收端)和引脚TXD(P3.1,串行数据发送端)与外界通讯。SBUF是串行口缓冲寄存器,包括发送寄存器和接收寄存器。它们有相同名字和地址空间,但不会出现冲突。
串行通信控制寄存器SCON
表二:串行口的工作方式及接收/发送控制。字节地址为98H,其各位定义如下 数据位 D7 位名称 SM0 位地址 9FH D6 SM1 9EH D5 SM2 8DH D4 REN 9CH D3 TB8 9BH D2 RB8 9AH D1 TI 99H D0 RI 98H 表三:(1).SM0、SM1:串行口工作方式选择位,其定义如下 SM0、SM1 00 .专业.专注.
工作方式 方式0 功能描述 8位移位寄存器 波特率 Fosc/12