MCS51系列單片機(jī)雙機(jī)并行互連
廣東省清遠(yuǎn)市清城區(qū)職業(yè)技術(shù)學(xué)校 賴小敏 2008/8/4
(接上頁(yè))兩個(gè)單片機(jī)
均可隨時(shí)提出申請(qǐng),向?qū)Ψ桨l(fā)送數(shù)據(jù),當(dāng)然也可以通過(guò)簡(jiǎn)單的接口協(xié)議從對(duì)方讀取數(shù)據(jù)。這種情況下,就有可能出現(xiàn)兩個(gè)單片機(jī)同時(shí)提出使用8位端口的申請(qǐng)而發(fā)生沖突,從而影響雙方數(shù)據(jù)的傳送。要解決這個(gè)問(wèn)題,就要求每一方必須在數(shù)據(jù)傳送之前進(jìn)行檢查,以判斷8位端口是否被對(duì)方所使用,從而避免沖突的發(fā)生。圖3是無(wú)從雙向并行通信接口的原理圖。該接口中采用了5根控制信號(hào)線,其中CHK/ACK控制信號(hào)線,其中CHK/ACK控制信號(hào)線的功能可以復(fù)用。8位端口可以是P0、P1或其它8位I/O口。
在無(wú)主從雙向并行通信接口中,由于單片機(jī)A與單片機(jī)B沒(méi)有主從關(guān)系而處在平等位置,所以單片機(jī)B與單片機(jī)A的數(shù)據(jù)接收發(fā)送流程完全相同。這里只說(shuō)明單片機(jī)A的數(shù)據(jù)接收發(fā)送流程。
3.1數(shù)據(jù)發(fā)送流程
下面給出單片機(jī)A的數(shù)據(jù)發(fā)送流程:
(1)檢查CHKREQ,判斷單片機(jī)B是否提出了數(shù)據(jù)傳送申請(qǐng)
(2)如果單片機(jī)B提出了申請(qǐng),則轉(zhuǎn)a繼續(xù)等待;否則,單片機(jī)A提出申請(qǐng),將REQ置為有效
(3)再次檢查CHKREQ,判斷單片機(jī)B是否同時(shí)提出了申請(qǐng)
(4)如果單片機(jī)B提出了申請(qǐng),則發(fā)生沖突;清除REQ并延時(shí);然后執(zhí)行(1)
(5)將數(shù)據(jù)送8位端口,設(shè)定STB有效
(6)檢查CHK,等待單片機(jī)B將數(shù)據(jù)取走
(7)檢查單片機(jī)A的數(shù)據(jù)是否全部送完,如沒(méi)有則轉(zhuǎn)執(zhí)行(5)
(8)撤銷REQ信號(hào),釋放8位端口
(9)數(shù)據(jù)發(fā)送完成,退出流程
3.2數(shù)據(jù)接收流程
單片機(jī)A的數(shù)據(jù)接收流程如下:
(1)進(jìn)入中斷服務(wù)流程
(2)從8位端口讀取數(shù)據(jù)
(3)設(shè)置ACK信號(hào)有效,表示數(shù)據(jù)已成功讀取
(4)退出中斷服務(wù)流程
4、 三種并行接口方式的特定分析
本文介紹的三種并行通信接口連接方式能夠適用于不同的要求。下面分別對(duì)
采用三種通信接口工作方式的數(shù)據(jù)通信響應(yīng)時(shí)間進(jìn)行分析。假設(shè)單片機(jī)的工作時(shí)鐘頻率為24MHz,8位端口為P0口。系統(tǒng)中每一個(gè)單片機(jī)只有一個(gè)中斷源。在單個(gè)中斷源情況下的中斷響應(yīng)時(shí)間為3~8μs。在單向并行通信接口工作方式下,數(shù)據(jù)只從單片機(jī)A向單片機(jī)B傳送,假設(shè)接收方單片機(jī)B中斷接收。個(gè)字節(jié)的傳送過(guò)程將包括數(shù)據(jù)發(fā)送端口、通知接收方、等待接收方的已接收應(yīng)答等三個(gè)部分。其程序的一般寫法為:
MOV P0,#DATA
CLR STB
JB CHK,$
如各條指令的執(zhí)行時(shí)間分別為1μs、1μs、3~8μs。那么,這種方式下,一個(gè)字節(jié)的傳送時(shí)間在10μs左右,最短可到5μs,因此數(shù)據(jù)的數(shù)傳率較高。在主從并行通信接口方式下,數(shù)據(jù)傳送包括接收和發(fā)送兩個(gè)方向,由于數(shù)據(jù)傳送均在主機(jī)控制下進(jìn)行,且數(shù)據(jù)的接收和發(fā)送兩個(gè)方向的時(shí)間大體相等。根據(jù)其數(shù)據(jù)傳送流程,主機(jī)發(fā)送數(shù)據(jù)的程序如下:
CLR DIR
CLR STB
MOV P0,#DATA
SETB ACK
JB CHK,$
由于該程序前4條指令的執(zhí)行時(shí)間均為1μs,最后一條指令的執(zhí)行時(shí)間為等待從機(jī)的響應(yīng)時(shí)間為3~8μs,這種方式下一個(gè)字節(jié)的傳送時(shí)間在12μs左右,最短可到7μs,可見(jiàn)仍有效高的數(shù)傳率。在無(wú)主從并行通信接口方式下,文中只討論了主動(dòng)向?qū)Ψ桨l(fā)送數(shù)據(jù)的方式,而沒(méi)有討論主動(dòng)從對(duì)方讀取數(shù)據(jù)的方式,這是因?yàn)橥ㄟ^(guò)簡(jiǎn)單的接口協(xié)議可以使對(duì)方主動(dòng)發(fā)送數(shù)據(jù),從而達(dá)到讀取數(shù)據(jù)的目的。根據(jù)圖3和其數(shù)據(jù)發(fā)送流程可知,在沒(méi)有8位數(shù)據(jù)端口使用沖突的情況下,其數(shù)據(jù)傳送的基本步驟與主從方式數(shù)據(jù)傳送的步驟基本相同,但需要對(duì)8位端口的使用進(jìn)行聲明確認(rèn)的撤銷,這需要執(zhí)行至少4條指令,時(shí)間約需4μs,因此,這種試上單字節(jié)數(shù)據(jù)的傳送時(shí)間在11~18μs。當(dāng)遇上8位數(shù)據(jù)端口使用有沖突時(shí),則數(shù)據(jù)傳送的時(shí)間還會(huì)受8位數(shù)據(jù)端口被占時(shí)間的影響,因而變得不確定。
結(jié)束語(yǔ):由于MCS51系列單片機(jī)已衍生出了許多規(guī)格和型號(hào)的產(chǎn)品,且使用起來(lái)方便靈活,應(yīng)用相當(dāng)廣泛,因此討論它們的一般應(yīng)用是非常有意義的。MCS51系列單片機(jī)的直接并行互連具有一定的實(shí)用價(jià)值,能簡(jiǎn)化許多應(yīng)用系統(tǒng)的硬件設(shè)計(jì)。在許多的應(yīng)用系統(tǒng)中,完全可以把MCS51系列單片機(jī)當(dāng)作普通的可編程器件來(lái)使用。本文介紹的單向并行通信接口中的接收方單片機(jī),主從并行通信接口中的從機(jī)都是這樣使用的。
|