您好,欢迎访问三七文档
单片机电子教案向下向上未页首页返回bojia@bojia.net5定时器/计数器MCS51单片机内设有两个可编程的定时器/计数器T0和T1,它们都是16位的,可用于定时,也可用于对外部事件进行计数及为串行接口的波特率发生器。5.1定时器/计数器的内部结构和功能Ml-51单片机的定时器/计数器的内部结构主要部件是两个16位计数器:TH0、TL0和TH1、TL1,还有方式控制寄存器(TMOD)和定时器/计数器的控制寄存器(TCON)。TH0、TL0用来存放T0的计数初值。TH0存高8位,字节地址为8CH,8AH。TH1、TL1用来存放T1的计数初值,TH1存高8位。字节地址为8DH,8BH。TMOD定时器/计数器的方式控制寄存器,字节地址为89H。TCON定时器/计数器控制寄存器,字节地址为88H。单片机电子教案向下向上未页首页返回bojia@bojia.net1.定时器T0和T1在作定时器使用时,输入的时钟脉冲是由晶体振荡器的输出经12分频后得到的,故其频率为晶振频率的1/12。如果晶振频率为12Mb,则定时器每接收一个输入脉冲的时间为1us。2.计数器当它用作对外部事件计数时,接相应的外部输入引脚T0或T1在这种情况下,当检测到输入引脚上的电平由高跳变到低时,计数器就加1(由于需要两个机器周期来识别一个从“1”到“0”的跳变,故最高计数频率为晶振频率的1/24)。这就要求输入信号的电平要在跳变后至少应在一个机器周期内保持不变,以保证在给定的电乎再次变化而至少被采样一次。单片机电子教案向下向上未页首页返回bojia@bojia.net5.2定时器的方式控制寄存器TMOD。TMOD为定时器的方式控制寄存器,高四位用于T1,低四位用于T0。其格式如下:GATEC/TM1M0GATEC/TM1M0D7D6D5D4D3D2D1D0字节地址89HTMODT1方式控制T0方式控制定时器/计数器T0和T1,有四种工作方式,由TMOD中的M1,M0来确定,如表11-1所示。单片机电子教案向下向上未页首页返回bojia@bojia.net表11-1M1M2方式说明00013位定时器/计数器01116位定时器/计数器102自动装入时间常数的8位定时器/计数器113对T0分为两个8位计数器;对T1无此方式单片机电子教案向下向上未页首页返回bojia@bojia.netC/T为定时器/计数器方式选择位。C/T=1时,为计数器方式;C/T=0时,为定时器方式。GATE为运行控制位。当GATE=1时,计数器的计数受外部引脚输入电乎的控制,/INT0控制T0运行,INT1控制T1运行。当GATE=0时,计数器的运行不受外界控制。单片机电子教案向下向上未页首页返回bojia@bojia.net5.3定时器控制寄存器TCONTCON寄存器用于控制定时器的操作及对定时器中断的控制。其格式如下:其中,D0~D2用于外部中断。TR0:定时器T0的运行控制位。TR0由指令置位和复位,以启动或停止定时器/计数器。TF1:定时器T0的溢出中断标志位。当T0计数溢出时由硬件自动置1,向CPU请求中断,当CPU响应时,由硬件清零。TR1:T1的运行控制位,功能同TR0。TF1:T1的溢出中断标志位,功能同TF0。单片机电子教案向下向上未页首页返回bojia@bojia.net5.4工作方式MG51定时器/计数器具有四种工作方式。T0有方式0、1、2、3四种方式;Tl具有方式0、1、2三种工作方式。u方式0当M1M0为00时,定时器选为方式0。方式0为13位的定时/计数器,由TLx低5位和THx的高8位构成(x=0、1)。u方式1当M1M0为01时,定时器选为方式1。方式l与方式0完全类似,所不同的在于定时器/计数器为16位,由THx作为高8位和TLh作为低8位构成。单片机电子教案向下向上未页首页返回bojia@bojia.netu方式2当MIM0为10时,选定方式2,方式2为TLx自动恢复初值(初始时间常数自动重新装入)的8位定时器/计数器方式。把TLx作为8位计数器,THx作为常数缓冲器,当TLx计数满溢出时,使溢出标志TFx置1,同时将THx中的8位数据常数重新装入TLx中.使TLx从初值开始重新计数。方式2常用于定时控制。例如希望每隔500uS产生一个定时控制脉冲,若采用6M的振荡器,使TL1=06H,TH1=06H,c/f=0就能实现,方式2还用作串行口波特率发生器。u方式3方式3只适用于T0,当T0工作在方式3时,TL0和TH0成为两个独立的8位计数器。使MCS51具有三个定时器/计数器(增加了一个附加的8位定时器/计数器)。TL0的操作与方式0和方式1类似。而TH0只能作8恢定时器用(不能用作计数器方式),并占用了T1的中断资源TR1和TH1。在这种情况下,T1可以设置为方式0一2,用于任何不需要中断控制的场合,或用作串行口的波特率发生器。通常.当T1用作串行口波特率发生器时,T0才定义为方式3,以增加一个8位计数器。单片机电子教案向下向上未页首页返回bojia@bojia.net5.5定时器/计数器的应用实例使用定时器/计数器时,应首先对它进行初始化编程,主要对TMOD和TCON进行编程,并计算和装载T/C的初值。通常分以下几个步骤:1.初始化程序设计,主要是确定T/C的工作方式,即编程TMOD和TCON;2.计算T/C中的计数初值,并装载到THx和TLx;3.编写中断服务程序。定时器的应用主要是计算定时所需的初始时间常数的数值,即定时器初值。定时器初值用以分别装载TL0和TH0或者TL1和TH1。无论定时器在哪一种工作方式下工作,初始时间常数值的计算方法都差不多。单片机电子教案向下向上未页首页返回bojia@bojia.net定时器的计数初值的确定的具体方法如下:在定时方式下,定时器是对机器周期脉冲计数的,若时钟频率采用6MHz,则一个机器周期位,机器周期=12/晶振频率=12/(6×106)=2μs,在各个工作方式下:方式0:13位定时器的最大时间间隔=213×2μs=16.384ms方式1:16位定时器的最大时间间隔=216×2μs=131.072ms方式2:8位定时器的最大时间间隔=28×2μs=512μs假设定时器工作在方式1,要求定时1ms,求计数初值。设计数初始值位x,则:(216-x)×2×10-6=1×10-3x=216–500=65036因此THx=0xFEH,TLx=0x0CH.在计数方式下,T/C是对外部输入脉冲计数的,在各个工作方式下:方式0:13位计数器的最大计数值=213=8192方式1:16位计数器的最大计数值=216=65536单片机电子教案向下向上未页首页返回bojia@bojia.net方式2:8位定计数器的最大计数值=28=256假设计数器工作在计数器方式2,要求计数100个脉冲的计数初值的计算如下。设计数初始值位x,则:28-x=100x=156因此THx=TLx=0x9CH。以下就定时器的工作方式0举例说明定时器的应用方法例1.假设时钟频率采用6MHz,要在P1.0上输出一个周期为2ms的方波,方波的周期用定时器T0中设置一个时间常数,使其每隔1ms产生一次中断,CPU响应中断后,在中断服务程序中对P1.0取非。T0中断入口地址为000BH。为此要做如下几步工作:单片机电子教案向下向上未页首页返回bojia@bojia.net1.设计初始化程序初始化程序包括:定时器初始化和中断系统初始化,主要是对IP(中断优先级寄存器)、IE(中断允许寄存器)、TCON(控制寄存器)、TMOD(工作方式寄存器)的相应位进行正确的设置,并将时间常数送入定时器中。在本例中,假设程序是从系统复位开始运行的,TMOD、TCON均为00H,因此不必对TMOD操作。2.确定定时器初值机器周期=12/晶振频率=12/(6×106)=2μs设:需要初值为X,则(213-X)×2×10-6=1×10-3(213-X)=500,得:X=7692化为16进制X=1E0CH。根据13位定时器特性,初值应为:TH0=0F0H,TL0=0CH。单片机电子教案向下向上未页首页返回bojia@bojia.net1EH0CHD7D6D5D4D3D2D1D0D7D6D5D4D3D2D1D00001111000001100TH0(0F0H)TL0(0CH)3.设计中断服务程序和主程序中断服务程序除了完成要求的产生方波这一工作之外,还要注意将时间常数重新送入定时器中,为下一次产生中断做准备。主程序可以完成任何其他工作,一般情况下常常是键盘程序和显示程序。在本例中,由于没有这方面的要求,用一条转至自身的短跳转指令来代替主程序。按上面设计的程序清单如下:单片机电子教案向下向上未页首页返回bojia@bojia.netORG0000HRESET:AJMPMAIN;转移到主程序入口地址ORG000BH;中断处理程序AJMPIT0PORG0100H;主程序MAIN:MOVSP,#60HACALLPT0M0HERE:AJMPHEREPT0M0:MOVTL0,#0CH;T0置初值低位MOVTH0,#0F0H;T0初值高位SETBTR0;启动T0SETBET0;允许T0中断SETBEA;CPU开放中断RET;中断服务程序IT0P:MOVTL0,#0CH;T0置初值低位MOVTH0,#0F0H;T0初值高位CPLP1.0;P1.0取反RETI单片机电子教案向下向上未页首页返回bojia@bojia.net习题1.在一个MCS-51系统中,晶振为12MHz,一个外部中断请求信号是一个宽度为500ns的负脉冲,则应用哪种触发方式?如何实现?2.若外部中断请求信号是一个低电平有效的信号,是否一定要选择电平触发方式?为什么?3.MCS-51单片机的中断系统是如何进行具体管理的?请举例说明管理的具体内容。4.MCS-51与外部设备交换数据的控制方式有哪几种?各有何优缺点?5.什么叫中断?为什么采用中断?6.简述中断的响应过程。7.MCS-51提供哪几种中断?在中断管理上有什么特点?什么是同级内的优先权管理?8.外部中断有哪两种触发方式?对触发脉冲或电平有什么要求?如何选择和设定?9.MCS-51单片机内部设存几个定时器/计数器?每个定时/计数器有几种工作方式?其特点是什么?10.8031单片机的晶振为12M,分别用定时器T0的方式0,1.2编程,使P1.1脚上输出周期800MS的方波。
本文标题:第5章 计数器
链接地址:https://www.777doc.com/doc-3646802 .html