《单片机原理及应用》课件第6章 定时计数器控制_第1页
《单片机原理及应用》课件第6章 定时计数器控制_第2页
《单片机原理及应用》课件第6章 定时计数器控制_第3页
《单片机原理及应用》课件第6章 定时计数器控制_第4页
《单片机原理及应用》课件第6章 定时计数器控制_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第6章定时/计数器控制6.18051定时/计数器的结构和工作原理6.2定时/计数器的控制寄存器6.3定时/计数器的工作方式6.4定时/计数器用于外部中断扩展6.5定时/计数器应用6.6定时器26.7看门狗6.8实践训练—简易频率计设计6.9思考与练习本章要点在单片机的应用系统中,常常会有定时控制的需求,如定时输出、定时检测、定时扫描等;也经常要对外部事件进行计数。8051系列单片机片内集成有两个可编程的定时/计数器:T0和T1。它们既可以工作于定时模式,也可以工作于外部事件计数模式。此外,T1还可以作为串行接口的波特率发生器。要实现定时功能,可以采用下面三种方法:(1)采用软件定时:让CPU循环执行一段程序,通过选择指令和安排循环次数,以实现软件定时。软件定时不占用硬件资源,但占用了CPU时间,降低了CPU的利用率。(2)采用时基电路定时:例如采用555电路,外接必要的元器件(电阻和电容),即可构成硬件定时电路。此种方法实现容易,改变电阻和电容值,可以在一定范围内改变定时值。但在硬件连接好以后,定时值与定时范围不能由软件进行控制和修改,即不可编程。中断的基本概念8051中断系统的结构单片机中断系统8051中断的使用中断服务程序本章要点(3)

采用可编程芯片定时:这种定时芯片的定时值及定时范围很容易用软件来确定和修改,此种芯片定时功能强,使用灵活。在单片机的定时/计数器不够用时,可以考虑进行扩展。典型的可编程定时芯片如Intel8253。本章要点:定时和计数的基本概念定时/计数器的结构单片机定时/计数器的特点定时/计数器的使用(合理选择定时/计数器工作方式,初始值的计算,初始化程序的设计)中断服务程序定时/计数器工程中运用CONTNTS6.18051定时/计数器的结构和工作原理6.18051定时/计数器的结构和工作原理011.定时/计数器的结构图6-1所示是定时/计数器的结构原理框图。图6-1定时/计数器的结构原理框图定时/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成(T0由TH0和TL0组成,T1由TH1和TL1组成)。TMOD是定时/计数器的工作方式寄存器,由它确定定时/计数器的工作方式和功能;TCON是定时/计数器的控制寄存器,用于控制T0、T1的启动和停止以及设置溢出标志。6.18051定时/计数器的结构和工作原理012.定时/计数器的工作原理作为定时/计数器的加1计数器,其输入的计数脉冲有两个来源,一个是由系统的时钟振荡器输出脉冲经12分频后送来,另一个是T0或T1引脚输入的外部脉冲源。每来一个脉冲,计数器加1,当加到计数器为全1时,再输入一个脉冲,就使计数器回0,且计数器的溢出使TCON中TF0或TF1置1,向CPU发出中断请求(定时/计数器中断允许时)。如果定时/计数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。可见,由溢出时计数器的值减去计数初值才是加1计数器的计数值。6.18051定时/计数器的结构和工作原理01设置为定时器模式时,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12,12

MHz为1

μs、6

MHz为2

μs)。计数值乘以机器周期就是定时时间。设置为计数器模式时,外部事件计数脉冲由T0(P3.4)或T1(P3.5)引脚输入到计数器。在每个机器周期的S5P2期间采样T0、T1引脚电平。当某周期采样到一高电平输入,而下一周期又采样到一低电平输入时,则计数器加1,更新的计数值在下一个机器周期的S3P1期间装入计数器。由于检测一个从1到0的下降沿需要2个机器周期,因此要求被采样的电平至少要维持一个机器周期,所以最高计数频率为晶振频率的1/24。当晶振频率为12

MHz时,最高计数频率不超过1/2

MHz,即计数脉冲的周期要大于2

