新聞中心

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

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

        作者: 時間:2013-01-25 來源:網絡 收藏
          通過該成員變量便可以對串口屬性進行設置。以下是通過設置控件屬性對串口進行初始化:

          BOOL CMyCOMMDlg: : OnlnitDialog( )

          {

          CDialog: : OnlnitDialog( ) ;

          / /此處為應用框架自動生成代碼

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

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

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

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

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

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

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

          return TRUE; / /返回

          }

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

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

          {

          shortm_size =m_commute. GetinBufferCount( ) ;

          if (m_size = = 11) / /緩沖區為11個字符為滿

          {

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

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

          }

          }

          2.2 下位機通信程序設計

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

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

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

          (3)當主機改為與另外從機聯系時,可再發出地址幀來尋找其它從機。而先前被尋址過的從機在分析出主機是對其它從機尋址時,恢復其SM2 = 1,等待主機的再一次尋址。

          (4)從機要呼叫主機時,可先發送握手信號,主機檢測到有從機呼叫后,發出應答信號,從機接收到主機應答后,便可發送數據給主機。主機通過該信號來判斷從機所處的狀態,從而作出相應的反應。



        關鍵詞: MCS251 PC機 串口通信

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 昌图县| 莱西市| 突泉县| 稻城县| 桂平市| 樟树市| 肇东市| 类乌齐县| 红安县| 万全县| 丽水市| 洛隆县| 嘉祥县| 会宁县| 大庆市| 田林县| 曲阳县| 仙居县| 滦平县| 隆德县| 和平区| 中西区| 麦盖提县| 白河县| 桐梓县| 威海市| 万载县| 甘德县| 荆门市| 高安市| 保亭| 普兰县| 桐城市| 微博| 桑植县| 曲阳县| 鞍山市| 上杭县| 万盛区| 北碚区| 绵阳市|