资源预览内容
第1页 / 共44页
第2页 / 共44页
第3页 / 共44页
第4页 / 共44页
第5页 / 共44页
第6页 / 共44页
第7页 / 共44页
第8页 / 共44页
第9页 / 共44页
第10页 / 共44页
亲,该文档总共44页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
w定时/计数器的结 构w定时/计数器的工 作方式w定时/计数器的应 用w单片机音乐第 6 章定 时 / 记 数 器本章内容Single Chip Microcomputer概述通常采用以下三种方法来实现定时或计数:1硬件法硬件定时功能完全由硬件电路完成,不占 用CPU时间。但当要求改变定时时间时,只能通 过改变电路中的元件参数来实现,很不灵活。2软件法软件定时是执行一段循环程序来进行时间 延时,优点是无额外的硬件开销,时间比较精 确。但牺牲了CPU的时间。3可编程定时器计数器MSC-51单片机定时/计数器的结构返回定时电路集成在芯片中, 称为定时器/计数器。MCS-51的 单片机内有两个16位可编程的 定时器/计数器,分别称为定时 器/计数器0和定时器/计数器1, 它们具有四种工作方式,其控 制字和状态均在相应的特殊功 能寄存器中,通过对控制寄存 器的编程,就可方便地选择适 当的工作方式。 图-:定时/计数器结构定时器/计数器的控制寄存器v1工作方式控制寄存器( TMOD)位D7D6D5D4D3D2D1D0 位符号GATAM1M0GATAM1M0 T1方式字段T0方式字段GATE:门控位。GATE = 0 启动不受 /INT0或 /INT1的控制;GATE = 1 启动受 /INT0 或 /INT1 的控制。C/ : 外部计数器 / 定时器方式选择位。C/ = 0 定时方式;C/ = 1 计数方式。M1M0:工作模式选择位。M1 M0 模式 说明0 0 0 13位定时/计数器,高八位TH(7 0)+ 低五位TL(4 0)0 1 1 16位定时/计数器,TH(7 0)+ TL(7 0)1 0 2 8位计数初值自动重装,TL(7 0) TH(7 0)1 1 3 T0运行,而T1停止工作,8位定时/计数。v定时/计数器控制寄存器( TCON) 位D7D6D5D4D3D2D1D0位符号TF1TR1TF0TR0IE1IT1IE0IT0 TR0:定时 / 计数器0运行控制位。软件置位,软件复位。与GATE有关, 分两种情况:GATE = 0 时:若TR0 = 1,开启T0计数工作;若TR0 = 0,停止T0计 数。GATE = 1 时:若TR0 = 1 且/INT0 = 1时,开启T0计数;若TR0 = 1 但 /INT0 = 0,则不能开启T0计数。若TR0 = 0, 停止T0计数。 TR1:定时 / 计数器1运行控制位。用法与TR0类似。定时器/计数器的工作方式v定时/计数器工作方式工作方式0是13位计数结构的工作方式,其计数器由TH的全部8位和 TL的低5位构成,TL的高3位没有使用。当C/T=0时,多路开关接通振荡脉 冲的12分频输出,13位计数器以次进行计数。这就是定时工作方式。当 C/T=1时,多路开关接通计数引脚(To),外部计数脉冲由银南脚To输入 。当计数脉冲发生负跳变时,计数器加1,这就是我们常称的计数工作方 式 图-2:定时/计数器工作方式0逻辑结构v在工作方式0下,计数器的计数值由下式确定:213-X=8192-X计数值范围是: 18192(213)v定时器的定时值由下式确定:T=N*Tcy=(8192-X)*Tcyv2.定时/计数器工作方式1当M1,M0=01时, 定时/计数器处于工作 方式1,此时,定时/ 及数器的等效电路如 图所示 可以看出,方式0和方式1的区别仅在于计数器的位数不 同,方式0为13位,方式1则为16位,由TH0作为高8位,TL0 为低8位,有关控制状态字与方式0相同。则只需将工作方 式0的计算公式中的213改为216就可得到工作方式1的计数值 计算公式和定时时间计算公式。图-:定时/计数器工作方式逻辑结构v3定时/计数器工作方式2当M1,M0=10时,定时/计数器处于工作方式2,此时,定时/及数器的等 效电路如图所示图-:定时/计数器工作方式逻辑结构具有自动重装载功能,即自动加载计数初值 ,在这种工作方式中,16位 计数器分为两部分,以TL0为计数器,以TH0作为预置寄存器 ,当计数溢出时 ,TH以硬件方法自动给计数器TL0重新加载 。v工作在方式下,计数器的计数值由下式确定:28-X=256-X计数范围为: 1256 v定时器的定时值由下式确定:T=N*Tcy=(256-X)*Tcy v定时/计数器工作方式当M1,M0=10时,定时/计数器处于工作方式2,此时,定时/及数器的 等效电路如图所示 图-5:定时/计数器工作方式3等效电路v工作方式3只适用于定时/计数器T0。当T0工作在方式3时,TH0和TL0被分为 两个独立的8位计数器。TL0可作为定时器或计数器使用,占用了T0本身的 控制信号TF0和TR0。TH0只能作为定时器使用,且占用了定时/计数器T1的 两个控制信号TR1和TF1。v当T0工作于方式3时,T1只能工作在方式0、方式1或方式2,并且由 于已没有计数溢出标志位TF1可供使用,只能把计数溢出直接送给 串行口,作串行口的波特率发生器使用。等效电路图如下 图-:方式下的作为波特率发生器等效电路TH1 (8位)TL1 (8位或5位)12分频OSCTL1 (8位)TH1 (8位)12分频OSCC/T=0C/T=1C/T=0C/T=1串行口串行口T1(P3.5)T1(P3.5)T1工作方式0(或 1)T1工作方式2定时/计数器应用举例v在使用定时/计数器时,应做好四件事:设置 TMOD以选择工作方式;计算并设置计数初值 THX,TLX;设置IE、IP以规定中断的开放/禁 止及优先级;设置TCON以启动/停止定时/计 数器的工作。v工作方式的应用【例】设单片机晶振频率fosc=6MHZ,使用定时器1以方 式0产生周期为600s的等宽方波脉冲,并由P1.7输出, 以查询方式完成。解:(1)计算计数初值欲产生周期为600s的等宽方波脉 冲,只需在P1.7端以300s为周期交替输出高低电平即可 ,因此定时时间应为300s。设待求计数初值为N,则:(213-N)210-6=30010-6N=8042=1F6AH0001111101101010B将低5位01010B=0A写入TL1,将高8位有效值 11111011B=FBH写入TH1中。(2)TMOD初始化为把定时/计数器1设定为方式0,则M1M0=00。为 实现定时功能应使C/=0,为实现定时器启动应使 GATE=0,因此设定工作方式控制寄存器TMOD=00H。 (3)由TR1启动和停止定时器TR1=1为启动,TR1=0为停止参考程序如下:ORG 1000HSTART: MOV TCON,#00H ;清TCONMOV TMOD,#00H ;工作方式设定MOV TH1,#0FBH ;计数初值设定MOV TL1,#0AHMOV IE,00H ;关中断SETB TR1 ;启动TR1LOOP0: JBC TF1,LOOP1 ;查询是否溢出SJMP LOOP0LOOP1: MOV TH1,#0FBH ;重设初值MOV TL1,#0AHCPL P1.7 ;输出取反SJMP LOOP0END v工作方式应用 【例】已知某生产线的传送带上不断地有产品单向传送, 产品之间有较大间隔,如图6-6所示。使用光电开关统计 一定时间内的产品个数。假定红灯亮时停止统计,红灯 灭时才在上次统计结果的基础上继续统计,试用单片机 定时/计数器T1的方式1完成该项产品的计数任务。解:(1) 初始化: GATE=1, C/T=1, M0M1=01,故 TMOD=11010000B=0D0H,TCON=00(2)T1在方式1时, 溢出产生中断, 且计数器回零, 故在中断服务程序中, 需用R0计数中断次数,以保护累 积计数结果。(3) 启动T1计数, 开T1中断。v参考程序如 下:ORG 0000H AJMP STARTORG 001BHAJMP T1INT ORG 0100HSTART: MOV SP, #60HMOV TCON, #00H MOV TMOD, #0D0HMOV TH1, #0FFH 图-:产品传送带原理图MOV TL1, #0FFHMOV R0, #00H MOV P3, #28H ;置P3.5,P3.3为输入状态SETB TR1SETB ET1SETB EA MAIN: LCALL DISP ORG 0A00HT1INT: INC R0 MOV TH1, #0FFHMOV TL1, #0FFHRETIDISP: RETENDv工作方式的应用 【例】使用定时器T0以方式2产生200微秒定时,在P1.0输 出周期为400微秒的连续方波。已知晶振频率fosc=6MHz 。(1)计算计数初值(256-N)210-6=20010-6N=156=9CH(2)TMOD初始化工作方式2时,M1M0=10,实现定时功能C/=0, GATE=0。定时器1不用,无关位设定为0,可得TMOD=02H 。参考程序如下:ORG 000BHLJMP LOOP0ORG 0200HSTART: MOV TCON,#00HMOV TMOD,#02H ;定时器方式2MOV TH0,#9CH ;计数初值MOV TL0,#9CHSETB EA ;允许总中断SETB ET0 ;T0中断允许SETB TR0 ;启动T0HERE: SJMP HERE ;等待中断ORG 0500H ;中断服务程序LOOP0: CPL P1.0RETIENDv工作方式的应用 【例】假设有一个用户系统中已使用了两个外部中断源, 并 置定时器 T1 于方式 2, 作串行口波特率发生器用, 现要 求再增加一个外部中断源, 并由P1.0 口输出一个5 Hz的 方波(假设晶振频率为 6 MHz)。 在不增加其它硬件开销时,可把定时/计数器T0置于工作方 式3,利用外部引脚T0端作附加的外部中断输入端,把TL0 预置为0FFH,这样在T0端出现由1至0的负跳变时,TL0溢 出,申请中断,相当于边沿激活的外部中断源。在方式3 下,TH0总是作8位定时器用,可以靠它来控制由P1.0输出 的5kHz方波。 由P1.0输出5kHz的方波,即每隔100s使P1.0的电平发生一 次变化。则TH0中的初始值:X=M-N=256-100/2=206。下面是有关的程序:MOV TL0, 0FFH MOV TH0, 206MOV TL1, BAUD ; BAUD根据波特率要求设置常数MOV TH1, BAUDMOV TMOD, 27H ; 置T0工作方式3,TL0工作于计数 器方式MOV TCON, 55H ; 启动定时器 T0、 T1, 置外部中断 0 和 1为边沿 激活方式MOV IE, 9FH ; 开放全部中断TL0 溢出中断服务程序(由 000BH单元转来): TL0INT: MOV TL0, 0FFH ; 外部引脚 T0 引起中断处理程序RETITH0 溢出中断服务程序(由 001BH转来): TH0INT: MOV TH0, 206CPL P1.0RETI此处串行口中断服务程序、 外中断0和外 中断1的中断服务程序没有列出。 v5. 定时器作外部中断源应用MCS51单片机有两个定时器计数器,当 它
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号