打印

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

[复制链接]
2224|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lwg998|  楼主 | 2007-3-19 10:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
: 单片机C语言中的编程问题 

各位大虾:向大家请教一些问题。如下:
1:定时器中初值赋值,源程序如下:
   TH0=-5000/256;
   TL0=-5000%256;
   以上赋值方法有什么好处?如何计算初值数是多少?如直接赋值应该是多少?


2:在串口通讯中波特率如何设置?应该怎样计算?

3:串口通讯中波特率设置如下:
  TMOD=(TMOD&0x0f)|0x20; 

  或者:TMOD|=0x20; 
这种设置方法有什么好处?为什么不直接置数?

以上请各位大虾帮忙解释。谢谢 
 

相关帖子

沙发
ayb_ice| | 2007-3-19 10:52 | 只看该作者

随便说说

  答:
  1: 直观,不必计算到底是多少,让编译器去完成,省事,不会出错,对于标准的51一眼看出是5MS的定时,可读性好.
  2: 看书
  3: 直接置数与这个不一样(会修改其它位,作者并不想改变其它位)

使用特权

评论回复
板凳
lwg998|  楼主 | 2007-3-19 11:19 | 只看该作者

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

对于1:我还是不明白为什么要这么设置,5000为何前面要加一“-”号?为什么要用“/”和“%”号,如果我要定时4MS该如何设置?谢谢

使用特权

评论回复
地板
ayb_ice| | 2007-3-19 13:25 | 只看该作者

随便说说

  将5000改成4000就是4mS(4mS = 4000*1uS),-5000 = 65536-5000,自己算算就知道了

使用特权

评论回复
5
lwg998|  楼主 | 2007-3-19 15:01 | 只看该作者

谢谢

使用特权

评论回复
6
lwg998|  楼主 | 2007-3-19 15:48 | 只看该作者

不好意思我又要麻烦你了

我算了很多次了怎么也算不到5MS,你能把计算过程写出来吗?谢谢你了

TH0=-5000/256;
TL0=-5000%256;

使用特权

评论回复
7
lwg998|  楼主 | 2007-3-19 15:56 | 只看该作者

是否是这样算的

TH0=-5000/256;
TL0=-5000%256;
对于这个设置是否是这样算的呢   5000/256=19   19*256=4864
5000%256=5      4864+5=4869     4869*(12/11。0592M)=5283us=5。283MS

使用特权

评论回复
8
ayb_ice| | 2007-3-19 17:13 | 只看该作者

随便说说

  TH0 = (65536-5000)/256; // 236
  TL0 = (65536-5000)%256; // 120
定时器运行5000次溢出产生中断就是5mS(标准51运行于12MHZ).

使用特权

评论回复
9
lwg998|  楼主 | 2007-3-19 18:40 | 只看该作者

谢谢,终于明白了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

143

帖子

0

粉丝