μs。CONTNTS6.2

定时/计数器的控制寄存器6.2定时/计数器的控制寄存器028051系列单片机定时/计数器的工作由两个特殊功能寄存器控制。TMOD用于设置其工作方式,TCON用于控制其启动和中断申请。工作方式寄存器TMOD工作方式寄存器TMOD用于设置定时/计数器的工作方式,高4位用于T1,低4位用于T0。TMOD的结构和各位名称、功能见表6-1。表6-1 TMOD的结构和各位名称、功能(字节地址89H)6.2定时/计数器的控制寄存器02(1)GATE:门控位。GATE=0时,只要用软件使TCON中的TR0或TR1为1,就:可以启动定时/计数器工作;GATE=1时,用软件使TR0或TR1为1,同时外部中断或也为高电平时,才能启动定时/计数器工作。即此时定时器的启动条件加上了或为高电平这一条件。(2):定时/计数模式选择位。=0为定时模式,此时定时器计数的脉冲是由8051单片机片内晶振器经12分频后产生的,每经过一个机器周期定时器(T0或T1)的数值加1,直至计数器满产生溢出。例如:当8051采用6MHz晶振时,每个机器周期为2s,计10个机器周期即为20s,即定时20s。=1为计数模式,通过引脚T0(P3.4v)和T1(P3.5)对外部脉冲信号计数。当输入脉冲信号由1至0的下降沿时,计算器的值加1.在每个机器周期,CPU采样T0和T1的输入电平。虽然对输入信号的占空比没有特殊要求,但是为了确保某个电平在变化之前至少被采样一次,要求电平保持时间至少是一个完整的机器周期,又由于检测一个1至0的下跳变需要两个机器周期,故最高计数频率为fosc/24,即晶振频率的1/24。6.2定时/计数器的控制寄存器02(3)M1M0:工作方式设置位。定时/计数器有4种工作方式,由M1M0进行设置。见表6-2。特别需要注意,TMOD不能进行位寻址,所以只能用字节指令设置定时/计数器的工作方式。CPU复位时TMOD所有位清0,上电复位后应重新设置。6.2定时/计数器的控制寄存器022.控制寄存器TCONTCON的低4位用于控制外部中断,已在前面介绍。高4位用于控制定时/计数器的启动与中断申请。TCON的结构、位名称、位地址和功能见表6-3。(1)TF1:T1溢出中断请求标志。当定时/计数器T1计数溢出后,由CPU内硬件自动置1,表示向CPU请求中断。CPU响应该中断后,片内硬件自动对其清0。TF1也可由软件程序查询其状态或由软件置位清0。6.2定时/计数器的控制寄存器02(2)TF0:T0溢出中断请求标志。其意义和功能与TF1相似。(3)TR1:定时/计数器T1运行控制位。TR1=1,T1运行,TR1=0,T1停止。(4)TR0:定时/计数器T0运行控制位。TR0=1,T0运行,TR0=0,T0停止。CONTNTS6.3定时/计数器的工作方式6.3定时/计数器的工作方式038051系列单片机定时/计数器有4种工作方式,由TMOD中M1M0的状态确定。前3种工作方式,T0和T1除所使用的寄存器、有关控制位、标志不同外,其他操作完全相同。T1无方式3。下面以T0为例进行分析。1. 工作方式0当M1M0=00时,定时/计数器工作于方式0,如图6-2所示。在方式0情况下,内部计数器为13位。由TL0低5位和TH08位组成,特别需要注意的是TL0低5位计数满时不向TL0的第6位进位,而是向TH0进位,13位计满溢出,TF0置1,最大计数值213=8192(计数器初值为0)。6.3定时/计数器的工作方式036.3定时/计数器的工作方式03GATE位决定定时器运行口口那个值取决于TR0或TR0和INT0引脚。当门控位GATE=0时,由于GATE信号封锁了或门,使引脚INT0信号无效,T0运行控制由TR0单独控制。当TR0=1时,接通模拟开关,定时/计数器工作;当TR0=0,则模拟开关断开,定时/计数器停止工作。当GATE=1时,T0运行控制由TR0和INT0两个条件共同控制。如果TR0=1,同时INT0=1,与门输出为1,定时/计数器方可工作。TF0是定时/计数器的溢出状态标志,溢出时由硬件置位,TF0溢出中断被CPU响应时,转入中断时硬件清零,TF0也可由程序查询和清“零”。工作方式0对定时/计数器高8位和低5位的初值计算很麻烦,易出错。方式0采用13位计数器是为了与早期的产品兼容,所以在实际应用中常由16位的方式1取代。6.3定时/计数器的工作方式03【例6-1】设定时器T0选择工作方式0,定时时间为1ms,fosc/=6MHz。试确定T0初值,计算最大定时时间T。解答过程:当T0处于工作方式0时,加1计数器为13位。设T0的初值为X,则转换为二进制数:X=1111000001100BT0的低5位:01100B=0CHT0的高8位:11110000B=F0H6.3定时/计数器的工作方式03T0最大定时时间对应于13位计数器T0的各位全为1,即(TH0=FFH),(TL0)=1FH。则6.3定时/计数器的工作方式032. 工作方式1当M1M0=01时,定时/计数器工作于方式1,如图6-3所示。在方式1情况下,内部计数器为16位。由TL0作低8位,TH0作高8位。16位计满溢出时,TF0置1。6.3定时/计数器的工作方式03方式1与方式0的区别在于方式0是13位计数器,最大计数值213=8

