欢迎来到天天文库
浏览记录
ID:62265094
大小:419.50 KB
页数:31页
时间:2021-04-24
《最新单片机复习3(定时计数)课件ppt.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、单片机复习3(定时计数)定时/计数器8051定时器/计数器逻辑结构定时/计数器设置定时/计数器工作方式通过对方式寄存器TMOD的设置,确定相应的定时/计数器是定时功能还是计数功能,工作方式以及启动方法。定时/计数器工作方式有四种:方式0、方式1、方式2和方式3。定时/计数器启动方式有两种:软件启动和硬软件共同启动。除了从控制寄存器TCON发出的软件启动信号外,还有外部启动信号引脚,这两个引脚也是单片机的外部中断输入引脚。GATE:门控位。0:只要软件控制位TR0或TR1置1即可启动定时器开始工作;1:只有INT0或INT1引脚为高电平,且TR0或TR1置1时
2、,才能启动相应的定时器开始工作。返回TF0TH0TL012分频OSC中断高8位低5位控制+T0(P3.4)TR0GATEINT0(P3.2)C/T=0C/T=1定时器的控制寄存器TCON作用:TMOD用来控制两个定时器的启动、停止,表明定时器的溢出、中断情况。字节地址:88H,可以位寻址。系统复位时,所有位均清零。格式:D7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0各位的含义:TCON中的低4位与中断有关,在中断章节中讨论。TF1(8FH):定时器1溢出标志。计满后自动置1。TR1(8EH):定时器1运行控制位。由软件清零
3、关闭定时器1。当GATE=0时,TR1软件置1即启动定时器1。(SETBTR1)当GATE=1时,且INT1为高电平时,TR1置1启动定时器1;定时器的四种工作方式方式的选择:根据M1,M0来选择。00:方式001:方式110:方式211:方式3主要特点:方式0:13位定时器。TH0的8位+TL0的低5位方式1:16位定时器。TH0的8位+TL0的8位方式2:能重复置初始值的8位定时器。TL0和TH0必须赋相同的值。方式3:只适用于定时器0,T0被拆成两个独立的8位定时器TL0,TH0。其中:TL0与方式0、1相同,可定时或计数。用定时器T0的GATE、C/
4、T、TR0、TF0、T0、和INT0控制。TH0只可用作简单的内部定时功能。占用T1的控制位TF1、TR1和INT1,启动关闭仅受TR1控制。定时器的方式0、1示意图返回TF0TH0TL012分频OSC中断高8位8位或低5位控制+T0(P3.4)TR0GATEINT0(P3.2)C/T=0C/T=1定时器的方式2示意图TH08位8位TL012分频OSC控制+T0(P3.4)TR0GATEINT0(P3.2)C/T=0C/T=11中断TF00溢出定时器的初始值的计算对于不同的工作方式,计数器位数不同,故最大计数值M也不同:方式0:M=213=8192方式1
5、:M=216=65536方式2:M=28=256方式3:定时器0分为2个8位计数器,每个M均为256。因为定时/计数器是作加1计数,并在计满溢出时产生中断,因此初值X的计算如下:X=M–计数值计算出来的结果X转换为16进制数后分别写入TL0(TL1)、TH0(TH1)。注意!方式0时初始值写入时,对于TL不用的高3位应填入0!用T1、工作方式0实现1秒延时函数,晶振频率为12MHz。方式0采用13位计数器,其最大定时时间为:8192×1s=8.192ms,因此,定时时间不可能象任务7中一样选择50ms,可选择定时时间为5ms,再循环200次。定时时间为5m
6、s,则计数值为5ms/1s=5000,T1的初值为:X=M计数值=81925000=3192=C78H=0110001111000B13位计数器中TL1的高3位未用,填写0,TH1占高8位,所以,X的实际填写值应为:X=0110001100011000B=6318H举例1用T1方式0实现任务7中1秒延时函数如下:voiddelay1s(){unsignedchari;TMOD=0x00;//置T1为工作方式0for(i=0;i<0xc8;i++){//设置200次循环次数TH1=0x63;//设置定时器初值TL1=0x18;TR1=1;//启动T1wh
7、ile(!TF1);//查询计数是否溢出,即定时5ms时间到,TF1=1TF1=0;//5ms定时时间到,将定时器溢出标志位TF1清零}}举例1用定时器工作方式2实现的1秒延时函数如下:voiddelay1s(){unsignedinti;//i取值范围为0~4000,因此不能定义成unsignedcharTMOD=0x20;//设置T1为方式2TH1=6;//设置定时器初值,放在for循环之外TL1=6;for(i=0;i<4000;i++){//设置4000次循环次数TR1=1;//启动T1while(!TF1);//查询计数是否溢出,即定时250s时
8、间到,TF1=1TF1=0;//250s定时时间到
此文档下载收益归作者所有