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