第5章MCS-51定时器与中断系统课件.ppt

上传人:春哥&#****71; 文档编号:15304224 上传时间:2022-05-12 格式:PPT 页数:49 大小:2.90MB
返回 下载 相关 举报
第5章MCS-51定时器与中断系统课件.ppt_第1页
第1页 / 共49页
第5章MCS-51定时器与中断系统课件.ppt_第2页
第2页 / 共49页
点击查看更多>>
资源描述

《第5章MCS-51定时器与中断系统课件.ppt》由会员分享,可在线阅读,更多相关《第5章MCS-51定时器与中断系统课件.ppt(49页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

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)、硬件查询电路(对处在同一优先级的各中断源请求按自然优先级进行排队)和相应的逻辑电路组成。 0INT1INT (2)中断标志和中断控制中断标志 中断标志用于表示相应的中断源是

6、否向CPU发出中断请求,标志位为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, ( )选

7、择边沿触发方式,下降沿有效;IT1(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):定时

8、器/计数器T1(T0)的启停控制位。TR1(TR0)=1,启动T1(T0)计数;TR1(TR0)=0,停止T1(T0)计数。0INT0INT1INT1INTb串行口控制寄存器(SCON)。该寄存器只有TI和RI两位用来表示串行口中断标志位,其余各位用于串行口其它控制。进行字节操作时,寄存器地址为98H,按位操作时,各位的地址为98H9FH。SCON寄存器的内容及位地址如表5-2所示。(a)TI:为串行口发送中断标志位,位地址为99H。(b)RI:为串行口接收中断标志位,位地址为98H。表5-2 串行口控制寄存器(SCON)位序号D7D6D5D4D3D2D1D0位地址9FH9EH9DH9CH9B

9、H9AH99H98H位符号SM0SM1SM2RENTB8RB8TIRI中断控制 各中断源的中断标志被置位后,CPU能否响应还要受到控制寄存器的控制,这种控制寄存器在MCS-51单片机中有两个,即中断允许控制寄存器(IE)和中断优先级控制寄存器(IP)。 a中断允许控制寄存器(IE)。该寄存器用于控制各中断源中断的允许或禁止,而且实行两级控制,相当于有一个总开关、五个分开关(对8032、8052及8752等52子系列单片机还增加了一个定时器/计数器T2中断源,即共有六个分开关)。进行字节操作时,寄存器地址为0A8H,按位操作时,各位的地址为0A8H0AFH。IE寄存器的内容及位地址如表5-3所示

10、。表5-3 中断允许控制寄存器(IE)位序号D7D6D5D4D3D2D1D0位地址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)中断

11、;EX1(EX0)=1时,允许外部中断1(或0)中断。(c)ET1(ET0):定时器/计数器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单片机的中断优先级控制比较简单,因为系统只定义了

12、高、低2个优先级。高优先级用“1”表示,低优先级用“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)为低优先级;PX

13、1(PX0)=1时,外部中断1(或0)为高优先级。(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串行口。0INT1INT 中断响应中断响应(1)中断处理的过程中断处理的过程为:中断源发出中断请求对中断请求进行响应执行中断服务程序返回主程序。中断采样a对电平触发方式的外中断请求(即IT1/IT0=0)。 b对边沿触发方式的外中断请求(即IT1/IT0=1)。 中断查询中断响应aCPU的中断响应条件(a)有中断源发出中断申请

15、,即相应的中断标志位为1。(b)中断总允许位EA=1,即CPU允许所有中断源申请中断。(c)申请中断的中断源的中断允许位为1,即此中断源可以向CPU申请中断。b中断受阻情况 在中断请求被允许的情况下,若存在以下情况,则CPU不会立即响应中断,称为中断受阻。(a)CPU正在执行一个同级或高一级的中断服务程序。(b)当前的机器周期不是正在执行指令的最后一个机器周期,即正在执行的指令执行结束前,任何中断请求都得不到响应。(c)正在执行的是RET及RETI指令或访问IE/IP寄存器指令。此时,在执行RET及RETI指令或者读写IE/IP寄存器之后,不会马上响应中断请求,还需要再取一条指令执行后,才有可

16、能响应中断。c中断响应过程(a)完成当前指令的操作。(b)保护断点地址,即将当前PC内容压入堆栈保护。(c)屏蔽同级的中断请求。(d)将中断源入口地址(固定的)送入PC寄存器,自动转入相应中断服务程序的入口地址。中断源入口地址如表4-5所示。(e)执行中断服务程序。(f)当执行到RETI指令时即结束中断,从堆栈中自动弹出断点地址到PC寄存器,返回到先前断点处继续执行原程序。表5-6 MCS-51/52中断源中断源中断源中断号中断号n(C语语言用)言用)入口地址入口地址(汇编语(汇编语言用)言用)默认默认中断中断级别级别INT0:外部中断000003H最高T0:定时器/计数器01000BH第2I

