基于VC6.0的多單片機和PC機串口通訊實現方案
軟件設計
下位機程序設計
主要由數據發送和數據接收子程序組成。設計單片機通信程序時,必須充分發揮單片機的效率。由于單片機多應用于實時性較強的控制場合,因此, 應將及時響應和控制對象的動作放在優先考慮的位置,以盡量減少通信等輔助性操作所占用的CPU時間。基于上述考慮,在設計單片機通信程序時,將通信程序分為接收中斷處理程序和發送中斷處理程序2部分。
主程序首先完成串行口的初始化、設置串口的工作方式、串口波特率,數據位、校驗位等。
(1) 接收子程序
在接收到上位機發送的地址后, 下位機響應中斷信號進入接收子程序。首先讀取上位機發送的地址數據, 檢查地址是否匹配,如果匹配, 準備接收其余的數據幀。在接收完上位機發送的數據后,判斷下位機是否發出中斷申請,如果有,則清除中斷申請信號。
(2) 發送子程序只有當發送緩沖區內有數據要發送并且置位發送中斷允許位時才調用。發送的數據遵守通訊協議的數據幀格式:首先發送起始標志, 然后發送需要傳輸的數據,最后發送校驗和以及結束標志位。
上位機通訊
上位機程序設計采用VC ++ 6.0開發平臺來實現。應用MSComm控件,可以非常方便地創建串行通信應用程序,但其程序執行效率不夠高,并且無法應用串行通信的一些底層功能。CSerialPort類支持線連接的串口編程操作,編寫的程序在Windows98/2000/XP下可以很好的運行CSerialPort類是基于多線程的。
1)設置通信對象、通信端口號以及配置通信格式(如起始位個數、數據位長度、校驗方式、停止位個數等) 和其他相關屬性;
2)設定通信協議;
3)打開通信端口,進行數據的傳輸;
m_Port.StartMonitoring();//開啟監視線程;
m_Port.WriteToPort((LPCTSTR)temp);//發送數據;
4)關閉通信端口,釋放系統資源。在完成串行通信操作后,應該將串行通信端口的資源歸還給操作系統;
m_Port.ClosePort();//關閉串口
上位機程序工作流程如下:首先設置好串口參數,再開啟串口監測工作線程,串口監測工作線程監測到串口接收到的數據、流控制事件或其他串口事件后,就以消息方式通知主程序,激發消息處理函數來進行數據處理,這是對接收數據而言;發送數據可以直接發送。
結束語
串 口通訊方式在計算機控制系統中有著廣泛的應用,本文設計的通訊協議經實踐證明穩定可靠,保證了單片機與PC之間數據傳輸的準確率,CSerialPort類簡化封裝了大部分通訊用API函數,同時簡化了編程操作在實際中有著廣泛的應用 。
參考文獻:
[1].PC datasheethttp://www.dzsc.com/datasheet/PC+_2043275.html.
[2].MSP430F169datasheethttp://www.dzsc.com/datasheet/MSP430F169_98.h.
[3].MSP430 datasheethttp://www.dzsc.com/datasheet/MSP430+_490166.html.
[4].MAX3232datasheethttp://www.dzsc.com/datasheet/MAX3232_1107769.html.
[5].RISCdatasheethttp://www.dzsc.com/datasheet/RISC_1189725.html.
單片機相關文章:單片機教程
單片機相關文章:單片機視頻教程
單片機相關文章:單片機工作原理
數字通信相關文章:數字通信原理
分頻器相關文章:分頻器原理 晶振相關文章:晶振原理
評論