单片机C语言中计时计数器赋初值的一个疑问

单片机C语言编程-----------"..,需要计数器加1000下之后溢出,,所以推出必须给1计数器赋值为65536-1000,在C语言中相当于-1000"在之后给TH... 单片机C语言编程 -----------"..,需要计数器加1000下之后溢出,,所以推出必须给1计数器赋值为65536-1000,在C语言中相当于-1000" 在之后给TH1,TL1,赋值出现了-1000/256,-1000%256...
1.请问这句话里面C语言中相当于-1000怎么推导出来的...
2.怎么又推出了-1000/256,-1000%256就是要给的TH1,TL1的值..
展开
 我来答
shensljx
2010-12-12 · TA获得超过479个赞
知道小有建树答主
回答量:202
采纳率:0%
帮助的人:88.7万
展开全部
第一个问题:
65536事实上就是0!
解释:对于16bit的寄存器而言,所能表示的最大正整数是16个1即十六进制的0xFFFF,十进制数为65535,若再加1,其进位必然溢出,结果就是16个0

所以65536-1000,就是-1000,也就是64536或0xFC18
第二个问题:
TH1和TL1分别是高8位寄存器和低8位寄存器,必然是TH1=OxFC,而TL1=0x18,这样算是可以的,但由于8位寄存器的所能表示的最大正整数是256,二者的关系是很明显的,故深入理解可知TH1寄存器中的数据实质上所表达的是256的倍数,相当于256进制,可以验证一下:
64536/256=252=0xFC
64536%256=24=ox18
不知道你懂了没有?
LYQGXH
2010-12-12 · TA获得超过409个赞
知道小有建树答主
回答量:314
采纳率:100%
帮助的人:228万
展开全部
这个好说,计数器是一个16位的寄存器,相当于一个unsigned int 的变量,也就是说它最大的容量是65536,(2^16次方)。当计数器不断的计数时,数值不断的加1,超过65536这后就会向CPU发一个中断信号,这时你就可以对这个信号进行处理,完成你的计数要求。也就是说,如果你要计数1000。那你就要给计数器一个初值65536-1000,然后计数器开始加1,加到65536后也就是加了1000后溢出,完成了你计数1000的要求。
值得一说的是如C51这类的单片机是8位的,所以把计数器分成了两个,TH1和TL1,它们分别装计数器的高8位和低8位。用65536-1000/256,获得高8位的初始值,用。。。。。1000%256获得低8位的初始什,为什么是256,因为是2^8次方。也就是8位的最大值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式