找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7707|回复: 9
收起左侧

定时器2如何改变波特率?

  [复制链接]
ID:109715 发表于 2016-6-5 16:56 | 显示全部楼层 |阅读模式
有一个例程,是9600波特率的,代码如下
  1. void UART_Init(void)
  2. {

  3.         SCON = 0x50;                //8位数据,可变波特率
  4.         AUXR |= 0x01;                //串口1选择定时器2作为波特发生率
  5.         AUXR |= 0x04;                //定时器2时钟作为Fosc,即1T
  6.         T2L = 0x8F;                //设置定时器初值
  7.         T2H = 0xFD;                //设置定时器初值
  8.         AUXR |= 0x10;                //启动定时器2
  9.        
  10. }
复制代码

我找到的单片机的书,定时器1是SCON,PCON这些,比如PCON=0x00改成PCON=0x80. 定时器2就是T2MOD,
没看到有AXUR,请问上边的初始化程序中,怎么将波特率翻倍?



回复

使用道具 举报

ID:97438 发表于 2016-6-5 21:52 | 显示全部楼层
书上的单片机没有定时器2吧。。。一般书上说的都是89c51,只有定时器0和定时器1的~~~这个定时器2看你用的什么单片机
回复

使用道具 举报

ID:109715 发表于 2016-6-5 22:52 | 显示全部楼层
luoluoluo136 发表于 2016-6-5 21:52
书上的单片机没有定时器2吧。。。一般书上说的都是89c51,只有定时器0和定时器1的~~~这个定时器2看你用的什 ...

恩,好像定时器1比较常用
回复

使用道具 举报

ID:125374 发表于 2016-6-6 09:19 | 显示全部楼层
void UART_Init(void)
{

        SCON = 0x50;                //8位数据,可变波特率
        AUXR |= 0x01;                //串口1选择定时器2作为波特发生率
        AUXR |= 0x04;                //定时器2时钟作为Fosc,即1T
        T2L = 0x8F;                //设置定时器初值
        T2H = 0xFD;                //设置定时器初值
        AUXR |= 0x10;                //启动定时器2
       
}
回复

使用道具 举报

ID:125378 发表于 2016-6-6 09:52 | 显示全部楼层
通过设置定时器的初值就可以改变波特率
回复

使用道具 举报

ID:110895 发表于 2016-6-19 18:27 | 显示全部楼层
ljh951028 发表于 2016-6-6 09:19
void UART_Init(void)
{

写的不错的。
回复

使用道具 举报

ID:218025 发表于 2018-7-29 09:56 | 显示全部楼层
luoluoluo136 发表于 2016-6-5 21:52
书上的单片机没有定时器2吧。。。一般书上说的都是89c51,只有定时器0和定时器1的~~~这个定时器2看你用的什 ...

52单片机就有T2,功能很强
回复

使用道具 举报

ID:213173 发表于 2018-7-29 20:58 | 显示全部楼层
无标题.jpg

评分

参与人数 1黑币 +10 收起 理由
yousunny + 10 赞一个!

查看全部评分

回复

使用道具 举报

ID:380874 发表于 2018-7-30 14:56 | 显示全部楼层

通过设置定时器的初值就可以改变波特率
回复

使用道具 举报

ID:366710 发表于 2018-7-30 18:07 | 显示全部楼层
写PCON=0x80就行了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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