192;方式1是16位计数器,最大计数值为216=65

536。用作定时器时,若fOSC=12

MHz,则方式0最大定时时间为8

192

μs,方式1最大定时时间为65

536

μs。6.3定时/计数器的工作方式033.工作方式2当M1M0=10时,定时/计数器工作于方式2,如图6-4所示。在方式2情况下,定时/计数器为8位,能自动恢复定时/计数器初值。在方式0、方式l时,定时/计数器的初值不能自动恢复,计满后若要恢复原来的初值,必须在程序指令中重新给TH0、TL0赋值。但方式2与方式0、方式1不同。方式2仅用TL0计数,最大计数值为28=256。计满溢出后,进位TF0,使溢出标志TF0=1,同时原来装在TH0中的初值自动装入TL0(TH0中的初值允许与TL0不同)。所以,方式2既有优点,又有缺点。优点是定时初值可自动恢复,缺点是计数范围小。因此,方式2适用于需要重复定时,而定时范围不大的应用场合,特别适合于用作较精确的脉冲信号发生器。6.3定时/计数器的工作方式036.3定时/计数器的工作方式034.工作方式3当M1M0=11时,定时/计数器工作于方式3,但方式3仅适用于T0,T1无方式3。(1)T0方式3。在方式3情况下,T0被拆成2个独立的8位计数器TL0、TH0,如图6-5所示。6.3定时/计数器的工作方式03①TL0使用T0原有的控制寄存器资源:TF0、TR0、GATE、、,组成一个8位的定时/计数器。②TH0借用T1的中断溢出标志TF1、TR1,只能对机内机器周期脉冲计数,组成一个8位定时器。(2)T0方式3情况下的T1。T1由于TF1、TR1被T0的TH0占用,计数器溢出时,只能将输出送至串行口,即用作串行口波特率发生器,但T1工作方式仍可设置为方式0、方式1、方式2,控制位仍可使T1工作在定时/计数器方式,如图6-6所示。从图6-6(c)中看出,T0方式3情况下的T1方式2,因定时初值能自动恢复,用作波特率发生器更为合适。6.3定时/计数器的工作方式03图6-6T0方式3情况下的T1工作方式6.3定时/计数器的工作方式03在这种情况下,定时/计数器通常作为串行口的波特率发生器使用,以确定串行通信的速率,因为已没有TF1被定时/计数器0借用了,只能把计数溢出直接送给串行口。把定时/计数器1当作波特率发生器使用时,只需设置好工作方式,即可自动运行。如果停止它的工作,需送入一个把它设置为方式3的方式控制字即可,这是因为定时/计数器本身就不能工作在方式3,如果硬把它设置为方式3,自然会停止工作。CONTNTS6.4

