简单的串口通信

/**********************************
 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需要软件清零
    }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值