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