80C196KB與PC機之間的遠程通訊系統設計
3.1 下位機部分
80C196KB串行口的波特率取決于16位波特率寄存器的內容。該寄存器應以連續2個字節進行裝載,低位字節優先。寄存器的最高位用于選擇波特率發生器的輸入時鐘源,最高位為1,選用XTAL1(即晶體振蕩器)信號為源信號,否則選用自T2CLK引腳的信號為源信號。
80C196KB 的內部時鐘信號是經2分頻獲得的。若以BAUD-REG表示波特率寄存器的裝載值,那么在同步模式0時,BUAD-REG=XTAL1/(2×波特率)- 1或T2CLK/波特率;而在異步模式1、2和3時,其BAUD-REG=XTAL1/(16×波特率)-1或T2CLK/(8×波特率)。
80C196KB的通信方式設定為異步方式1時,可進行全雙工通訊,其格式為每10位構成一串行幀,其中包括1位起始位,8位數據位和1位停止位。
在本系統中,80C196KB的晶振為12MHz,因此,為使波特率達到9600,需將波特率寄存器賦值為804EH。
表2列出了采用XTAL1作為時鐘源時,異步模式下一些常用波特率所對應的波特率寄存器值。應注意,表中所列的值是根據上述公式計算所得的值再加上最高位“1”后得到的。
表2 常用波特率對應的波特率寄存器值
3.2 上位機部分
微機數據采集系統中的一個關鍵問題是要在Windows環境下編寫相應的通信程序。Windows應用編程接口(API)所提供的有關串行通訊的16個函數可以實現完整的通訊功能,但其應用較為復雜。而VB中有一個通訊控件MSComm,通過改變其屬性設置和編寫相應的程序,就能在Windows環境下方便地實現不同用戶的串行通訊要求。
利用下面的語句可以方便地設置傳輸波特率,MSComm1.Settings=“9600,N,8,1”
表明波特率為9600,無奇偶校驗位,8位數據位,1位停止位。
4 80C196KB和中央控制機的通訊
在本系統中,下位機為主叫端,上位機為應答端,它們通過公用電話網進行數據傳輸。其數據鏈路的建立、數據傳輸及結束通信的全過程如表3所列。
表3 數據傳輸過程表
評論