17、NT1:外部中断120013H第3T1:定时器/计数器13001BH第4TI/TR:串行口中断40023H第5d中断响应的时间:最短时间为3个机器周期中断服务:CPU完成中断源所要求的操作。中断返回(2)中断申请的撤除 CPU响应中断请求后,转向中断服务程序执行,在其执行中断返回指令(RETI)之前中断请求信号必须撤除,否则将可能再次引起中断而出错。单片机内部硬件自动复位清除响应标志。应用软件清除响应标志。既无软件清除也无硬件撤除:采用硬件配合软件的方式撤除。 如图5-3所示电路就是用于撤除电平触发方式的外部中断请求方案之一。外部中断请求信号不直接加在或上,而是加在D触发器的CLK端。由于D端

18、地,当外部中断请求的正脉冲出现在CLK端时, 或 为低,发出中断请求。用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;0INT1INT图5-3 外部中断请求的撤除CLKQDSP1.0INT08051外部请求 C51的中断服务函数与寄存器组选择的中断服务函数与寄存器组选择 (1)中断服务函数的定义与工作寄存器组的选择 定义中断服务函数的一般格式为: vo

19、id 函数名 ( ) interrupt 中断号n using 工作寄存器组号r 中断函数不能返回任何值,所以最前面用void。 void后面紧跟函数名,名字可随便起,但不要与关键字相同。 中断函数不带任何参数,所以函数名后面的小括号为空,也可写上void。 关键字interrupt :是函数定义时的一个选项,加上这个选项即可将一个函数定义成中断服务函数,其后必须跟中断号n。中断号n是指MCS-51/52单片机中几个中断源的序号,这个序号是C51编译器识别不同中断源的唯一符号,因此在写中断服务程序时务必要写正确。 关键字using: using用来选择不同的工作寄存组,后跟工作寄存器组号r(

20、r=03)。如果不用该选项,则由C51编译器自动选择一个工作寄存器组作为绝对寄存器组访问。因此,“using 工作寄存器组号r”通常不写。(2)外部中断 (或 )初始化及中断函数格式外部中断0初始化函数及中断函数void chushihua(void) /初始化函数EA=1; /CPU允许中断IT0=1; /边沿触发方式,下降沿有效EX0=1; /允许中断void main(void) /主函数chushihua(); /调初始化函数/其他程序void int0(void)intereupt 0 /外部中断中断服务函数 /中断处理程序0INT1INT外部中断1初始化函数及中断函数void ch

21、ushihua(void) /初始化函数EA=1; /CPU允许中断IT1=1; /边沿触发方式,下降沿有效EX1=1; /允许中断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

22、取反一次即可。这里1s时间可先由定时器T0方式1定时50ms再重复20次得到。参考程序如下:#include /51系列单片机的头文件#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 =

23、1; /开总中断ET0 = 1; /开定时器0中断TR0 = 1; /启动定时器0while (1); /程序停止在这里等待中断发生 void T0-time () interrupt 1 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)中断服务函数的编写规则中断服务函数不能进行参数传递,如果中断服务函数中

