【单片机】定时器设初值的问题,谢谢!

已知单片机系统晶振频率为 6MHz,若要求定时值为10ms时,定时器T0工作在方式1时,TH0 = ? TL0 = ?

我记得公式是(65536 - 10 * 1000) / 256
(65536 - 10 * 1000) % 256
可这样算好像是12MHz的算法,6MHz的初值运算方法不同?
请问具体怎么算呢?

已知单片机系统晶振频率为 6MHz,若要求定时值为10ms时,定时器T0工作在方式1时,TH0 = ? TL0 = ?

TH0 = 0x0EC;
TL0 = 0x78;

不要死记公式,记着定时器的溢出速率有关,晶振频率不同,定时器溢出速率也不同

假设t0工作于方式1(16位最大65535)那么定时时间=(65536-X)再乘以机器周期(12m晶振时为1us)
例如定时50000us(既50ms)(晶振12m,机器周期1us)
首先在主函数或初始化函数中写入(就是在运行定时中断函数之前运行)
TMOD=0X01;//T0工作于定时模式,方式1
TH0=(65536-50000)/256;//给定时器高8位赋值,其中50000就是定时机器周期
TL0=(65536-50000)%256;//给定时器高8位赋值
EA=ET0=TR0=1;//开总中断,开定时中断,启动定时器。
然后定时器开始工作。
定时中断函数
void timer0() interrupt 1
{
TH0=(65536-50000)/256;//重新赋值
TL0=(65536-50000)%256;
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-06-23
6m比12m一个周期时间长一倍 所以65535减去的数值也是原来的一半
第2个回答  2018-07-07
首先根据6MHZ算出时钟周期,然后时钟周期*12就是机器周期,算出的机器周期为2us。然后根据要求的定时值为10ms,得出需要5000个机器周期才能满足条件。下面就好办了
TH0=(65536-5000)/256 ;
TL0= (65536-5000)%256 ;
65536-5000得到的数就是你的初值,意思是从初值开始计数,当记到65536时程序运行了5000个机器周期,也就是10ms。
算起来并不难,希望能帮到你,帮到每一个需要的人。

【单片机】定时器设初值的问题,谢谢!
已知单片机系统晶振频率为 6MHz,若要求定时值为10ms时,定时器T0工作在方式1时,TH0 = ? TL0 = ?TH0 = 0x0EC;TL0 = 0x78;不要死记公式,记着定时器的溢出速率有关,晶振频率不同,定时器溢出速率也不同 假设t0工作于方式1(16位最大65535)那么定时时间=(65536-X)再乘以机器周期(12m...

单片机定时器计数值初值是多少?
1、系统晶振频率是12M,则机器周期=12\/12=1us;2、定时1ms=1*1000=1000us;3、工作在方式0下:最大计数值是2^13=8192;4、定时初值=8192-(1*1000)=7192;5、换算成十六进制数为:定时初值=1C18H。定时器中断是由单片机中的定时器溢出而申请的中断。51单片机中有两个定时器T0和T1。定时\/计...

【满分求教】单片机C程序,关于定时设置初值的n多疑问
问题一:为什么16ms对应的是16000??12MHz的晶振下,CPU得到的频率是1M,因为51单片机是内部十二分频的。那么对应的一个时钟的周期就是1us,16000us就是16ms,也就是16000个周期后将产生溢出,如果你的程序里全能了定时中断和全局中断,那么将会发生定时器中断。但你程序一里面的写法是有问题的。应该是...

单片机中,定时器如何初值计算?
1、计算定时器计数频率:定时器T0在方式2下,每个计数周期为12个晶振周期,因此计数频率为6MHz \/ 12 = 500 kHz。2、计算定时器初值:要实现0.5ms定时,需要定时器T0计数500次,因此初值为 65536 - 500 = 65036 (0xFC1C)。对于定时器T1,由于题目中没有给出需要实现的定时时间,无法直接计算出初...

PIC单片机定时器初值计算方法及几种周
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,就可以启动定时器开始...

单片机中 定时器\/计数器 的计数初值是怎么计算得出的?(计数和定时计算...
计数初值的计算:定时或计数方式下计数初值如何确定:定时器选择不同的工作方式,不同的操作模式其计数值均不相同。若设最大计数值为M,各操作模式下的M值为:模式0 : M=2^13 =8192 模式1: M=2^16=65536模式2:M=2^8=256模式3: M=256,定时器T0分成2个独立的8位计数器,所以THO、TLO 的...

单片机中断装初值时为什么要对256求模和求余
这种处理方式不仅简化了编程过程,还提高了单片机在逻辑运算方面的效率。相比于算术运算,逻辑运算通常具有更高的执行效率,尤其是在处理二进制位移和取模操作时。因此,在编程时,正确地对计数值进行除以256求商和取余数求模的操作,可以确保定时器能够正确地计数,同时也能充分利用单片机的性能优势。

单片机定时器求初值的时候为什么要除以256,除了之后得那个数的含义是...
定时器是16位的,分成两个8位,8位二进制数就是256。除以256得到的放高8位,余下的放地8位

为什么要给单片机的定时器赋初值?
给单片机的定时器赋初值是为了取得准确的自己需要的定时时间,比如你数0--255要256秒,你赋个初值155,你就从156开始数了,数到255只用100秒 端口取反就更好理解了,比如现在的端口为高电平1,取反后就是低电平0了,实现的功能吗,就要看具体用法了,比如我在在点亮led时,让端口定时取反,那么led...

关于51单片机定时\/计数器装入初值的问题
这个有什么看不懂得呢 第一种 是吧十进制化成十六机制的方法 第二种呢 就是单纯的十进制 这样跟你说吧 因为th0只有一个字节 那就只能放下8位2进制 于是第一种表示就是把一个大于一个字节小于两个字节的数据转化成两个字节高八位和第八位的分离形式 第二种就简单了 0x9c就是65536-100的十六...

相似回答