① 有关单片机定时器的使用和定时器的介绍
导语:单片机,其实就是一种用于集成电路中的芯银塌片,而单片机的定时器是一个电子元件,它是一个稳定的计数器,是由单片机本身提供的。它也是察搏羡单片机上的一个连接部件,可以用来编程。定时器还有一个功能显而易见就是可以用来定时,同时,它也可以用来统计一些脉冲信号。下面就来介绍下单片机定时器的使用的相关内容。
定时器的结构
定时器是由两个寄存器组成的,其中一个寄存器是用来确定计数器的工作形式和功能的,另外一个计时器是用来控制单片机的启动和停止的,同时它也是设置溢出的一个标志。
计数过程
每来一个脉冲计数器加1,当加到计数器为全1(即FFFFH)时,再输入一个脉冲就使计数器回零,且计数器的溢出使TCON中TF0或TF1置1,向CPU发出中断请求(定时器/计数器中断允许时)。如果定时器/计数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。
定时应用
用作定时器:此时设置为定时器模式,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。计数值N乘以机器周期Tcy就是定时时间t。
计数运用
用作计数器:此时设置为计数器模式,外败拍部事件计数脉冲由T0或T1引脚输入到计数器。每来一个外部脉冲,计数器加1。但单片机对外部脉冲有基本要求:脉冲的高低电平持续时间都必须大于1个机器周期。
定时器的使用
定时器的使用主要分为五个步骤,首先是要打开中断的可以允许的位置,主要是对IE寄存器的控制,然后选择定时器的工作的形式,定时器的一个格式是TMOD的形式,主要有四种方式。第一种计数的方式是十三位加一的形式,第二种是十六位加一的计数器,第三种的定数器被分解成两部分,一个是八位的寄存器,另外一个是八位的计数器。第三步就是要为定时器进行赋值,首先定时器的初值是等于计数器模值减去计数器记满的招满值,而定时器的初值是等于模值减去预定时的时间与单片机时钟周期的十二倍。接下来就是启动计时器,当TRO为0的时候,停止TO开始计数,而TRO值为1的时候,就启动TO进行计数。当TFO为0的时候,没有TO的中断,这时是没有硬件复位,而当值为1的时候有TO溢出中断的情况。当TR1为0的时候,停止TI进行计数,而值为1的时候开启T1进行计数。
当TF1为0的时候,没有T1的中断,为1的时候会出现T1的溢出中断情况。当IE1的值为0的时候时,出现硬件的复位而当其值为1的时候出现中断。当IT1的值为0的时候INT1出现电平触发的情况,也就是软件复位,而当值为1的时候,INT1的负边沿会出现触发的情况。当IE0的值为0时会出现硬件复位,而当IEO的值为1的时候,INT0上会有中断的情况。当IT0的值为0时,INT0会发生电平触发,也就是软件复位,同时INT0的负边沿触发。最后一步就是计数器中断入口程序。
定时器/计数器的工作方式
方式0为13位计数,由TL0的低5位(高3位未用)和TH0的8位组成TL0的低5位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0标志,向CPU发出中断请求。
方式1的计数位数是16位,由TL0(TL1)作为低8位、TH0(TH1)作为高8位,组成了16位加1计数器。
方式2为自动重装初值的8位计数方式。
在方式2下,当计数器计满255(FFH)溢出时,CPU自动把TH的值装入TL中,不需用户干预。因此特别适合于用作较精确的脉冲信号发生器。
方式3只适用于定时器/计数器T0,定时器T1方式3时相当于TR1=0,停止计数。
工作方式3将T0分成为两个独立的8位计数器TL0和TH0。
总而言之,定时器的使用可以为单片机的功能增加一些性能上的增强。所以,合理的运用定时器将会帮助我们使用单片机。以上就是有关单片机定时器的使用的相关内容,希望能对大家有所帮助!
土巴兔在线免费为大家提供“各家装修报价、1-4家本地装修公司、3套装修设计方案”,还有装修避坑攻略!点击此链接:【https://www.to8to.com/yezhu/zxbj-cszy.php?to8to_from=seo__m_jiare&wb】,就能免费领取哦~
② 利用8051单片机定时器T0测量某正脉冲的宽度
原理:分别用脉冲的上升沿和下降沿出发单片机,上升沿给出中断1开始计数,下降沿给出中断2停止计数,最后换算出高电平宽度=计数周期数×一个计数的时间。
设置的SFR:TMODE(一定要注意GATE的设置为1),TCON,IE,TH0,TL0等
最大脉宽计算:我们知道计数器中断的产生是从全1变为全0产生溢出中断,所以我们计数器的处置设定为00H,如果我们让其工作在方式1计数下,最大计数值为2^16=65536,那么最大计数脉冲宽度就是65536*2us。
一定要注意我们利用GATE的控制作用是计数器用来测量脉冲宽度。
不明白的LZ可以在上网络看看利用GATE的控制作用是计数器用来测量脉冲宽度这方面知识,或者我们在交流,呵呵
③ 单片机定时100个脉冲初始赋值是多少,计算过程
51单片机的定时器是加法计数的,因此100个脉冲定时器初值是
满量程减100
当工作在8位计数器时,初值是256-100
工作在16位模式是65536-100
工作在13位模式时是8192-100
但16位模式下初值又分高8位和低8位。高8位是(65536-100)/256
低8位 (65536-100)%256
13位模式下 高8位是(8192-100)/256
低8位是(8192-100)%256
8位计数器时,高 8位 低8 位初值都是256-100
④ 单片机汇编,用定时器产生脉冲
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
MOV TMOD,#01H
MOV TH0,#HIGH(65536-1000)
MOV TL0,#LOW(65536-1000)
SETB TR0
SETB ET0
SETB EA
SJMP $
T0ISR:
CLR TR0
MOV TH0,#HIGH(65536-1000)
MOV TL0,#LOW(65536-1000)
SETB TR0
CPL P1.0
RETI
END