24、包含任何参数声明都将导致编译出错。中断服务函数没有返回值,如果企图定义一个返回值将得不到正确的结果。因此在定义中断服务函数时必须将其定义成void类型,以明确说明没有返回值。在任何情况下都不能直接调用中断服务函数,否则会产生编译错误。如果在中断服务函数中调用了其它函数,则被调用函数所使用的工作寄存器组必须与中断服务函数相同。在中断服务函数中一般不要写过多的处理语句。定时器定时器/计数器的结构及工作原理计数器的结构及工作原理(1)定时器/计数器的结构5.2 定时器定时器/计数器计数器TCON(88H)TMOD(89H)定时器0(T0)定时器1(T1)CPU中断工作方式总线(8AH)(8BH)(8

25、CH)(8DH)T0(P3.4)T1(P3.5)TL1TH1TH0TL0工作方式启动溢出溢出启动图 5 - 4 AT89C51定时器/计数器的逻辑结构图(2)定时器/计数器的工作原理当定时器/计数器设置为定时工作方式时,计数器对内部机器周期计数,每过一个机器周期,计数器增1,直至计满溢出。当定时器/计数器设置为计数工作方式时,计数器对来自输入引脚T0(P3.4)和T1(P3.5)的外部信号计数,外部脉冲的下降沿将触发计数。计数器对外部输入信号的要求是:频率低于振荡频率的1/24,高电平与低电平的持续时间在一个机器周期以上。当设置了定时器的工作方式并启动定时器工作后,定时器就按被设定的工作方式独

26、立工作,不再占用CPU的操作时间,只有在计数器计满溢出时才中断CPU当前的操作。 TMOD (89H)表5-7 TMOD的位格式D7D6D5D4D3D2D1D0GATEM1M0GATEM1M0定时器T1定时器T05.2.2 定时器定时器/计数器的控制计数器的控制(1)控制寄存器工作方式控制寄存器(TMOD) 用于设定定时器/计数器的工作方式,其中低4位用于设定T0,高4位用于设定T1。TMOD的位格式见表5-7。GATE:选通控制位(也叫门控位),用于控制定时器/计数器的启动方式。GATE=0,只要用软件对TR置1就可启动定时器;GATE=1,只有()引脚为高电平,且由软件使TR置1时,才能启

27、动定时器工作。 :定时器/计数器方式选择位。 =0,设置为定时工作方式,对机器周期进行计数; =1,设置为计数工作方式,对外部脉冲进行计数。TC/TC/TC/TC/TC/M1、M0:工作方式控制位,可构成表5-8所示的四种工作方式。表5-8 工作方式选择M1M0工作方式工作方式说明说明00013位定时器/计数器01116位定时器/计数器102自动装入初值的8位定时器/计数器113T0:分成两个8位定时器/计数器T1:停止计数定时器/计数器控制寄存器(TCON)TCON已在上一节中断系统中作过介绍,此处不再赘述。其低4位与外部中断有关,高4位与定时器/计数器有关。总之,定时器/计数器T0和T1是

28、在TMOD和TCON的联合控制下进行定时或计数工作的。(2)工作方式(方式0方式3) AT89C51单片机的定时器/计数器通过可设置成定时或计数两种工作模式。在每种模式下通过对M1、M1的设置又有四种不同的工作方式共有四种工作方式(方式0方式3)。工作方式0 当TMOD中的MlM000H时,定时器/计数器工作于方式0。以T0为例,其等效逻辑结构如图5-5所示。其逻辑控制功能如下: a当=0时,T0选择为定时器模式,对CPU内部机器周期加1计数,其定时时间为:T=(213-T0初值)机器周期。b当=1时,T0选择为计数器模式,对T0(P3.4)脚输入的外部电平信号由“1”到“0”的负跳变进行加1

29、计数。c当GATE=0时,或门的另一输入信号将不起作用,仅用TR0来控制T0的启动与停止。d当GATE=1时,和TR0同时控制T0的启/停。只有当两者都为“1”时,定时器T0才能启动计数。12TL0(低5位)TH0(8位)TF0&11P3.4/T0TR0GATE0INT/2 . 3P0TC/=1TC/ =晶振图5-5 定时器/计数器T0在工作方式0下的逻辑结构图工作方式1当MlM001H时,定时器/计数器工作于方式1,是16位的加1计数器,最大计数值为216=65536。这16位由高8位TH0(或TH1)和低8位TL0(或TL1)组成。当TL0(或TL1)计数满时向TH0(或TH1)进位。定时

30、器/计数器在方式1下的工作情况与在方式0下时基本相同,差别只是计数器的位数不同。工作方式2 当M1M010H时,定时器/计数器工作于方式2,此时定时器/计数器被设置成一个8位计数器TL0(或TL1)和一个具有计数初值重装功能的8位寄存器TH0(或TH1),最大计数值为28=256。以T0为例,其等效逻辑结构如图5-6所示。由图5-6可知方式2与方式0、方式1的区别在于:a计数位数不同,计数范围比方式0、方式1都小。b初值自动重装,适用于需要重复定时的应用场合。GATE晶振120TC/TL0(8位)TF0&11P3.4/T0TR01TC/TH0(8位)溢出中断0/2 . 3PINT图5-6 定时

