51单片机中断系统编程

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
断。
(2)中断优先级寄存器IP
IP在特殊功能寄存器中,字节地址为B8H,位地址(由低位到高位)分别是B8H一BFH。
MCS-51单片机的中断分为两个优先级,IP用来设定各个中断源属于两级中断中的哪一级,
其基本格式如下:
上传的图片
抱歉,您所在的组无权下载附件,请注册或登陆
Ø×:无效位。
Ø PT2:对具有定时器2的单片机,该位为定时器2的优先级控制位。PT2=1,设定为高优先
同时使P1.0引脚反相。
counter=0; //计数5毫秒的个数
TR0=1; //启动定时器0
IE=0x82; //允许定时器0中断
while(1);

void time0_int(void) interrupt 1 //中断服务函数,每五毫秒中断一次

TH0=0xCB;TL0=0x1D; //重装定时器0的时间常数(5ms,4MHZ)
5.3.1中断系统
MCS-51单片机提供了5个固定的可屏蔽中断源,3个在片内,2个在片外,它们在程序存储
器中各有固定的中断入口地址,由此进入中断服务程序。5个中断源的符号、名称及产生
的条件如下。
Ø INT0:外部中断0,由P3.2端口线引入,低电平或下跳沿引起。
Ø INT1:外部中断1,由P3.3端口线引入,低电平或下跳沿引起。
P1.0端口线上输出周期为2秒的方波脉冲,驱动接在该引脚上的发光二极管重复地亮一秒
钟,停一秒钟。
#include
unsigned char data counter; //计数5毫秒的个数
main()

TMOD=0x00; //定时器0为方式0
IP=0x02; //定时器中断0为高优先级
TH0=0xCB;TL0=0x1D; //定时器0的时间常数(5ms,4MHZ)
Ø T0:定时器/计数器0中断,由T0计数溢出引起。
Ø T1:定时器/计数器l中断,由T1计数溢出引起。
Ø TI/RI:串行I/O中断,串行端口完成一帧字符发送/接收后引起。
中断源有两级中断优先级,可形成中断嵌套。两个特殊功能寄存器用于中断控制和条件设
置。整个中断系统的结构框图如图所示。
上传的图片
抱歉,您所在的组无权下载附件,请注册或登陆

Ø PT0:定时器/计数器0中断优先级控制位。PT0=1,设定为高优先级;PT0=0,设定为低
优先级。
Ø PX0:外部中断0中断优先级控制位。PX0=1,设定为高优先级;PX0=0,设定为低优先级

在MCS-51单片机系列中,高级中断能够打断低级中断以形成中断嵌套,但同级中断之间,
或低级对高级中断则不能形成中断嵌套。若几个同级中断同时向CPU请求中断响应,则CPU
来打开或关断各中断源的中断请求,基本格式如下:
上传的图片
抱歉,您所在的组无权下载附件,请注册或登陆
Ø EA:全局中断允许位。EA=0,禁止一切中断;EA=1,打开全局中断控制,此时,由各
个中断控制位确定相应中断的打开或关闭。
Ø×:无效位。
Ø ES:串行I/O中断允许位。ES=1,允许串行I/O中断;ES=0,禁止串行I/O中断。
中断系统结构框图
2中断系统的控制寄存器
中断系统有两个控制寄存器(IE和IP),它们分别用来设定各个中断源的打开/关闭和中
断优先级。此外,在TCON中另有4位用于选择引起外部中断的条件并作为标志位。
(1)中断允许寄存器IE
IE在特殊功能寄存器中,字节地址为A8H,位地址(由低位到高位)分别是A8H-AFH。IE用
Keil C51对中断的处理是靠中断服务函数来完成的。有关中断函数构成和更多内容,请参
考3.4.3节的有关内容。
由于8051单片机有5种中断源,各中断源的中断请求标志分别IE0、TF0、IEl、TFl以及
RI/TI。在中断源满足中断请求的条件下,各标志自动置1,以向CPU请求中断。如果某一
中断源提出中断请求后,CPU不能立即响应,只要该中断请求标志不被软件人为清除,中
51单片机中断系统编程
51单片机中断系统编程
上传的图片
抱歉,您所在的组无权下载附件,请注册或登陆中断是指如下过程(如下图所示):CPU
与外设同时工作,CPU执行主程序,外设做准备工作。当外设准备好时向CPU发中断请求信
号,若条件满足,则CPU终止主程序的执行,转去执行中断服务程序。在中断服务程序中
CPU与外设交换信息,待中断服务程序执行完后,CPU再返回刚才终止的主程序继续执行。
级;PT2=0,设定为低优先级。
Ø PS:串行I/O中断优先级控制位。PS=1,设定为高优先级;PS=0,设定为低优先级。
Ø PTl:定时器/计数器1中断优先级控制位。PT1=1,设定为高优先级;PT1=0,设定为低
优先级。
Ø PXl:外部中断1中断优先级控制位。PX1=1,设定为高优先级;PX2=0,设定为低优先级
断请求的状态就将一直保持,直到CPU响应了中断为止。但是对串行口中断,即使CPU响应
了中断,其中断标志RI/TI也不会自动清零,而必须在中断服务程序中设置清除RI/TI的指
令后,才会再一次地提出中断请求。
4中断实例
使用AT89C2051单片机,设单片机晶振频率为4MHz,编制一段用定时器0定时的程序,使
按如下顺序确定响应的先后顺序:
INT0→T0→INT1→T1→RI/T1
3中断的响应过程
8051单片机的CPU在每一个机器周期顺序检查每一个中断源,并按优先级处理所有被激活
了的中断请求。如果没有被下列条件所阻止,将响应激活了的最高级中断请求。
①CPU当前正在响应同级或更高级中断。
②当前正在执行的那条指令尚未执行完。
③正在操作IE、IP中断控制寄存器或执行RETI指令。
在正常的情况下,从中断请求信号有效开始,到中断得到响应,通常需要3个机器周期到8
个机器周期。中断得到响应后,自动清除中断请求标志(对串行I/O端口的中断标志,要
用软件清除),将断点即程序计数器PC之值压入堆栈以备恢复时用,然后把相应的中断入
口地址装入PC,使程序转入到相应的中断服务程序中去执行。
counter++;
if (counter==200) //一秒时间到

counter=0; //重新计数百度文库毫秒的个数
P1_0=~P1_0; //P1.1引脚输出电平反相,使灯光闪烁


在上面的程序中,定时器0工作在方式0,定时时间为5ms。再借助无符号变量counter计数
中断的次数,当计数到counter=200时,表示时间已经1s,此时将计数变量counter清零,
Ø ETl;定时器/计数器T1中断允许位。ETl=1,允许T1中断;ETl=0,禁止T1中断。
Ø EXl:外部中断l中断允许位。EXl=1,允许外部中断1中断;EXl=0,禁止外部中断1中
断。
Ø ET0:定时器/计数器T0中断允许位。ET0=1,允许T0中断;ET0=0,禁止TO中断。
Ø EX0:外部中断0中断允许位。EX0=1,允许外部中断0中断;EX0=0,禁止外部中断0中
相关文档
最新文档