單片機(jī)多機(jī)通信的研究
單片機(jī)構(gòu)成的多機(jī)通信系統(tǒng)中常采用總線型主從式結(jié)構(gòu)。在多個(gè)單片機(jī)組成的系統(tǒng)中,只允許存在一個(gè)主機(jī),其他的就是從機(jī),從機(jī)要服從主機(jī)的控制,這就是總線型主從式結(jié)構(gòu)。
當(dāng)51單片機(jī)進(jìn)行多機(jī)通信時(shí),串口要工作在方式2和方式3。假設(shè)當(dāng)前多機(jī)通信系統(tǒng)有1個(gè)主機(jī)和3個(gè)從機(jī),從機(jī)地址分別是00H、01H、02H。如果距離很近它們直接可以以TTL電平通信,一旦距離較遠(yuǎn)的時(shí)候,常采用RS-485串行標(biāo)準(zhǔn)總線進(jìn)行數(shù)據(jù)傳輸。
為了區(qū)分是數(shù)據(jù)信息還是地址信息,主機(jī)用第九位數(shù)據(jù)TB8作為地址/數(shù)據(jù)的識(shí)別位,地址幀的TB8=1,數(shù)據(jù)幀的TB8=0。各從機(jī)的SM2必須置1。
在主機(jī)與某一從機(jī)通信前,先將該從機(jī)的地址發(fā)送給各從機(jī)。由于各從機(jī)SM2=1,接收到的地址幀RB8=1,所以各從機(jī)的接收信息都有效,送入各自的接收緩沖器SBUF,并置RI=1。各從機(jī)CPU響應(yīng)中斷后,通過(guò)軟件判斷主機(jī)送來(lái)的是不是本從機(jī)地址,如是本從機(jī)地址,就使SM2=0,否則保持SM2=1。
接著主機(jī)發(fā)送數(shù)據(jù)幀,因數(shù)據(jù)幀的第九位數(shù)據(jù)RB8=0,只有地址相符的從機(jī)其SM2=0,才能將8位數(shù)據(jù)裝入接收緩沖區(qū)SBUF,其他從機(jī)因SM2=1,數(shù)據(jù)將丟失,從而實(shí)現(xiàn)主機(jī)與從機(jī)的一對(duì)一通信。
串口工作方式2、3也可以用于多機(jī)通信,此時(shí)第九位數(shù)據(jù)可作為奇偶校驗(yàn)位,但必須使SM2=0。