51单片机各种位数定时器初值计算方法?

作者&投稿:张尝 (若有异议请与网页底部的电邮联系)
51单片机定时器初值怎样计算~

首先要知道一个计时脉冲的周期,计时脉冲频率是晶振频率的1/12,晶振12M时,计时脉冲频率是1MHz,周期是1us,因此定时1mS就是1000个脉冲,由于51定时器是加法计数,计数到最大值65536溢出,定时结束,产生中断,因此初值应该写为65536-1000,计数器分高8位和低8位,高8位的1代表256,低8位是不足256的那一部分,因此高8位初值为TH=(65536-1000)/256,低8位TL=(65536-1000)%256。

呵呵 正确为你解答:
1 可以按定时时间的计算公式, 计算出定时器的时间常数X:
定时时间T=(2的N次方-X)12/单片机晶振频率
2 N为定时器的工作方式:
方式0时,N=13
方式1时,N=16
方式2时,N=8
3 根据定时时间和工作方式,计算出时间常数X
把X转换成二进制数,高8位送给TH1,低8位送给TL1,就可以启动定时器开始定时了。

例如: 工作在方式1,定时时间为1000微秒 晶振频率=12MHZ
则 定时时间T=(2的16次方-X)12/12MHZ=1000 解出 X=64536=FC18H

呵呵 如满意 请选择满意回答

对12MHz ,1个机器周期 1us ,12/fosc = 1us


方式0是13位定时器,最大时间间隔 = 2^13 = 8.192ms

方式1是16位定时器,最大时间间隔 = 2^16 = 65.536ms

方式2是8位定时器,最大时间间隔 = 2^8 = 0.256ms =256 us

方式3 仅适用于T0,此时T0分成两个8位计数器,T1停止计数

当选用定时器的方式1时,设机器周期为Tcy,定时器产生一次中断的时间为t,那么需要计数的个数N=t/Tcy,装入THX和TLX中的数分别为:

THX = (2^16 - N)/256 TLX = (2^16 -N )%256(此处的X为定时器0或定时器1)

公式为:(2^y - X)*Tcy = t

Tosc= 1/ fosc

一个机器周期 = 12个时钟周期 = 12/fosc

溢出速率 = 1 / 溢出时间
故:初值X = 2^y – t/Tcy

THX = 高八位
TLX = 低八位

注:

X:定时器初值

N:计数值

y:定时器工作方式

fosc:晶振频率

Tcy:机器周期,Tosc:时钟周期
Tcy = 1/Tosc

就51单片机而言,定时器只有8位和16位两种,没达到“各种”那么多。而计算初值的方法是相同的,区别只是8位数是用256作基数,16位用65536作基数。根据晶振频率计算机周期,Tc=12/fosc,设定时的时间为Td,则初值X=基数-Td/Tc

各种位数,常用的是 16 位数。
8 位,也有一些用武之地。
13 位,基本没有用的了。
书上,都有例题。看书就行。
难倒,楼主对书,还有什么疑问吗?


单片机串行通信里面的数据帧是怎么理解?一帧数据的位数可以改变吗?比 ...
html 对于多个传感器,应给每一个分配一个唯一的地址,只有地址相符的传感器才对主端的信息做应答。地址信息可以包含到通讯协议中,比如:帧头 + 帧长度 + 中断地址 + 信息内容 + 校验和 如果使用的是51单片机,也可以用串行通讯方式3方式完成,你可以查阅一下资料,我记不住了。

C51单片机1位数的加1计数显示
从你描述的现象来看,书上是写错了,P2口可能有一位是控制数码管的位选,因为只有一个,所以P2的一位是控制数码管是否显示。P0口控制段选。

MCS-51单片机内部RAM中四组通用寄存器中,每一组由8个寄存器组成,每1个...
MCS-51 单片机片内RAM的地址空间00 H - 1F H这32个字节(为什么是32字节,其实这里有隐藏信息,我们介绍单片机时总是先介绍它是几位的单片机,这里的几位就是数据总线的位数,一般 MCS-51 单片机的代表类型都是 8 位的,数据线 8 位,传输一个数据,这个数据大小为 8 bit,也就是一个字节),...

用单片机开发板的矩阵键盘设置一个可以进行4位数以内的加减乘除,计算结 ...
单片机书上应该有讲的哦,多查资料。既然是4x4,即4行4列了,共需要8个I\/O口,有8bit数据(如高四位为行4bit,低四位为列4bit)位:xxxx xxxx。还要结合你的程序来编码键值,如果有键按下了,查询所有按键的所连接的I\/O口电平状态,每个按键需要两个I\/O口,一端连接行(行4bit之一),一端...

如何用单片机设计一个程序,给定一个数组a[0,1,2,3,4...7]8位的,让其...
先用一个循环检测数值最小的那个数,保存在另一个数组 A 中 然后再用循环检测数值第二小的数值,保存在另一个数组 A 中 以此类推 完成后输出 这是最笨的方法,也是最容易理解的方法

一个6位数和一个二位数的乘法在单片机中如何实现
10、一百零几乘一百零几,一数加上另数尾,尾数之积后面接.如108×107=11556 11、俩数差2者,俩数平均数平方再减去一.如49x51=50x50-1=2499 12、几位数乘以几位九者,这个数减去(位数前几位的数+1)的差作积的前几位,末位与个位补足几个0.1)一个数乘9:这个数减去(个位前几位的数+1)...