31、器/计数器T0在方式2下的逻辑结构图工作方式3 当M1M0=11H时,定时器/计数器设定为工作方式3。在该方式下,T0与T1的功能相差很大。当T1设置为方式3时,它将保持初始值不变,并停止计数,因而T1不能工作在方式3下。当将T0设置为方式3时,T0被分成两个独立的8位定时器/计数器TL0和TH0,最大计数值为28=256。其逻辑结构如图5-7所示。晶振12TH0(8位)TF1TL0(8位)TF0&11P3.4/T0TR00TC/1TC/ TR1中断中断/.0I NT23PGATE图5-7 定时器计数器T0在方式3下的逻辑结构图5.2.3 定时器定时器/计数器的编程和应用计数器的编程和应用(1

32、)定时器/计数器的初始化编程初始化的内容。定时器/计数器编程初始化的内容如下:a根据设计需要先确定定时器/计数器的工作模式及工作方式,然后将相应的控制字送入TMOD寄存器中。b计算出计数初始值并写入TH0、TL0、TH1、TL1中。c通过对中断优先级寄存器IP和中断允许寄存器IE的设置,确定计数器的中断优先级和是否开放中断。d给定时器控制寄存器TCON送命令字,控制定时器/计数器的启动和停止。定时器/计数器初值的计算定时器/计数器T0、T1不论是工作在计数器模式还是定时器模式下,都是加1计数器,因而写入计数器的初始值和实际计数值并不相同,两者的换算关系如下:设实际计数值为N,计数最大值为M,计

33、数初始值为X,则X=MN。其中,计数最大值M在不同工作方式下的值不同,具体如下:a工作方式0:M=213=8192=2000H。b工作方式1:M=216=65536=10000H。c工作方式2:M=28=256=100H。d工作方式3:M=28=256=100H。定时器模式下对应的定时时间为T=NT机=(MX)T机=(MX)(12/fosc)则X= MT/ T机= MT/(12/fosc)式中,T机为单片机的机器周期(T机为晶振时钟周期的12倍)。例如,T0选用方式1用于定时,外接晶振频率为12MHz,定时时间为10ms,计算过程如下:方式1时,M=65536,定时时间T=1010-3s,fo

34、sc=12MHz=12106HzX= MT/(12/fosc)=65536-1010-3/(12/12106)=65536-10000拆分X的高八位送TH0,低八送TL0:TH0=(65536-10000)/256;TL0=(65536-10000)%256。 这里用“TH0=(65536-10000)/256;”对256求模是因为定时器方式1为16位计数器,而且分为高8位TH0和低8位TL0,8位中最多可装载256个数,再加1便会进位。若是方式0,由于计数时只用了TL0的低5位,这5位中最多可装载32个数,再加1便会进位,因而应对32求模,而不是256了。(2)C51中定时器/计数器初始函数

35、及中断服务函数格式T0方式1:以10ms定时时间,12MHz晶振为例void chushihua(void) /初始化函数 TMOD=0 x01; /T0方式1 EA=1; /CPU允许中断 ET0=1;TR0=1; /T0允许中断,启动定时器T0 TH0=(65536-10000)/256; /高八位赋初值 TL0=(65536-10000)%256; /低八位赋初值void main(void) /主函数chushihua(); /调初始化函数/其他程序void t0(void) interrupt 1 /定时器T0中断服务函数 TH0=(65536-10000)/256; /高八位初值重

36、装 TL0=(65536-10000)%256; /低八位初值重装/定时处理程序T1方式1:以10ms定时时间,12MHz晶振为例void chushihua(void) /初始化函数 TMOD=0 x10; /T1方式1 EA=1; /CPU允许中断 ET1=1;TR1=1; /T1允许中断,启动定时器T1 TH1=(65536-10000)/256; /高八位赋初值 TL1=(65536-10000)%256; /低八位赋初值void main(void) /主函数chushihua(); /调初始化函数/其他程序void t1(void) interrupt 3 /定时器T1中断服务函数

