zoukankan      html  css  js  c++  java
  • 串口发送数据

    #include <reg52.h>

    char rData = 0;

    char RFlag = 0;//如果接收到数据后将RFlag置为1

    char TBusy = 0;//TBusy为1表示正在发送数据

    void SerialInt() interrupt 4

    {

        if(RI)//如果接收到数据就将SBUF中存的接收的数据赋值给rData 。手动将RI 标志位置为0

        {

            RI = 0;

            rData = SBUF;

            RFlag = 1;

        }

        if(TI)//如果发送数据完毕,手动将 TI标志置为0

        {

            TI = 0;

            TBusy = 0;

        }

    }

    //19200波特率

    void UartInit(void)//初始化配置定时器1

    {

        TMOD = 0x20;       //T1 方式2

        PCON = 0x80;       //SMOD = 1

        SCON = 0x50;      //方式1 8个数据位

        TH1=0xFD;

        TL1=0xFD;

        TR1 = 1;          //启动定时器1

        ES=1;              //开串口中断

        EA=1;              //开总中断

    }

    void main()

    {

        UartInit();

        while(1)

        {

            if(RFlag)//如果接收到数据,并且发送数据处于空闲状态(TBusy==0时),将接收到的数据再发送出去

            {

                RFlag = 0;

                while(TBusy);

                TBusy = 1;

                SBUF = rData;

            }

        }

    }

    同样使用上面接收数据使用的软件进行测试:

     需要注意发送和接收的编码要设置成一致,不然接收的可能显示出来就是乱码

    /** ****************************************************************************** * @file : main.c * @brief * @author : 涛声依旧 * @version : V1.0.0 * @date : 2019-12-13 * Fuction List : 1. ... <version>: <modify staff>: <data>: <description>: 2. ... ****************************************************************************** ** * * COPYRIGHT(c) 2019, 机器鸟 www.qshikong.cn * * 满足以下条件,允许修改或者修改后以源代码和二进制形式重新分发和使用。 * 1. 重新分发源代码必须保留上述版权声明,以及此条件列表 * 和以下免责声明。 * 2. 二进制形式的重新分发必须复制上述版权声明, * 此列表内容和以下免责声明于发行版随附的材料中。 * 3. 机器鸟的名称或其贡献者的名称未经事先特别说明许可,不可用于认可 * 或推广从该产品衍生的产品。 * * 免责声明:本软件只用于教学、学习、测试使用,对于任何直接、间接、偶发、 * 特殊等损害,版权持有人或贡献者在任何情况下均不承担责任。 * ****************************************************************************** */ /* Includes ------------------------------------------------------------------*/ #include <reg52.h> /* Private typedef -----------------------------------------------------------*/ /* Private define ------------------------------------------------------------*/ /* Private macro -------------------------------------------------------------*/ /* Private variables ---------------------------------------------------------*/ char rData = 0; char RFlag = 0; char TBusy = 0; /* Private function prototypes -----------------------------------------------*/ /* Private functions ---------------------------------------------------------*/ void SerialInt() interrupt 4 { if(RI) { RI = 0; rData = SBUF; RFlag = 1; } if(TI) { TI = 0; TBusy = 0; } } //19200波特率 void UartInit(void) { TMOD = 0x20; //T1 方式2 PCON = 0x80; //SMOD = 1 SCON = 0x50; //方式1 8个数据位 TH1=0xFD; TL1=0xFD; TR1 = 1; //启动定时器1 ES=1; //开串口中断 EA=1; //开总中断 } void main() { UartInit(); while(1) { if(RFlag) { RFlag = 0; while(TBusy); TBusy = 1; SBUF = rData; } } }

  • 相关阅读:
    任意代码执行实例
    任意代码执行漏洞
    Port Hacking
    任意命令执行漏洞
    sql注入基于错误-单引号-字符型
    与SQL注入第一次相遇
    Hibernate基础知识
    TxQueryRunner类对结果集封装成bean、map及object的操作
    map的数据创建任意类的JavaBean对象
    UUID产生的JAR
  • 原文地址:https://www.cnblogs.com/maycpou/p/13622502.html
Copyright © 2011-2022 走看看