求助,51单片机定时器初值设定问题

求大神翻译一下这两个指令:MOVTH0,#(65536-5000)/256MOVTL0,#(65536-5000)MOD256这两句是啥意思啊?尤其是为什么除256,这两... 求大神翻译一下这两个指令:
MOV TH0 ,#(65536-5000)/256
MOV TL0,#(65536-5000)MOD 256
这两句是啥意思啊?尤其是为什么除256,这两个指令执行后的结果是什么啊?
展开
 我来答
seuzhouww
推荐于2017-12-15 · TA获得超过1386个赞
知道小有建树答主
回答量:658
采纳率:0%
帮助的人:308万
展开全部
1、假设定时的要求是5000个计时脉冲。那么我们希望T0的16位计数模式初值为X=65536-5000。
2、T0计数初值X的高8位,将X除以256,或X右移8位得到。给TH0。
3、T0计数初值X的低8位,将X取余256,或者X&0x00ff,或者左移8位右移8位得到。给TL0。
4、采用常量表达式交给编译器完成计算过程,程序可读性更好。方便阅读,改写,效果与实际定时值写法完全一致。
追问
嗯,那就是X=1000,1000除以256给TH0,1000取余256给TL0,是吗?那么这个定时器设定的定时时间是多少啊?
追答
【1】程序中,定时计数5000个脉冲后中断。初值X=65536-5000=60536。填入初值计数器中的值为:TH0=0xEC(236),TL0=0x78(120)。T0从60536开始加计数,加5000次后TH0,TL0均为0,溢出产生中断请求。
【2】具体时间看T0的时钟源——晶振的12分频。如果是12MHz晶振,时钟源为1MHz,5000个脉冲计数时长是5mS。每5mS将会发出T0中断请求。
zhxiufan
2013-05-03 · 知道合伙人软件行家
zhxiufan
知道合伙人软件行家
采纳数:14923 获赞数:38386
国家科技进步奖

向TA提问 私信TA
展开全部
第一句就是将,(65536-5000)的高八位赋值给TH0
第二句就是将,(65536-5000)的低八位赋值给TL0
256就是2的8次方,一个数除以256相当于右移8位。MOD是求模的意思。
追问
嗯,那请问这个定时器的计时时间是多长啊?
追答
计时时间与晶振有关,比如12M晶振,计时1次是1 us,如你的参数,在12M晶振下定时时间是5ms。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sclswsh
2013-05-04 · 超过21用户采纳过TA的回答
知道答主
回答量:152
采纳率:0%
帮助的人:60.5万
展开全部
65536-5000的结果为16位,结果的高8位整数送到TH0(定时器高八位),结果的低8位送到TL0(定时器低八位),#(65536-5000)/256就是求结果高8位,#(65536-5000)MOD 256就是求结果低,8位。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
柔滑又睿智丶小白杨2951
2013-05-03
知道答主
回答量:14
采纳率:0%
帮助的人:6.2万
展开全部
因为定时器分高8位和低8位,所以TH0取的是65536-5000的转换成16进制的高8位,TL0取低8位!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式