37、 TH1=(65536-10000)/256; /高八位初值重装 TL1=(65536-10000)%256; /低八位初值重装/定时处理程序T0方式1、T1方式1同时使用:以10ms定时时间,12MHz晶振为例void chushihua(void) /初始化函数 TMOD=0 x11; /T0方式1、T1方式1 EA=1; /CPU允许中断 ET0=1;TR0=1; /T0允许中断,启动定时器T0ET1=1;TR1=1; /T1允许中断,启动定时器T1 TH0=(65536-10000)/256; /T0高八位赋初值 TL0=(65536-10000)%256; /T0低八位赋初值TH1=

38、(65536-10000)/256; /T1高八位赋初值 TL1=(65536-10000)%256; /T1低八位赋初值void main(void) /主函数chushihua(); /调初始化函数/其他程序void t0(void) interrupt 1 /定时器T0中断服务函数 TH0=(65536-10000)/256; /高八位初值重装 TL0=(65536-10000)%256; /低八位初值重装/定时处理程序void t1(void) interrupt 3 /定时器T1中断服务函数 TH1=(65536-10000)/256; /高八位初值重装 TL1=(65536-100

39、00)%256; /低八位初值重装/定时处理程序(3)定时器/计数器的应用举例【例5.2】 由AT89C51单片机的P1.0引脚输出周期为1秒的连续方波,要求用T0定时,设单片机的振荡频率fosc=12MHz。解:要使AT89C51单片机的P1.0引脚输出周期为1秒的连续方波,只要编程控制AT89C51单片机的P1.0引脚每隔500ms取反一次即可。这里500ms可先由定时器T0方式1定时50ms再重复10次得到。定时器T0方式1定时50ms初值:X= MT/(12/fosc)=65536-5010-3/(12/12106)=65536-15536拆分X的高八位送TH0,低八送TL0:TH0=

40、(65536-15536)/256;TL0=(65536-15536)%256。参考程序如下:#include /51系列单片机的头文件#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-15536) /256; /装初值(12MHz晶振定时50ms初值为15536) TL0 = (65536-15536) % 256; EA = 1;

41、 /开总中断 ET0 = 1; /开定时器0中断 TR0 = 1; /启动定时器0 while (1); /程序停止在这里等待中断发生 void T0-time () interrupt 1 TH0 = (65536-45872)/256; /重装初值TL0 = (65536-45872) % 256;num +; /每中断一次num自加1并判断是否加到10次if (num = = 10) /如果到了10次,说明500ms时间到了 num = 0; /然后把num清0重新再记10次 led1 = led1; /让发光管状态取反1实训目的实训目的通过本次实训,(1)初步认识独立式按键的结构原理;

42、(2)掌握定时器的结构与原理;(3)掌握C51中中断服务函数的编程方法与技巧;(4)进一步熟悉八段数码管的动态扫描显示方法;(5)进一步熟悉调试C51源程序的方法与技巧。2知识要点知识要点(1)硬件电路及工作原理本实训是将数字钟和按键控制结合在一起,硬件电路原理如图5-8所示。(2)参考程序:见教材。实训六:可调时间数字钟设计与制作实训六:可调时间数字钟设计与制作XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.0

43、1P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427JT12MHzC122pFC222pFR11kC322uFR2200RESETVccAT89C51K1K2K3K4图5-8 可调时间数字钟电路原理图3实训器材实训器材(1)DICE-5208K开发型单片机综合实验仪1

44、套。(2)PC机1台。(3)DICE-3000仿真器1台。(4)带插针的导线若干。4实训内容及步骤实训内容及步骤(1)启动ISIS7 professional软件,并用其绘制图5-8所示电路原理图。(2)启动Keil C51 uvision4软件。建立工程,输入上述C51参考源程序并编译调试生成二进制的目标文件。(3)将第(2)步生成的二进制目标文件加载到第(1)步所绘图5-8所示电路原理图的AT89C51单片机中,然后仿真运行观察数码管的显示情况是否符合要求。(4)按硬件电路焊好电路板,将参考程序写入AT89C51单片机中,通电,观察数码管的显示情况是否符合要求。 5思考题思考题(1)简述数

