单片机C语言中的编程问题

[复制链接]
 楼主| lwg998 发表于 2007-3-19 10:15 | 显示全部楼层 |阅读模式
:&nbsp;单片机C语言中的编程问题&nbsp;<br /><br />各位大虾:向大家请教一些问题。如下:<br />1:定时器中初值赋值,源程序如下:<br />&nbsp;&nbsp;&nbsp;TH0=-5000/256;<br />&nbsp;&nbsp;&nbsp;TL0=-5000%256;<br />&nbsp;&nbsp;&nbsp;以上赋值方法有什么好处?如何计算初值数是多少?如直接赋值应该是多少?<br /><br /><br />2:在串口通讯中波特率如何设置?应该怎样计算?<br /><br />3:串口通讯中波特率设置如下:<br />&nbsp;&nbsp;TMOD=(TMOD&0x0f)|0x20;&nbsp;<br /><br />&nbsp;&nbsp;或者:TMOD|=0x20;&nbsp;<br />这种设置方法有什么好处?为什么不直接置数?<br /><br />以上请各位大虾帮忙解释。谢谢&nbsp;<br />&nbsp;<br />
ayb_ice 发表于 2007-3-19 10:52 | 显示全部楼层

随便说说

&nbsp;&nbsp;答:<br />&nbsp;&nbsp;1:&nbsp;直观,不必计算到底是多少,让编译器去完成,省事,不会出错,对于标准的51一眼看出是5MS的定时,可读性好.<br />&nbsp;&nbsp;2:&nbsp;看书<br />&nbsp;&nbsp;3:&nbsp;直接置数与这个不一样(会修改其它位,作者并不想改变其它位)
 楼主| lwg998 发表于 2007-3-19 11:19 | 显示全部楼层

你好 对于1:我还是不明白为何要这么。。。。。。

对于1:我还是不明白为什么要这么设置,5000为何前面要加一“-”号?为什么要用“/”和“%”号,如果我要定时4MS该如何设置?谢谢
ayb_ice 发表于 2007-3-19 13:25 | 显示全部楼层

随便说说

&nbsp;&nbsp;将5000改成4000就是4mS(4mS&nbsp;=&nbsp;4000*1uS),-5000&nbsp;=&nbsp;65536-5000,自己算算就知道了
 楼主| lwg998 发表于 2007-3-19 15:01 | 显示全部楼层

谢谢

  
 楼主| lwg998 发表于 2007-3-19 15:48 | 显示全部楼层

不好意思我又要麻烦你了

我算了很多次了怎么也算不到5MS,你能把计算过程写出来吗?谢谢你了<br /><br />TH0=-5000/256;<br />TL0=-5000%256;<br />
 楼主| lwg998 发表于 2007-3-19 15:56 | 显示全部楼层

是否是这样算的

TH0=-5000/256;<br />TL0=-5000%256;<br />对于这个设置是否是这样算的呢&nbsp;&nbsp;&nbsp;5000/256=19&nbsp;&nbsp;&nbsp;19*256=4864<br />5000%256=5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4864+5=4869&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4869*(12/11。0592M)=5283us=5。283MS<br />
ayb_ice 发表于 2007-3-19 17:13 | 显示全部楼层

随便说说

&nbsp;&nbsp;TH0&nbsp;=&nbsp;(65536-5000)/256;&nbsp;//&nbsp;236<br />&nbsp;&nbsp;TL0&nbsp;=&nbsp;(65536-5000)%256;&nbsp;//&nbsp;120<br />定时器运行5000次溢出产生中断就是5mS(标准51运行于12MHZ).
 楼主| lwg998 发表于 2007-3-19 18:40 | 显示全部楼层

谢谢,终于明白了

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

143

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部