zoukankan      html  css  js  c++  java
  • 51单片机之串口通信(三)

    51单片机之串口通信(三)

    已有 47 次阅读2015-12-29 00:21 |个人分类:51单片机单片机通信

    用串口实现发送和接收同时可操作:
    电脑显示结果如图:
    51单片机之串口通信(三) - 元宝 - 元宝的世界
    源程序:

    /*
    项目名称:串口发送接收实验
    项目内容:串口发送接收同时进行,
    计算机发送数据给单片机控制P0口,从而控制
    LED灯的亮灭,单片机发送数据到计算机,计算机
    显示出来
    时间:2015年12月23日
    项目负责人:YUAN
    */
    #include <reg52.h>
    typedef unsigned char uChar8;
    typedef unsigned int uInt16;

    void DelayMS(uInt16 ValMS);
    void UartInit(void); //串口初始化
    void UartReceiveData(void); //接收数据
    void UartSendData(void); //串口发送数据,即单片机发送数据
    void main(void)
    {
    /*初始化:包括定时器中断的设置,
    串口寄存器设置,波特率设置*/
    UartInit();
    while(1)
    {
    /*接收计算机发送的数据并送给led控制端口*/
    UartReceiveData();
    UartSendData();
    DelayMS(500);
    }
    }
    void DelayMS(uInt16 ValMS)
    {
    uInt16 uiVal,ujVal;
    for(uiVal=0;uiVal<ValMS;uiVal++)
    for(ujVal=0;ujVal<113;ujVal++);
    }
    void UartInit(void)
    {
    TMOD &= 0x0f; //只改变要改变的
    TMOD |= 0x20; //设置定时器0为工作方式2
    TL1 = 0xfd;
    TH1 = 0xfd; //设置波特率为9600bps
    TR1 = 1; //允许T1开始计数

    SCON &= 0x5f;
    SCON |= 0x50; //设置串口工作在方式1,允许接收数据
    }
    void UartReceiveData(void)
    {
    //如果接收中断为1,则说明有发送
    if(RI)
    {
    RI = 0;
    P0 = SBUF; //把发送的数据送给P0控制LED
    }
    }
    void UartSendData(void)
    {
    static uChar8 num = 0;
    //发送数据,并累加
    SBUF = num;
    num++;
    TI = 0;

    }

     
     
    收藏分享邀请使用道具 编辑删除|
     
  • 相关阅读:
    foundation框架—结构体
    OC语言BLOCK和协议
    OC语言description方法和sel
    OC语言类的本质和分类
    清除浮动的常用方法
    php动态读取数据清除最右边距
    css背景图片定位练习(二): background-position的百分比
    css背景图片定位练习(一)
    行高不设单位的好处 line-height:1.8
    background:transparent的作用
  • 原文地址:https://www.cnblogs.com/yuanbao825/p/5107661.html
Copyright © 2011-2022 走看看