45、码管的动态显示原理及特点。(2)若数码管为共阴极结构,应怎样修改源程序?(3)本实训有哪些注意事项?(4)如何用汇编语言编程实现该功能?小小 结结 本章主要讲述了AT89C51单片机的中断和定时系统。 第一,中断系统。主要内容有中断的有关概念、中断系统的结构、中断处理的过程、中断申请的撤除以及中断系统的应用等。中断系统是AT89C51单片机的重要组成部分,采用中断可大大提高AT89C51系统的工作效率和处理问题的灵活性。读者在学习完本节后,要重点掌握中断的基本原理和基本工作方法,并在以后的模块中进一步学会应用。 第二,定时器/计数器。AT89C51单片机有两个16位的可编程定时器/计数器T0和

46、T1,可编程实现定时控制、延时、脉冲计数、脉宽测量、频率测量、信号发生等功能,在串行通信中,还可作为波特率发生器。定时器/计数器实质是一个16位的计数器,有4种工作方式,其中方式1的定时/计数值范围最大,最大计数值为65536;方式2的定时/计数值最小,但可实现初值自动恢复。作为定时时,计数信号来自片内振荡器的12分频信号,即每过一个机器周期计数器加1,直至溢出。而计数方式的外部脉冲从引脚T0或T1加入,外部脉冲触发计数器,直至溢出。习题与思考题习题与思考题一、填空题一、填空题18051单片机串行中断共有_和_两个中断标志位。2对中断进行查询时,查询的中断标志位共有_、_、_、_、_和_六个中

47、断标志位。 3MCS-51单片机中,只有_中断源存在中断采样问题。 4计算机通过_可以实现CPU的资源共享。5欲将定时器/计数器T0设置为自动重装初值的8位定时器,则必须将TMOD设置为_H。6当定时器/计数器工作于计数模式时,其计数脉冲来自单片机的_;而当工作于定时模式时,其计数脉冲来自单片机的_。二、选择题二、选择题1各中断源发出的中断请求信号,都会标记在( )寄存器。 ATMOD/SCON BTCON/PCON CIE/TCON DTCON/SCON2中断查询,查询的是( )。 A中断请求信号 B中断标志 C外中断方式控制位 D中断允许控制位3外中断1的中断号是( )。A0 B1 C2

48、D34AT89C51单片机中用来开放或禁止中断的控制寄存器是( )。AIE BTCON CIP DSCON5(TMOD)=05H,则T0的工作方式为( )。A13位计数器 B16位计数器 C13位定时器 D16位定时器6AT89C51单片机在响应中断后,需要用软件来清除的中断标志是( )。ATF0、TF1 BRI、TI CIE0、IE1 DIT0、IT1三、综合题三、综合题1什么叫中断?计算机采用中断有什么好处?2什么叫中断源?MCS-51单片机有哪几个中断源?写出其固定入口地址。3什么叫中断嵌套?中断嵌套遵循的原则是什么?MCS-51单片机本身能实现几级嵌套?4MCS-51单片机中与中断有关

49、的特殊功能寄存器有几个?它们各自的功能是什么?5MCS-51单片机的中断触发方式有几种?它们有什么区别?如何选择?电平触发时,如何防止CPU重复响应同一中断?6什么是中断优先级?MCS-51单片机能设置几个优先级?当同一级别的中断源同时发出中断请求时,CPU先响应哪一个?怎样确定?7一个中断请求被响应必须满足什么条件?MCS-51单片机响应某一中断请求后要进行哪些操作?8中断响应过程中,为什么通常要保护现场?如何保护?9一个8051应用系统,要求允许外部中断和允许串行口中断,中断控制寄存器IE如何设定?10通过对中断优先级控制寄存器IP的设置,将8031单片机的片外中断定义为高优先级,片内中断

50、定义为低优先级。11AT89C51中有几个定时器/计数器?是加1计数还是减1计数?12试叙述定时器/计数器方式0、方式l、方式2之间的异同点。13控制寄存器TMOD和TCON各位的定义是什么?怎样确定各定时器/计数器的工作方式?14在工作方式3中,定时器/计数器T0和T1的应用有什么不同?15在晶振主频为12MHz时,定时最长时间是多少?若要求定时1分钟,最简的方法是什么?16已知单片机时钟频率fosc=6 MHz,当要求定时时间为2 ms或5 ms,定时器分别工作在方式0、方式1和方式2时,定时器计数初值各是多少? 17已知fosc=6MHz,试编写程序,利用T0工作在方式3,使P1.0和P

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