PC機與單片機串行通信中實現命令批處理
在PC機與MCS-51單片機之間進行串行通信時,基本是一對一的,即用PC機向單片機每發1條命令,就等待單片機的1條返回信息。這樣可能把大量時間浪費在PC機與單片機的通信過程中了。為此筆者經過實踐,設計出可以批處理執行PC機發給單片機的命令,就像DOS操作系統中的批處理命令一樣,可連續批處理信息,結果當然提高了系統速度。文中提供了部分平臺式C51軟件源代碼,以供大家參考。
本文引用地址:http://www.104case.com/article/171665.htm1 通信協議
(1)通信數據格式
PC機→MCS-51單片機數據格式如表1所列。
MCS-51單片機→PC機數據格式如表2所列。
(2)初始通信參數
PC機與單片機間(9600,n,8,1)即波特率為9600 baud,1起始位,8數據位,1停止位,無奇偶校驗。
(3)數據收發方式
所有數據按二進制單字節發送。
(4)發送數據順序
發送同步碼(1Byte):Stx=0X60
發送后續字節的長度(2Byte):Len=2+N
發送Len個后續數據字節(N+2 Byte):CommandH,CommandL,Data[0]…Data[N-1]
發送校驗碼(1Byte): Edc=Stx^CommandH^ CommandL^Data[0]^…Data[N-1]
發送結束碼(1Byte): Etx=0X03
2 單條命令COMMAND[n]
COMMAND[n]格式:
一般把單條命令的長度控制在255以內。
PC機向單片機發送數據序列為:
STX,LENH,LENL,COMMANDH,COMMANDL,DATA…DATA,EDC,ETX
3 批處理的思想方法
(1)批處理命令BATCH_COMMAND (0X0000)
PC格式:
NUM——后續命令的個數;
Flag——需要返回的標志(00為要返回數據,其它為無需返回數據)。
COMMAND[i]=LEN,子命令體
功能:批處理執行功能。
返回狀態及數據:根據Flag標志決定是否返回數據,按發送命令的順序返回數據。
(2)控制批處理轉移的命令
功能:沒有數據和狀態返回,控制下位機跳轉。
① 控制BATCH_If(0X0001)用于判斷,條件執行命令
功能:單片機遇到該命令,執行判斷,如果結果為邏輯真,則執行緊跟BATCH_If的第1條命令;否則執行緊跟BATCH_If第2條命令。
PC格式:
num: 返回數據從右到左的第幾個數據,為0時為狀態數據的低位字節;
EQUAL/NOT——00為相等,1為不等;
VALUE——數值。
返回:無。
通信相關文章:通信原理
評論