定时/计数器用于外部中断扩展6.4定时/计数器用于外部中断扩展04实际应用系统中如需有两个以上的外部中断源,而片内定时/计数器未使用时,可利用定时/计数器来扩展外部中断源。扩展方法是,将定时/计数器设置为计数器方式,计数初值设定为满程,将待扩展的外部中断源接到定时/计数器的外部计数引脚。从该引脚输入一个下降沿信号,计数器加1后便产生定时/计数器溢出中断。因此,可把定时/计数器的外部计数引脚作为扩展中断源的中断输入端。例如,利用T0扩展一个外部中断源。将T0设置为计数器方式,按方式2工作,TH0、TL0的初值均为0FFH,T0允许中断,CPU开放中断。其初始化程序如下:6.4定时/计数器用于外部中断扩展04对应的C语言初始化程序如下:当T0(P3.4)引脚上出现外部中断请求信号(一个下降沿信号)时,TL0计数加1,产生溢出,将TF0置1,向CPU发出中断请求。同时,TH0的内容0FFH又自动装入TL0,作为下一轮的计数初值。这样,P3.4引脚每输入一个下降沿脉冲,都将TF0置1,向CPU发出中断请求。这就相当于又多了一个边沿触发的外部中断源。CONTNTS6.5

定时/计数器应用6.5定时/计数器应用05在工程应用中,常常会遇到要求系统定时或对外部事件计数等类似问题,若用CPU直接进行定时或计数不但降低了CPU的效率,而且会无法响应实时事件。灵活运用定时/计数器不但可减轻CPU的负担,简化外围电路,而且可以提高系统的实时性,能快速响应和处理外部事件。由于定时/计数器的功能是由软件编程实现的,因此一般在使用定时/计数器前都要对其进行初始化。所谓初始化,实际上就是确定相关寄存器的值。初始化步骤如下:(1)确定工作方式。对TMOD赋值。根据任务性质明确工作方式及类型,从而确定TMOD寄存器的值。例如,要求定时/计数器T0完成16位定时功能,TMOD的值就应为01H,用指令MOVTMOD,#01H即可完成工作方式的设定。(2)预置定时/计数器的计数初值。依据以上确定的工作方式和要求的计数次数,计算出相应的计数初值。直接将计数初值写入TH0、TL0或TH1、TL1。(3)根据需要开放定时/计数器中断。直接对IE寄存器赋值。(4)启动定时/计数器工作。将TR0或TR1置1。GATE=0时,直接由软件置位启动;GATE=l时,除软件置位外,还必须在外中断引脚处加上相应的电平值才能启动。6.5定时/计数器应用05【例6-2】设单片机的振荡频率为12MHz,用定时器/计数器0的模式1编程,在P1.0引脚产生一个50Hz的方波,定时器T0采用中断的处理方式。题意分析定时器的分析过程:需要产生周期信号时,选择定时方式。定时时间到了对输出端进行周期性的输出即可。周期为50Hz的方波要求定时器的定时时间为10ms,每次溢出时,将P1.0引脚的输出取反,就可以在P1.0上产生所需要的方波。解答过程:定时器初值计算:振荡频率为12MHz,则机器周期为1µs。设定时初值为X,(65536-X)×1µs=10ms,则X=55536=D8F0H定时器的初值为:TH0=0D8H,TL0=0F0H6.5定时/计数器应用05C语言程序:6.5定时/计数器应用05【例6-3】用定时器控制P1.1所接的LED每100ms亮或灭一次,设系统的晶振为6MHZ。采用查询方式实现。分析过程:要使用单片机的定时器,首先要设置定时器的工作方式,然后给定时器赋初值,即进行定时器的初始化。解答过程:这里选择定时器T0定时,方式1,不使用门控位。由此可以确定定时器的工作方式字TMOD应为00000001B,即0x01。定时初值为:由于fosc=6MHz,Tm=2μs,因此时间常数的计算为:6.5定时/计数器应用05初始化定时器后,要定时器工作,必须将TR0=1。下面用查询方式完成。6.5定时/计数器应用05当定时时间到,TF0被置为1。因此,只需要查询TF0是否等于1,即可得知定时时间是否到达,程序中“if(TF0==1)”来判断。如果TF0=0,则条件满足,大括号中的程序不会被执行;当定时时间到,TF1=1,条件满足,执行大括号中的程序,首先将TF0清零,然后重置定时初值,最后是执行规定动作,取反P1.1的状态。CONTNTS6.6

