打印

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

[复制链接]
1564|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lwg998|  楼主 | 2007-3-19 09:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位大虾:向大家请教一些问题。如下:
1:定时器中初值赋值,源程序如下:
   TH0=-5000/256;
   TL0=-5000%256;
   以上赋值方法有什么好处?如何计算初值数是多少?如直接赋值应该是多少?


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

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

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

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

相关帖子

沙发
lwg998|  楼主 | 2007-3-19 10:22 | 只看该作者

我在线等 呵呵

使用特权

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

贴子沉下去了,我顶起来

使用特权

评论回复
地板
wsl_5631| | 2007-3-19 11:54 | 只看该作者

计算交给编译器吧


TH0 = (65536-TIME*1000.0*OSC/12)/256;        
TL0 = (65536-(unsigned )(TIME*1000.0*OSC/12))%256;

OSC = 晶振频率 单位M
TIME = 定时时间 单位ms 

使用特权

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

哦 谢谢了,为什么要“/”256 不是其它数呢

使用特权

评论回复
6
wsl_5631| | 2007-3-19 12:16 | 只看该作者

定时器的值是16位的

对于16位的定时器 值 = TH0*256 + TL0
256 = 2^8

使用特权

评论回复
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 18:32 | 只看该作者

仔细看看定时器原理

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

使用特权

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

终于明白了 谢谢你了

使用特权

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

本版积分规则

13

主题

143

帖子

0

粉丝