在51单片机中波特率如何切换

[复制链接]
3639|1
 楼主| 349264710 发表于 2011-3-27 15:48 | 显示全部楼层 |阅读模式
在使用51单片机中遇到一个问题。我使用定时器做波特率发生器,因为接收和发送的波特率不一样,所以波特率要不停的切换,在切换波特率时,我关闭串口中断》关闭定时器》重新赋定时器的高八位和低八位值》启用定时器》打开串口中断。这样的流程有问题吗?另外我用串口发送数据时用串口中断的方法,程序结构如下,有问题吗?
void rec_send_data(void) interrupt 4  //串口中断
{
     if(RI)//接收中断
    {
         RI = 0;//清除接收中断
         rec_data = SBUF;//读取接收的数据
         TI = 1;//打开发送中断
    }
     else if (TI)//发送中断
     {
          TI = 0;//清除发送中断
         SBUF = send_data;//把要发送的数据放到发送寄存器中
     }
}
ayb_ice 发表于 2011-3-28 08:41 | 显示全部楼层
有些稍高级的51可以分别设置接收与发送波特率,如果动态切换设置后最后延时2个以上的BIT时间再发送数据
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

77

帖子

3

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