定时器26.6定时器206除了定时器0和定时器1外,52系列单片机还有另外一个定时器——定时器2。下面我们简单介绍一下定时器2的用法。定时器2是一个16位的定时器/计数器。T2CON中的2/TC位决定定时器2是用作定时器还是计数器。定时器2有三种工作模式:捕捉模式、自动重载(增或减计数)模式和波特率发生器模式。定时器2的工作模式由T2CON决定,详见表6-6。定时器2有两个8位的寄存器TH2和TL2。在定时器功能中,每个机器周期TL2都会增1。由于一个机器周期由12个振荡周期组成,所以定时器2的计数速率为振荡频率的1/12。与定时器2有关的寄存器为T2CON和T2MOD。T2CON寄存器的组成见表6-4。6.6定时器206详细介绍如下。TF2:定时器2溢出标志位。定时器2溢出时置位。必须由软件清零。当RCLK=1或TCLK=1时,TF2不会置位。EXF2:定时器2外部标志位。当EXEN2=1,且T2EX引脚发生电平的负跳变引起捕捉或重载时被置位。当允许定时器2中断时,EXF2=1会使CPU跳转到定时器2的中断处理函数中。EXF2必须由软件清零。在增/减计数模式下(DCEN=1),EXF2不会引起中断。RCLK:接收时钟使能。置位时,在串行通信模式1和模式3中,串口将使用定时器2的溢出脉冲作为接收时钟。RCLK=0将使串口使用定时器1的溢出脉冲作为接收时钟。•

TCLK:发送时钟使能。置位时,在串行通信模式1和模式3中,串口将使用定时器2的溢出脉冲作为发送时钟。TCLK=0将使串口使用定时器1的溢出脉冲作为发送时钟。• EXEN2:定时器2外部信号使能。置位时,如果定时器2并没有用作串口的波特率发生器,T2EX引脚的电平负跳变将发生捕捉或重载。6.6定时器206TR2:定时器2启动/停止控制位。TR2=1将启动定时器2。C/T2:定时器/计数器选择位。C/T2=0时用作定时器,C/T2=1时用作计数器(下降沿触发)。CP/RL2:捕捉/重载选择位。CP/RL2=1时,如果EXEN2=1,将在T2EX引脚发生电平负跳变时产生捕捉事件。02/=RLCP时,当定时器2溢出或T2EX引脚发生电平负跳变时(如果EXEN2=1)发生重载。当RCLK或TCLK=1时,这一位将被忽略,定时器2溢出时会被强行自动重载。T2MOD寄存器的组成见表6-5。具体说明如下。T2OE:定时器2输出使能位。DCEN:置位时,定时器2可设置成增/减计数器。6.6定时器2066.6定时器2061.捕捉模式在捕捉模式中,要设置T2CON中的EXEN2位。如果EXEN2=0,那么定时器2是一个16位的定时器或计数器,当它溢出时,T2CON中的TF2置位,并可产生中断。如果EXEN2=1,那么定时器2的操作是一样的,但单片机的T2EX引脚的从1到0的电平变化会把当前TH2和TL2的值分别捕捉到RCAP2H和RCAP2L中。此外,T2EX引脚的电平变化会使T2CON中的EXF2位置位。EXF2和TF2一样,都可以产生中断。2.自动重载(增或减计数)模式在16位自动重载模式中,定时器2可以设置成增计数或减计数。这一功能由T2MOD中的DCEN(减计数使能)位设置(见表3.13)。当单片机复位时,DCEN被置0,定时器为增计数方式。当DCEN被置位时,定时器2可以为增计数或减计数,这要取决于T2EX引脚的值。

