zoukankan      html  css  js  c++  java
  • 学习笔记——51单片机 单片机与单片机之间的通讯

    虽然单片机串口通讯的内容老早学过,但当时只是粗略的过了一遍,记了一下SCON以及其工作方式。但是测试也仅限于单片机和电脑串口测试软件之间,这里发送一串内容,那里显示出来。总感觉不得劲。

    这次在其他知识过程中用了串口通讯,不是很熟练,就回过头了学一遍。

    单片机与单片机之间的通讯,接线方面,只需要将A的RXD接B的TXD,B的RXD接A的TXD,就可以了。(P30接P31,P31接P30)

    两个单片机用两个不同的程序。我这里打算通讯后,实现P2口灯全亮。

    执行中,因为我的单片机只是简单的发送一条指令到另一方,实际上,接一条杜邦线就可以。

    万丈高楼平地起,通过这个简单的程序,实现了A-->B的串口通讯,接下来会琢磨稍微复杂一点的。

    -----------------------------------------发送端程序------------------------------------------------

    #include"reg52.h"

    typedef unsigned char uchar;

    void init()                //初始化函数
    {
        SCON=0X50;            //设置工作方式为工作方式1
        TMOD=0X20;           //计时器工作方式2
        PCON=0X80;          //波特率加倍
        TH1=0Xf3;             //设定初值
        TL1=0Xf3;
        TR1=1;                 //启动计数器
        EA=1;                  //启动总中断
        ES=1;                 //启动串口通讯
    }

    void t_send(uchar state)           //数据发送
    {
        SBUF=state;                       //把state的值赋给SBUF发送缓冲器
        while(TI==0);                      //发送没结束,TI=0;发送结束,内部硬件会自动将TI置1;
        TI=0;                                  //必须用软件将TI置0;
    }
    void main()
    {
        P2=0x00;                          //要发送的数据,作用:使LED灯亮
        init();
        while(1)
        {
            t_send(P2);
        }
    }

    -----------------------------------------接收端程序------------------------------------------------

    #include"reg52.h"

    typedef unsigned char uchar;

    uchar state;

    void init()
    {
        SCON=0X50;
        TMOD=0X20;
        PCON=0X80;
        TH1=0Xf3;
        TL1=0Xf3;
        TR1=1;
        EA=1;
        ES=1;    
    }

    void r_receive()
    {
        while(RI==0);
        state=SBUF;
        RI=0;
    }

    void main()
    {
        init();
        while(1)
        {
            r_receive();
            P2=state;
        }
    }

  • 相关阅读:
    java.lang.NoSuchMethodError: org.springframework.beans.factory.annotation.InjectionMetadata.<init>(Ljava/lang/Class;)V
    tomcat下jndi的三种配置方式
    使用@RequestParam绑定请求参数到方法参数
    IE下easyui 缓存问题
    many to one could not resolve property
    aop郁闷错误
    Spring 运用 pointcut 和 advisor 对特定的方法进行切面编程
    放大改进版~
    cocos2d-x嵌入移动MM短代支付IAP2.4的SDK,点击支付崩溃的解决的方法
    在 Android* 商务应用中实施地图和地理围栏特性
  • 原文地址:https://www.cnblogs.com/hexia7935/p/13945006.html
Copyright © 2011-2022 走看看