第5章--MCS-51定时器与中断系统ppt课件(全).ppt
《第5章--MCS-51定时器与中断系统ppt课件(全).ppt》由会员分享,可在线阅读,更多相关《第5章--MCS-51定时器与中断系统ppt课件(全).ppt(49页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第9章章 MCS-51的定时与中断系统的定时与中断系统吴政江制作吴政江制作 5.1 MCS-51的中断系统及其应用的中断系统及其应用5.2 定时器定时器/计数器计数器实训六:可调时间数字钟设计与制作实训六:可调时间数字钟设计与制作小结小结习题与思考题习题与思考题 中断概述中断概述(1)生活中的中断 中断,顾名思义就是中途打断的意思。在我们人类的生活中有很多中断的例子。例如,你正在吃饭时电话铃突然响了。这时,你得暂时放下吃了一半的饭,去接电话,等电话接完后再继续吃刚才剩下的饭。这就是一个中断事件,即吃饭被电话中途打断了。在这个过程中,来电话是中断事件;电话铃声是中断信号;电话是引起你停止吃饭的
2、原因,称为中断源;去接电话前应将你吃的饭和餐具保存好以备接完电话后能继续吃,称为保护现场;接完电话后应将保存好的饭和餐具恢复原样以备继续吃,称为恢复现场。再如,你正在教室做作业,这时有同学叫你陪他上街,在上街的过程中手机突然响了,于是你先接手机再继续上街。在这个过程中,上街这一中断事件又被手机所中断,这称为中断的嵌套。5.1 MCS-51的中断系统及其应用的中断系统及其应用(2)计算机的中断 计算机中通常只有一个CPU,面临着运行程序、处理数据I/O、处理特殊事件等多种任务。但任一时刻CPU只能处理一项任务,而且一般CPU的工作速度很快(s级),而外设(如打印机等)的工作速度较慢。这就出现了高
3、速的CPU与低速的外设之间的矛盾。怎么办呢?有两种工作方式:一种是串行工作,即CPU传送一批数据给打印机后就等待,等到打印机打完后再传送下一批数据。显然这种工作方式CPU的利用率低,工作速度慢。另一种是并行工作,即CPU传送一批数据给打印机后并不是等待而是去干其它事情,待打印机将数据打印完后再通知CPU传送下一批数据。显然这种工作方式CPU的利用率高,工作速度快。后一种方式就是采用暂时停下一个任务去处理另一个任务的中断方法。因此,中断技术实际上是单一CPU处理多任务的一种技术手段,实质上是一种资源共享技术。计算机中断的有关概念如下。1)中断。2)主程序。3)中断服务程序。4)断点地址。5)中断
4、入口地址。6)中断系统。7)中断源。8)中断请求信号。9)保护现场。10)恢复现场。11)中断优先级。12)中断的嵌套。中断服务程序返回主程序响应中断请求任意指令断点主程序继续执行主程序断量中矢返回指令任意指令断点中断矢量响应高级中断高级中断服务程序返回主程序响应中断请求任意指令断点主程序继续执行主程序断量中矢返回指令低级 中断服务 程序返回指令返回低级中断(a)中断处理大致流程图 (b)二级中断嵌套示意图图5-1 中断及其二级嵌套示意图 MCS-51单片机中断系统的结构单片机中断系统的结构图5-2 MCS-51单片机中断系统结构示意图 (1)中断源和中断系统构成中断源 MCS-51单片机具有
5、五个中断源,分为内部中断源和外部中断源等两种类型。外部中断源有两个(即 和 )。内部中断源有三个,两个定时器/计数器(T0和T1)中断源和一个串行口中断源。对52子系列单片机还增加了一个定时器/计数器T2中断源,即共有六个中断源。中断系统构成 由图5-2中可看出,MCS-51单片机中断系统主要由定时器/计数器控制寄存器(TCON)、串行口控制寄存器(SCON)、中断允许控制寄存器(IE)、中断优先级控制寄存器(IP)、硬件查询电路(对处在同一优先级的各中断源请求按自然优先级进行排队)和相应的逻辑电路组成。(2)中断标志和中断控制中断标志 中断标志用于表示相应的中断源是否向CPU发出中断请求,标
6、志位为1表示中断源已发出中断请求(即有中断),标志位为0表示中断源没有发出中断请求(即无中断)。MCS-51单片机将中断标志位集中安排在定时器/计数器控制寄存器(TCON)和串行口控制寄存器(SCON)中。a定时器/计数器控制寄存器(TCON)。TCON寄存器的内容及位地址如表5-1所示。表5-1 定时器/计数器控制寄存器(TCON)位序号D7D6D5D4D3D2D1D0位地址8FH8EH8DH8CH8BH8AH89H88H位符号TF1TR1TF0TR0IE1IT1IE0IT0(a)IT1(IT0):外中断1(外中断0)的触发方式控制。IT1(IT0)=1,()选择边沿触发方式,下降沿有效;I
7、T1(IT0)=0,()选择电平触发方式,低电平有效。(b)IE1(IE0):外中断1(外中断0)请求源中断请求标志。当CPU采样到(或)端出现有效中断请求时,IE1(IE0)位由硬件置“1”。当CPU中断响应完成转向中断服务程序时,由硬件将IE1(或IE0)自动清0。(c)TF1(TF0):定时器/计数器T1(T0)的溢出中断请求标志。T1(T0)被允许计数后,从初值开始加1计数,当产生溢出时,置位TF1(TF0),向CPU提出中断请求,一直保持到CPU响应该中断时,由硬件自动清0。若采用查询方式,则由指令清除TF1(TF0)。(d)TR1(TR0):定时器/计数器T1(T0)的启停控制位。
8、TR1(TR0)=1,启动T1(T0)计数;TR1(TR0)=0,停止T1(T0)计数。b串行口控制寄存器(SCON)。该寄存器只有TI和RI两位用来表示串行口中断标志位,其余各位用于串行口其它控制。进行字节操作时,寄存器地址为98H,按位操作时,各位的地址为98H9FH。SCON寄存器的内容及位地址如表5-2所示。(a)TI:为串行口发送中断标志位,位地址为99H。(b)RI:为串行口接收中断标志位,位地址为98H。表5-2 串行口控制寄存器(SCON)位序号D7D6D5D4D3D2D1D0位地址9FH9EH9DH9CH9BH9AH99H98H位符号SM0SM1SM2RENTB8RB8TIR
9、I中断控制 各中断源的中断标志被置位后,CPU能否响应还要受到控制寄存器的控制,这种控制寄存器在MCS-51单片机中有两个,即中断允许控制寄存器(IE)和中断优先级控制寄存器(IP)。a中断允许控制寄存器(IE)。该寄存器用于控制各中断源中断的允许或禁止,而且实行两级控制,相当于有一个总开关、五个分开关(对8032、8052及8752等52子系列单片机还增加了一个定时器/计数器T2中断源,即共有六个分开关)。进行字节操作时,寄存器地址为0A8H,按位操作时,各位的地址为0A8H0AFH。IE寄存器的内容及位地址如表5-3所示。表5-3 中断允许控制寄存器(IE)位序号D7D6D5D4D3D2D
10、1D0位地址0AFH0AEH0ADH0ACH0ABH0AAH0A9H0A8H位符号EA/ET2ESET1EX1ET0EX0 IE寄存器中各位均是:为0时,禁止中断;为1时允许中断。系统复位后,IE寄存器各位均为0,即此时禁止所有的中断。各控制位的含义如下。(a)EA:CPU中断允许总控制位。EA=0时,中断总禁止,即禁止所有中断;EA=1时,中断总允许,总允许后各中断源的禁止或允许由各中断源的中断允许控制位进行设置。(b)EX1(EX0):外部中断1(或0)中断允许控制位。EX1(EX0)=0时,禁止外部中断1(或0)中断;EX1(EX0)=1时,允许外部中断1(或0)中断。(c)ET1(ET
11、0):定 时 器/计 数 器 1(或 0)中 断 允 许 控 制 位。ET1(ET0)=0时,禁止定时器/计数器1(或0)中断;ET1(ET0)=1时,允许定时器/计数器1(或0)中断。(d)ES:串行口中断允许控制位。ES=0时,禁止串行口中断;ES=1时,允许串行口中断。(e)ET2:定时器/计数器2溢出中断允许位(只有8032、8052及8752等52子系列单片机才有)。ET2=0时,禁止定时器/计数器2中断;ET2=1时,允许定时器/计数器2中断。b中断优先级控制寄存器(IP)。MCS-51单片机的中断优先级控制比较简单,因为系统只定义了高、低2个优先级。高优先级用“1”表示,低优先级
12、用“0”表示。各中断源的优先级由中断优先级控制寄存器(IP)进行设置。复位后,IP寄存器的各位均为0,即此时全部中断优先级为低级。进行字节操作时,寄存器地址为0B8H,按位操作时,各位的地址为0B8H0BFH。IP寄存器的内容及位地址如表5-4所示。表5-4 中断优先级控制寄存器(IP)位序号D7D6D5D4D3D2D1D0位地址0BFH0BEH0BDH0BCH0BBH0BAH0B9H0B8H位符号/PT2PSPT1PX1PT0PX0(a)PX1(PX0):外部中断1(或0)优先级控制位。PX1(PX0)=0时,外部中断1(或0)为低优先级;PX1(PX0)=1时,外部中断1(或0)为高优先级
13、。(b)PT1(PT0):定时器/计数器1(或0)溢出中断优先级控制位。PT1(PT0)=0时,定时器/计数器1(或0)为低优先级;PT1(PT0)=1时,定时器/计数器1(或0)为高优先级。(c)PS:串行口中断优先级控制位。PS=0时,串行口为低优先级;PS=1时,串行口为高优先级。(d)PT2:定时器/计数器2溢出中断优先级控制位(只有8032、8052及8752等52子系列单片机才有)。PT2=0时,定时器/计数器2为低优先级;PT2=1时,定时器/计数器2为高优先级。控制原则:低优先级的中断请求不能打断高优先级的中断服务;但高优先级的中断请求可以打断低优先级的中断服务,从而实现中断嵌
14、套。如果一个中断请求已被响应,则同级的其它中断服务将被禁止,即同级不能嵌套。如果同级的多个中断请求同时出现,则CPU通过内部硬件查询电路按自然优先级顺序确定应该响应哪个中断请求。其自然优先级由硬件形成,排列如下:T0 T1串行口。中断响应中断响应(1)中断处理的过程中断处理的过程为:中断源发出中断请求对中断请求进行响应执行中断服务程序返回主程序。中断采样a对电平触发方式的外中断请求(即IT1/IT0=0)。b对边沿触发方式的外中断请求(即IT1/IT0=1)。中断查询中断响应aCPU的中断响应条件(a)有中断源发出中断申请,即相应的中断标志位为1。(b)中断总允许位EA=1,即CPU允许所有中
15、断源申请中断。(c)申请中断的中断源的中断允许位为1,即此中断源可以向CPU申请中断。b中断受阻情况 在中断请求被允许的情况下,若存在以下情况,则CPU不会立即响应中断,称为中断受阻。(a)CPU正在执行一个同级或高一级的中断服务程序。(b)当前的机器周期不是正在执行指令的最后一个机器周期,即正在执行的指令执行结束前,任何中断请求都得不到响应。(c)正在执行的是RET及RETI指令或访问IE/IP寄存器指令。此时,在执行RET及RETI指令或者读写IE/IP寄存器之后,不会马上响应中断请求,还需要再取一条指令执行后,才有可能响应中断。c中断响应过程(a)完成当前指令的操作。(b)保护断点地址,
16、即将当前PC内容压入堆栈保护。(c)屏蔽同级的中断请求。(d)将中断源入口地址(固定的)送入PC寄存器,自动转入相应中断服务程序的入口地址。中断源入口地址如表4-5所示。(e)执行中断服务程序。(f)当执行到RETI指令时即结束中断,从堆栈中自动弹出断点地址到PC寄存器,返回到先前断点处继续执行原程序。表5-6 MCS-51/52中断源中断源中断源中断号中断号n(C语语言用)言用)入口地址入口地址(汇编语汇编语言用)言用)默默认认中断中断级别级别INT0:外部中断000003H最高T0:定时器/计数器01000BH第2INT1:外部中断120013H第3T1:定时器/计数器13001BH第4T
17、I/TR:串行口中断40023H第5T2:定时器/计数器25002BH最低d中断响应的时间:最短时间为3个机器周期中断服务:CPU完成中断源所要求的操作。中断返回(2)中断申请的撤除 CPU响应中断请求后,转向中断服务程序执行,在其执行中断返回指令(RETI)之前中断请求信号必须撤除,否则将可能再次引起中断而出错。单片机内部硬件自动复位清除响应标志。应用软件清除响应标志。既无软件清除也无硬件撤除:采用硬件配合软件的方式撤除。如图5-3所示电路就是用于撤除电平触发方式的外部中断请求方案之一。外部中断请求信号不直接加在或上,而是加在D触发器的CLK端。由于D端地,当外部中断请求的正脉冲出现在CLK
18、端时,或 为低,发出中断请求。用P1.0接在D触发器的异步置位端上作为应答线,当CPU响应中断后可使用如下三条指令来撤除中断。ANL P1,#0FEH 或 CLR P1.0ORL P1,#01H SETB P1.0CLR IE0 CLR IE0在C51中相应的语句为:P1&=0 xfe;P1|=0 x01;IE0=0;图5-3 外部中断请求的撤除CLKQDSP1.0INT08051外部请求 C51的中断服的中断服务务函数与寄存器函数与寄存器组选择组选择(1)中断服务函数的定义与工作寄存器组的选择 定义中断服务函数的一般格式为:void 函数名()interrupt 中断号n using 工作寄
19、存器组号r 中断函数不能返回任何值,所以最前面用void。void后面紧跟函数名,名字可随便起,但不要与关键字相同。中断函数不带任何参数,所以函数名后面的小括号为空,也可写上void。关键字interrupt:是函数定义时的一个选项,加上这个选项即可将一个函数定义成中断服务函数,其后必须跟中断号n。中断号n是指MCS-51/52单片机中几个中断源的序号,这个序号是C51编译器识别不同中断源的唯一符号,因此在写中断服务程序时务必要写正确。关键字using:using用来选择不同的工作寄存组,后跟工作寄存器组号r(r=03)。如果不用该选项,则由C51编译器自动选择一个工作寄存器组作为绝对寄存器组
20、访问。因此,“using 工作寄存器组号r”通常不写。(2)外部中断 (或 )初始化及中断函数格式外部中断0初始化函数及中断函数void chushihua(void)/初始化函数EA=1;/CPU允许中断IT0=1;/边沿触发方式,下降沿有效EX0=1;/允许中断void main(void)/主函数chushihua();/调初始化函数/其他程序void int0(void)intereupt 0 /外部中断中断服务函数 /中断处理程序外部中断1初始化函数及中断函数void chushihua(void)/初始化函数EA=1;/CPU允许中断IT1=1;/边沿触发方式,下降沿有效EX1=1
21、;/允许中断void main(void)/主函数chushihua();/调初始化函数/其他程序void int1(void)intereupt 2 /外部中断中断服务函数 /中断处理程序【例例5.1】设AT89C51单片机的时钟频率为11.0592MHz,利用定时器T0中断使其接在P1.0引脚上的发光二极管以1s为间隔亮灭闪烁。解:要使接在AT89C51单片机的在P1.0引脚上的发光二极管以1s为间隔亮灭闪烁,只要编程控制AT89C51单片机的P1.0引脚每隔1s取反一次即可。这里1s时间可先由定时器T0方式1定时50ms再重复20次得到。参考程序如下:#include /51系列单片机的
22、头文件#define uchar unsigned char /宏定义#define uint unsigned intsbit led1=P10;/声明P1口的第0位uchar num;void main()TMOD=0 x01;/设置定时器0为工作方式1(M1M0为01)TH0=(65536-45872)/256;/装初值(11.0592MHz晶振定时50ms初值为45872)TL0=(65536-45872)%256;EA=1;/开总中断ET0=1;/开定时器0中断TR0=1;/启动定时器0while(1);/程序停止在这里等待中断发生 void T0-time()interrupt 1
23、 TH0=(65536-45872)/256;/重装初值TL0=(65536-45872)%256;num+;/每中断一次num自加1并判断是否加到20次if(num=20)/如果到了20次,说明1秒时间到了 num=0;/然后把num清0重新再记20次 led1=led1;/让发光管状态取反(3)中断服务函数的编写规则中断服务函数不能进行参数传递,如果中断服务函数中包含任何参数声明都将导致编译出错。中断服务函数没有返回值,如果企图定义一个返回值将得不到正确的结果。因此在定义中断服务函数时必须将其定义成void类型,以明确说明没有返回值。在任何情况下都不能直接调用中断服务函数,否则会产生编译错
24、误。如果在中断服务函数中调用了其它函数,则被调用函数所使用的工作寄存器组必须与中断服务函数相同。在中断服务函数中一般不要写过多的处理语句。定时器定时器/计数器的结构及工作原理计数器的结构及工作原理(1)定时器/计数器的结构5.2 定时器定时器/计数器计数器TCON(88H)TMOD(89H)定时器0(T0)定时器1(T1)CPU中断工作方式总线(8AH)(8BH)(8CH)(8DH)T0(P3.4)T1(P3.5)TL1TH1TH0TL0工作方式启动溢出溢出启动图5-4 AT89C51定 时 器/计数器的逻辑结构图(2)定时器/计数器的工作原理当定时器/计数器设置为定时工作方式时,计数器对内部
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MCS 51 定时器 中断 系统 ppt 课件
限制150内