有关 单片机 定时器 TH0 TL0 的问题?????

假如我想得到一个50ms的时间,那么 65535-50000=15535 就是初值了。
但是,为什么 再将初值 装入 TH0 TL0 的时候,需要对15535进行 【【求模 和 求余】】?

是不是【【求模 和 求余】】不明白?举个例子吧(单片机里的一般都是16位或13位)
比如一个2位位定时器
计3个数
th = (4-3)/2
tl = (4-3)%2 高1位是th寄存器,地1位是tl寄存器
比如一个4位的定时器
计3个数
th = (16-3)/4
tl = (16-3)%4 高2位是th寄存器,低2位是tl寄存器
在16位寄存器中比如你给的例子 65535-50000=15535 就是想法用 二进制去表示15535
这个16进制高八位是th第八位是tl追问

嗯,你说的我明白了。不过还有疑问:
上面算下来,应该是:
TH0=60
TL0=175
如果在程序里面,直接把60赋值给TH0,把175赋值给TL0,这是不对的吧?因为TH0 TL0装入的应该是二进制数,而 60 175 是十进制数。

追答

不管几进制在内存中都是以二进制存储,你用十进制和十六进制最后装入的都是二进制

追问

你的意思是,系统他自己会转换?且 不会报错!

追答

肯定的 不管是电脑还是单片机内部肯定是二进制 你可以写个程序试试

追问

嗯,好吧。我想再问另一个问题(有点钻牛角尖,请理解):

如果我想让P1口(或是其他的一组I/O口)P1^0变为低电平,而其他的P1^1----P1^7是高电平,我可不可以这样:P1=127 ?

追答

可以 肯定的

温馨提示:内容为网友见解,仅供参考
无其他回答

单片机定时器方式2 TH0和TL0如何赋值
TH0,和TL0在程序一开始赋值一次就行了,再以后,单片机运行的时候,即TR0 = 1,只有TL0运行,TL0从初始数值开始自加,当加到255之后,再加1 次,就变成 了0,此时,单片机的硬件会自动把TH0里的数值赋值给TL0,然后TL0又自加,加到255之后...周而复始。除非TR0 = 0,不然一直循环上述的过程 本回答由提问者推荐 举报...

单片机编程中tl0和th0
T0定时器是十六位的,所以计满是2^16,也就是65536,计满后就溢出.只有溢出,定时器才会运行定时中断程序,这个记住哦,等下用.比如,你的晶振是12M的,那么一个指令周期就是1us吧,所以呢最大只能定时65.536ms.打个比方,要定时50ms,50ms也就是50000,如果把50000直接给定时器的话,它只会定时(65536-50...

单片机的定时器C语言编程中:TH0与TL0为什么是TH0=(65536-50000)\/256...
1、首先第一步要定时器0设置于模式1时,然后由高8位TH0和低8位TL0两个8位寄存器组成,注意的是当设定计算值为65536-50000=15536(D)时,转换为十六进制就是3CB0(H),此时,TH0=3C,TL0=B0分别装入就可以了。2、接这就是采用“TH0=(65536-50000)\/256;TL0=(65536-50000)%256“的编程方式,...

单片机中TH0和TL0是什么意思?
TH 0和TL0都是单片机的8位定时器。TH 0中的H即为HIGH缩写,它是表示定时器高八位。TL 0中L即为LOW缩写,它所代表为低八位。单片机定时器的工作就是,当低八位定时器满溢后,向高八位进行进位。两个八位的TH 0和TL 0构成了单片机的16为定时\/计数器。

怎么计算51单片机定时器TH0和TL0的初值,比如我要让定时器20ms溢出一次...
最简单的计算方法就是 TH0=(65536-20000)\/256; TL0=(65536-20000)%256; 20000=20ms 如果1ms就是1000 想弄多少弄多少。。。

你好,定时器设置为TMOD=0x01;TH0=0; TL0=0;怎么解释
具体来说,计数起点应该是65536-10000=55536,从这个值开始向上计数到溢出,刚好耗时10毫秒。由于单片机寄存器是8位的,我们需要将TH和TL组合使用,其中TH存放高8位,TL存放低8位。因此,计算公式为TH0=(65536-10000)\/256;TL0=(65536-10000)%256。在上述示例中,TMOD用于设置定时器的计数模式,而TH0...

单片机中TH0和TL0是什么意思?
51单片机有两个定时器T0和T1 一:定时器有16位工作模式 二:TH0代表定时器的高八位,TH0中的H代表High即高的意思,TL0是定时器的低八位,其中L为LOW即低的意思 三:TH0和TL0两个8位即组成16位定时器

单片机中th0,tl0赋值什么用
单片机中,th0、tl0是定时器0的计数单元,实行加计数。对th0、tl0赋值也叫赋初值,目的就是在此基础上再计数多少次th0、tl0同时等于0(发生溢出)。

单片机tho和tld怎么算
TH0和TL0是根据定时时间和晶振频率来确定的,比如使用12M晶振,定时10毫秒:10毫秒等于10000微妙,12M晶振一个机器周期就是1微妙。所以如果定时器设置为模式1,那么 TH0=(65536-10000)\/256 TL0=(65536-10000)%256

单片机定时里 TH0=(65536-45872)\/256; TL0=(65536-45872)%256; 这两 ...
TH0=(65536-1000)\/256;TL0=(65536-1000)%256;依次类推。50MA定时初值应该是50000,但考虑到中断延迟,故把常数改为了45872。前一个求商后赋值给TH0,后一个求余数赋值给TL0 相当于:TH0=(65536-100)>>8,所以得到16位的高八位。TL0=(65536-100)&0x00ff,所以得到16位的低八位。TH0=(...

相似回答
大家正在搜