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

[复制链接]
3067|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 
 楼主| lwg998 发表于 2007-3-19 11:58 | 显示全部楼层

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

wsl_5631 发表于 2007-3-19 12:16 | 显示全部楼层

定时器的值是16位的

对于16位的定时器 值 = TH0*256 + TL0
256 = 2^8
 楼主| 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
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.
 楼主| lwg998 发表于 2007-3-19 18:37 | 显示全部楼层

终于明白了 谢谢你了

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

本版积分规则

13

主题

143

帖子

0

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