《定时器和中断.ppt》由会员分享,可在线阅读,更多相关《定时器和中断.ppt(41页珍藏版)》请在三一办公上搜索。
1、第六章 定时器和中断,河工科技瓮嘉民制作,第六章 定时器和中断,第四节 AT89S51单片机中断系统,第三节 定时器/计数器的应用举例,第二节 定时器/计数器4种工作方式,第一节 定时器/计数器概述,第一节 定时/计数器概述,一、定时/计数器的结构和工作原理,1定时/计数器的结构,图6-1 TMOD、TCON与T0、T1的结构框图,2定时/计数器工作原理,定时器工作前先装入初值,利用送数指令将初值装入TH0 和 TL0 或 TH1和TL1,高位数装入TH0 和TH1,低位数装入 TL0 和 TL1。当发出启动命令后,装初值寄存器开始计数,连续加1,每一个机器周期加1 一次,加到满值(各位全1)
2、。若再加1,则溢出,同时将初值寄存器清零。如果继续计数定时,则需要重新赋初值。,图6-2 定时/计数器的工作原理结构框图,二、定时/计数器工作方式控制寄存器 TMOD,TMOD为T0、T1的工作方式控制寄存器,其格式如下。,定时器T0,定时器 T1,(1)GATE 门控位,控制定时器的两种启动方式,,定时/计数方式选择位,,=0,T0或 T1 为定时方式;,=1,T0或 T1 为计数方式。,当GATE=0,只要TR0 或 TR1 置1,定时器则可启动。GATE=1,除TR0 或 TR1 置1 外,还必须等待外部脉冲输入端 P3.4 或P3.5 高电平到,定时器才能启动。若外部输入低电平,则定时
3、器关闭,这样可实现由外部控制定时器的启停,故称该位为门控位。,表6-1 M1和M0 工作方式选择位,(3)M1、M0工作方式选择位,其功能见表6-1。,三、定时/计数器控制寄存器TCON,定时器控制字TCON的格式如下。,各位定义如下:TF1定时器T1溢出标志。当定时器T1计满溢出时,由硬件使TF1置“1”,并且申请中断。进入中断服务程序后,由硬件自动清“0”,在查询方式下用软件清“0”。TF0定时器T0溢出标志。当定时器T0计满溢出时,由硬件使TF0置“1”,并且申请中断。进入中断服务程序后,由硬件自动清“0”,在查询方式下用软件清“0”。TR1 定时/计数器T1运行控制位。软件置位,软件复
4、位。与GATE有关,分两种情况:当GATE=0 时,若TR1=1,开启T1计数工作;若TR1=0,停止T1计数。当GATE=1 时,若TR1=1 且/INT1=1时,开启T1计数;若TR1=1 但/INT1=0,则不能开启T1计数。若TR1=0,停止T1计数。,TR0定时/计数器T0运行控制位。软件置位,软件复位。与GATE有关,分两种情况:当GATE=0 时,若TR0=1,开启T0计数工作;若TR0=0,停止T0计数。当GATE=1 时,若TR0=1 且/INT0=1时,开启T0计数;若TR0=0 但/INT0=0,则不能开启T0计数。若TR0=0,停止T0计数。IE1外部中断1请求标志。I
5、E1=1表明外部中断1向CPU申请中断。IT1外部中断1触发方式选择位。当IT1=0,外部中断1为电平触发方式。,IE0外部中断0请求标志。IE0=1表明外部中断0向CPU申请中断。IT0外部中断0触发方式选择位。当IT1=0,外部中断0为电平触发方式;IT1=1,外部中断0为边沿触发方式;其操作功能与IT1类似。,四、定时/计数器的初始化,1定时器初始化的主要步骤 选择工作方式,即对TMOD 赋初值。,给定时器赋初值,即把初始常数装入TH0 TL0 或 TH1 TL1。,根据需要设置中断控制字 直接对中断允许寄存器IE 和 优先级寄存器 IP 设置。,启动定时/计数器 若已规定用软件启动(即
6、GATE=0),则可把TR0 或 TR1 置1。,若已规定由外中断端子电平启动(即GATE=1),则需给外端子加启动电平。,2定时器初值设定方法,根据定时长短,选择工作方式,设用M 表示最大计数值,则各种方式计数最大值如下。方式 0 M=213=8192方式 1 M=216=65536方式 2 M=28=256方式 3 M=28=256,定时初值计算,设初值为X,最大计数值为M。初值X与机器周期I机及定时时间T的关系为:(M-X)T机=T(6-1)其中:T机=12个时钟周期=12/fOSC X=M T/T机(6-2),例6.1 T0工作于方式1,定时时间为50ms,请计算定时初值和编写程序使P
7、1.1 输出周期为100ms的方波,已知fosc=12MHz。解:因为 fOSC=12MHz T机=1s 定时方式1时 M=216=65536 所以:X=M-T/T机=65536-50000/1=15536=3CB0H(1)硬件设计硬件设计如图6-3所示,所需元件如表6-2所列。,图6-3 方波硬件设计和仿真波形,/中断方式#include reg51.h#include stdio.hUart_Init();sbit P1_1=P11;void main()TMOD=0X01;/T0工作在方式1TL0=0 xB0;/给TL0置初值TH0=0 x3c;/给TH0置初值ET0=1;/开串行口中断
8、EA=1;TF0=0;TR0=1;/启动T0while(1);/设置断点处void Int_T0()interrupt 1 using 2TL0=0 xB0;TH0=0 x3c;/重赋初值P1_1=!P1_1;/定时时间到P1_1取反printf(Timer1 overflow in Mode 1n);/*定时器0溢出后,输出提示信息*/,(2)源程序,(3)Proteus仿真 经Keil软件编译通过后,可利用Proteus软件进行仿真。在Proteus ISIS编辑环境中绘制仿真电路图,或者打开配套光盘中的“例程第六章例6-1 方波”文件夹内的“方波.DSN”仿真原理图文件。将编译好的“方波
9、.hex”文件加入AT89C51,启动仿真。如图6-3所示,可以看到周期为100ms的方波。(4)下载验证本实验可以通过SP-28 USB下载验证,可以观察到VD2不停的亮灭。,第二节 定时/计数器4种工作方式,一、方式0,图6-4 T0(或T1)方式0结构,二、方式1,图6-5 T0(或T1)方式1结构,三、方式2,图6-6 T0(或T1)方式2结构,四、方式3,图6-7 T0方式3下的逻辑结构,2T0工作方式3下的定时器/计数器T1,如果定时器/计数器T0已工作在工作方式3,则定时器/计数器T1只能工作在方式0、方式1或方式2下,因为它的运行拉制位TR1及计数溢出标志位TF1已被定时器/计
10、数器T0借用,如图6-7所示。,1工作方式3下的定时器/计数器T0,第三节 定时器/计数器的应用举例,一、方式0、方式1的应用,例6.2 选择T1方式0用于定时,在P3.7引脚输出周期为1ms的方波,晶振fosc=6MHz。解:根据题意,只要使P3.7每隔500s取反一次即可得到1ms方波,因而T1的定时时间为500s。将T1设为定时方式0:GATE=0,,=0,M1M0=00;T0不用可为任意方式,只要不使其进入方式3即可,一般取0即可。TMOD各位设置如下:,故TMOD=00H。系统复位后TMOD为0,所以不必对TMOD置初值。下面计算500s定时T1的初值:机器周期 T机=12/fosc
11、=12/(6106)=2s设初值为X则:(213X)2106 s=500106 s因为在作13位计数器用时,TL1高3位未用,应写0,X的低5位装入TL1的低5位,所以TL1=06H;X的高8位应装入TH1,所以TH1=F8H。,(1)硬件设计硬件设计见图6-3所示。,图6-8 1ms方波,例6.3 用AT89S51单片机产生“嘀、嘀、”报警声从P3.7端口输出,产生频率为1KHz,1KHZ方波从P3.7输出0.2秒,接着0.2秒从P3.7输出电平信号,如此循环下去,就形成所需的报警声了。,解:生活中常常到各种各样的报警声,例如“嘀、嘀、”就是常见的一种声音报警声,但对于这种报警声,嘀0.2秒
12、钟,然后断0.2秒钟,如此循环下去,假设嘀声的频率为1KHz,则报警声时序图如图6-9所示。,图6-9 报警声时序图,TMOD各位设置如下:,图6-10 报警电路图,图6-10 报警电路图,本实验可以通过SP-28 USB下载验证,同时听到“滴滴”的声音。,图6-11“嘀嘀报警声”,二、方式2的应用,例6.4 用定时器1方式2计数,每计满100次,将P1.0取反。解:,TMOD各位设置如下:,X=28100=156=9CHTH1=TL1=9CH,图6-12 计数,图6-12 计数,本实验可以通过SP-28 USB下载验证。,三、门控位的应用例6.5 利用T0门控位测试,引脚上出现的正脉冲的宽度
13、,并以机器周期数的形式通过发光二极管显示。,(P3.2)引脚上出现高电平即开始计数,直至出现低电平,停止计数,然后读取T0的计数值并显示。测试过程如图6-13所示。,图6-13 外部正脉冲宽度测量,解:根据要求可这样设计程序:将T0设定为方式1,GATE设为1,置TR0为1。一旦,图6-14 测脉宽,第四节 AT89S51单片机中断系统,一、中断有关的概念中断就是利用软硬件配合,根据某种需要断开正在执行的程序而转向另一专门程序,结束后再返回到原断开处继续执行被中止的程序,这个过程称为中断中断后转向执行的程序叫中断服务或中断处理程序。原程序被断开的位置(地址)叫做断点。发出中断信号的设备称为中断
14、源。中断源要求中断服务所发出的标志信号称为中断请求或中断申请。中断源向CPU发出中断申请,CPU经过判断认为满足条件,则对中断源作出答复,叫中断响应。,二、AT89S51中断标志及控制寄存器,1TCON(88H)中断标志寄存器,TCON各位均是1有效,具体功能详见本章第一节。,2SCON(98H)串行口控制寄存器,说明:TI 发送数据前应复位该位。在方式0时,第八位数据发送结束时,由硬件置位;在其他方式时,在串行口发送停止位的开始时,由硬件置位。RI 接收中断标志,与TI类似。中断响应后,RI或TI不能自动清除,必须由软件来清除!编程时要注意在中断服务程序中使用 CLR RI 或 CLR TI
15、 指令使RI 或TI 清零。,2SCON(98H)串行口控制寄存器,IP(B8H)优先级设定寄存器,PT2定时器T2中断优先级控制位,8052系列单片机所有。PT21,设定定时器T2为高优先级中断;PT20,设定定时器T2为低优先级中断。PS串行口中断优先级控制位,PS1,设定串行口为高优先级中断;PS0,设定串行口为低优先级中断。PT1定时器T1中断优先级控制位,PT11,设定定时器T1为高优先级中断;PT10,设定定时器T1为低优先级中断。PX1外部中断1中断优先级控制位。PT0定时器T0中断优先级控制位。PX0外部中断0中断优先级控制位。PS、PT1、PX1、PT0和PX0 的5位中哪个
16、为1,则对应中断源为高优先级;为0者为低优先级。同级中断按自然优先级排队。具体型号单片机的优先级设置详见对应数据手册。,4IE(A8H)中断允许控制寄存器,EACPU中断总允许位。EA=1,CPU开放中断,每个中断源是被允许还是被禁止,方别由各自的允许位确定;EA=0,CPU 屏蔽所有的中断请求,称关中断,即禁止所有的中断。ES串行口中断允许位。ES1,允许串行口中断;ES0,禁止串行口中断。ET1定时器T1中断允许位。ET11,允许定时器T1中断;ET10,禁止定时器T1中断。EX1外部中断1中断允许位。ET0定时器T0中断允许位。EX0外部中断0中断允许位。总之,ES、ET1、EX1、ET
17、0、EX0 某位为1,则允许相应中断源中断;为0则禁止该中断源中断(该中断被屏蔽)。,三、中断响应的条件及响应过程,1CPU响应中断的基本条件由图6-15可知,中断产生的基本条件有如下三个:中断源要发出中断请求,即把中断标志寄存器TCON,SCON相应位置1;EA=1,开放总中断;IE寄存器相应中断允许位置1,允许该中断源发出中断申请,进行中断。,图6-15 AT89S51的中断系统,但是如果发生下列任何一种情况存在,中断响应都会受到阻断。CPU正在执行一个同级或高一级的中断服务程序;说明:当一个中断被响应时,要把对应的优先级触发器置位,封锁了低级和同级中断!当前的机器周期不是正在执行的指令的
18、最后一个周期,换言之,正在执行的指令完成前,任何中断请求都得不到响应(目的以确保当前指令的完整执行)。正在执行的是一条RETI 或访问SFR IE或IP的指令,在执行RETI或读写IE或IP之后,不会马上响应中断申请,需要再取一条指令执行后,才会响应。,2CPU对中断的查询在每个机器周期S5P2(第5状态 第2拍节)期间,CPU对各中断源采样,并设置相应的中断标志。CPU在S6(第6状态)期间按优先级顺序查询各中断标志,若为1,将在下一机器周期的S1期间按优先级进行中断处理。注:中断查询在每个机器周期的S5P2重复执行,因为中断请求随时会发生!,3中断响应过程 当中断条件满足后,且不存在中断阻
19、断的情况,则CPU响应中断。这时,中断系统通过硬件自动产生长调用LCALL指令,此指令把主程序断点地址压入堆栈,然后把中断服务程序入口地址装入PC,在PC指引下进入中断服务程序。中断服务程序最后都必须有一条RETI 指令,RETI是中断返回指令。当执行RETI时,把程序断点弹出并送往PC,这样程序又返回到主程序断点处,继续执行主程序。,四、中断应用举例,图6-16 中断服务程序流程框图(a)主程序框图(b)中断服务程序框图 图6-17 指示灯定时闪烁程序框图,中断服务程序包括8项内容,即关中断、保护现场、开中断、中断处理、关中断、恢复现场、开中断和中断返回。其程序结构见本节2 采用中断时的汇编
20、主程序结构中的中断部分。,例6.6 使用定时器定时,每隔10s 使与P0、P1、P2和P3口连接的发光二极管闪烁10次;设P0、P1、P2和P3口低高电平灯亮,反之灯灭。解:中断源T0入口地址000BH;当T0溢出时,TF0为1 发出中断申请,条件满足CPU响应,进入中断处理程序。,图6-18 中断仿真效果图,例6.7 使用定时器产生PWM波调节P0和P2口VD的亮度,当按下K01时,VD亮度减小,当按下K02时,VD亮度增加,设P0和P2口低高电平灯亮,反之灯灭。解:(1)硬件设计硬件设计如图6-19所示,所需元件如表6-5所列。,利用定时器控制产生占空比可变的 PWM按K01,PWM值增加
21、,则占空比减小,VD 灯渐暗。按K02,PWM值减小,则占空比增加,VD 灯渐亮。当PWM值增加到最大值或减小到最小值时,蜂鸣器将报警。,图6-19 PWM控制VD渐亮渐灭原理图和仿真效果图,5设计与调试中断程序应注意的几个问题 调试时注意开发机上使用的中断入口地址。重要现场数据进中断前要保护(压入堆栈):中断返回前,必先把压入堆栈的数据弹出,恢复现场,否则易出错。注意中断标志的清除方式,3种情况:T0、T1及边沿触发方式的外部中断标志,TF0、TF1、IE0和IE1在中断响应后由硬件自动清除,无需采取其他措施。电平触发方式的外部中断标志IE1、IE0不能自动清除,必须撤除,或,的电平信号。串
22、行口中断标志TI和RI不能由硬件清除,需用指令清除,在编程时要注意,中断响应后用 CLR TI 或 CLR RI 清除中断标志。中断响应时间用从外部中断请求有效(标志置位1)到转向中断区入口地址所需的机器周期数来计算中断响应时间。最短的响应时间为3个机器周期(中断请求查询占1个机器周期,执行硬件产生LCALL#add16 指令占2个机器周期)。最长的响应时间为8个机器周期(RET RETI 或访问IE IP 占2个机器周期;恰好为MUL 或DIV 指令占4个机器周期;执行硬件产生 LCALL#add16指令占2个机器周期)。若系统中只有一个中断源,则响应时间为3-8个机周;若有2个以上中断源,
23、同时申请中断,则响应时间将更长。在精确定时的场合需考虑中断响应时间影响。,习 题,1AT89S51有几个中断源?各中断标志是如何产生的?又是如何复位的?CPU响应各中断时,其中断入口地址是多少?2如何计算计数初值?如何编程送入计数初值?3外部中断源有电平触发和边沿触发两种触发方式,这两种触发方式所产生的中断过程有何不同?怎样设定?4定时/计数器工作于定时和计数方式时有何异同点?5定时/计数器的4种工作方式各有何特点?6简述定时器/计数器初始化的步骤?7当定时/计数器T0用作方式3时,定时/计数器T1可以工作在何种方式下?如何控制T1的开启和关闭?8利用定时/计数器T0从P1.0输出周期为1s,脉宽为20ms的正脉冲信号,晶振频率为6MHz。试设计程序。9若晶振频率为12MHz,如何用T0来测量201s之间的方波周期?又如何测量频率为0.5MHz左右的脉冲频率?10利用定时/计数器T0产生定时时钟,由P1口控制8个指示灯。编一个程序,使8个指示灯依次一个一个闪动,闪动频率为20次/秒(8个灯依次亮一遍为一个周期)。,OVER!,