版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2022-2-141第第6 6章章 80C51 80C51的中断系统及定时的中断系统及定时/ /计数器计数器80C51单片机的单片机的中断系统中断系统6.180C5180C51单片机的单片机的中断处理过程中断处理过程6.280C5180C51单片机的单片机的定时定时/ /计数器计数器6.380C5280C52的定时的定时/ /计数器计数器2 26.4v与上对比,单片机中也有同样的问题。CPU正在执行原程序,突然,被意外事情打断,转去执行新程序。CPU执行新程序结束后,又回到原程序中继续执行。这样的过程就叫 。v 某同学正在教室写作业,忽然被人叫出去,回来后,继续写作业。这就是生活中中断的例子。
2、 6.1 80C51单片机的中断系统单片机的中断系统2022-2-1436.1 80C51单片机的中断系统单片机的中断系统6.1.1 80C516.1.1 80C51中断系统的结构中断系统的结构v CPUCPU进行工作进行工作A A时发生了事件时发生了事件B B,请求,请求CPUCPU马上处理马上处理v CPUCPU暂时中断当前工作暂时中断当前工作A A,转去处理事件,转去处理事件B Bv 事件事件B B处理完后,回到工作处理完后,回到工作A A被中断的地方继续处理被中断的地方继续处理A A工工作作v 中断的概念中断的概念v 中断源中断源v 中断请求中断请求v 中断服务中断服务v 中断返回中断
3、返回v 中断系统中断系统中断的优点中断的优点: :n CPUCPU利用率高利用率高n 控制实时性强控制实时性强n 系统可靠性好系统可靠性好处理文档电话铃响暂停文档文档中作暂停记号电话交谈找出暂停记号位置继续处理文档执行主程序(日常事务程序)中断申请信号有效(中断请求)暂停执行主程序响应中断当前PC及寄存器入栈(保护现场)处理外设要求(中断服务)寄存器及PC出栈(恢复现场及中断返回)继续执行主程序中断源、中断允许控制、中断优先级处理、中断嵌套、中断响应过程中断和子程序调用的区中断和子程序调用的区别别 中断服务程序1中断服务程序 2中断事件1中断事件中断事件 25.2 MCS-51单片机的中断流程
4、、中断嵌单片机的中断流程、中断嵌套套 主程序单片机中断的应用举例单片机中断的应用举例例例1 假设某消防队坐落在道路的一边,正常情况下,交通假设某消防队坐落在道路的一边,正常情况下,交通红红绿灯以绿灯以30s的间隔轮流点亮,当有消防任务时,消防官兵只的间隔轮流点亮,当有消防任务时,消防官兵只需要按一下设置在路边的需要按一下设置在路边的消防紧急按钮消防紧急按钮,则道路交通灯就会,则道路交通灯就会变成红灯并持续变成红灯并持续10s时间,禁止其他车辆通行,使消防车可时间,禁止其他车辆通行,使消防车可以顺利通过,用以顺利通过,用51单片机的中断可以实现上述功能。单片机的中断可以实现上述功能。例例2 在工
5、业应用场合经常利用中断电路来实现系统的在工业应用场合经常利用中断电路来实现系统的故障故障显示显示。假设有四个终端设备和主控室相连接,主控室可以采。假设有四个终端设备和主控室相连接,主控室可以采用报警或指示灯等方式表示终端设备是否正常工作。当终端用报警或指示灯等方式表示终端设备是否正常工作。当终端设备正常工作时,主控室指示灯灭,当终端设备工作异常时设备正常工作时,主控室指示灯灭,当终端设备工作异常时,主控室指示灯亮,用单片机中断电路可以实现。,主控室指示灯亮,用单片机中断电路可以实现。总结:单片机的中断能实现哪些功能?总结:单片机的中断能实现哪些功能?v解决快速解决快速CPUCPU和慢速外设之间
6、的矛盾和慢速外设之间的矛盾,使,使CPUCPU和外设可以并行工作。和外设可以并行工作。v具备故障处理能力具备故障处理能力,提高机器自身的可靠,提高机器自身的可靠性。性。v中断方式中断方式消除了消除了CPUCPU在查询方式中的等待在查询方式中的等待现象,大大提高了现象,大大提高了CPUCPU的工作效率。的工作效率。v及时采集、实时控制及时采集、实时控制。将现场采集的数据。将现场采集的数据通过中断方式及时传送给通过中断方式及时传送给CPUCPU,经过处理,经过处理后立即做出反应,实现现场控制。后立即做出反应,实现现场控制。2022-2-149v 80C5180C51中断系统的结构中断系统的结构5
7、5个中断源、个中断源、2 2个优先级个优先级中断请求中断请求中断允许寄存器中断允许寄存器 中断请求标志寄存器中断请求标志寄存器v想要接听电话必须有两个条件:电话铃必须响;你听到铃声响。v 对于51单片机同样如此,光有中断源是不够的,还必须能够被接收到。51单片机采用设置中断请求标志寄存器TCON和串行口中断请求标志寄存器SCON。接收到则相应位置1。这样MCS-51单片机工作时,在每个机器周期中都会去查询中断标志寄存器,看哪位是1,如果某位是1,就说明其对应中断源有中断请求,并被单片机接受到。2022-2-1411v 中断源中断源 中断服务程序入口地址中断服务程序入口地址 * * * * *
8、6.1.2 80C516.1.2 80C51的中断源的中断源v外部中断外部中断0 0(INT0INT0) 0003H 0003Hv外部中断外部中断1 1(INT1INT1) 0013H 0013HvT0T0溢出中断(溢出中断(TF0TF0) 000BH 000BHvT1T1溢出中断(溢出中断(TF1TF1) 001BH 001BHv串行口中断(串行口中断(RIRI或或TITI) 0023H 0023H2022-2-1412v 触发方式设置及中断标志触发方式设置及中断标志 电平方式(电平方式(ITx=0ITx=0),),INTxINTx引脚引脚低电平低电平时时IEx=1IEx=1,响应中响应中断
9、后断后IExIEx不自动清不自动清0 0(INTxINTx引脚状态)。引脚状态)。 边沿方式(边沿方式(ITx=1ITx=1),),INTxINTx引脚引脚负跳变负跳变时时IEx=1IEx=1,响应中响应中断后断后IExIEx自动清自动清0 0。v 外部中断标志外部中断标志IE1IE1、IE0IE0(用(用IExIEx表示)表示)2022-2-1413两种触发方式比较:两种触发方式比较:v 电平方式电平方式时,时, INTxINTx低电平必须保持到响应时,否则就会低电平必须保持到响应时,否则就会漏掉;在中断服务结束前,漏掉;在中断服务结束前,INTxINTx低电平必须撤除,否则中断低电平必须撤
10、除,否则中断返回之后将再次产生中断。返回之后将再次产生中断。 例,例,82558255的中断请求在接受读或写操作后即被复位,因此的中断请求在接受读或写操作后即被复位,因此以其去请求电平触发方式的中断比较方便。以其去请求电平触发方式的中断比较方便。v边沿方式边沿方式时,采样到有效下降沿后,在时,采样到有效下降沿后,在IExIEx中将锁存一个中将锁存一个1 1。若若CPUCPU暂时不能响应,申请标志也不会丢失,直到响应时才暂时不能响应,申请标志也不会丢失,直到响应时才清清0 0。 例,例,ADC0809ADC0809的转换结束信号的转换结束信号EOCEOC为正脉冲,经反相后就可为正脉冲,经反相后就
11、可以作为以作为80C5180C51的的INTxINTx信号信号 。2022-2-1414v 溢出中断标志溢出中断标志TF1TF1、TF0TF0(用(用TFxTFx表示)表示) 溢出中断请求标志溢出中断请求标志TFxTFx ,TxTx启动后就开始由初值进行加启动后就开始由初值进行加1 1计数,直至产生溢出使计数,直至产生溢出使TFx=1TFx=1向向CPUCPU请求中断。请求中断。CPUCPU响应中响应中断后断后TFxTFx自动清自动清0 0。 v SCON SCON的中断标志的中断标志RIRI:串口:串口接收接收中断标志,响应中断时中断标志,响应中断时不能自动清除不能自动清除 TITI:串口:
12、串口发送发送中断标志,响应中断时中断标志,响应中断时不能自动清除不能自动清除 MCS-51系列单片机中断源系列单片机中断源中断标志中断标志 2022-2-14176.1.3 80C516.1.3 80C51中断的控制中断的控制v 中断允许控制中断允许控制中断源的开放和屏蔽由中断源的开放和屏蔽由IEIE控制(控制(1 1,开放;,开放;0 0,禁止,禁止) v EX0:外中断外中断0允许允许 v ET0:T0中断允许中断允许 v EX1:外中断外中断1 1允许允许 v ET1:T1中断允许中断允许v ES :串口中断允许串口中断允许v EA :CPU中断允许中断允许 v 单片机复位时,单片机复位
13、时,IEIE各位清各位清0 0,禁止所有中断,禁止所有中断 * * * *v 单片机复位时,单片机复位时,TCONTCON和和SCONSCON各位清各位清0 0 * * * *中断的开放和禁止中断的开放和禁止 2022-2-1419v 中断优先级控制中断优先级控制中断优先级由中断优先级由IPIP控制(控制(1 1,高级;,高级;0 0,低级,低级) v PX0:外中断外中断0优先级优先级 v PT0:T0中断中断优先级优先级v PX1:外外中断中断1 1优先级优先级v PT1:T1中断中断优先级优先级v PS :串口中断串口中断优先级优先级同一优先级的自然顺序:同一优先级的自然顺序:自高至低:
14、自高至低:INT0INT0、TOTO、INT1INT1、T1T1、串口。、串口。 v中断优先原则:(概括为四句话)v1、低级不打断高级v2、高级不睬低级v3、同级不能打断v4、同级、同时中断,事先约定。 2022-2-1421v 中断优先级遵循的原则中断优先级遵循的原则 * * * *v几个中断同时申请,先响应高级的中断几个中断同时申请,先响应高级的中断 v正进行的中断服务,同级或低级中断不能对其正进行的中断服务,同级或低级中断不能对其中断,但可以被高级中断所中断。中断,但可以被高级中断所中断。 为此,中断系统内设有对应高、低为此,中断系统内设有对应高、低2 2个个优先级状优先级状态触发器态触
15、发器(用户不能寻址)。(用户不能寻址)。 状态触发器的复位由中断返回指令状态触发器的复位由中断返回指令RETIRETI控制。控制。2022-2-14226.2 80C51单片机中断处理过程单片机中断处理过程6.2.1 6.2.1 中断响应条件和时间中断响应条件和时间 v 中断响应条件中断响应条件 * * * * *v 有中断请求有中断请求 v 相应的中断允许位为相应的中断允许位为1 1v CPUCPU开中断(即开中断(即EA=1EA=1) 遇下面情况之一将不被响应(遇下面情况之一将不被响应(此间中断条件失效,中断丢失此间中断条件失效,中断丢失) v 正在处理同级或高级中断正在处理同级或高级中断
16、 v 当前选择周期不是所执行指令的最后一个机器周期当前选择周期不是所执行指令的最后一个机器周期 v 正在执行正在执行RETIRETI或或访问访问IEIE或或IPIP 的指令的指令 2022-2-1423v 中断响应时间中断响应时间中断响应至少需要中断响应至少需要3 3个完整的机器周期个完整的机器周期(3 38 8个)!个)!受阻时要附加受阻时要附加3 3 5 5个机器周期(个机器周期(无同级或高级中断正进行无同级或高级中断正进行) v 排序周期排序周期不是指令的最后机器周期不是指令的最后机器周期( (如如MULMUL,5 5个个) )v 排序周期排序周期恰逢恰逢RETIRETI类指令类指令(
17、(要再跟指令,若是要再跟指令,若是MULMUL,8 8个个) )响应时间响应时间v (1 1)最快响应时间)最快响应时间 以外部中断的电平触发为最快。以外部中断的电平触发为最快。v 从查询中断请求信号到中断服务程序需要三个机器周期:从查询中断请求信号到中断服务程序需要三个机器周期:1 1个周期(查询)个周期(查询)2 2个周期(长调用个周期(长调用LCALLLCALL)v(2 2)最长响应时间)最长响应时间 若当前指令是若当前指令是RETRET、RETIRETI和和IPIP、IEIE指令指令,紧接着下一条是乘除指令发生,则最长为,紧接着下一条是乘除指令发生,则最长为8 8个周期:个周期:v 2
18、 2个周期执行当前指令(其中含有个周期执行当前指令(其中含有1 1个周期查询)个周期查询)4 4个周个周期乘除指令期乘除指令2 2个周期长调用个周期长调用8 8个周期。个周期。2022-2-14256.2.2 6.2.2 中断响应过程中断响应过程v CPUCPU响应中断过程响应中断过程v 将相应优先级状态触发器置将相应优先级状态触发器置1 1(阻断后来同级或低级中断阻断后来同级或低级中断 )v 执行硬件执行硬件LCALLLCALL指令(指令(PCPC入栈,中断服务程序入口址送入栈,中断服务程序入口址送PCPC )v 执行中断服务程序执行中断服务程序 v 编写中断服务程序注意编写中断服务程序注意
19、v 中断服务程序入口存放指令中断服务程序入口存放指令LJMPLJMP或或AJMPAJMPv 现场保护与现场恢复现场保护与现场恢复2022-2-14266.2.3 6.2.3 中断返回中断返回v 中断服务程序最后指令必须是中断服务程序最后指令必须是RETIRETI,其功能:,其功能: v 将断点从堆栈弹送将断点从堆栈弹送PCPC,CPUCPU从原断点继续执行从原断点继续执行 v 将相应优先级状态触发器清将相应优先级状态触发器清0 0,恢复原来工作状态,恢复原来工作状态v 注意注意v 不能用不能用RETRET代替代替RETRETI I v 中断服务程序中中断服务程序中PUSHPUSH和和POPPO
20、P必须成对使用必须成对使用2022-2-14276.2.4 6.2.4 中断程序举例中断程序举例【例例6-16-1】单外部中断源示例单外部中断源示例void Ex0()interrupt 0 void Ex0()interrupt 0 Flag= Flag=Flag; Flag; while(1)while(1)if(Flag=0) if(Flag=0) /左移左移 ScanNum=_crol_(ScanNum,1); ScanNum=_crol_(ScanNum,1); P2=ScanNum; P2=ScanNum; else else /右移右移 ScanNum=_cror_(ScanNu
21、m,1); ScanNum=_cror_(ScanNum,1); P2=ScanNum; P2=ScanNum; DelayMs(500); DelayMs(500); 2022-2-1428v【例例6-26-2】如图所示,编写程序实现:系统上电后,数码管如图所示,编写程序实现:系统上电后,数码管显示显示“P”P”。按下。按下S0S0键则数码管进行加计数,键则数码管进行加计数,S1S1键则数码管进键则数码管进行减计数。计数值显示在数码管上。行减计数。计数值显示在数码管上。void Ex0Isr() interrupt 0 void Ex0Isr() interrupt 0 if(Flag0=0
22、)Flag0=1; if(Flag0=0)Flag0=1; Flag1 = 0; Flag1 = 0; void Ex1Isr() interrupt 2 void Ex1Isr() interrupt 2 if(Flag1=0)Flag1=1; if(Flag1=0)Flag1=1; Flag0 = 0; Flag0 = 0; 2022-2-14296.3 80C51单片机的定时单片机的定时/计数器计数器v结构结构基本型:基本型:T0T0,定时、计数。,定时、计数。 T1 T1,定时、计数、串口波特率发生器。,定时、计数、串口波特率发生器。 增强型:增加了增强型:增加了T2T2。见。见5.3
23、.45.3.4节。节。 6.3.1 6.3.1 定时定时/ /计数器的结构和工作原理计数器的结构和工作原理 v TH1TH1、TL1TL1v TH0TH0、TL0TL0v TCONTCONv TMODTMOD2022-2-1430v工作原理工作原理-实质是实质是1616位加位加1 1计数器计数器v 定时器定时器模式时,对内部模式时,对内部机器周期机器周期计数。计数。定时时间定时时间= =计数值计数值* *机器周期机器周期v 计数器计数器模式时,是对模式时,是对外部脉冲外部脉冲计数。脉冲由计数。脉冲由T0T0(P3.4P3.4)或或T1T1( (P3.5P3.5) )引脚输入。引脚输入。 注意注
24、意:(:(若若计数值计数值为为N N, ,计数初值计数初值为为X X) )溢出信号使溢出信号使TF0TF0或或TF1TF1置置1 1,并,并发出中断请求发出中断请求,1616位时有:位时有: X=65536-N X=65536-N12MHz12MHz晶振时,计数频率低于晶振时,计数频率低于0.5MHz 0.5MHz 2022-2-1431v控制寄存器控制寄存器TCONTCONvTFxTFx:TxTx溢出标志位。溢出标志位。响应中断后响应中断后TFxTFx有硬件自动清有硬件自动清0 0。用软件设置用软件设置TFxTFx可产生同硬件置可产生同硬件置1 1或清或清0 0同样的效果。同样的效果。vTR
25、xTRx:TxTx运行控制位。运行控制位。置置1 1时开始工作;清时开始工作;清0 0时停止工作。时停止工作。TRxTRx要由软件置要由软件置1 1或清或清0 0(即启动与停止要由软件控制即启动与停止要由软件控制)。)。6.3.2 6.3.2 定时定时/ /计数器的控制计数器的控制2022-2-1432v工作方式寄存器工作方式寄存器TMODTMODn GATEGATE:门控位门控位。GATEGATE0 0时,只要时,只要TRxTRx为为1 1,就可启动计,就可启动计数器工作;数器工作;GATAGATA1 1时,定时器的启动还要加上时,定时器的启动还要加上INTxINTx引脚引脚为高电平这一条件
26、。为高电平这一条件。 n C/TC/T:模式选择位模式选择位。 清清0 0为定时模式,置为定时模式,置1 1为计数方式。为计数方式。n M1M0M1M0:工作方式设置位工作方式设置位。可设置四种工作方式。可设置四种工作方式( (见下页见下页)。)。2022-2-1433门控位作用门控位作用n 当当GATE=0GATE=0时时仅由仅由TR0TR0控制与门的开启。与门输出控制与门的开启。与门输出1 1时,控制开关时,控制开关接通,计数开始;接通,计数开始; n 当当GATE=1GATE=1时时与门的开启由与门的开启由INT0INT0和和TR0TR0共同控制。这种方式可以用共同控制。这种方式可以用来
27、测量来测量INT0INT0引脚上正脉冲的宽度。引脚上正脉冲的宽度。 2022-2-1434注意:注意:TMODTMOD不能进行位寻址不能进行位寻址 定时器的四种工作方式定时器的四种工作方式注注意意:方式:方式0的计数初值高的计数初值高8位和低位和低5位确定麻烦位确定麻烦 ,实际应用,实际应用中常由中常由16位的方式位的方式1取代。取代。例如:设定时器T0为定时工作方式,要求用软件启动定时器T0工作,按方式1工作;定时器T1为计数工作方式,要求软件启动,工作方式为方式2。则根据TMOD各位的定义可知,其控制字为: 即控制字为即控制字为61H,其指令形式为:,其指令形式为: MOV TMOD,#6
28、1H格式:格式: D7 D6 D5 D4 D3 D2 D1 D0 GATE C/T M1 M0 GATE C/T M1 M0 0 1 1 0 0 0 0 1定时器的初始值的计算定时器的初始值的计算对于不同的工作方式,计数器位数不同,故最大计数值对于不同的工作方式,计数器位数不同,故最大计数值M也不同:也不同: 方式方式0:M=213=8192 方式方式1:M=216=65536 方式方式2:M=28=256 方式方式3:定时器定时器0分为分为2个个8位计数器,每个位计数器,每个M均为均为256。因为定时因为定时/计数器是作加计数器是作加1计数,并在计满溢出时产生中断,因此初值计数,并在计满溢出
29、时产生中断,因此初值X的计算如下:的计算如下: X = M 计数值计数值 计算出来的结果计算出来的结果X转换为转换为16进制数进制数后分别写入后分别写入TL0(TL1)、)、TH0(TH1)。)。注意!注意!方式方式0时初始值写入时,对于时初始值写入时,对于TL不用的高不用的高3位应填入位应填入0!2022-2-1438 C/T=1 C/T=1时,则为计数模式,有:时,则为计数模式,有: X=2X=21313-N=8192-N-N=8192-N C/T=0 C/T=0时,则为定时模式,有:时,则为定时模式,有: X=2X=21313-N=8192-N-N=8192-N,N=N=t t/Tcy/
30、Tcy【例例5-35-3】若计数个数若计数个数N N为为2 2,求计数初值。,求计数初值。 公式法计算:公式法计算:X X819281922=8190=1FFEH2=8190=1FFEH 求补法计算:对求补法计算:对0 0000 0000 0010B0 0000 0000 0010B取反加取反加1 1为:为: 1 1111 1111 1110B(1 1111 1111 1110B(1FFEH1FFEH) )初值计算:初值计算:v公式法公式法 v求补法求补法 :X=X=对对N N求补求补2022-2-14396.3.3 6.3.3 定时定时/ /计数器的工作方式计数器的工作方式T0T0有方式有方
31、式0 0、1 1、2 2、3 3;T1T1有方式有方式0 0、1 1、2 2。以。以T0T0为例说明。为例说明。v方式方式0 0:1313位方式位方式 2022-2-1440v方式方式1 1:1616位方式位方式 v X=2X=21616-N-N= =65536-N 65536-N 计数范围:计数范围:1 16553665536v 计数初值要计数初值要分成分成2 2个字节个字节分别送入分别送入TH0TH0、TL0TL02022-2-1441【例例6-46-4】若要求定时器若要求定时器T0T0工作于方式工作于方式1 1,定时时间为,定时时间为1ms1ms,当晶振为当晶振为6 MHz6 MHz时,
32、求送入时,求送入TH0TH0和和TL0TL0的计数初值各为多少?的计数初值各为多少?应怎样送入应怎样送入TH0TH0和和TL0TL0?由于晶振为由于晶振为6 MHz6 MHz,所以机器周期,所以机器周期TcyTcy为为2 2S S,因此:,因此:N=t/TcyN=t/Tcy=1=11010-3-3/2/21010-6-6500500X X2 21616-N-N65536-50065536-5006503665036FE0CH FE0CH n也可以利用以下也可以利用以下2 2条语句完成:条语句完成: TH0 =TH0 = (65536-500) (65536-500)/ /256 ;256 ;
33、商商为计数初值的为计数初值的高字节高字节 TL0 = TL0 = (65536-500)(65536-500)% %256 ; 256 ; 余数余数为计数初值的为计数初值的低字节低字节分别将分别将FEHFEH送入送入TH0TH0中,中,0CH0CH送入送入TL0TL0中即可。中即可。2022-2-1442v方式方式2 2:8 8位自动重装方式位自动重装方式 v X=2X=28 8-N=256-N -N=256-N 计数范围:计数范围:1 1256256v 特别适合与脉冲信号发生器特别适合与脉冲信号发生器2022-2-1443v方式方式3 3:(仅(仅T0T0有此方式,有此方式,T1T1的方式的
34、方式3 3将停止计数)将停止计数) v TL0 TL0进行进行8 8位定时位定时/ /计数计数v TH0 TH0进行进行8 8位定时(位定时(T1T1方式方式2 2时,可出借时,可出借TR1TR1、TF1TF1)v在单片机的串行应用中,在单片机的串行应用中,T1T1常作为串行口波特率发生器,此时常作为串行口波特率发生器,此时可将可将T0T0设为方式设为方式3 3。用T1、工作方式0实现1秒延时函数,晶振频率为12MHz。解:方式0采用13位计数器,其最大定时时间为:81921s = 8.192ms,因此,定时时间不可能选择50ms,可选择定时时间为5ms,再循环200次。定时时间为5ms,则计
35、数值为5ms/1s =5000,T1的初值为: X = M 计数值= 8192 5000 = 3192 = C78H = 0110001111000B13位计数器中TL1的高3位未用,填写0,TH1占高8位,所以,X的实际填写值应为:X = 0110001100011000B = 6318H举举 例例1 1用T1方式0实现1秒延时函数如下: void delay1s() unsigned char i; TMOD=0 x00; / 置T1为工作方式0 for(i=0;i0 xc8;i+) / 设置200次循环次数 TH1=0 x63; / 设置定时器初值 TL1=0 x18; TR1=1; /
36、 启动T1 while(!TF1); / 查询计数是否溢出,即定时5ms时间到,TF1=1 TF1=0; / 5ms定时时间到,将定时器溢出标志位TF1清零 举举 例例1 1用T1、工作方式2实现1秒延时,晶振频率为12MHz。解:因工作方式2是8位计数器,其最大定时时间为:2561s = 256s,为实现1秒延时,可选择定时时间为250s,再循环4000次。定时时间选定后,可确定计数值为250,则T1的初值为: X = M 计数值=256 250 = 6 = 6H。采用T1方式2工作,因此,TMOD =0 x20。举举 例例2 2用定时器工作方式2实现的1秒延时函数如下:void delay
37、1s() unsigned int i; / i取值为04000,故不能定义成unsigned char TMOD=0 x20; / 设置T1为方式2 TH1=6;/ 设置定时器初值,放在for循环之外 TL1=6; for(i=0;i4000;i+) / 设置4000次循环次数 TR1=1; / 启动T1 while(!TF1); / 查询是否溢出,即定时250s到,TF1=1 TF1=0;/ 250s定时到,将溢出标志位TF1清零 举举 例例2 22022-2-14486.3.4 6.3.4 定时定时/ /计数器应用举例计数器应用举例初始化程序应完成:初始化程序应完成:v对对TMODTMO
38、D赋值,以确定赋值,以确定T0T0和和T1T1的工作方式;的工作方式;v求初值求初值, ,并写入并写入TH0TH0、TL0TL0或或TH1TH1、TL1TL1;v中断方式时,要对中断方式时,要对IEIE赋值,开放中断;赋值,开放中断;v使使TR0TR0或或TR1TR1置位,启动定时置位,启动定时/ /计数器工作。计数器工作。2022-2-1449v计数应用计数应用【例例6-36-3】有一包装流水线,产品每计数有一包装流水线,产品每计数2424瓶时发出一个包瓶时发出一个包装控制信号。试编写程序完成这一计数任务。用装控制信号。试编写程序完成这一计数任务。用T0T0完成计数,完成计数,用用P1.0P
39、1.0发出控制信号。发出控制信号。确定方式字:确定方式字:T0T0在计数的方式在计数的方式2 2时:时:M1M0=10M1M0=10,GATE=0 GATE=0 ,C/T=1C/T=1方式控制字为方式控制字为06H06H 求计数初值求计数初值X:X:N=24N=24X=256-24=232=E8HX=256-24=232=E8H应将应将E8HE8H送入送入TH0TH0和和TL0TL0中中 2022-2-1450while(1)while(1) if(Flag= if(Flag= =1)=1) Flag = 0; Flag = 0; P37=0; P37=0; P0=SegCodeCounter
40、; P0=SegCodeCounter; DelayMs(20); DelayMs(20); P37=1; P37=1; 主程序(部分)主程序(部分) 中断服务程序中断服务程序 void C0Isr(void C0Isr( )interrupt 1 )interrupt 1 Flag = 1; Flag = 1; Counter+; Counter+; if(Counter= if(Counter= =13)Counter=0;=13)Counter=0; 2022-2-1451v定时应用定时应用v 定时时间较小时(小于定时时间较小时(小于70ms70ms)。晶振为。晶振为11.0592 MH
41、z11.0592 MHz时,时,TcyTcy为为1.0851.085S S。可直接采用方式。可直接采用方式1 1完成定时任务。完成定时任务。 【例例6-46-4】利用定时利用定时/ /计数器计数器T0T0的方式的方式1 1,产生,产生10ms10ms的定时,并的定时,并使使P2.7P2.7引脚上输出周期为引脚上输出周期为20ms20ms的方波,采用中断方式,设系的方波,采用中断方式,设系统的晶振频率为统的晶振频率为11.0592 MHz11.0592 MHz。 确定方式字:确定方式字:T0T0在定时的方式在定时的方式1 1时:时:M1M0=01M1M0=01,GATE=0 GATE=0 ,C/
42、T=0C/T=0方式控制字为方式控制字为0101H H 求计数初值求计数初值X:X:TcyTcy为为1.0851.085S S N=10ms/1.085N=10ms/1.085S=9216S=9216X=65536-9216=DC00HX=65536-9216=DC00H应将应将DCDC送送TH0, 00HTH0, 00H送送TL0TL0 2022-2-1452void main(void)void main(void) TMOD=0 x01; TMOD=0 x01; TL0 =0 xDC; TL0 =0 xDC; TH0 =0 x00; TH0 =0 x00; IE = 0 x82; IE
43、= 0 x82; TR0 =1; TR0 =1; while(1); while(1); 主程序主程序 中断服务程序中断服务程序 void T0Isr() interrupt 1 void T0Isr() interrupt 1 P27 = P27 = P27;P27; TL0 = 0 xDC; TL0 = 0 xDC; TH0 = 0 x00; TH0 = 0 x00; 2022-2-1453v 定时时间较大时(大于定时时间较大时(大于70ms70ms)。实现方法:一是采用。实现方法:一是采用1 1个定个定时器定时一定的间隔(如时器定时一定的间隔(如20ms20ms),然后用软件进行计数;二
44、是),然后用软件进行计数;二是采用采用2 2个定时器级联,其中一个定时器用来产生周期信号(如个定时器级联,其中一个定时器用来产生周期信号(如20ms20ms为周期),然后将该信号送入另一个计数器的外部脉冲输为周期),然后将该信号送入另一个计数器的外部脉冲输入端进行脉冲计数。入端进行脉冲计数。 【例例6-56-5】编写程序,实现用定时编写程序,实现用定时/ /计数器计数器T0T0定时,使定时,使P2.7P2.7引脚引脚输出周期为输出周期为1s1s的方波。设系统的晶振频率为的方波。设系统的晶振频率为11.0592MHz11.0592MHz。确定方式字:确定方式字:T0T0在定时的方式在定时的方式1
45、 1时:时:M1M0=01M1M0=01,GATE=0 GATE=0 ,C/T=0C/T=0方式控制字为方式控制字为0101H H 求计数初值求计数初值X:X:TcyTcy为为1 1S S N=20ms/12/11.0592=18432N=20ms/12/11.0592=18432X=65536-18432=B800HX=65536-18432=B800H应将应将B8B8送送TH0, 00HTH0, 00H送送TL0TL0 采用定时采用定时20ms20ms,然后再计数,然后再计数2525次次的方法实现的方法实现 2022-2-1454void main(void)void main(void)
46、 TMOD=0 x01;TMOD=0 x01;TL0=0 x00;TL0=0 x00;TH0=0 xB8;TH0=0 xB8;IE=0 x82; IE=0 x82; TR0=1;TR0=1;while(1);while(1); void T0Isr() interrupt 1 void T0Isr() interrupt 1 static uchar Counter; static uchar Counter; Counter+; Counter+; if(Counter=25) if(Counter=25) P27=P27; P27=P27; Counter=0; Counter=0; TL
47、0=0 x00; TL0=0 x00; TH0=0 xB8; TH0=0 xB8; 主程序主程序 中断服务程序中断服务程序 2022-2-1455v门控位的应用门控位的应用【例例6-66-6】 测量测量INT0INT0引脚上出引脚上出现的正脉冲宽度,并将结果现的正脉冲宽度,并将结果(以机器周期的形式)存放在(以机器周期的形式)存放在30H30H和和31H31H两个单元中。两个单元中。v 将将T0T0设置为方式设置为方式1 1的定的定时方式,且时方式,且GATE=1GATE=1,计数,计数器初值为器初值为0 0,将,将TR0TR0置置1 1。 vINT0INT0引脚上出现高电引脚上出现高电平时,
48、加平时,加1 1计数器开始对计数器开始对机器周期计数。机器周期计数。 vINT0INT0引脚上信号变为引脚上信号变为低电平时,停止计数低电平时,停止计数 v然后读出然后读出TH0TH0、TL0TL0的值的值 n 单定时器产生多定时间隔单定时器产生多定时间隔 (略)(略) 2022-2-1456while(1)while(1) TMOD=0 x09; TMOD=0 x09; TL0=0; TL0=0; TH0=0; TH0=0; while(P32); while(P32); TR0=1; TR0=1; while(!P32); while(!P32); while(P32); while(P3
49、2); TR0=0; TR0=0; Low=TL0; Low=TL0; High=TH0; High=TH0; 主程序(部分)主程序(部分) 6.4 80C52的定时的定时/计数器计数器T2T2T2矢量地址矢量地址002B002BH H;T2T2还增加了还增加了1616位自动重装位自动重装、捕获捕获及及加减计数加减计数方式;方式;1.01.0为计数输入为计数输入(T2)(T2),还可,还可输出脉冲输出脉冲;P1.1P1.1(EXT2)EXT2)有捕获有捕获/ /重装方式触发和检测功能。重装方式触发和检测功能。 6.4.1 T26.4.1 T2的相关控制寄存器的相关控制寄存器 v工作方式寄存器工作方式寄存器T2MODT2MODn T2OET2OE:输出输出允许位允许位。为。为1 1时,允许定时时钟从时,允许定时时钟从P1.0P1.0输出。输出。n DCENDCEN:计数方向控制使能位计数方向控制使能位。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024大数据分析与商业决策支持合同
- 2024不锈钢来料加工合同
- 2024寺庙仿古建筑施工合同技术支持合同
- 2024年建筑外墙清洗维护合同
- 2024年度二手房出售交接事项及保修条款合同
- 2024年度设备租赁合同设备类型与租赁期限
- 2024光电子技术研发与合作合同
- 2024年度N95口罩生产线扩建贷款合同
- 2024年建筑工程经纪代理协议
- 2024年度企业品牌形象设计及VI手册整编服务合同
- 《婴幼儿行为观察、记录与评价》习题库 (项目三) 0 ~ 3 岁婴幼儿语言发展观察、记录与评价
- 英语漫谈胶东海洋文化知到章节答案智慧树2023年威海海洋职业学院
- 环保产品管理规范
- 幼儿园:我中奖了(实验版)
- 赵学慧-老年社会工作理论与实务-教案
- 《世界主要海峡》
- 住院医师规范化培训师资培训
- 中央企业商业秘密安全保护技术指引2015版
- 螺旋果蔬榨汁机的设计
- 《脊柱整脊方法》
- 会计与财务管理专业英语智慧树知到答案章节测试2023年哈尔滨商业大学
评论
0/150
提交评论