打印
[51单片机]

简单串口通信

[复制链接]
548|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
小分子|  楼主 | 2016-9-1 14:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/**********************************
MCU接收到电脑发来的数据加1返回电脑
**********************************/

#include <reg52.h>

void InitUart();                                        //串口通信初始化函数声明

void main()
{
        InitUart();
        while (1);
}

void InitUart()
{
        TMOD &= 0x0F;                                   //清空T1的控制位
        TMOD |= 0x20;                                   //配置T1工作模式为2,即自动重装模式;
        TH1 = 0xFD;                                           //晶振为11.0592MHZ,波特率为9600
        TL1 = TH1;                                           //将TH1中的数据添加到TL1中
        PCON = 0x00;                                   //波特率正常不倍增
        SCON = 0x50;                                   //配置串口工作模式为1,且开启接收功能
        TR1 = 1;                                           //串口的波特率发生器由T1(T2)产生,开启定时器T1;
        ES = 1;                                                   //开启串口中断
        EA = 1;                                                   //开启总中断
}

void UartIRQ() interrupt 4                   //串口中断函数(在中断函数中要分清是接收产生中断,还是发送产生)
{
        if (1 == RI)                                   //接收中断标志为1,表示接收完成
        {
                SBUF = SBUF +1;                           //"="左边SBUF为发送缓冲器,右边SBUF为接收缓冲器
                RI = 0;                                           // RI需要软件清零
        }
        if (1 == TI)                                   //发送中断标志为1,表示发送完成
        {
                TI = 0;                                           // TI需要软件清零
        }
}

相关帖子

沙发
416356084| | 2016-9-1 16:32 | 只看该作者
????

使用特权

评论回复
板凳
NE5532| | 2016-9-1 16:57 | 只看该作者
灌水的?

使用特权

评论回复
地板
ahui1105| | 2016-9-1 17:08 | 只看该作者
什么情况?

使用特权

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

本版积分规则

18

主题

68

帖子

1

粉丝