<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > MCS251單片機和PC機間的串口通信

MCS251單片機和PC機間的串口通信

作者: 時(shí)間:2013-01-25 來(lái)源:網(wǎng)絡(luò ) 收藏
  通過(guò)該成員變量便可以對串口屬性進(jìn)行設置。以下是通過(guò)設置控件屬性對串口進(jìn)行初始化:

  BOOL CMyCOMMDlg: : OnlnitDialog( )

  {

  CDialog: : OnlnitDialog( ) ;

  / /此處為應用框架自動(dòng)生成代碼

  m_commute. SetCommPort(1) ; / /使用串口1

  m_commute. SetSettings("9600,N, 8, 1") ; / /波特率為9600,無(wú)奇偶校驗, 8位數據位, 1位停止位

  m_commute. SetRThreshold (10) ; / /每接收10個(gè)字符就觸發(fā)1次接收事件

  m_commute. SetSThreshold (0) ; / /不觸發(fā)發(fā)送事件

  m_commute. SetInputLen (10) ; / /每次讀操作從緩沖區中取10個(gè)字符

  m_commute. SetInputMode (1) ; / /二進(jìn)制數據傳輸形式

  m_commute. SetPortOpen ( TRUE) ; / /打開(kāi)串口

  return TRUE; / /返回

  }

  事件驅動(dòng)是處理串行端口交互作用的一種非常有效的方法。OnComm 事件的CommEvent屬性可以捕捉并檢查通信事件和錯誤。發(fā)生通信事件或錯誤時(shí),將觸發(fā)OnComm 事件, CommEvent屬性的值將被改變,應用程序檢查CommEvent屬性值并作出相應的反應。雙擊對話(huà)框中CMSComm控件,添加OnComm事件的代碼:

  if (m_commute. GetCommEvent( ) = = 2) / /判斷comEvReceive事件發(fā)生否

  {

  shortm_size =m_commute. GetinBufferCount( ) ;

  if (m_size = = 11) / /緩沖區為11個(gè)字符為滿(mǎn)

  {

  m_commute. SetInputLen (L) ; / /讀取接收到的數據

  VAR IANT vRep ly =m_commute. GetInput ( ) ; / /處理接收到的數據

  }

  }

  2.2 下位機通信程序設計

  在上位機與多片單片機通信中,要保證主機與從機間可靠的通信,必須保證通信接口具有識別功能。而單片機串行口控制寄存器SCON中的控制位SM2就是為了滿(mǎn)足這一要求而設置的。且SM2控制位只在MCS51單片機的串行工作方式2與方式3才起作用。在串行口以方式2或方式3接收時(shí),若SM2 =1,表示置多機通信功能位,這時(shí)出現兩種可能情況:接收到第9位數據為1時(shí),數據才裝入SBUF,并置R I = 1向CPU發(fā)出中斷請求;如果接收到第9位數據為0時(shí),則不發(fā)生中斷,信息被掉失。若SM2=0,則接收到的第9位數據無(wú)論是0還是1都產(chǎn)生R I =1中斷標志,接收到的數據裝入SBUF中。根據上述情況MCS - 51多機通信過(guò)程安排如下:

 ?。?)開(kāi)始時(shí)設所有的從機SM2位為1 ,處于只接收地址幀的狀態(tài)(串行幀的第9位為1 ) ,對數據幀(串行口的第9位為0)則不做響應。

 ?。?)當從機接收到主機發(fā)來(lái)的地址幀后,將所接收的地址與本機地址相比較,若地址與本機地址相符,便使SM2清零以接收主機隨后發(fā)來(lái)的數據,對于地址不相符合的從機,仍保持SM2 = 1狀態(tài),故不能接收主機隨后發(fā)來(lái)的數據信息。

 ?。?)當主機改為與另外從機聯(lián)系時(shí),可再發(fā)出地址幀來(lái)尋找其它從機。而先前被尋址過(guò)的從機在分析出主機是對其它從機尋址時(shí),恢復其SM2 = 1,等待主機的再一次尋址。

 ?。?)從機要呼叫主機時(shí),可先發(fā)送握手信號,主機檢測到有從機呼叫后,發(fā)出應答信號,從機接收到主機應答后,便可發(fā)送數據給主機。主機通過(guò)該信號來(lái)判斷從機所處的狀態(tài),從而作出相應的反應。



關(guān)鍵詞: MCS251 PC機 串口通信

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>