第5章定时/计数器及串行通信应用第5章定时/计数器及串行通信应用5.1定时/计数器5.3综合应用举例5.2单片机串行通信湖南工业大学电气与信息工程学院第5章定时/计数器及串行通信应用问题的提出:1、在微机应用系统中,普遍用到定时/计数的功能,如对工业过程量信号的定时采样、对流水生产工艺中某一产品的计数(或计件),因此,定时/计数具有广泛的应用背景。2、在前面的程序设计一章,大家已学习了软件延时(即通过执行一个循环程序进行时间的延迟)实现定时功能,但这种定时具有明显的缺点:一是循环程序执行占用CPU时间,降低CPU的利用率;二是定时时间不精确或计算比较麻烦;因此,针对应用广泛的定时/计数功能,必须在CPU中用硬件来实现定时/计数功能。湖南工业大学电气与信息工程学院第5章定时/计数器及串行通信应用问题的解决:由于定时/计数功能的普遍性应用,特别是在长时间定时或定时精度要求较高的场合,通常选用硬件实现定时,采用硬件实现定时,我们希望:1、定时/计数的功能及工作方式是可编程的。即可选它作定时器,也可作计数器,同时,可选择几种工作方式。2、定时/计数值在规定的范围内是可编程的。即根据需要,通过软件来设定定时值或计数值。3、当达到定时/计数的设定值时,应向CPU申请中断,以便实现定时/计数控制。湖南工业大学电气与信息工程学院第5章定时/计数器及串行通信应用5.1定时/计数器51系列单片机内部提供2个定时/计数器T0和T1(89S系列有3个),既可用作定时器,也可用作计数器,还可作为串行口的波特率发生器。定时/计数器实现软、硬件结合,给应用系统的设计带来很多方便之处。主要作用:对外部脉冲计数、产生精确定时时间、作串行口的波特率发生器。湖南工业大学电气与信息工程学院第5章定时/计数器及串行通信应用烘箱温度控制系统要定时对温度进行采样,与温度给定值比较后,通过一个隔离输出控制电热丝的通断来控制烘箱内温度。定时的任务由单片机片内的定时器/计数器完成。烘箱温度控制系统湖南工业大学电气与信息工程学院第5章定时/计数器及串行通信应用5.1.1定时/计数器的定时和计数功能TH1TL17070T1TH0TL07070T0TCONTMOD微处理器内部总线μP用于确定T1和T0的功能和工作方式用于控制T1和T0的启动、停止及中断请求1、定时器/计数器T0、T1的结构湖南工业大学电气与信息工程学院第5章定时/计数器及串行通信应用定时:指采用具有精确的固定周期的脉冲信号进行计数,一般是利用内部振荡脉冲,即机器周期:fosc/12(=1/T)作为计数脉冲;计数:指对外部输入脉冲进行计数;计数:脉冲不等间隔。波形等间隔,次数已定,时间确定即对机器周期T进行计数。左图定时时间为N*T每个下降沿计数一次确认一次负跳变需两个机器周期,所以,计数频率最高为fosc/24。2、定时与计数的概念N个方波T湖南工业大学电气与信息工程学院第5章定时/计数器及串行通信应用定时器0方式字段定时器1方式字段M0M1C/TGATEM0M1C/TGATED0D1D2D3D4D5D6D71.工作方式控制寄存器TMOD定时方式时,每个机器周期使计数器加1(T=12/fosc)计数方式时T0(P3.4)、T1(P3.5)的负跳变使计数器加1。最大计数速率是fosc/24,即高低电平分别能保持一个机器周期。用于控制定时器/计数器的功能和工作方式TMOD格式:(字节地址89H)操作模式控制位GATE:门控制GATE=1时,如INTx=1,且TRx=1,则启动定时器;GATE=0,只要TRx=1定时器就开始工作。C/T=0定时方式;C/T=1计数方式;5.1.2定时/计数器的控制C/T:选择定时或计数方式M1M0方式计数器配置000TLx低5位与THx的8位构成13位计数器011TLx与THx构成16位计数器102自动重装初值(THx)的8位(TLx溢出时)计数器113仅用于T0,分成两个8位计数器,T1停止计数湖南工业大学电气与信息工程学院第5章定时/计数器及串行通信应用D7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0TF1:定时器T1溢出中断标志。当定时器1溢出时,由硬件置1;当响应中断转向中断服务程序时由硬件清0。TR1:定时器T1运行控制位。由软件置位/复位,控制定时器是否运行。TF0:功能与TF1类似。TR0:功能与TR1类似。定时器0控制位定时器1控制位2、状态控制寄存器TCONTCON格式:(字节地址88H)湖南工业大学电气与信息工程学院第5章定时/计数器及串行通信应用D7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0TF1:定时器T1溢出中断标志。当定时器1溢出时,由硬件置1;当响应中断转向中断服务程序时由硬件清0。TR1:定时器T1运行控制位。由软件置位/复位,控制定时器是否运行。TF0:功能与TF1类似。TR0:功能与TR1类似。定时器0控制位定时器1控制位2、状态控制寄存器TCONTCON格式:(字节地址88H)湖南工业大学电气与信息工程学院第5章定时/计数器及串行通信应用D7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0TF1:定时器T1溢出中断标志。当定时器1溢出时,由硬件置1;当响应中断转向中断服务程序时由硬件清0。TR1:定时器T1运行控制位。由软件置位/复位,控制定时器是否运行。TF0:功能与TF1类似。TR0:功能与TR1类似。定时器0控制位定时器1控制位2、状态控制寄存器TCONTCON格式:(字节地址88H)湖南工业大学电气与信息工程学院第5章定时/计数器及串行通信应用D7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0TF1:定时器T1溢出中断标志。当定时器1溢出时,由硬件置1;当响应中断转向中断服务程序时由硬件清0。TR1:定时器T1运行控制位。由软件置位/复位,控制定时器是否运行。TF0:功能与TF1类似。TR0:功能与TR1类似。定时器0控制位定时器1控制位2、状态控制寄存器TCONTCON格式:(字节地址88H)湖南工业大学电气与信息工程学院第5章定时/计数器及串行通信应用D7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0TF1:定时器T1溢出中断标志。当定时器1溢出时,由硬件置1;当响应中断转向中断服务程序时由硬件清0。TR1:定时器T1运行控制位。由软件置位/复位,控制定时器是否运行。TF0:功能与TF1类似。TR0:功能与TR1类似。定时器0控制位定时器1控制位2、状态控制寄存器TCONTCON格式:(字节地址88H)湖南工业大学电气与信息工程学院第5章定时/计数器及串行通信应用1、方式0T0的等效逻辑结构5.1.3定时/计数器的工作方式在计数工作方式下,计数器的计数值范围是:1~8192(2的13次方)当为定时工作方式时,定时时间的计算公式为:(8192-计数初值)×晶振周期×12≤﹠湖南工业大学电气与信息工程学院第5章定时/计数器及串行通信应用编程思路:P1.0输出周期为10ms宽的方波,只要每隔5ms到反一次即可得到10ms的方波。由此可选用T0定时5ms.例1:选用T0操作模式0,用于定时,由P1.0输出周期为10ms的方波。设晶振fosc=6MHz。高8位送入TH0,TH0=10110001B=0B1HX=213-t×fosc/12=8192-6×5×1000/12=5692=163CH163CH=0001011000111100其中低5位11100前添加3位000送入TL0,TL0=00011100B=1CHORG0100HMOVTMOD,#00HSETBTR0LP1:MOVTL0,#1CHMOVTH0,#0B1HLP2:JBCTF0,LP3AJMPLP2LP3:CPLP1.0SJMPLP1初值为:方式0启动T0等待T0定时到重置初值输出方波启动定时器定时到?开始输出反相清定时到标志预置定时初值设定时器工作方式湖南工业大学电气与信息工程学院第5章定时/计数器及串行通信应用2、工作方式1T0的等效逻辑结构在工作方式1下,计数器的计数值范围是:1~65536(2的16次方)当为定时工作方式1时,定时时间的计算公式为:(65536—计数初值)×晶振周期×12≤﹠湖南工业大学电气与信息工程学院第5章定时/计数器及串行通信应用编程思路:方波周期T=1/50=0.02s=20ms,用T1定时10ms。例2:用定时器T1产生一个50Hz的方波,由P1.1输出,仍用程序查询方式,fosc=12MHz。X=216-10×103×12/12=65536-10000=55536=D8F0HORG0100HMOVTMOD,#10HSETBTR1LOOP:MOVTH1,#0D8HMOVTL1,#0F0HJNBTF1,$CLRTF1CPLP1.1SJMPLOOPT1方式0启动T1等待T1定时到重置初值输出方波启动定时器T110ms定时到?开始P1.1输出反相Yes清定时到标志预置定时初值No设定时器T1工作方式湖南工业大学电气与信息工程学院第5章定时/计数器及串行通信应用3、工作方式2T0的等效逻辑结构方式2为能自动重置计数器初值的工作方式,TL0为8位计数器,TH0为计数器初值暂存器。定时时间T=(256-计数初值)×晶振周期×12≤﹠湖南工业大学电气与信息工程学院第5章定时/计数器及串行通信应用编程思路:T1工作于计数方式,外部计数脉冲由T1(P3.0)引脚引入,每来一个由1至0的跳变计数器加1,由程序查询TF1的状态。例3:用定时器1,模式2计数,要求每计满200次,将P1.0端取反。TH1=TL1=38HORG0100HMOVTMOD,#60HMOVTH1,#38HMOVTL1,#38HSETBTR1LOOP:JBCTF1,REPSJMPLOOPREP:CPLP1.0SJMPLOOPT1方式2计数送初值启动T1等待T1计数到取反计数初值:X=-200=56=38H82湖南工业大学电气与信息工程学院第5章定时/计数器及串行通信应用方式2与方式0、1的区别:方式0方式1:计数溢出后,计数器为全0,因而循环定时或循环计数应用时就存在反复设置初值的问题,这给程序设计带来许多不便,同时也会影响计时精度。方式2:具有自动重装载功能,即自动加载计数初值。16位计数器分为两部分,TL0为计数器,TH0作为预置寄存器。当计数溢出时,由预置寄存器TH0以硬件方法自动给计数器TL0重新加载。方式2在串口通讯时,常用作波特率发生器。湖南工业大学电气与信息工程学院第5章定时/计数器及串行通信应用只有T0能工作于方式3,此时T1的的一些控制位已被T0借用,只能工作在方式0、方式1或方式2下,等效电路参见下图:4、工作方式3湖南工业大学电气与信息工程学院第5章定时/计数器及串行通信应用5、定时/计数器的初始化和初值确定为使定时/计数器正常工作,首先必须对定时/计数器进行初始化,然后再开启定时或计数。定时计数器的初始化包括以下内容。(4)启动定时器/计数器;如:SETBTR0(1)确定工作方式——对TMOD赋值;如:MOVTMOD,#06H;设定T0为计数器工作方式。(2)预置定时计数器中计数的初值——直接写入TH和TL;如:MOVTH0,#00H;设定计数初值。MOVTL0,#00H(3)根据需要开放定时/计数器的中断——对IE位赋值;湖南工业大学电气与信息工程学院第5章定时/计数器及串行通信应用初值的计算方法:X=M—计数值M是定时器的最大计数值。视工作方式不同而不同。工作方式工作方式00:13位定时/计数方式,因此,最多可以计到2的13次方,也就是8192次。工作方式工作方式11:16位定时/计数方式,因此,最多可以计到2的16次方,也就是65536次。工作方式工作方式22和工作方式工作方式33::都是8位的定时/计数方式,因此,最多可以计到2的8次方,也说是256次。