单片机TH0=(65536-50000)/256;是什么意思
(65536-50000)/256的具体涵义50000是做什么的啊好像我记得是正好是一个什么时间??中的50000表示需要定时器定时一次需要计数的个数。那么定时器的初始值...
(65536-50000)/256的具体涵义
50000是做什么的啊 好像我记得是正好是一个什么时间??
中的50000表示需要定时器定时一次需要计数的个数。
那么定时器的初始值就是(65536-50000)。这里还是没懂。。。。 展开
50000是做什么的啊 好像我记得是正好是一个什么时间??
中的50000表示需要定时器定时一次需要计数的个数。
那么定时器的初始值就是(65536-50000)。这里还是没懂。。。。 展开
7个回答
2022-12-01 · 百度认证:北京惠企网络技术有限公司官方账号
关注
展开全部
(65536-50000)=15536,换算成16进制就是3CB0H\x0d\x0a(65536-50000)/256的结果是3CH,即一个字的高位字节。\x0d\x0a而(65536-50000)%256的结果是B0H,即一个字的低字节。\x0d\x0a单片机TH0=(65536-50000)/256;就是将定时器0(TH0)高位字节付值3CH。
展开全部
如果你选的单片机的晶振一定,比如12MHZ来说吧,机器周期是1us,就是说每1us产生一次计数,就拿50ms来说,这是你想要的计时,意思是,对机器周期进行50000计数就可以得到我想要的,可T0是一个可以对机器周期能进行65536次计数,也就是说我想要的50MS不能让T0溢出,怎么办,那么先给这个定时器里面放些数,放多少,就是我们想要的50MS在加上一个多少就能等于65536,也就是65536和50000的差值,这个值就是我们说的初值。
为什么除以256,因为我们的计时器是两个8位组成的,那么要把那些差值装进这两个8位,那么低8位最多能装256个机器周期,那么256计满了就用高8位的,就是说低8位满一次高8位加1,那么高8位装多少,低8位就满了几次,算法就是用差值除一下256取其整数,剩下的,就是还剩了小于256次数的就放在低8位,就是差值的余数。如果我要放一个超过256的数,肯定是超过先放高八位,把剩下的部分放在低八位中了,TH0=(65536-50000)/256就是把TL0中放不下的部分放在THO中,再把剩下的部分放在THO中。
void timer(0) interrupt 1
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
flag++;
if(flag==20)//当定时到1秒时执行花括号里面的语句
{}
}
为什么除以256,因为我们的计时器是两个8位组成的,那么要把那些差值装进这两个8位,那么低8位最多能装256个机器周期,那么256计满了就用高8位的,就是说低8位满一次高8位加1,那么高8位装多少,低8位就满了几次,算法就是用差值除一下256取其整数,剩下的,就是还剩了小于256次数的就放在低8位,就是差值的余数。如果我要放一个超过256的数,肯定是超过先放高八位,把剩下的部分放在低八位中了,TH0=(65536-50000)/256就是把TL0中放不下的部分放在THO中,再把剩下的部分放在THO中。
void timer(0) interrupt 1
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
flag++;
if(flag==20)//当定时到1秒时执行花括号里面的语句
{}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这是16位的定时器,最大计数2的16次方即65536。
式中的5000表示需要定时器定时一次需要计数的个数。
那么定时器的初始值就是(65536-50000)。
需要把这个初值分别赋给 TH0(高字节)TL0(低字节)
高字节就是这个数除以256,即TH0=(65536-50000)/256。
具体的结果编译器就给你计算了,这是一个省劲的写法。
式中的5000表示需要定时器定时一次需要计数的个数。
那么定时器的初始值就是(65536-50000)。
需要把这个初值分别赋给 TH0(高字节)TL0(低字节)
高字节就是这个数除以256,即TH0=(65536-50000)/256。
具体的结果编译器就给你计算了,这是一个省劲的写法。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
16位的定时器,最大计数2的16次方即65536。
式中的5000表示需要定时器定时一次需要计数的个数。
那么定时器的初始值就是(65536-50000)。
需要把这个初值分别赋给 TH0(高8位)
高字节就是这个数除以低字节256,即TH0=(65536-50000)/256。
低字节就是2的8次方256,2是因为每个位须要经过1和0两次变化;8就是低8位,每位变化2次后向上进一位,最后等于变化256次
晶振为12M时程序在这里大约延时50毫秒
式中的5000表示需要定时器定时一次需要计数的个数。
那么定时器的初始值就是(65536-50000)。
需要把这个初值分别赋给 TH0(高8位)
高字节就是这个数除以低字节256,即TH0=(65536-50000)/256。
低字节就是2的8次方256,2是因为每个位须要经过1和0两次变化;8就是低8位,每位变化2次后向上进一位,最后等于变化256次
晶振为12M时程序在这里大约延时50毫秒
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
(65536-50000)=15536,换算成16进制就是3CB0H
(65536-50000)/256的结果是3CH,即一个字的高位字节。
而(65536-50000)%256的结果是B0H,即一个字的低字节。
单片机TH0=(65536-50000)/256;就是将定时器0(TH0)高位字节付值3CH。
(65536-50000)/256的结果是3CH,即一个字的高位字节。
而(65536-50000)%256的结果是B0H,即一个字的低字节。
单片机TH0=(65536-50000)/256;就是将定时器0(TH0)高位字节付值3CH。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询