1、假设单片机的晶体振荡器的频率是11.0592MHz,利用定时器1采用方式1...
初值=2的定时器位数次方-定时时间需要的tick次数;如果是传统51单片机定时器工作方式1,定时器的位数是16位,2的定时器位数次方=2的16次方=65536;定时时间需要的tick次数=t\/(一个tick的时间),在单时钟51中,定时器一个tick的时间等于时钟周期的12倍,所以:定时时间需要的tick次数=20ms\/(12\/11....

单片机玩家请进:单片机程序状态字中进位标志位置0位与置1位有疑惑,请...
我不能给你全面的解释,但是我知道你真是混了,我理解的是第8位进位的话,状态寄存器中的CY加1,不是你说的什么2啊3啊,如果是11110000和11110000相加呢?那按你的意思又该是哪位进位时CY置1 啊??但是如果是根据第八位进位,CY置1的话,单片机就好判断CY什么时候置1了,因为当最后位进位后数值...

初学者!急!!怎么样识别单片机的脚号?比如:20脚的单片机,哪个脚是1...
集成电路的封装外形不同,其引脚排列顺序也不一样。对圆筒形和菱形金属壳封装的集成电路,识别引脚时应面向引脚(正视),由定位标记所对应的引脚开始,按顺时针方向依次数到底即可,常见的定位标记有突耳、圆孔及引脚不均匀排列等。对单列直插式集成电路,识别其引脚时应使引脚向下,面对型号或定位标记,自...

用八位C51单片机如何传十六位数呢
把高位和低位分开来传就可以了。

安化县19620047645: 51单片机定时器初值公式 -
范建酚咖: 1.简单说起,256表示一个8位分界点,对它求模得高位字节存在TH0中,求余得低位字节放在TL0中,拿十进制打比:15/10得十位1,15%10得个位数5 2.12Mhz时,单周期指令时间为12/fsoc=1us 方式1为16位定时/计数器 故定时1ms为:TH0=(2^...

安化县19620047645: 89C51单片机定时器初值怎么计算 -
范建酚咖: 在定时器模式下,计数器的计数脉冲来自于晶振脉冲的12分频信号,即对机器周期进行计数.若选择12M晶振,则定时器的计数频率为1MHZ.假设定时时间为T,机器周期为T1,即12/晶振频率.X为定时器初值.则 X=2^n-T/T1.方式0,n=13,方式1时,n=16,方式2和方式3,n=8

安化县19620047645: 51给定时计数器设置初始值的时候怎么计算数值? -
范建酚咖: 首先,51单片机是加一计数,到65536溢出,所以定时时间(经过的脉冲个数,如果一个脉冲是1US,刚好延时50MS是50000个脉冲)是65536减初值 ,初值又分高8位和低8 位,高8位的1代表256,因此高8位的数值所代表的数是256的整数倍,低位最大不超过255,所以一定是除以256之后的余数,用公式是这样: 初值=65536-定时脉冲个数=TH0*256+TL0 反过来看你就很明白了

安化县19620047645: 51单片机中定时1分钟,怎么计算初值 -
范建酚咖: void init()//初始化定时器50毫秒 开启定时0 {TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;}void timer0() interrupt 1 {TH0=(65536-50000)/256;TL0=(65536-50000)%256;aa++; //50MS 一次 }通过判断aa的值可以得到时间长度

安化县19620047645: 51单片机中定时器初始值是怎样计算的呀? -
范建酚咖: 下面按外接,12MHz晶振算..在P1.0处输出1MS方波 ORG 00 AJMP MAIN ORG 0BH LALL T0INT RETI ORG 30H MAIN: LCALL T0INIT AJMP $ T0INIT: MOV TMOD,#01H LCALL T0LOAD SETB TR0 SETB ET0 SETB EA RET T0LOAD: MOV TL0,#0F0H ;初值计算,65536US-1MS=D8F0H MOV TH0,#0D8H RET T0INT: LCALL T0LOAD JB P1.0,NEXT SETB P1.0 RET NEXT: CLR P1.0 RET END 大概应该就是这样的..

安化县19620047645: 51单片机串口通信定时器初值怎么计算?公式和计算原理是什么? -
范建酚咖: 串口通信方式1和方式3,要用T1来控制波特率.T1,使用定时方式2,其初始值,和晶振频率、波特率、SMOD的关系式如下: T1初值 = 256 - fosc * (SMOD + 1) / (384 * 波特率)--我不明白波特率跟这个定时器的关系.麻烦你详细一点!这个关系,是由硬件决定的,只有搞微电子的,才能弄明白. 软件人员,编程的时候,会用这个公式即可,也没有必要弄明白这个.基本上,也没有几个人,能够弄明白集成电路内部,究竟是怎么处理的. 其它的很多人,好像是很明白,其实都是在瞎编理由,包括写书的那些人.

安化县19620047645: 51单片机 8155h定时器的计数初值怎么算 -
范建酚咖: 这个得知道定时器时钟周期.设预期定时时间为T,定时器时钟周期位t,定时值X=T/t.将X转换为十六进制数,取其补码,就是定时器初值.

安化县19620047645: 单片机 计数器 设定计数初值 -
范建酚咖: 第一:单片机的计数器的作用就是计数.单片机内部有晶振(好比人的心脏),为单片机工作提供脉冲,每来一脉冲,它就计数一次,此时记录的是单片机内部的时钟脉冲.而定时的工作原理也是计数.每计一次数,都会流过一段时间,所以可...

安化县19620047645: 51单片机定时器用方式一1.5ms初值是多少 -
范建酚咖: 如果晶振12MHZ的话,初值65536-1500=64036 化成16进制即可 C语言可以直接写公式 TH1=(65536-1500)/256; TL1=(65536-1500)%256;

安化县19620047645: 单片机晶振频率6mhz 定时器 定时100ms 算初值 -
范建酚咖: 初值 =(65536 - 定时时长*12/晶振频率)

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网