<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 多單片機(jī)共用RS 232通信的防競爭電路與程序設(shè)計(jì)

          多單片機(jī)共用RS 232通信的防競爭電路與程序設(shè)計(jì)

          作者: 時間:2011-05-17 來源:網(wǎng)絡(luò) 收藏

          控制輸出到74HC125的3個控制端信號分別定義為OEA,OEB,OEC,對應(yīng)于3個串口控制信號A,B,C,邏輯關(guān)系為:
          b.JPG
          控制的真值表如表1所示。

          本文引用地址:http://www.ex-cimer.com/article/172787.htm

          c.JPG


          由真值表可見:防止控制保證在A有效時,僅允許TxdA通過74HC125而其他2路信號被禁止通過。同樣,當(dāng)B有效時,僅允許TxdB信號通過,C有效時,僅允許TxdC信號通過,其他2路信號被禁止。確保任意時刻只有一個的串口占用 232發(fā)送通道,而其他不能占用 232發(fā)送通道,有效地防止了的發(fā)生。

          3 防止程序
          3.1 多機(jī)協(xié)議.
          多機(jī)協(xié)議是為了使單片機(jī)分時占用 232發(fā)送通道,在防競爭控制電路的配合下,使得任一時刻PC機(jī)僅與1個單片機(jī)進(jìn)行通信,保證通信的順利進(jìn)行。通信采用握手通信方式,通信協(xié)議如下:

          e.JPG


          每一幀信息為8個字節(jié)。其中,第一字節(jié)為特征字(這里為字符“L”),第二字節(jié)為地址碼,第三字節(jié)為命令碼,第四~七字節(jié)為數(shù)據(jù)字節(jié),第八字節(jié)為校驗(yàn)和(從地址碼開始計(jì)算字節(jié)的異或和)。
          如PC機(jī)向單片機(jī)系統(tǒng)發(fā)出呼叫:“L”、“A”、01H、00H、00H、00H、00H、40H,其中的“A”(41H)表示呼叫單片機(jī)A,01H是命令,4個00H是命令的參數(shù),40H為校驗(yàn)和。
          單片機(jī)接收到特征碼“L”后,開始接收后續(xù)的7字節(jié)信息,并對這7個字節(jié)計(jì)算校驗(yàn)和,完整的一幀呼叫碼校驗(yàn)無誤后,核對地址碼。單片機(jī)A核對地址碼為“A”,確認(rèn)是對本機(jī)呼叫,立即響應(yīng),拉低P10(信號A),本機(jī)即可獨(dú)占RS 232總線發(fā)送通道,按照通信協(xié)議與PC機(jī)進(jìn)行串行通信,通信完畢恢復(fù)P10(信號A)使RS 232總線發(fā)送通道恢復(fù)空閑狀態(tài)。而單片機(jī)B、單片機(jī)C校對地址碼不是本機(jī)地址后則退出,保持接收狀態(tài)。

          DIY機(jī)械鍵盤相關(guān)社區(qū):機(jī)械鍵盤DIY




          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();