微处理器C51_6定时器和中断应用讲述

上传人:最**** 文档编号:117944408 上传时间:2019-12-11 格式:PPT 页数:72 大小:4.64MB
返回 下载 相关 举报
微处理器C51_6定时器和中断应用讲述_第1页
第1页 / 共72页
微处理器C51_6定时器和中断应用讲述_第2页
第2页 / 共72页
微处理器C51_6定时器和中断应用讲述_第3页
第3页 / 共72页
微处理器C51_6定时器和中断应用讲述_第4页
第4页 / 共72页
微处理器C51_6定时器和中断应用讲述_第5页
第5页 / 共72页
点击查看更多>>
资源描述

《微处理器C51_6定时器和中断应用讲述》由会员分享,可在线阅读,更多相关《微处理器C51_6定时器和中断应用讲述(72页珍藏版)》请在金锄头文库上搜索。

1、中断与定时器 中断概念 MCS-51中断系统 MCS-51定时器应用 中断概念 中断的概念 CPU在处处理某 一事件A时时,发发生 了另一事件B请请求 CPU迅速去处处理( 中断发发生); CPU暂时暂时 中断 当前的工作,转转 去处处理事件B(中 断响应应和中断服 务务); 待CPU将事件B 处处理完毕毕后,再 回到原来事件A被 中断的地方继续继续 处处理事件A(中断 返回),这这一过过 程称为为中断 。 执行主 程序 主程序 继续执行 主程序 断点 中断请求 中断响应 执行 中断 处理 程序 中断返回 引起CPU中断的根源,称为中断源。中断源向CPU提出的 中断请求。CPU暂时中断原来的事

2、务A,转去处理事件B。对 事件B处理完毕后,再回到原来被中断的地方(即断点),称 为中断返回。实现上述中断功能的部件称为中断系统(中断 机构)。 随着计算机技术的应用,人们发现中断技术不仅解决了快速主机与慢 速I/O设备的数据传送问题,而且还具有如下优点: 分时操作。CPU可以分时为多个I/O设备服务,提高了计算机的利用 率; 实时响应。CPU能够及时处理应用系统的随机事件,系统的实时性大 大增强; 可靠性高。CPU具有处理设备故障及掉电等突发性事件能力,从而使 系统可靠性提高。 1、8051中断系统的结构 8051的中断系统有5个中断源(8052有 6个,还有第三个定时/计数 器中断) ,2

3、个优先级,可实现二级中断嵌套 。 MCS-51中断系统 l 外部中断0 (P3.2)可由IT0(TCON.0)选择选择 其为为低电电平有效还还是下降沿有效 。当CPU检测检测 到P3.2引脚上出现现有效的中断信号时时,中断标标志 IE0(TCON.1)置1,向CPU申请请中断。 l外部中断1 (P3.3)可由IT1(TCON.2)选择选择 其为为低电电平有效还还是下降沿有效。 当CPU检测检测 到P3.3引脚上出现现有效的中断信号时时,中断标标志 IE1(TCON.3)置1,向CPU申请请中断。 l定时时器/计计数器0中断 TF0(TCON.5),片内定时时/计计数器T0溢出中断请请求标标志。

4、当定时时/计计 数器T0发发生溢出时时,置位TF0,并向CPU申请请中断。 l 定时时器/计计数器1中断 TF1(TCON.7),片内定时时/计计数器T1溢出中断请请求标标志。当定时时/计计 数器T1发发生溢出时时,置位TF1,并向CPU申请请中断。 l串行口中断 RI(SCON.0)或TI(SCON.1),串行口中断请请求标标志。当串行口接收完 一帧帧串行数据时时置位RI或当串行口发发送完一帧帧串行数据时时置位TI,向 CPU申请请中断。 2、8051请求标志 lTCON的中断标志 IT0(TCON.0),外部中断0触发方式控制位。 当IT0=0时,为电平触发方式。 当IT0=1时,为边沿触

5、发方式(下降沿有效)。 IE0(TCON.1),外部中断0中断请求标志位。 IT1(TCON.2),外部中断1触发方式控制位。 IE1(TCON.3),外部中断1中断请求标志位。 TF0(TCON.5),定时/计数器T0溢出中断请求标志位。 TF1(TCON.7),定时/计数器T1溢出中断请求标志位。 l SCON的中断标志 RI(SCON.0),串行口接收中断标志位。当允许串行口接收数据时 ,每接收完一个串行帧,由硬件置位RI。注意,RI必须由软件清除。 TI(SCON.1),串行口发送中断标志位。当CPU将一个发送数据写 入串行口发送缓冲器时,就启动了发送过程。每发送完一个串行帧, 由硬件

6、置位TI。CPU响应中断时,不能自动清除TI,TI必须由软件清 除。 l 中断允许控制 CPU对中断系统所有中断以及某个中断源的开放和屏蔽是由中断 允许寄存器IE控制的。 3.8051中断的控制 EX0(IE.0),外部中断0允许位; ET0(IE.1),定时/计数器T0中断允许位; EX1(IE.2),外部中断0允许位; ET1(IE.3),定时/计数器T1中断允许位; ES(IE.4),串行口中断允许位; EA (IE.7), CPU中断允许(总允许)位。 l 中断优先级控制 8051单片机有两个中断优先级,即可实现二级中断服务嵌套。每个中 断源的中断优先级都是由中断优先级寄存器IP中的相

