第五章中断系统与定时器计数器详解.ppt
文本预览下载声明
第五章 MCS-51中断系统与定时器/计数器; 当CPU正在处理某件事情的时候,外部发生了某一更为重要或更为紧迫的事件,需要CPU暂时停下正在执行的工作去处理这一突发事件,之后再继续执行以前被暂停的下来的工作,这个过程就叫中断。;? MCS-51有5个中断源——2个外部中断源INT0和INT1,2个片内定时器/计数器溢出中断源,1个片内串行口中断源。
分为两级——高级中断和低级中断。其中任何一个中断源的优先级均可由软件设定为高级或低级,能实现两级中断服务程序嵌套 。
都是可屏蔽的,由软件设定。;一、MCS-51的中断源;2.中断请求标志; SCON是串行口控制寄存器,字节地址为98H。与中断有关的是它的低两位TI和RI。
1) TI(SCON.1) :串行口发送中断标志位。每发送完一个串行帧,由硬件置位TI。CPU响应中断时,不能清除TI,TI必须由软件清除。
2)RI(SCON.0):串行口接收中断标志位,当允许串行口接收数据时,每接收完一个串行帧,由硬件置位RI。同样,RI必须由软件清除。
;二、MCS-51的中断控制 ;;中断处理过程一般分为三个阶段,即中断响应、中断处理和中断返回。 ;2.中断响应过程(CPU自动完成)
进入中断响应周期。CPU在中断响应周期要完成下列操作:
1) 根据中断请求源的优先级高低,
使相应的优先级状态触发器置1。
2) 保留断点,把PC内容
压入堆栈保存。
3) 清相应中断请求标志位IE0、
IE1、TF0或TF1。
4) 把被响应的中断源服务
程序入口地址送入PC,进入相应
中断服务程序。;中断服务程序入口地址表;3.中断服务与返回
在编写中断服务程序时加注意的几点:
1) 因各入口地址之间只相隔8个字节,一般的中断服务程序是存放不下的。所以通常在中断入口地址单元处存放—条无条件转移指令,这样就可使中断服务程序灵活地安排在64KB程序存储器的任何空间。
2) 若要在执行当前中断程序时禁止更高优先级中断,可先用软件关闭CPU中断,或禁止某中断源中断,在中断返回前再开放中断。
3) 注意在中断服务程序中保护现场和恢复现场。
4)中断服务程序的最后一条是返回指令RETI,该指令将清除响应中断时被置位的优先级状态触发器,然后自动将断点地址从栈顶弹出,装入程序计数器PC,使程序返回到被中断的程序断点处,继续向下执行。 ;4.中断请求的撤除
CPU响应中断请求后,在中断返回(RETI)前,该中断请求信号必须
撤除,否则会引起另外一次中断。
1)定时器/计数器溢出中断标志TF0或TFl,在CPU响应中断后由硬
件自动清除;
2)串行口中断请求标志TI和RI不能由硬件自动清除,需要在中断
服务程序中,用软件来清除相应的中断请求标志;
3)采用边沿触发的外部中断标志IE0或IEl,在CPU响应中断后由
硬件自动清除,但在电平触发时,IE0或IEl受外部引脚中断信
号的直接控制,所以要在中断请求得到CPU响应后及时撤除中断
请求信号,以避免对同一中断请求的多次响应。; 中断系统的初始化是指用户对上述这些特殊功能寄存器中的各控制位进行赋值。
1. 中断系统的初始化步骤
1)设定相应中断源的中断允许控制;
2)设定所用中断源的中断优先级;
3)若为外部中断,则应规定中断触发方式。;2.中断系统应用;程序清单:
ORG 0000H ;主程序
SJMP MAIN
ORG 0013H
AJMP INT1 ;转入服务程序
ORG 0030H
MAIN: SETB IT1 ;设INT1为边沿触发
SETB ET1 ;允许INT1中断
SETB EA ;开放总允许
SJMP $
INT1: ORL P1, #0F0H ;中断服务程序:
MOV A, P1 ;从P1口输入开关状态
SWAP A ;交换高、低4位
MOV P1,A ;输出
显示全部