zoukankan      html  css  js  c++  java
  • 多机通信的研究

    /***************************************************
     *作    者 :温子祺
     *联系方式:wenziqi@hotmail.com
     *说    明 :多机通信的研究   
     ***************************************************/     

    单片机构成的多机通信系统中常采用总线型主从式结构。在多个单片机组成的系统中,只允许存在一个主机,其他的就是从机,从机要服从主机的控制,这就是总线型主从式结构。

    当51单片机进行多机通信时,串口要工作在方式2和方式3。假设当前多机通信系统有1个主机和3个从机,从机地址分别是00H、01H、02H。如果距离很近它们直接可以以TTL电平通信,一旦距离较远的时候,常采用RS-485串行标准总线进行数据传输。

     

     


    为了区分是数据信息还是地址信息,主机用第九位数据TB8作为地址/数据的识别位,地址帧的TB8=1,数据帧的TB8=0。各从机的SM2必须置1。

    在主机与某一从机通信前,先将该从机的地址发送给各从机。由于各从机SM2=1,接收到的地址帧RB8=1,所以各从机的接收信息都有效,送入各自的接收缓冲器SBUF,并置RI=1。各从机CPU响应中断后,通过软件判断主机送来的是不是本从机地址,如是本从机地址,就使SM2=0,否则保持SM2=1。

    接着主机发送数据帧,因数据帧的第九位数据RB8=0,只有地址相符的从机其SM2=0,才能将8位数据装入接收缓冲区SBUF,其他从机因SM2=1,数据将丢失,从而实现主机与从机的一对一通信。

    串口工作方式2、3也可以用于多机通信,此时第九位数据可作为奇偶校验位,但必须使SM2=0。

     

  • 相关阅读:
    mysql max_allowed_packet设置及问题
    mybatis之foreach用法
    uniapp编译小程序分包配置
    鼠标点击页面显示文字
    element ui el-date-picker 判断所选时间是否交叉
    前端处理跨域的几种方式
    uniapp的ajax封装请求
    js获取两个时间差
    vue文件下载功能
    nextTick使用
  • 原文地址:https://www.cnblogs.com/wenziqi/p/1769268.html
Copyright © 2011-2022 走看看