7、应位的状态来规定的 。 PX0(IP.0),外部中断0优先级设定位; PT0(IP.1),定时/计数器T0优先级设定位; PX1(IP.2),外部中断1优先级设定位; PT1(IP.3),定时/计数器T1优先级设定位; PS (IP.4),串行口优先级设定位; PT2 (IP.5) ,定时/计数器T2优先级设定位。 PX0(IPH.0),外部中断0优先级设定位; PT0(IPH.1),定时/计数器T0优先级设定位; PX1(IPH.2),外部中断1优先级设定位; PT1(IPH.3),定时/计数器T1优先级设定位; PS (IPH.4),串行口优先级设定位; PT2 (IPH.5) ,定时/计

8、数器T2优先级设定位。 而8052单片机有四个中断优先级,即可实现四级中断服务嵌套。每个 中断源的中断优先级由中断优先级寄存器IP和IPH中的相应位的状态来 规定的 。 同一优先级中的中断申请不止一个时,则有中断优先权排队问题。 同一优先级的中断优先权排队,由中断系统硬件确定的自然优先级形 成,其排列如所示: 例:设置52单片机的4个中断源,使它们的优顺序为T1,INT1,INT0,T0. IPH = 0X08;PT1 = 1; IP = 0X04;PX1 = 1; 8051单片机的中断优先级有三条原则: CPU同时接收到几个中断时,首先响应优先级别最高的中断请求。 正在进行的中断过程不能被新

9、的同级或低优先级的中断请求所中断。 正在进行的低优先级中断服务,能被高优先级中断请求所中断。 为了实现上述后两条原则,中断系统内部设有两个用户不能寻址的优 先级状态触发器。其中一个置1,表示正在响应高优先级的中断,它将阻 断后来所有的中断请求;另一个置1,表示正在响应低优先级中断,它将 阻断后来所有的低优先级中断请求。 4、8051单片机中断应用 中断响应条件 中断源有中断请求; 此中断源的中断允许位为1; CPU开中断(即EA=1)。 以上三条同时满足时,CPU才有可能响应中断。 l中断响应应条件和时间时间 l中断设设置 包括中断开启设设置(IE)、优优先级设级设 置(IP)、中断触发发(T

10、CON) 等。例如: IE=0X84;/开启INT1中断 IP=0X04;/设设置INT1具有高优优先级级 TCON=0X04;/设设置INT1下降沿触发发 l中断子程序 格式为为: void 中断子程序名称(void) interrupt 中断编编号 using 寄存器组组 l 5、8051单片机中断应用 a.外部中断INT0 如图,P1接8个LED,INT0 脚接10K上拉电阻,接一个 按钮到地。主程序运行时, LED闪烁;按下按钮,进入 中断状态,8个LED变成单灯 左移,左移三圈后,恢复中 断前状态。 #include #define LED P1 void delay1ms(int)

11、; void left(int); main() IE=0 x81; LED=0 x00; while(1) delay1ms(250); LED=LED; void my_int0(void) interrupt 0 unsigned saveLED=LED; left(3); LED=saveLED; void delay1ms(int x) int i,j; for(i=0;ix;i+) for(j=0;j120;j+); void left(int x) int i,j; for(i=0;i3;i+) LED=0 xfe; for(j=0;j7;j+) delay1ms(250); L

12、ED=(LED1)|0 x01; delay1ms(250); b.外部中断INT1 如图,P0直接驱动共阳极七段数码管,INT1接上拉电阻和对地按钮。 主程序执行时,数码管从0到9循环,每0.5S增加1。进入中断后,数码管 从9到0,一圈后结束。 #include #defineSEG P0 void delay1ms(int); Unsigned char code TAB=0 xc0,0 x98; main() int I; IE=0 x84; while(1) for(i=0;i=0;i-) SEG=TABi; delay1ms(250); SEG=0 xff; delay1ms(25

13、0); c.两个外部中断 如图,P1接8个LED,INT0和INT1接上拉电阻和对地按钮。 主程序执行时,P1所接的LED闪烁。按下INT0按钮,进入外部中断0服 务,8个LED单灯左移,左移三圈后回主程序;按下INT1按钮,进入外部中 断1服务,8个LED单灯右移,三圈后回主程序。此外,要求INT0的优先级 高于INT1。 #include #define LED P1 void delay1ms(int); void left(int); void right(int); main() IE=0 x85; LED=0 x00; while(1) delay1ms(250); LED=LED

14、; void my_int0(void) interrupt 0 unsigned saveLED=LED; left(3); LED=saveLED; void my_int1(void) interrupt 2 unsigned saveLED=LED; right(3); LED=saveLED; void delay1ms(int x) int i,j; for(i=0;ix;i+) for(j=0;j120;j+); void left(int x) int i,j; for(i=0;i3;i+) LED=0 xfe; for(j=0;j7;j+) delay1ms(250); LED=(LED1)|0 x01; delay1ms(250); void righ(int x) int i,j; for(i=0;i1)|0 x80; de

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号