① 单片机定时器原理及使用
这里通俗的说下C51单片机的定时器的工作原理,C51单片机的定时器是由计数器构成的,所计量的时间是通过计算固定周期的脉冲个数的累计获得的,通过设置定时器的工作模式,可以由16位(高、低两个8位)寄存器模式或其他位数的寄存器模式来计数,以16位计数模式来讨论,那就是无论那种工作模式只有当计数用的寄存器的各个位全部置1,也就是满值后下一个计数脉冲进入时使寄存器产生溢出,而这个溢出才会使计数产生中断从而完成一次定时控制,因此,如果我们想产生某个时长的定时,那么我需要将这个时长根据单片机运行的时钟频率、周期等等相关因素换算成需要计数的个数,进而在这个满值的16位寄存器中扣除需要计数的个数,启动运行后当计数值补充满了寄存器就完成了一次计时,而一个16位寄存器满值为2的16次方=65536,假如一个计数脉冲的周期为1us,那么满值后就会耗时65536us,假如我们需要计时36us,那么我们只需要为寄存器赋值65500就可以了,这里需要注意的是,因为C51单片机的寄存器是8位的,我们需要将这个65500拆分出高8位数据装入THx中计算方法为THx=65500/256,再计算出低8位数据装入TLx中,THx=65500%256。
② 单片机的定时器的四种工作方式都是什么书上看不懂。能不能用容易理解的话解释一下
第一种工作方式0,是2的13次方(13位)定时器或计数器,就是最大能数8192个数的模式,数一个数就是1个机器周期。工作方式1就是2的16次方(16位)定时器或计数器,最多数65536个数,这个数呢是单片机内部的时钟脉冲,或者是外部你自己给它送的高低电平脉冲。工作方式2是2的八次方的,也就是256,数到256就满了,但单片机自己会把你赋给寄存器的初值再给回去,就是说你赋初值就好,其他的不用你管了。但方式0,1是你要在程序里数数满了自己给它再写一个初值的。工作方式三的话只有定时器0能用,定时器0会分成两个计数器,来数外部的脉冲,方式三很少用,基本上没用过,稍微了解一下就好
③ 51单片机的定时器是怎么设置的
单片机定时器的设置步骤为:
1、设置定时器的工作模式,共4种工作方式,两种模式(计数器/定时器)。比如:
MOV TMOD,#01;设置定时器0位定时器模式,工作方式1
2、根据定时时间赋初值。比如定时10毫秒,那么如果12M晶振的话是10000个机器周期。定时器是溢出申请中断,所以用溢出值减去定时周期为初值。
MOV TH0,#HIGH(65536-10000)
MOV TL0,#LOW(65536-10000)
3、开启中断、定时器。
SETB ET0
SETB EA
SETB TR0
④ 单片机定时器 计数器的工作原理,及如何实现定时 计数功能
原理: 16位的定时器/计数器实质上就是一个加1计数器,其控制电路受软件控制、切换。 当定时器/计数器为定时工作方式时,计数器的加1信号由振荡器的12分频信号产生,即每过一个机器周期,计数器加1,直至计满溢出为止。
显然,定时器的定时时间与系统的振荡频率有关。因一个机器周期等于12个振荡周期,所以计数频率fcount=1/12osc。
两个字节最大数据为65536(十进制),或者0FFFFH(十六进制)
高字节为TH0=(65536-X)/256,就是除以256后的整数部分;
低字节为TL0=(65536-X)%256,减去高字节后余下的部分;
定时/计数器
定时/计数器T0和T1分别是由两个8位的专用寄存器组成,即定时/计数器T0由TH0和TL0组成,T1由TH1和TL1组成。此外,其内部还有2个8位的特殊功能寄存器TMOD和TCON,TMOD负责控制和确定T0和T1的功能和工作模式,TCON用来控制T0和T1启动或停止计数,同时包含定时/计数器的状态。
以上内容参考:网络-定时器中断
⑤ 单片机定时器设置步骤
搜狐网
晴 / -25°
新手入门!如何设置单片机定时器?
嵌入式资讯精选
2018-12-05
订阅
在单片机的学习过程中,单片机定时器的合理设置和应用是非常关键的一步,也是刚开始接触单片机知识的新人工程师们比较容易出错误的一个环节之一。在今天的文章中,我们为大家总结了单片机定时器应用过程中的两大常见问题进行实时解析,希望能够对各位新人工程师的学习提供一定帮助。
问题一:51单片机的T0、T1定时器四种工作方式各有什么特点?
在单片机定时器的应用过程中,定时器在进行设置时会有四种不同的工作方式,合理选择相应的工作方式可以帮助工程师快速完成及时设置。下面我们就来逐一讲解一下这四种不同的计时方式。方式0是单片机计时器的第一种计时方式,这一方式13位计数模式。方式1则采用16位计数模式,方式2采用8位自动重装入计数模式,这两种技术模式也是目前在单片机应用过程中最常使用的及时方式。最后一种单片机定时器的计时方式是方式3,这一模式下只有T0有的双8位计数模式。
⑥ 单片机定时器/计数器工作模式MODE 1、MODE 2采用的计数位数为多少
工作方式1是16位定时/计数模式,工作方式2是8位自动重装载模式。
⑦ 单片机定时器的使用方法
第一步:设置特殊功能寄存器 TMOD,配置好工作模式。
第二步:设置计数寄存器 TH0 和 TL0 的初值。
第三步:设置 TCON,通过 TR0 置 1 来让定时器开始计数。
第四步:判断 TCON 寄存器的 TF0 位,监测定时器溢出情况。
写程序之前,我们要先来学会计算如何用定时器定时时间。我们的晶振是 11.0592M,时钟周期就是 1/11059200,机器周期是 12/11059200,假如要定时 20ms,就是 0.02 秒,要经过x 个机器周期得到 0.02 秒,我们来算一下 x*12/11059200=0.02,得到 x= 18432。16 位定时器的溢出值是 65536(因 65535 再加 1 才是溢出),于是我们就可以这样操作,先给 TH0 和 TL0一个初始值,让它们经过 18432 个机器周期后刚好达到 65536,也就是溢出,溢出后可以通过检测 TF0 的值得知,就刚好是 0.02 秒。那么初值 y = 65536 - 18432 = 47104,转成 16 进制就是 0xB800,也就是 TH0 = 0xB8,TL0 = 0x00。
这样 0.02 秒的定时我们就做出来了,细心的同学会发现,如果初值直接给一个 0x0000,一直到 65536 溢出,定时器定时值最大也就是 71ms 左右,那么我们想定时更长时间怎么办呢?用你小学学过的逻辑,倍数关系就可以解决此问题。
好了,我们下面就用程序来实现这个功能。
#include
sbit LED = P0^0;
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;
void main(){
unsigned char cnt = 0; //定义一个计数变量,记录 T0 溢出次数
ENLED = 0; //使能 U3,选择独立 LED
ADDR3 = 1;
ADDR2 = 1;
ADDR1 = 1;
ADDR0 = 0;
TMOD = 0x01; //设置 T0 为模式 1
TH0 = 0xB8; //为 T0 赋初值 0xB800
TL0 = 0x00;
TR0 = 1; //启动 T0
while (1){
if (TF0 == 1){ //判断 T0 是否溢出
TF0 = 0; //T0 溢出后,清零中断标志
TH0 = 0xB8; //并重新赋初值
TL0 = 0x00;
cnt++; //计数值自加 1
if (cnt 》= 50){ //判断 T0 溢出是否达到 50 次
cnt = 0; //达到 50 次后计数值清零
LED = ~LED; //LED 取反:0--》1、1--》0
}
}
}
}
程序中都写了注释,结合前几章学的内容,自己分析一下,不难理解。本程序实现的结果是开发板上最右边的小灯点亮一秒,熄灭一秒,也就是以 0.5Hz 的频率进行闪烁
⑧ 单片机定时器如何工作
1、定时器开始工作之前,CPU必须将一些命令(称为控制字)写入定时器。将控制字写入定时器的过程叫定时器初始化。在初始化过程中,要将工作方式控制字写入方式寄存器,工作状态字(或相关位)写入控制寄存器,赋定时初值。
2、单片机定时器定时的时间算法:
根据晶振频率,计算指令周期,设置定时器的分频,然后设置定时器的工作方式TMOD,最后设置初值TH0 TL0 比如用的X HZ的晶振,stc的单片机有3种模式(X/12)x/6,还有单周期指令,选择12分频的,T=1/(X/12)就是一个指令周期 ,如果定时没有分频(65536-Z(初值))*T就是定时的时间。
⑨ 51系列单片机的定时器和计数器有哪几种工作方式
定时器0有四种工作方式:方式0:13位定时 /计数器模式方式1:16位定时 /计数器模式方式2:8位可重装载定时 /计数器模式方式3:两个单独8位定时 /计数器模式定时器1只有三种方式,同上面三种
标准8051单片机内部有2个定时器/计数器 分别是T0和T1。每个定时器有4种工作方式,方式0:13位定时计数方式,最大计数值为2^13=8192,定时8192个机器周期。1:16位定时 /计数器模式方式2:8位可重装载定时 /计数器模式方式3:两个单独8位定时 /计数器模式定时器1只有三种方式,同上面三种。
要讲定时离不开中断,两者结合使用的。定时计数器主要用到TMOD工作模式寄存器,TCON定时器的控制寄存器,EA中断允许控制寄存器,IP中断优先级寄存器 定时器控制寄存器TCON (88H)TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
⑩ 单片机定时器/计数器四种工作方式区别
方式0:13位定时计数方式,最大计数值为2^13=8192,定时8192个机器周期。此方式已经不再用了,是为了和以前的单片机兼容,学初者不用掌握。
方式1:16位定时计数方式,最大计数值为2^16=65536,定时65536个机器周期。此方式可实现最大的定时时间和最大计数次数。是最常用方式之一。
方式2:8位自动重装计数方式,最大计数值为2^8=256,定时256个机器周期。此方式工作时定时或计数到了不用重装初值,精度较高。另外在串口通讯时常用此方式。是最常用方式之一。
方式3:特殊工作方式。将定时器0分成两个8位功能不全的定时计数器,要占用T1部分功能。也不常用。