首页 > 编程知识 正文

单片机定时器怎么使用(单片机定时器中断)

时间:2023-05-03 19:16:13 阅读:76910 作者:4932

另一方面,MCS-51单片机定时器/计数器概念单片机中的定时器和计数器其实是同一物理电子部件,但计数器记录了单片机外部发生的情况(外部脉冲计时器是单片机自身提供的非常稳定的计数器,该稳定的计数器是与单片机连接的石英晶体振动部件; MCS-51单片机晶体振动12分钟后唯一提供给单片机的是1MHZ的稳定脉冲; 由于晶体振动频率非常准确,单片机计数脉冲之间的时间间隔也非常准确,该准确时间间隔为1微秒的MCS-51单片机外加12MHZ的晶体振动(实际为11.0592MHZ ) MCS-51单片机内部的工作频率)时钟频率)为12MHZ/12=1MHZ=1000000次/秒=1000000条指令/秒=10000000条,即晶体振动一次,单片机在这种情况下,CPU执行指令并经历机器循环。 即:1时钟=1机器周期=1微秒=1指令; 注:个人计算机上CPU的主频是晶振通过倍频后的频率,这正好与MCS-51单片机相反,MCS-51单片机的主频是晶振通过分频后的频率; 总之,MCS-51单片机中的时间概念是通过对脉冲的个数进行计数来测量的1脉冲=1微秒=1指令=1机器周期; MCS-51单片机定时器/计数器的简单结构图:8051系列单片机有两个定时器:T0和T1,称为定时器和定时器T1,这两个定时器均为8052系列单片机增加了第三个定时器/计数器T2; 这些都有定时器和事件计数功能,经常用于时间控制、延迟、到外部的时间计数和检测等情况; 二、定时器/计数器结构8051单片机的两个定时器T0和T1分别由两个特殊功能寄存器组成; T0由特殊功能寄存器TH0和TL0构成,T1由TH1和TL1构成; 当用作计时器时,计时器计数8051单片机芯片内振荡器输出自动递增1,直到12分频脉冲数,即每:个循环溢出计时器T0/T1的寄存器值为止,并溢出因此,在计时器分辨率为时钟振荡频率的1/12,并用作计数器的情况下,在管脚t0(p3.4 )或t1 ) p3.5处对外部脉冲信号进行计数,当输入的外部脉冲信号发生从1到0的负跳跃时,计数器执行计数计数器最高频率一般为时钟振荡频率的1/24; 由此可知,与计时器和计数器动作模式无关,只要计时器T0和T1不占用CPU的时间,计时器/计数器T0和T1不溢出,就有可能引起CPU中断,执行中断处理程序; 也就是说,定时器/计数器是单片机中高效灵活的部件; 三、定时器/计数器的工作模式除了可以选择定时器和计数器两种工作模式外,每个定时器/计数器还有四种工作模式; 在模式0、1、2的情况下,T0和T1的动作模式相同; 在模式3中,两个计时器/计数器的工作模式不同。 动作模式033到360由TL0的低5位和TH0的所有8位构成13位的计时器/计数器; 计时器/计数器启动后,计时器或计数脉冲的数量会加到TL0上,从预先设定的初始值(时间常数)开始累计,一次增加1。 TL0完全计数后,向上舍入到TH0,直到13位寄存器完全计数; 溢出时,计时器/计数器硬件自动将13位寄存器值清零,将中断标志TF0置为1; 如果还需要计时器/计数,则需要使用相关命令重置时间常数,使计时器/计数器的中断标志TF0为0; 操作模式0的结构在以下图133到360的操作模式1和模式0中大致相同,只是模式1的寄存器TH0和TL0共同构成16位的计时器/计数器来操作,模式0的定时/计数范围动作模式1的结构如下图: 所示

ap:break-word">
工作模式2:
这种模式又称为自动再装入预置数模式;当定时器/计数器的寄存器TH0/TL0的值溢出时,定时器/计数器硬件设备会自动把寄存器TH0/TL0的值清0,以重新开始操作;但是有时候,我们的定时/计数操作是需要多次重复定时/计数的,如果溢出时不做任何处理,那么,在第二轮定时/计数时就是从0开始定时/计数了,而这并不是我们想要的;所以,要保证每次溢出之后,在重新开始定时/计数的操作是我们想要的,那就要把预置数(时间常数)重新装入某个地方;而重新装入预置数的操作是硬件设备自动完成的,不需要人工干预所以,这种工作模式就叫自动再装入预置数方式;既然需要重新装入预置数,那么预置数就必须要存放在某个地方,才能保证重装操作成功;在工作模式2中,把自动重装入的预置数存放在定时器/计数器的寄存器的高8位中,也就是存放在TH0中,而只留下TL0参与定时/计数操作;显然,定时/计数的方位小了很多;
注:这个工作模式常用于波特率发生器(串口通讯),T1工作在串口模式2;用于这种方式时,定时器就是为了提供一个时间基准;计数溢出之后,不需要做太多的事情,只做一件事就可以,就是重新装入预置数,再开始重新计数,而且中间不需要任何延时;工作模式2的结构如下图:  ‍

工作模式3:
由于定时器/计数器T1没有工作模式3,如果把定时器/计数器T0设置为工作模式3,那么TL0和TH0将被分割成两个相互独立的8位定时器/计数器;工作模式3的结构如下图:  ‍

四、定时器/计数器的定时/计数范围
工作方式0——13位定时器 / 计数器 工作 模式,最多可计数2的13次方 次,即:8192次,[0,8191];
工作方式1——16位定时器/计数器 工作 模式,最多可计数2的16次方 次,即:65536次,[0,65535];
工作方式2——8位定时器/计数器工作模式,计算次数最多为2^8,即256,,[0,255];
工作方式3——8位定时器/计数器工作模式 ,计算次数最多为2^8,即256,,[0,255];
预置数的计算公式:预置数=最大值-需要计数的次数;

五、定时器/计数器的控制寄存器
8051单片机设计了两个8位的特殊功能寄存器来控制定时器/计数器的工作状态;这两个特殊功能寄存器分别是TMOD和TCON;它俩都在特殊功能寄存器区;

1、工作模式控制寄存器TMOD(89h):  ‍
2、工作状态控制寄存器TCON(88H):  ‍
六、定时器/计数器的初始化
注:由于8051单片机的定时器/计数器使用的时钟脉冲是外部晶振(12MHZ)经过12分频(12MHZ/12=1MHZ)之后的频率,所以,一个时钟脉冲就是1微秒;所以,8192个脉冲=8192微秒=8.192毫秒; 65536个脉冲=65536微秒=65.536毫秒; 256个脉冲=256微秒=0.256毫秒;

1、设置定时器/计数器的工作模式TMOD(常用的是模式1:TMOD=0x01);
2、装入预置数到THx和TLx中(THx=TLx=MAX(8192/65536/256)-计数次数);
3、如果工作在中断方式,则需要开定时器/计数器的中断TCON中的标志位:TF0/TF1=0/1;

4、启动定时器/计数器:TR0/TR1=1;


原文地址:http://bbs.elecfans.com/jishu_216681_1_1.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。