当DCEN=0时,定时器2处于增计数方式。在这种模式下,如果EXEN2=0,那么定时器2增计数至0xFFFF,当定时器溢出时,把TF2位置位。定时器溢出会使定时器的寄存器值自动从RCAP2H和RCAP2L自动重载。6.6定时器206RCAP2H和RCAP2L的值由软件预设。如果EXEN2=1,那么定时器寄存器的重载除由定时器溢出触发外,还可以被T2EX引脚的从1到0的电平变化触发。这一电平变化还会把EXF2位置位。如果中断被允许,TF2和EXF2的置位都可以产生中断。把DCEN位置1使定时器2可以增计数或减计数。在这种模式下,T2EX引脚的电平控制计数的方向。当T2EX引脚为高电平时,定时器2增计数。当定时器计数至0xFFFF溢出并把TF2置位,同时RCAP2H和RCAP2L的值会被分别自动重载至定时器的寄存器TH2和TL2。当T2EX引脚为低电平时,定时器2减计数。当TH2和TL2分别与RCAP2H和RCAP2L相等时,定时器下溢出,TF2置位,0xFFFF被重载至定时器的寄存器中。在这种模式下,EXF2位在定时器2上溢出或下溢出时翻转,可以被用作定时器的第17位。这时EXF2并不作为中断的标志位。6.6定时器2063. 波特率发生器模式通过设置T2CON中的TCLK和(或)RCLK位,定时器2可用作波特率发生器。注意如果把定时器2仅用作发送或接收而把定时器1用作另一功能,那么发送和接收的波特率可以不一样。波特率发生器模式与自动重载模式相似,TH2的溢出会引起定时器2的定时器值被由软件预设的RCAP2H和RCAP2L自动重载。串行通信模式1和模式3中的波特率由定时器2的溢出速率决定:

6.6定时器206这时,定时器2可以被设置作定时器或计数器。在大多数应用中,定时器2都被设置作定时器。当定时器2被设置作波特率发生器时,它的定时器操作是不一样的。通常,作为一个定时器,它每个机器周期增1(以振荡频率的1/12的速率增1)。但作为波特率发生器,定时器每2个振荡周期增1。波特率的计算公式如下:

其中(RCAP2H,RCAP2L)是由RCAP2H和RCAP2L组成的16位无符号整数。在使用要注意TH2的溢出并不会使TF2置位,也不会产生中断。另外,如果EXEN2被置位,T2EX引脚处的从1到0的电平变化会把EXF2置位,但不会引起(RCAP2H,RCAP2L)重载到(TH2,TL2)。因此,当定时器2被用作波特率发生器时,T2EX可以用作额外的外部中断。当定时器2在波特率发生器模式下运行(TR2=1)时,TH2和TL2不应被读写。RCAP2寄存器可以读,但不应被写入。在访问定时器2的寄存器或RCAP2寄存器前,应先把定时器停掉(把TR2清0)。6.6定时器206定时器/计数器T2作为波特率发生器使用时的编程方法如下:6.6定时器2064.可编程时钟输出P1.0可用作输出50%占空比的方波。这一引脚除了常规的I/O外,还有两个其它功能。它可以用作定时器2的外部时钟输入,也可以用作输出从61Hz到4MHz(振荡频率为16MHz时)的占空比为50%的方波。要把定时器2设置成时钟发生器,要把2/TC清0和把T2OE(T2MOD.1)置1。TR2位(T2CON.2)用于开始或停止定时器。时钟的输出频率取决于振荡器频率和定时器2的捕捉寄存器(RCAP2H和RCAP2L):在时钟发生器模式下,定时器2的溢出不会产生中断。可以同时把定时器2用作波特率发生器和时钟发生器。

但是,

波特率和时钟频率不能分别确定,

因为它们共用RCAP2H和RCAP2L。6.6定时器206【例6-4】用定时器/计数器2从P1.0产生一个5000Hz的方波,假设晶振频率fosc为12MHz。分析过程:当T2MOD的T2OE=1,T2CON的C/T2=0时,T2工作于时钟输出方式。T2溢出信号自动触发T2(P1.0)引脚状态翻转从P1.0引脚输出频率可调、精度高的方波信号。解答过程:溢出后,RCAP2H和RCAP2L寄存器内容装入TH2和TL2寄存器中,重新计数,以便获得准确的溢出信号。输出信号频率为:6.6定时器206C语言程序:CONTNTS6.7

