第五章单片机定时计数器.

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

单片机原理及应用(第五章定时/计数器)教学内容定时/计数器的结构与功能定时/计数器的控制DATE:2019/12/18PAGE:2一、定时/计数器的结构与功能8051单片机内部有两个定时/计数器T0及T1,具有定时和计数两种功能。T0及T1在计数过程中不需要CPU参与,也不影响CPU的其他工作。当计数溢出后,定时/计数器给出中断信号,申请CPU停止当前的工作,去处理预先设定的中断事件。DATE:2019/12/18PAGE:3一、定时/计数器的结构与功能1.计数功能计数器用于统计从TO(P3.4)和Tl(P3.5)两个引脚输入脉冲的负跳变数量。负跳变是指前一个机器周期采样为高电平,后一个机器周期为低电平。每输入一个脉冲负跳变,计数器加1。输入脉冲的高电平与低电平至少应保持一个机器周期时间,以确保正确采样,因此输入脉冲的频率最高为单片机内部脉冲频率的一半。如果内部脉冲频率为1MHZ,则最高计数频率为0.5MHz。DATE:2019/12/18PAGE:4一、定时/计数器的结构与功能2.定时功能定时功能是单片机通过对内部机器脉冲信号计数实现的,计数值乘以机器周期就是相应的时间。例如,如果单片机采用12MHz的晶振,则机器内部脉冲频率为1MHz,则机器周期为1us,若共计数1000,则用时为1ms时间。DATE:2019/12/18PAGE:5二、定时/计数器的控制每个定时/计数器都是16位,分别由两个8位专用寄存器组成。低8位记为TL,高8位记为TH,用以存放16位计数初值的低8位和高8位。为控制定时器正常工作,其内部还设有两个8位的特殊寄存器TMOD和TCON。TMOD用于控制定时/计数器的工作方式,TCON用于控制T0和T1的启动与停止,以及保存T0和T1的溢出和中断标志。TMOD和TCON的内容是通过编程设置的,系统复位时,二者均自动清零。设置定时/计数器的过程是先初始化工作方式寄存器TMOD,并为定时/计数器赋初值,然后通过控制寄存器TCON中的TRO或TRl实现启动或停止。DATE:2019/12/18PAGE:6二、定时/计数器的控制定时/计数器的控制字1.工作方式寄存器TMOD(Timermode)工作方式寄存器TMOD用于控制定时/计数器的工作方式和工作模式,长度为一个字节,只能按字节整体赋值,其各位的意义见表5-1。DATE:2019/12/18PAGE:7二、定时/计数器的控制(1)GATE(门控制位)用于设置TO(T1)的启动方式。当GATE=0时,以寄存器TCON中的TRO(TR1)位控制TO(T1)启动或停止。例如,当置TRO为“1”时T0启动,当置TRO为“0”时T0停止。当设置GATE=1时,则TO(Tl)的启动受TRO(TR1)和外部中断信号INT0(INT1)共同控制。例如,只有当置INT0和TRO都为“1”时T0才启动,否则T0停止。DATE:2019/12/18PAGE:8二、定时/计数器的控制(2)C\T用于设置TRO(TR1)是工作于计数器或定时器模式。当C\T=0时,TRO(TR1)工作于定时器方式;当C\T=1时,TRO(TR1)工作于计数器方式。(3)Ml和M0用于设置TO(T1)的工作方式。当M1=0且M0=0时工作于方式0(13位计数器);当M1=0且M0=1时工作于方式1(16位计数器);当M1=1且M0=0时工作于方式2(自重装的8位计数器);当M1=1且M0=1时工作于方式3(T0为两个独立的8位计数器,T1无效)。DATE:2019/12/18PAGE:9二、定时/计数器的控制例5-1:设定时器1为定时工作方式,按方式2工作,定时器0为计数方式,按方式1工作,均由程序单独控制启动和停止,请给出TMOD控制字。解:定时器1做定时器使用则D6=0;按方式2工作则D5=1,D4=0;由程序单独控制启停则D7=0。定时器0做计数器使用则D2=1;按方式1工作则D0=0,D1=1;由程序单独控制启停则D3=0。因此命令字TMOD的值应为00100101B,即25H。DATE:2019/12/18PAGE:10二、定时/计数器的控制2.定时器控制寄存器TCON(Timercontroller)TCON也是8位寄存器,与TMOD不同的是它可按位单独赋值,其各位的意义见下表2。DATE:2019/12/18PAGE:11二、定时/计数器的控制低4位用于设置外部中断,高4位用于设置定时/计数器。(1)TRO和TRl分别用于控制T0和T1的启动或停止。当TRO(TRl)置“1”时,启动定时/计数器;当TRO(TRl)置“0”时,停止定时/计数器。(2)TFO和TFl分别是T0和T1的溢出标志位。当定时或计数因达到最大计数容量而产生溢出时,此位由硬件自动置1,当转向中断服务程序时由硬件自动清零,若无中断服务程序则需要由编程进行清0。DATE:2019/12/18PAGE:12二、定时/计数器的控制定时/计数器的工作方式寄存器TMOD的M1和M0两位的四种组合构成了定时/计数器的四种工作方式。一、方式0和方式1方式0是13位的定时/计数器,它由TL的低5位和TH的8位构成,方式1是16位的定时/计数器,由TH的8位和TL的8位构成。方式0和方式1的工作原理基本相同,以下以T0为例进行说明。DATE:2019/12/18PAGE:13二、定时/计数器的控制一、方式0和方式1方式0是13位的定时/计数器,它由TL的低5位和TH的8位构成,方式1是16位的定时/计数器,由TH的8位和TL的8位构成。方式0和方式1的工作原理基本相同。DATE:2019/12/18PAGE:14二、定时/计数器的控制方式0和方式1的特点:TO启动后,在TL和TH中存储的计数初值基础上进行加“1”计数,直至溢出。溢出时T0寄存器被清零,TF0被置位,并申请中断。此后,若TO重新启动,则从零重新开始计数。若希望T0从某一数值开始计数,则应给计数器赋初值。若所需计数长度为N,则计数初值X=2M-N(1≤N≤2M),其中当工作于方式0时,M=13,当工作于方式1时,M=16。在为计数器赋初值时,应将初值拆成高低两部分字节,分别送入TL和TH。DATE:2019/12/18PAGE:15二、定时/计数器的控制实例5-2欲采用8051单片机控制8个LED同时以1s为周期闪烁,设计电路原理图并编写程序。DATE:2019/12/18PAGE:16设置定时/计数器的过程:1)先初始化工作方式寄存器TMOD2)为定时/计数器赋初值3)通过控制寄存器TCON中的TRO或TRl实现启动或停止。二、定时/计数器的控制#includereg51.h//将8051单片机头文件包含到文件中main(void){unsignedcharcounter;//设置无符号字符型变量,存储定时器中断次数。TMOD=0x01;//设T0为定时模式,由TR0控制启动和停止,且工作于方式1TH0=(65536-46083)/256;//初始化T0的高8位TL0=(65536-46083)%256;//初始化T0的低8位TF0=0;//初始化定时器溢出标志P0=0xff;//关闭LEDcounter=0;//从0开始计数TR0=1;//启动定时器0while(1){while(TF0==1)//如果定时器溢出{counter++;//计时次数加1if(counter==20)//计时时间达到1s{P0=~P0;//P0所有位取反,使LED闪烁counter=0;//重新从0开始计数}TH0=(65536-46083)/256;//重新初始化T0的高8位TL0=(65536-46083)%256;//重新初始化T0的低8位TF0=0;//重新初始化定时器溢出标志}}}DATE:2019/12/18PAGE:17二、定时/计数器的控制二、方式2方式2的特点是能自动加载计数初值。16位计数器被分为两部分,以TL0作为计数器,以TH0作为存储器。初始化时把计数初值分别加载至TL0和TH0中,当计数溢出时,由存储器TH0自动给计数器TL0加载计数初值。若所需计数长度为N,则计数初值X=28-N(1≤N≤256)。DATE:2019/12/18PAGE:18二、定时/计数器的控制实例5-3图5-4是产品包装生产线的计数系统,每个产品经过计数装置时由机械杆碰合按键S1一次。当第一次计满一包(5个)则D1亮,计满第二包则D2亮…,计满第八包则D1~D8全亮,八包包装成一箱,此后重复以上过程。编写程序实现此功能。DATE:2019/12/18PAGE:19二、定时/计数器的控制解:程序如下:#includereg51.h//包含51单片机寄存器定义的头文件unsignedcharcounter;//计数初值main(void){TMOD=0x60;//使用T1的工作方式2TH1=256-5;//T1的高8位赋初值TL1=256-5;//T1的低8位赋初值counter=0;TR1=1;//启动T1while(1){while(TF1==1)//如果计满{TF1=0;//计数器溢出后,将TF1清0counter++;//计数加1DATE:2019/12/18PAGE:20二、定时/计数器的控制switch(counter)//检查中断计数值{case1:P0=0xfe;break;//则第1个灯亮case2:P0=0xfd;break;//第2个灯亮case3:P0=0xfb;break;//第3个灯亮case4:P0=0xf7;break;//第4个灯亮case5:P0=0xef;break;//第5个灯亮case6:P0=0xdf;break;//第6个灯亮case7:P0=0xbf;break;//第7个灯亮case8:P0=0x00;counter=0;break;//8个灯全亮}}}}DATE:2019/12/18PAGE:21二、定时/计数器的控制四、方式3TO被拆成两个独立的8位计数器TLO和THO,TL0独占T0的各控制位、引脚和中断源,既可以用作定时器也可作计数器。TH0只能作为定时器使用,且需要占用T1的控制位TR1和TF1实现启停和中断。DATE:2019/12/18PAGE:22二、定时/计数器的控制两个定时/计数器的使用方法与方式0或1相似。工作方式3只适用于T0,不适用于T1。若将T1强行设置为模式3,将使T1立即停止计时或计数,相当于使TR1=0。当T0作方式3时,Tl仍可以设置为除工作方式3外的其它工作方式,但由于它的TR1和TF1已被T0占用,因此无法按正常计时/计数器工作,常用于串行通信时的波特率发生器,以控制传输数据的速度。DATE:2019/12/18PAGE:23

1 / 23
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功