找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6251|回复: 1
收起左侧

51通讯问题

[复制链接]
ID:10641 发表于 2009-4-1 12:33 | 显示全部楼层 |阅读模式
单片机使用串口通讯时,怎么设定波特率啊,
TMOD = 0x20;   // 定时器1工作于8位自动重载模式, 用于产生波特率
TH1 = 0xFD;    // 波特率9600
TL1 = 0xFD;
 
SCON = 0x50;   // 设定串行口工作方式
PCON &= 0xef; 
程序中波特率9600怎么来的?
用晶振怎么计算啊?
回复

使用道具 举报

ID:6481 发表于 2009-4-5 10:41 | 显示全部楼层
TMOD = 0x20;   // 定时器1工作于方式2 8位自动重载模式 为什么用这种模式。答:这种模式特别适合用于把T1 用做串行口拨特率发生器
TH1 = 0xFD;
TL1 = 0xFD;  // 波特率9600:
为什么这里设置成 0XFD 就是拨特率 9600呢?
我们先说 T1方式2的情况下。 为什么TH1 TL1 都被设置为0XFD 是因为 T1 在方式2时  当TL1计数溢出时 自动 把TH1的内容重装载到 TL1中 这也是为什么 它叫做自动重载模式
也许刚开始大家会想 明明是8位的定时计数器 为什么 TH1  TL1 都要定义。就是 这个原因。下面我们再说 为什么要用T1 并且初值为 0XFD
SCON = 0x50;   // 设定串行口工作方式 :SCON 串行口控制寄存器 为 01010000 定为方式1 (为什么是方式1  。。。。这个 应该能看懂吧  )
PCON &= 0xef;    //这条语句  PCON 特殊功能寄存器 被给定为 0XEF=01111111 也就是最高位为0 就是SMOD 为0   那么SMOD   干什么的呢 拨特率选择位 为1时 拨特率加倍 为0时就是普通 后面有个公式 2的SMOD次方 就要用到这个 这里 定义为 0了  那么后面公式里就直接可以不要这个了 因为 2的0次方 为1 了
好了 上面都设置好了 下面我们来看看 计算公式
  当SMOD 等于0时 我们直接写成 FOSC/[32X12(2*8-T1初值)] =11059260/[32X12(256-253)=11059260/1152=9600.052083333333333333
(为什么是这个公式 。。。。。书上有 网上有  自己翻翻。。。。。)
 OK不?
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表