看门狗6.7看门狗07看门狗是S5x系列单片机比C5x系列多出来的功能之一。看门狗可以在CPU死机时重启CPU。看门狗由一个14位的计数器和看门狗寄存器WDTRST组成。单片机复位后,看门狗是处于禁用状态的。要使能看门狗,就要连续向WDTRST寄存器写入0x1e和0xe1。当看门狗使能且振荡器工作时,看门狗计数器每个机器周期增1。使能看门狗后,除了复位(硬件复位或看门狗溢出复位)外没有办法禁用看门狗。当看门狗计数器溢出时,它会在RST引脚产生一个高电平脉冲,迫使单片机复位。当看门狗使能后,程序必须不断地向WDTRST写0x1e和0xe1以避免看门狗溢出(通常称为“喂狗”)。看门狗的14位计数器在数到16383(0x3FFF)后溢出,这时单片机会复位。这意味着程序必须最多16383机器周期内喂一次狗。CONTNTS6.8实践训练—简易频率计设计6.8实践训练—简易频率计设计08利用单片机的T0、T1的定时/计数功能,完成对输入的信号的频率进行测量,测量的结果通过8位动态数码管显示出来。这里要求实现对0~200KHz的信号频率进行准确测量,测量误差不超过±1Hz。频率计的功能,是测出1s内的输入信号的周期个数,再用数字的方式显示出来,也就是需要完成定时1s、对输入的脉冲计数和数字显示的硬件电路和相应的程序。6.8实践训练—简易频率计设计086.8.1

应用环境数字频率计是一种用十进制数字显示被测信号频率的数字测量仪器。根据电信号的频率的定义,就是在1s钟内信号变化的周期数。在一个单片机系统中,为了实现频率的测量,就是要对外部信号进行计数,每到1s时,将计数所得的数值送到显示器上。6.8实践训练—简易频率计设计086.8.2实现过程1.硬件电路分析从设计要求可以得出,定时1s,可以通过单片机内部的定时器来完成,不需要额外的硬件电路。同样,对脉冲的计数也可能用单片机内部的定时/计数器来完成,也不需要另外的硬件电路,只需要将外部的计数脉冲连接对应的引脚上,本训练中选择T0作为计数用,所以将计数脉冲连接到对应的T0引脚(P3.4,第二功能)。显示频率的数字,可以采用各种显示器件,如LED、LCD等,本设计中采用LED的动态显示电路,P0口接七段显示器的段码输入端,P2口接位码控制端。输出脉冲的P1.0(采用定时器2产生脉冲)作为信号源。(可以参考后面的显示器设计一章)6.8实践训练—简易频率计设计082.程序设计分析通过任务分析,要求单片机要完成三个实时任务,分别是:对输入信号周期进行计数、1s定时、动态显示,以及频率计算及频率转换为显示数据。要同时完成三个实时任务,只有使用中断的方式进行任务分割,可以用定时器T0、T1及其中断服务程序和主程序来分别完成每一个任务。其中,动态显示因人的视觉的不敏感,对实时要求最低,因而使用主程序完成,同时将数据的运算也放在主程序中。剩下的两个任务分别用T0完成输入信号的计数和T1完成1s的定时。(1)定时1sT1工作在定时状态下,最大定时时间约为65ms,达不到1s的定时,所以采用定时50ms,共定时20次,即可完成1s的定时功能。因电路晶振fOSC=11.0592MHz,所以T1的初值的装入语句如下:6.8实践训练—简易频率计设计08每定时1s钟时间到了,就停止T0的计数,而从T0的计数单元中读取计数的数值,然后进行数据处理,送到数码管显示出来。定时器1的中断服务程序如下所示:6.8实践训练—简易频率计设计08(2)输入的脉冲计数T0是工作在计数状态下,对输入的频率信号进行计数。在本任务中,由于单片机的工作频率fOSC=11.0592MHz,工作在计数状态

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论