A可編程串行接口芯片_第1頁(yè)
A可編程串行接口芯片_第2頁(yè)
A可編程串行接口芯片_第3頁(yè)
A可編程串行接口芯片_第4頁(yè)
A可編程串行接口芯片_第5頁(yè)
已閱讀5頁(yè),還剩67頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、8.2 8251A可編程串行接口芯片可編程串行接口芯片 8251A是用來(lái)作為是用來(lái)作為CPU與外設(shè)或調(diào)制解調(diào)器之與外設(shè)或調(diào)制解調(diào)器之間的接口芯片,有間的接口芯片,有28個(gè)引腳,如圖個(gè)引腳,如圖8.12所示。所示。 D7D0:三態(tài)、雙向數(shù)據(jù)總線(xiàn)。:三態(tài)、雙向數(shù)據(jù)總線(xiàn)。 RESET:芯片復(fù)位信號(hào)線(xiàn)。該信號(hào)有效時(shí),:芯片復(fù)位信號(hào)線(xiàn)。該信號(hào)有效時(shí),迫使迫使8251A處于空閑狀態(tài);在把一組新的控制處于空閑狀態(tài);在把一組新的控制字寫(xiě)入字寫(xiě)入8251A設(shè)定其功能之前,該芯片一直處設(shè)定其功能之前,該芯片一直處于空閑狀態(tài)。當(dāng)該線(xiàn)上加高電平于空閑狀態(tài)。當(dāng)該線(xiàn)上加高電平(寬度為時(shí)鐘寬度為時(shí)鐘的的6倍倍)時(shí),芯片復(fù)位

2、而處于空閑狀態(tài),等待命時(shí),芯片復(fù)位而處于空閑狀態(tài),等待命令。通常把它與系統(tǒng)的復(fù)位線(xiàn)相連,以便上電令。通常把它與系統(tǒng)的復(fù)位線(xiàn)相連,以便上電復(fù)位。復(fù)位。 CLK:工作時(shí)鐘,由工作時(shí)鐘,由外部時(shí)鐘源外部時(shí)鐘源提供。為芯片提供。為芯片內(nèi)部電路提供定時(shí),內(nèi)部電路提供定時(shí),并非發(fā)送或接收數(shù)據(jù)的時(shí)并非發(fā)送或接收數(shù)據(jù)的時(shí)鐘鐘。在同步方式下,。在同步方式下,CLK的頻率要大于接收器的頻率要大于接收器或發(fā)送器輸入時(shí)鐘或發(fā)送器輸入時(shí)鐘(RxC或或TxC)頻率的頻率的30倍。倍。在異步方式下,在異步方式下,CLK的頻率要大于接收器或發(fā)的頻率要大于接收器或發(fā)送器輸入時(shí)鐘頻率的送器輸入時(shí)鐘頻率的4.5倍。另外,倍。另外,

3、CLK的周的周期要在期要在0.4s到到1.35s范圍內(nèi)。范圍內(nèi)。 RD#:讀信號(hào)。該信號(hào)有效表示讀信號(hào)。該信號(hào)有效表示CPU正從正從8251A讀數(shù)讀數(shù)據(jù)或狀態(tài)信息。據(jù)或狀態(tài)信息。 WR#:寫(xiě)信號(hào)。該信號(hào)有效表示寫(xiě)信號(hào)。該信號(hào)有效表示CPU正把控制字或正把控制字或數(shù)據(jù)寫(xiě)入數(shù)據(jù)寫(xiě)入8251A。 CS#:片選信號(hào)。該信號(hào)有效時(shí),表示該片選信號(hào)。該信號(hào)有效時(shí),表示該8251A已被已被選中,可進(jìn)行讀寫(xiě)操作;若為高電平則數(shù)據(jù)總線(xiàn)處于選中,可進(jìn)行讀寫(xiě)操作;若為高電平則數(shù)據(jù)總線(xiàn)處于高阻狀態(tài),此時(shí)高阻狀態(tài),此時(shí)RD和和WR對(duì)器件無(wú)影響。對(duì)器件無(wú)影響。 C/D#:控制控制/數(shù)據(jù)選擇線(xiàn)。若此引腳加高電平,則數(shù)據(jù)選擇

4、線(xiàn)。若此引腳加高電平,則CPU訪(fǎng)問(wèn)訪(fǎng)問(wèn)8251A命令寄存器或狀態(tài)寄存器;若加低電命令寄存器或狀態(tài)寄存器;若加低電平,則平,則CPU訪(fǎng)問(wèn)數(shù)據(jù)寄存器??梢?jiàn),訪(fǎng)問(wèn)數(shù)據(jù)寄存器??梢?jiàn),8251A芯片內(nèi)部芯片內(nèi)部只有只有兩個(gè)端口兩個(gè)端口。 DSR # :數(shù)據(jù)通信設(shè)備準(zhǔn)備好,是輸入信號(hào),數(shù)據(jù)通信設(shè)備準(zhǔn)備好,是輸入信號(hào),低電平有效。通常用以表示低電平有效。通常用以表示MODEM已準(zhǔn)備好。已準(zhǔn)備好。CPU通過(guò)讀通過(guò)讀8251A的狀態(tài)寄存器的的狀態(tài)寄存器的D7位檢測(cè)這位檢測(cè)這個(gè)信號(hào)。個(gè)信號(hào)。 DTR # :數(shù)據(jù)終端準(zhǔn)備好,是輸出信號(hào),低電數(shù)據(jù)終端準(zhǔn)備好,是輸出信號(hào),低電平有效。它由工作命令字的平有效。它由工作命令

5、字的D1位置位置“1”變?yōu)樽優(yōu)橛行?,用以表示有效,用以表?251A準(zhǔn)備就緒。通常用于準(zhǔn)備就緒。通常用于MODEM的控制。的控制。 RTS # :請(qǐng)求發(fā)送,是輸出信號(hào),低電平有效。請(qǐng)求發(fā)送,是輸出信號(hào),低電平有效。通常用于通知通常用于通知MODEM 8251A要求發(fā)送數(shù)據(jù)。要求發(fā)送數(shù)據(jù)。用工作命令字的用工作命令字的D5位置位置“1”來(lái)使其有效。來(lái)使其有效。 CTS # :允許傳送,是輸入信號(hào),低電平有效。允許傳送,是輸入信號(hào),低電平有效。通常是通常是MODEM對(duì)對(duì)8251A的信號(hào)的響應(yīng),當(dāng)?shù)男盘?hào)的響應(yīng),當(dāng)CTS#有效有效且且工作命令字中的工作命令字中的TxE位為位為1時(shí)時(shí)8251A方可發(fā)送數(shù)據(jù)

6、。方可發(fā)送數(shù)據(jù)。 如果在發(fā)送器工作過(guò)程中,如果在發(fā)送器工作過(guò)程中,TxE位變?yōu)槲蛔優(yōu)?或或CTS #變?yōu)闊o(wú)效,則發(fā)送器關(guān)閉之前要將已經(jīng)變?yōu)闊o(wú)效,則發(fā)送器關(guān)閉之前要將已經(jīng)寫(xiě)入的所有數(shù)據(jù)發(fā)送出去后才關(guān)閉。如果在最寫(xiě)入的所有數(shù)據(jù)發(fā)送出去后才關(guān)閉。如果在最后一個(gè)字符出現(xiàn)在串行數(shù)據(jù)流之前出現(xiàn)這種狀后一個(gè)字符出現(xiàn)在串行數(shù)據(jù)流之前出現(xiàn)這種狀況,則最后一個(gè)字符將在況,則最后一個(gè)字符將在CTS #變?yōu)橛行Ш妥優(yōu)橛行Ш蚑xE變?yōu)樽優(yōu)?時(shí)再發(fā)送一次。時(shí)再發(fā)送一次。 TxRDY(Transmitter Ready):發(fā)送器準(zhǔn)備好,輸出,發(fā)送器準(zhǔn)備好,輸出,高電平有效。當(dāng)它有效時(shí),表示發(fā)送器已準(zhǔn)備好接收高電平有效。當(dāng)它

7、有效時(shí),表示發(fā)送器已準(zhǔn)備好接收CPU送來(lái)的數(shù)據(jù)字符,通知送來(lái)的數(shù)據(jù)字符,通知CPU可以向可以向8251A發(fā)送數(shù)發(fā)送數(shù)據(jù)。據(jù)。CPU向向8251A寫(xiě)入了一個(gè)字符以后,寫(xiě)入了一個(gè)字符以后,TxRDY自自動(dòng)復(fù)位。在用查詢(xún)方式時(shí),此信號(hào)作為一個(gè)狀態(tài)位,動(dòng)復(fù)位。在用查詢(xún)方式時(shí),此信號(hào)作為一個(gè)狀態(tài)位,CPU可從狀態(tài)寄存器的可從狀態(tài)寄存器的D0位檢測(cè)這個(gè)信號(hào);在用中位檢測(cè)這個(gè)信號(hào);在用中斷方式時(shí),此信號(hào)作為中斷請(qǐng)求信號(hào)。斷方式時(shí),此信號(hào)作為中斷請(qǐng)求信號(hào)。 TxEMPTY(Transmitter Empty):發(fā)送器空,輸出,發(fā)送器空,輸出,高電平有效。當(dāng)它有效時(shí),指示發(fā)送器中的數(shù)據(jù)已發(fā)高電平有效。當(dāng)它有效時(shí)

8、,指示發(fā)送器中的數(shù)據(jù)已發(fā)送出去,已經(jīng)沒(méi)有要發(fā)送的字符了。當(dāng)送出去,已經(jīng)沒(méi)有要發(fā)送的字符了。當(dāng)8251A從從CPU接收待發(fā)的字符后,自動(dòng)復(fù)位。接收待發(fā)的字符后,自動(dòng)復(fù)位。TxEMPTY既然表示既然表示發(fā)送已經(jīng)結(jié)束,這樣在發(fā)送已經(jīng)結(jié)束,這樣在半雙工半雙工方式中,方式中,CPU就從它就從它知道何時(shí)切換數(shù)據(jù)的傳輸方向,由發(fā)送轉(zhuǎn)為接收。此知道何時(shí)切換數(shù)據(jù)的傳輸方向,由發(fā)送轉(zhuǎn)為接收。此信號(hào)可從狀態(tài)寄存器的信號(hào)可從狀態(tài)寄存器的D2位檢測(cè)到。位檢測(cè)到。 在同步方式下,該引腳為高電平表示字符還未在同步方式下,該引腳為高電平表示字符還未寫(xiě)入寫(xiě)入8251A,8251A正在發(fā)送正在發(fā)送填充字符填充字符。當(dāng)同步字符正在

9、移出時(shí),當(dāng)同步字符正在移出時(shí),TxEMPTY是不會(huì)變是不會(huì)變?yōu)榈碗娖降?。為低電平的?TxC:發(fā)送器時(shí)鐘,輸入,由發(fā)送器時(shí)鐘,輸入,由外部外部(波特率時(shí)波特率時(shí)鐘發(fā)生器鐘發(fā)生器)提供。由它控制提供。由它控制8251A發(fā)送數(shù)據(jù)的速發(fā)送數(shù)據(jù)的速率率。在異步方式下,。在異步方式下,TxC的頻率可以等于波特的頻率可以等于波特率,也可以是波特率的率,也可以是波特率的16倍或倍或64倍。在同步方倍。在同步方式下,式下, TxC的頻率與數(shù)據(jù)速率相同。的頻率與數(shù)據(jù)速率相同。 TxC的的下降沿把串行數(shù)據(jù)移出下降沿把串行數(shù)據(jù)移出8251A。 TxD:發(fā)送數(shù)據(jù)線(xiàn),輸出,串行數(shù)據(jù)從該引腳發(fā)送數(shù)據(jù)線(xiàn),輸出,串行數(shù)據(jù)從該

10、引腳發(fā)送出去。發(fā)送出去。 RxRDY(Receiver Ready):接收器準(zhǔn)備好,輸接收器準(zhǔn)備好,輸出,高電平有效。當(dāng)它有效時(shí),表示出,高電平有效。當(dāng)它有效時(shí),表示8251A已已經(jīng)從它的串行輸入端接受了一個(gè)字符,通知經(jīng)從它的串行輸入端接受了一個(gè)字符,通知CPU讀取數(shù)據(jù)。當(dāng)讀取數(shù)據(jù)。當(dāng)CPU從從8251A讀了一個(gè)字符讀了一個(gè)字符后,此信號(hào)自動(dòng)復(fù)位。后,此信號(hào)自動(dòng)復(fù)位。 在查詢(xún)方式時(shí),此信號(hào)可作為在查詢(xún)方式時(shí),此信號(hào)可作為狀態(tài)位狀態(tài)位,CPU通通過(guò)讀狀態(tài)寄存器的過(guò)讀狀態(tài)寄存器的D0位檢測(cè)這個(gè)信號(hào)。在中位檢測(cè)這個(gè)信號(hào)。在中斷方式時(shí)可作為中斷請(qǐng)求信號(hào)。斷方式時(shí)可作為中斷請(qǐng)求信號(hào)。RxRDY的電的電平

11、狀態(tài)還受平狀態(tài)還受工作命令字的工作命令字的RxE位位控制,只有當(dāng)控制,只有當(dāng)RxE=1時(shí),接收器接收到字符后才能將時(shí),接收器接收到字符后才能將RxRDY變高,否則即使接收到字符變高,否則即使接收到字符RxRDY也也不變高。不變高。 RxC:接收器時(shí)鐘,輸入,由接收器時(shí)鐘,輸入,由外部外部(波特率時(shí)波特率時(shí)鐘發(fā)生器鐘發(fā)生器)提供,由它控制提供,由它控制8251A接收數(shù)據(jù)的速接收數(shù)據(jù)的速率。其頻率的選擇往往和率。其頻率的選擇往往和TxC相同。在異步方相同。在異步方式下,式下, RxC的頻率可以等于波特率,也可以的頻率可以等于波特率,也可以是波特率的是波特率的16倍或倍或64倍。在同步方式下,倍。在

12、同步方式下, RxC的頻率與數(shù)據(jù)速率相同。的頻率與數(shù)據(jù)速率相同。 實(shí)際應(yīng)用中,把實(shí)際應(yīng)用中,把TxC和和RxC連接在一起,使用連接在一起,使用同一個(gè)時(shí)鐘源同一個(gè)時(shí)鐘源波特率時(shí)鐘發(fā)生器。波特率時(shí)鐘發(fā)生器。 RxD:接收數(shù)據(jù)線(xiàn),輸入,接收器從該引腳接接收數(shù)據(jù)線(xiàn),輸入,接收器從該引腳接收串行數(shù)據(jù)。收串行數(shù)據(jù)。 SYNDET(Synchronous Detection)/BD(Break Detection):同步檢測(cè)同步檢測(cè)/間斷檢測(cè),是雙功能引腳。間斷檢測(cè),是雙功能引腳。 在在同步同步方式時(shí),作同步字符檢出信號(hào)方式時(shí),作同步字符檢出信號(hào)SYNDET,為為雙雙向向線(xiàn)。線(xiàn)。SYNDET是作為輸入還是輸

13、出,取決于初始化是作為輸入還是輸出,取決于初始化程序指定程序指定8251A是工作于內(nèi)同步或外同步。當(dāng)是工作于內(nèi)同步或外同步。當(dāng)8251A工作于工作于內(nèi)同步內(nèi)同步方式時(shí),方式時(shí),SYNDET是是輸出輸出,高電平有效,高電平有效,表示接收表示接收/發(fā)送器已經(jīng)同步;當(dāng)發(fā)送器已經(jīng)同步;當(dāng)8251A工作于工作于外同步外同步方方式時(shí),式時(shí),SYNDET是是輸入輸入,它的一個(gè)正跳變信號(hào)將啟動(dòng),它的一個(gè)正跳變信號(hào)將啟動(dòng)8251A在下個(gè)的下降沿開(kāi)始裝配字符。在下個(gè)的下降沿開(kāi)始裝配字符。 在在異步異步方式時(shí),作間斷檢出信號(hào)方式時(shí),作間斷檢出信號(hào)BD,輸出輸出,高電平,高電平有效。只要接受器在兩個(gè)連續(xù)的停止位串中間

14、有效。只要接受器在兩個(gè)連續(xù)的停止位串中間(包括包括起始位、數(shù)據(jù)位、奇偶位起始位、數(shù)據(jù)位、奇偶位)保持低電平,那么該引腳保持低電平,那么該引腳就輸出高電平。在就輸出高電平。在8251A被復(fù)位或被復(fù)位或RxD恢復(fù)為恢復(fù)為1時(shí)該時(shí)該引腳變低。引腳變低。 8251A的結(jié)構(gòu)分成的結(jié)構(gòu)分成5個(gè)主要部分:接收器、發(fā)個(gè)主要部分:接收器、發(fā)送器、調(diào)制控制、讀送器、調(diào)制控制、讀/寫(xiě)控制以及系統(tǒng)數(shù)據(jù)總寫(xiě)控制以及系統(tǒng)數(shù)據(jù)總線(xiàn)緩沖器。線(xiàn)緩沖器。8251A的內(nèi)部由內(nèi)部數(shù)據(jù)總線(xiàn)實(shí)現(xiàn)的內(nèi)部由內(nèi)部數(shù)據(jù)總線(xiàn)實(shí)現(xiàn)相互之間的通信。相互之間的通信。8251A的內(nèi)部結(jié)構(gòu)如圖的內(nèi)部結(jié)構(gòu)如圖8.13所示。所示。 1.數(shù)據(jù)總線(xiàn)緩沖器數(shù)據(jù)總線(xiàn)緩

15、沖器 數(shù)據(jù)總線(xiàn)緩沖器是三態(tài)、雙向、數(shù)據(jù)總線(xiàn)緩沖器是三態(tài)、雙向、8位緩沖器,與系統(tǒng)位緩沖器,與系統(tǒng)數(shù)據(jù)總線(xiàn)連接起來(lái)。包含狀態(tài)緩沖器、接收數(shù)據(jù)緩沖數(shù)據(jù)總線(xiàn)連接起來(lái)。包含狀態(tài)緩沖器、接收數(shù)據(jù)緩沖器、發(fā)送數(shù)據(jù)器、發(fā)送數(shù)據(jù)/命令緩沖器。命令緩沖器。 狀態(tài)緩沖器狀態(tài)緩沖器用來(lái)存放用來(lái)存放8251A的內(nèi)部工作狀態(tài),以供的內(nèi)部工作狀態(tài),以供CPU讀出查詢(xún);讀出查詢(xún); 接收數(shù)據(jù)緩沖器接收數(shù)據(jù)緩沖器用來(lái)存放接收器已經(jīng)裝配好的字符,用來(lái)存放接收器已經(jīng)裝配好的字符,準(zhǔn)備讓準(zhǔn)備讓CPU 讀出;讀出; 發(fā)送數(shù)據(jù)發(fā)送數(shù)據(jù)/命令緩沖器命令緩沖器用來(lái)存放用來(lái)存放CPU寫(xiě)入寫(xiě)入8251A的數(shù)據(jù)的數(shù)據(jù)或命令?;蛎?。CPU向向82

16、51A寫(xiě)入命令字寫(xiě)入命令字是為了控制是為了控制8251A的內(nèi)部操作,使其建立所需要的工作方式。命令一旦的內(nèi)部操作,使其建立所需要的工作方式。命令一旦寫(xiě)入,寫(xiě)入,8251A立即就執(zhí)行,不需要占用發(fā)送數(shù)據(jù)立即就執(zhí)行,不需要占用發(fā)送數(shù)據(jù)/命令命令緩沖器多少時(shí)間。緩沖器多少時(shí)間。CPU向向8251A寫(xiě)入輸出數(shù)據(jù)寫(xiě)入輸出數(shù)據(jù),由于,由于串并轉(zhuǎn)換才能輸出所以需要較長(zhǎng)的時(shí)間。串并轉(zhuǎn)換才能輸出所以需要較長(zhǎng)的時(shí)間。 因此,一旦給發(fā)送數(shù)據(jù)因此,一旦給發(fā)送數(shù)據(jù)/命令緩沖寫(xiě)入發(fā)送數(shù)命令緩沖寫(xiě)入發(fā)送數(shù)據(jù),發(fā)送控制器的據(jù),發(fā)送控制器的TxRDY信號(hào)就變低,此時(shí)信號(hào)就變低,此時(shí)CPU不能向不能向8251A寫(xiě)入新的數(shù)據(jù)或者命

17、令,只寫(xiě)入新的數(shù)據(jù)或者命令,只有當(dāng)發(fā)送器完成數(shù)據(jù)發(fā)送,有當(dāng)發(fā)送器完成數(shù)據(jù)發(fā)送,TxRDY=1時(shí),才時(shí),才能寫(xiě)入新的數(shù)據(jù)或命令能寫(xiě)入新的數(shù)據(jù)或命令,否則就會(huì)出錯(cuò)。,否則就會(huì)出錯(cuò)。 由此,讓由此,讓CPU向向8251A發(fā)送數(shù)據(jù)或命令時(shí),一發(fā)送數(shù)據(jù)或命令時(shí),一般需要先般需要先測(cè)試測(cè)試TxRDY的電平狀態(tài),這的電平狀態(tài),這TxRDY為高電平時(shí)才將數(shù)據(jù)或命令寫(xiě)入為高電平時(shí)才將數(shù)據(jù)或命令寫(xiě)入8251A。2.接收器接收器 接收器的功能是在接收時(shí)鐘的作用下接收接收器的功能是在接收時(shí)鐘的作用下接收RxD引腳上的串行數(shù)據(jù)并按指定的方式把它轉(zhuǎn)換為引腳上的串行數(shù)據(jù)并按指定的方式把它轉(zhuǎn)換為并行數(shù)據(jù)。并行數(shù)據(jù)。 在在異步

18、異步方式下,當(dāng)接收器成功的接收到方式下,當(dāng)接收器成功的接收到起始位起始位后,后,8251A便接收數(shù)據(jù)位、校驗(yàn)位、停止位。便接收數(shù)據(jù)位、校驗(yàn)位、停止位。 在在內(nèi)同步內(nèi)同步方式時(shí),方式時(shí),8251A首先搜索首先搜索同步字符同步字符,在在RxD是以一次一位的方式移動(dòng)數(shù)據(jù),在接收是以一次一位的方式移動(dòng)數(shù)據(jù),在接收到每一位時(shí)都將現(xiàn)在接收的到每一位時(shí)都將現(xiàn)在接收的8位與同步字符寄位與同步字符寄存器的內(nèi)容進(jìn)行比較,若相等就搜索結(jié)束,使存器的內(nèi)容進(jìn)行比較,若相等就搜索結(jié)束,使SYNDET=1表示已經(jīng)同步,然后開(kāi)始接收數(shù)據(jù)。表示已經(jīng)同步,然后開(kāi)始接收數(shù)據(jù)。 在在外同步外同步方式時(shí),通過(guò)方式時(shí),通過(guò)SYNDET引

19、腳檢測(cè)到外引腳檢測(cè)到外部電路提供的同步信號(hào)之后,開(kāi)始接收數(shù)據(jù)。部電路提供的同步信號(hào)之后,開(kāi)始接收數(shù)據(jù)。 無(wú)論在什么方式下,接收的同時(shí)進(jìn)行無(wú)論在什么方式下,接收的同時(shí)進(jìn)行校驗(yàn)校驗(yàn),若,若發(fā)現(xiàn)錯(cuò)誤,則在狀態(tài)寄存器中保存,以便發(fā)現(xiàn)錯(cuò)誤,則在狀態(tài)寄存器中保存,以便CPU處理;當(dāng)校驗(yàn)無(wú)錯(cuò)時(shí),才將并行數(shù)據(jù)存放在數(shù)處理;當(dāng)校驗(yàn)無(wú)錯(cuò)時(shí),才將并行數(shù)據(jù)存放在數(shù)據(jù)總線(xiàn)緩沖器的接收數(shù)據(jù)緩沖器中,并發(fā)出據(jù)總線(xiàn)緩沖器的接收數(shù)據(jù)緩沖器中,并發(fā)出接接收器準(zhǔn)備好信號(hào)收器準(zhǔn)備好信號(hào)(RxRDY=1),通知通知CPU讀數(shù)據(jù)。讀數(shù)據(jù)。3.發(fā)送器發(fā)送器 發(fā)送器的功能是,首先把待發(fā)送的并行數(shù)據(jù)轉(zhuǎn)換成所發(fā)送器的功能是,首先把待發(fā)送的并行數(shù)

20、據(jù)轉(zhuǎn)換成所要求的幀格式并加上校驗(yàn)位,然后在發(fā)送時(shí)鐘的作用要求的幀格式并加上校驗(yàn)位,然后在發(fā)送時(shí)鐘的作用下,在下,在TxD引腳上一位一位地串行發(fā)送出去。引腳上一位一位地串行發(fā)送出去。 在在異步異步方式時(shí),發(fā)送器總是要加上起始位,并根據(jù)命方式時(shí),發(fā)送器總是要加上起始位,并根據(jù)命令字的設(shè)定加上奇偶校驗(yàn)位和停止位;令字的設(shè)定加上奇偶校驗(yàn)位和停止位; 在在同步同步方式下,發(fā)送器最先發(fā)送的是同步字符,而在方式下,發(fā)送器最先發(fā)送的是同步字符,而在隨后發(fā)送的數(shù)據(jù)中除了奇偶校驗(yàn)位外不再插入別的位,隨后發(fā)送的數(shù)據(jù)中除了奇偶校驗(yàn)位外不再插入別的位,如果在發(fā)送過(guò)程中如果在發(fā)送過(guò)程中CPU未及時(shí)提供發(fā)送數(shù)據(jù),發(fā)送未及時(shí)

21、提供發(fā)送數(shù)據(jù),發(fā)送器就自動(dòng)發(fā)送同步字符。器就自動(dòng)發(fā)送同步字符。 不管哪種方式,不管哪種方式,發(fā)送完一幀數(shù)據(jù)后,發(fā)送器準(zhǔn)備好信發(fā)送完一幀數(shù)據(jù)后,發(fā)送器準(zhǔn)備好信號(hào)置位號(hào)置位(TxRDY=1),通知通知CPU發(fā)送下一個(gè)數(shù)據(jù)。發(fā)送下一個(gè)數(shù)據(jù)。4.讀讀/寫(xiě)控制寫(xiě)控制 讀讀/寫(xiě)控制邏輯對(duì)寫(xiě)控制邏輯對(duì)CPU輸出的控制信號(hào)進(jìn)行譯輸出的控制信號(hào)進(jìn)行譯碼以實(shí)現(xiàn)表碼以實(shí)現(xiàn)表8.5所示的讀所示的讀/寫(xiě)功能。寫(xiě)功能。C/D功功 能能0000l0l01001l1l00CPU從從 8251A讀數(shù)據(jù)讀數(shù)據(jù)CPU 從從8251A讀狀態(tài)讀狀態(tài)CPU寫(xiě)數(shù)據(jù)到寫(xiě)數(shù)據(jù)到8251ACPU寫(xiě)命令到寫(xiě)命令到 8251AUSART總線(xiàn)浮空總線(xiàn)

22、浮空(無(wú)操作無(wú)操作)CSRD#WR#5. .MODEM控制控制 MODEM控制部分有四條信號(hào)線(xiàn),一般用于實(shí)控制部分有四條信號(hào)線(xiàn),一般用于實(shí)現(xiàn)對(duì)現(xiàn)對(duì)MODEM的控制聯(lián)絡(luò),有時(shí)也可以用來(lái)作的控制聯(lián)絡(luò),有時(shí)也可以用來(lái)作與外設(shè)聯(lián)絡(luò)的標(biāo)準(zhǔn)信號(hào)使用。與外設(shè)聯(lián)絡(luò)的標(biāo)準(zhǔn)信號(hào)使用。 1.方式命令字方式命令字 方式命令字的作用是指定通信方式及該方式下方式命令字的作用是指定通信方式及該方式下的數(shù)據(jù)格式,即指定的數(shù)據(jù)格式,即指定8251A為異步方式還是同為異步方式還是同步方式,并按照其通信方式約定幀數(shù)據(jù)格式。步方式,并按照其通信方式約定幀數(shù)據(jù)格式。它必須跟在一個(gè)復(fù)位操作它必須跟在一個(gè)復(fù)位操作(內(nèi)部或外部的內(nèi)部或外部的

23、)之后。之后。 方式命令字長(zhǎng)為方式命令字長(zhǎng)為8位,可以分為位,可以分為4組,每組組,每組2位,位,其格式是:其格式是: 0=內(nèi)同步內(nèi)同步l=外同步外同步0=雙同步雙同步1=單同步單同步00=不使用不使用01=1位位10=1.5位位11=2位位0=無(wú)校驗(yàn)無(wú)校驗(yàn)01=奇校驗(yàn)奇校驗(yàn)11=偶校驗(yàn)偶校驗(yàn)00=5位位01=6位位10=7位位11=8位位00=同步同步01=異步異步(1)10=異步異步(16)11=異步異步(64)D7D6D5D4D3D2D1D0SlS0EPPENL1L0BlB0同步控制同步控制異步時(shí)的停止異步時(shí)的停止位數(shù)位數(shù)校驗(yàn)方式校驗(yàn)方式數(shù)據(jù)位數(shù)數(shù)據(jù)位數(shù)同步方式、異步方式同步方式、異步方

24、式的波特率因子的波特率因子 D1D0(B1B0):這兩位確定這兩位確定8251A是工作于同步方式是工作于同步方式還是異步方式。當(dāng)還是異步方式。當(dāng)D1D0=00時(shí),為同步方式;當(dāng)時(shí),為同步方式;當(dāng)D1D0 00時(shí),為異步方式,并且由時(shí),為異步方式,并且由D1D0的的3種組合種組合用以選擇異步方式的波特率因子用以選擇異步方式的波特率因子(1、16或或64)。 D3D2(L1L0):用以指定用以指定1個(gè)字符數(shù)據(jù)包含的數(shù)據(jù)位位個(gè)字符數(shù)據(jù)包含的數(shù)據(jù)位位數(shù)。數(shù)。 D5D4(EP、PEN):用以指定要不要校驗(yàn)以及采用奇用以指定要不要校驗(yàn)以及采用奇校驗(yàn)還是偶校驗(yàn)。校驗(yàn)還是偶校驗(yàn)。 D7D6(S1S0):在同步

25、和異步方式下的意義是不同的。在同步和異步方式下的意義是不同的。異步方式時(shí)用以指定停止位的長(zhǎng)度;同步方式時(shí)用以異步方式時(shí)用以指定停止位的長(zhǎng)度;同步方式時(shí)用以指定是內(nèi)同步還是外同步,以及同步字符的個(gè)數(shù)是一指定是內(nèi)同步還是外同步,以及同步字符的個(gè)數(shù)是一個(gè)或兩個(gè)。個(gè)或兩個(gè)。 例如,在某異步通信中,數(shù)據(jù)格式采用例如,在某異步通信中,數(shù)據(jù)格式采用8位數(shù)位數(shù)據(jù)位,據(jù)位,1位起始位,位起始位,2位停止位,奇校驗(yàn),波特位停止位,奇校驗(yàn),波特率因子是率因子是16,則其方式命令字為,則其方式命令字為11 01 11 10B = 0DEH。若將方式命令寫(xiě)入命令口,則程序段。若將方式命令寫(xiě)入命令口,則程序段為:為: M

26、OV DX,8251A-C ;8251A命令口地址命令口地址 MOV AL,0DEH ;異步方式命令字;異步方式命令字 OUT DX,AL 某同步通信中,若幀數(shù)據(jù)格式為:字符長(zhǎng)度某同步通信中,若幀數(shù)據(jù)格式為:字符長(zhǎng)度8位,雙同步字符,內(nèi)同步方式,奇校驗(yàn),則方位,雙同步字符,內(nèi)同步方式,奇校驗(yàn),則方式命令字是式命令字是00011100B = 1CH。若將方式命令。若將方式命令寫(xiě)入命令口,則程序段為:寫(xiě)入命令口,則程序段為: MOV DX,8251A-C ;8251A命令口地址命令口地址 MOV AL,1CH ;同步方式命令字;同步方式命令字 OUT DX,AL 某同步通信中,若幀數(shù)據(jù)格式為:字符

27、長(zhǎng)度某同步通信中,若幀數(shù)據(jù)格式為:字符長(zhǎng)度8位,外同步方式,偶校驗(yàn),則方式命令字是位,外同步方式,偶校驗(yàn),則方式命令字是01111100B = 7CH。若將方式命令寫(xiě)入命令口,。若將方式命令寫(xiě)入命令口,則程序段為:則程序段為: MOV DX,8251A-C ;8251A命令口地址命令口地址 MOV AL,7CH ;同步方式命令字;同步方式命令字 OUT DX,AL2.工作命令字工作命令字 工作命令字的作用是指定工作命令字的作用是指定8251A進(jìn)行某種操作進(jìn)行某種操作(如發(fā)送、接收、內(nèi)部復(fù)位和檢測(cè)同步字符等如發(fā)送、接收、內(nèi)部復(fù)位和檢測(cè)同步字符等)或處于某種工作狀態(tài),以便接收或發(fā)送數(shù)據(jù)?;蛱幱谀撤N

28、工作狀態(tài),以便接收或發(fā)送數(shù)據(jù)。 在異步方式和外同步方式時(shí),它必須跟在方式在異步方式和外同步方式時(shí),它必須跟在方式命令字之后;在內(nèi)同步方式時(shí),它必須跟在同命令字之后;在內(nèi)同步方式時(shí),它必須跟在同步字符之后。步字符之后。 工作命令字長(zhǎng)為工作命令字長(zhǎng)為8位,其格式為:位,其格式為: 進(jìn)入搜進(jìn)入搜索方式索方式內(nèi)內(nèi) 部部復(fù)復(fù) 位位發(fā)發(fā) 送送請(qǐng)請(qǐng) 求求錯(cuò)誤標(biāo)錯(cuò)誤標(biāo)志復(fù)位志復(fù)位發(fā)終止發(fā)終止字符字符接接 收收允允 許許數(shù)據(jù)終數(shù)據(jù)終端準(zhǔn)備端準(zhǔn)備好好發(fā)發(fā) 送送允允 許許D7D6D5D4D3D2D1D0EHIRRTSERSBRKRxEDTRTxE說(shuō)明:說(shuō)明: D0是允許發(fā)送是允許發(fā)送TxEN(Transmit En

29、able) 。D0=1,允允許發(fā)送。許發(fā)送。D0=0,禁止發(fā)送。可作為發(fā)送中斷屏蔽位。禁止發(fā)送??勺鳛榘l(fā)送中斷屏蔽位。 D1是數(shù)據(jù)終端準(zhǔn)備就緒是數(shù)據(jù)終端準(zhǔn)備就緒DTR。D1=1時(shí),強(qiáng)置有效,時(shí),強(qiáng)置有效,表示終端設(shè)備已準(zhǔn)備好。表示終端設(shè)備已準(zhǔn)備好。D1=0時(shí),強(qiáng)置無(wú)效。時(shí),強(qiáng)置無(wú)效。 D2是允許接收是允許接收RxE(Receive Enable)。D2=1,允許接允許接收。收。D2=0,禁止接收。可用作接收中斷屏蔽位。禁止接收。可用作接收中斷屏蔽位。 D3是發(fā)中止字符是發(fā)中止字符SBRK(Send Break Character)。D3=1時(shí),強(qiáng)迫時(shí),強(qiáng)迫TxD為低電平,輸出連續(xù)的空號(hào)。為低電

30、平,輸出連續(xù)的空號(hào)。D3=0時(shí),正常操作。時(shí),正常操作。 D4是錯(cuò)誤標(biāo)志復(fù)位是錯(cuò)誤標(biāo)志復(fù)位ER(Error Reset) 。D4=1時(shí),使?fàn)顣r(shí),使?fàn)顟B(tài)字中的錯(cuò)誤標(biāo)志位態(tài)字中的錯(cuò)誤標(biāo)志位(PE/OE/FE)復(fù)位。復(fù)位。D4=0時(shí),錯(cuò)時(shí),錯(cuò)誤標(biāo)志位不復(fù)位。誤標(biāo)志位不復(fù)位。 D5是是請(qǐng)求發(fā)送請(qǐng)求發(fā)送RTS(Request To Send)。D5=1時(shí),強(qiáng)時(shí),強(qiáng)迫為低電平,置請(qǐng)求發(fā)送有效。迫為低電平,置請(qǐng)求發(fā)送有效。D5=0時(shí),置無(wú)效。時(shí),置無(wú)效。 D6是內(nèi)部復(fù)位是內(nèi)部復(fù)位m(Internal Reset)。D6=1時(shí),進(jìn)行內(nèi)部時(shí),進(jìn)行內(nèi)部復(fù)位,使復(fù)位,使8251A處于等待方式命令。發(fā)方式命令之前,處

31、于等待方式命令。發(fā)方式命令之前,一定要先進(jìn)行內(nèi)部復(fù)位,即一定要先進(jìn)行內(nèi)部復(fù)位,即復(fù)位命令之后一定是跟方復(fù)位命令之后一定是跟方式命令字式命令字。D6=0時(shí),不進(jìn)行內(nèi)部復(fù)位。時(shí),不進(jìn)行內(nèi)部復(fù)位。 D7是進(jìn)入搜索方式是進(jìn)入搜索方式EH(Enter Hunt Mode)。D7=1時(shí),時(shí),啟動(dòng)搜索同步字符。啟動(dòng)搜索同步字符。D7=0時(shí),不搜索同步字符。時(shí),不搜索同步字符。 其中有些關(guān)鍵位其中有些關(guān)鍵位(D6,D4,D2和和D0)是經(jīng)常要使用的。是經(jīng)常要使用的。 例如,若要使例如,若要使8251A內(nèi)部復(fù)位,則程序段為:內(nèi)部復(fù)位,則程序段為: MOV DX,8251A-C ;8251A命令口地址命令口地址

32、MOV AL,01000000B ;置置D6=1,使內(nèi)部使內(nèi)部復(fù)位復(fù)位 OUT DX,AL 注意:只要是注意:只要是包含包含D6=1的任何代碼作為命令的任何代碼作為命令字都能實(shí)現(xiàn)內(nèi)部復(fù)位。字都能實(shí)現(xiàn)內(nèi)部復(fù)位。 某異步通信時(shí),允許接收,同時(shí)允許發(fā)送,則某異步通信時(shí),允許接收,同時(shí)允許發(fā)送,則程序段為:程序段為: MOV DX,8251A-C ;8251A命令口地址命令口地址 MOV AL,00000101B ;置;置D2=l,D0=l,允許接收和發(fā)送允許接收和發(fā)送 OUT DX,AL 注意:在該段程序前應(yīng)先寫(xiě)過(guò)復(fù)位命令和方式注意:在該段程序前應(yīng)先寫(xiě)過(guò)復(fù)位命令和方式命令。命令。 3.狀態(tài)字狀態(tài)字

33、狀態(tài)字的作用是報(bào)告狀態(tài)字的作用是報(bào)告8251A當(dāng)前狀態(tài)。狀態(tài)字當(dāng)前狀態(tài)。狀態(tài)字是是8251A在執(zhí)行命令過(guò)程中自動(dòng)產(chǎn)生的,并存在執(zhí)行命令過(guò)程中自動(dòng)產(chǎn)生的,并存放在狀態(tài)寄存器中,狀態(tài)寄存器的某狀態(tài)位置放在狀態(tài)寄存器中,狀態(tài)寄存器的某狀態(tài)位置1,表示有效。,表示有效。 狀態(tài)字長(zhǎng)為狀態(tài)字長(zhǎng)為8位,其格式為:位,其格式為: 數(shù)據(jù)設(shè)數(shù)據(jù)設(shè)備就緒備就緒同同 步步檢檢 出出格式錯(cuò)格式錯(cuò)溢出錯(cuò)溢出錯(cuò)奇偶錯(cuò)奇偶錯(cuò)發(fā)發(fā) 送送緩沖器空緩沖器空接接 收收準(zhǔn)備好準(zhǔn)備好發(fā)發(fā) 送送準(zhǔn)備好準(zhǔn)備好D7D6D5D4D3D2D1D0DSRSYNDETFEOEPETxEMPTYRxRDYTxRDY說(shuō)明:說(shuō)明: D0是發(fā)送準(zhǔn)備好是發(fā)送準(zhǔn)

34、備好TxRDY。D0=1時(shí),準(zhǔn)備好;時(shí),準(zhǔn)備好;D0=0時(shí),未準(zhǔn)備好。時(shí),未準(zhǔn)備好。 D1是接收準(zhǔn)備好是接收準(zhǔn)備好RxRDY。D1=1時(shí),準(zhǔn)備好;時(shí),準(zhǔn)備好;D1=0時(shí),未準(zhǔn)備好。時(shí),未準(zhǔn)備好。 D2是發(fā)送緩沖器空是發(fā)送緩沖器空TxEMPTY。D2=1時(shí),發(fā)送緩沖時(shí),發(fā)送緩沖器空;器空;D2=0時(shí),發(fā)送緩沖器不空。時(shí),發(fā)送緩沖器不空。 D3是奇偶錯(cuò)是奇偶錯(cuò)PE(Parity Error)。當(dāng)接收器檢測(cè)出奇偶當(dāng)接收器檢測(cè)出奇偶錯(cuò)時(shí),錯(cuò)時(shí),PE位置位置“1”。PE有效并不禁止有效并不禁止8251A工作。工作。 D4是溢出錯(cuò)是溢出錯(cuò)OE(Overrun Error)。當(dāng)前一個(gè)字符尚未當(dāng)前一個(gè)字符尚未

35、被被CPU取走,后一個(gè)字符又到來(lái),則取走,后一個(gè)字符又到來(lái),則OE置置“1”。OE有效并不禁止有效并不禁止8251A的操作,但是被溢出的字符的操作,但是被溢出的字符丟掉了。丟掉了。 D5是幀出錯(cuò)是幀出錯(cuò)FE(Framing Error)。當(dāng)接收器在一字符當(dāng)接收器在一字符的后面沒(méi)有檢測(cè)到規(guī)定的停止位,則的后面沒(méi)有檢測(cè)到規(guī)定的停止位,則FE置置“1”。只只用于異步方式。用于異步方式。 D6是同步檢出是同步檢出SYNDET。在在SYNDET引腳上檢測(cè)到引腳上檢測(cè)到同步信號(hào)或從內(nèi)部檢出了規(guī)定的同步字符時(shí)置位。同步信號(hào)或從內(nèi)部檢出了規(guī)定的同步字符時(shí)置位。 D7是數(shù)據(jù)設(shè)備就緒是數(shù)據(jù)設(shè)備就緒DSR。在在DS

36、R#有效時(shí)被置位。有效時(shí)被置位。 D3、D4、D5這這3個(gè)錯(cuò)誤狀態(tài)位,均可由工作命令字個(gè)錯(cuò)誤狀態(tài)位,均可由工作命令字的錯(cuò)誤標(biāo)志的錯(cuò)誤標(biāo)志ER位復(fù)位。位復(fù)位。 其中有些狀態(tài)位其中有些狀態(tài)位(D0、D1、D3、D4、D5)是經(jīng)常使用是經(jīng)常使用的關(guān)鍵位。的關(guān)鍵位。 例如,某串行通信時(shí),在例如,某串行通信時(shí),在發(fā)送發(fā)送程序中,需查狀程序中,需查狀態(tài)字的態(tài)字的D0位是否置位是否置1,即查,即查T(mén)xRDY=1否?程序否?程序段為:段為: LP: MOV DX,8251A-C ;讀讀8251A狀態(tài)字狀態(tài)字 IN AL,DX AND AL,01H ;查發(fā)送器是否就緒查發(fā)送器是否就緒 JZ LP ;未就緒,則繼

37、續(xù)查未就緒,則繼續(xù)查 某串行通信時(shí),在某串行通信時(shí),在接收接收程序中,需查狀態(tài)字的程序中,需查狀態(tài)字的D1位是否置位是否置1,即查,即查RxRDY=1否?程序段為:否?程序段為: LP: MOV DX,8251A-C ;讀讀8251A狀態(tài)字狀態(tài)字 IN AL,DX AND AL,02H ;查接收器是否就緒查接收器是否就緒 JZ LP ;未就緒,則繼續(xù)查未就緒,則繼續(xù)查 若要在接收過(guò)程中檢查若要在接收過(guò)程中檢查出錯(cuò)出錯(cuò)信息,則可用下列信息,則可用下列程序段:程序段: MOV DX,8251A-C ;讀讀8251A狀態(tài)字狀態(tài)字 IN AL,DX TEST AL,00111000B ;檢查檢查D5

38、、D4 、D3三位三位(FE、OE、PE) JNZ ERROR ;若其中有一位為若其中有一位為1,則出錯(cuò),并轉(zhuǎn)入錯(cuò)誤處理程序則出錯(cuò),并轉(zhuǎn)入錯(cuò)誤處理程序 1.8251A初始化編程初始化編程 8251A的方式命令字、工作命令字和狀態(tài)字之的方式命令字、工作命令字和狀態(tài)字之間的關(guān)系是:間的關(guān)系是:方式命令字方式命令字只是約定了雙方通信只是約定了雙方通信的方式的方式(同步同步/異步異步)及其數(shù)據(jù)格式及其數(shù)據(jù)格式(數(shù)據(jù)位和停數(shù)據(jù)位和停止位長(zhǎng)度,校驗(yàn)特性,同步字符特性等止位長(zhǎng)度,校驗(yàn)特性,同步字符特性等)、傳、傳送速率送速率(波特率因子波特率因子)等參數(shù),但并沒(méi)有規(guī)定數(shù)等參數(shù),但并沒(méi)有規(guī)定數(shù)據(jù)傳送的方向是發(fā)

39、送還是接收,故需要據(jù)傳送的方向是發(fā)送還是接收,故需要工作命工作命令字令字來(lái)控制發(fā)來(lái)控制發(fā)/收。但何時(shí)才能發(fā)收。但何時(shí)才能發(fā)/收取決于收取決于8251A的工作狀態(tài),即的工作狀態(tài),即狀態(tài)字狀態(tài)字。只有當(dāng)。只有當(dāng)825lA進(jìn)入發(fā)送進(jìn)入發(fā)送/接收準(zhǔn)備好的狀態(tài),才能真正開(kāi)始接收準(zhǔn)備好的狀態(tài),才能真正開(kāi)始數(shù)據(jù)的傳送。數(shù)據(jù)的傳送。 由于由于8251A發(fā)送數(shù)據(jù)緩沖器與命令緩沖器共用,發(fā)送數(shù)據(jù)緩沖器與命令緩沖器共用,因此在因此在8251A發(fā)送數(shù)據(jù)的工作過(guò)程中若要向它發(fā)送數(shù)據(jù)的工作過(guò)程中若要向它寫(xiě)命令的話(huà),必須等到寫(xiě)命令的話(huà),必須等到TxRDY狀態(tài)位有效,狀態(tài)位有效,否則將覆蓋掉待發(fā)數(shù)據(jù)。否則將覆蓋掉待發(fā)數(shù)據(jù)。

40、由于方式命令字和工作命令字均無(wú)特征位標(biāo)志,由于方式命令字和工作命令字均無(wú)特征位標(biāo)志,且都是送到且都是送到同一命令端口同一命令端口,所以在向,所以在向8251A寫(xiě)寫(xiě)入方式命令字和工作命令字時(shí),必需要按一定入方式命令字和工作命令字時(shí),必需要按一定的的順序順序,這種順序不能顛倒或改變,若改變了,這種順序不能顛倒或改變,若改變了這種順序,這種順序,8251A就不能識(shí)別。這種順序是:就不能識(shí)別。這種順序是:復(fù)位復(fù)位方式命令字方式命令字工作命令字工作命令字1工作命工作命2,如圖,如圖8.14所示。所示。 (1)初始化為異步方式初始化為異步方式 從圖從圖8.14可以看出,在寫(xiě)方式命令字之前必須可以看出,在寫(xiě)

41、方式命令字之前必須先先復(fù)位復(fù)位。為了避免因。為了避免因8251A正在等待同步字符正在等待同步字符而誤把寫(xiě)入的復(fù)位命令當(dāng)作同步字符造成初始而誤把寫(xiě)入的復(fù)位命令當(dāng)作同步字符造成初始化錯(cuò)誤,往往化錯(cuò)誤,往往先寫(xiě)入先寫(xiě)入3個(gè)個(gè)0來(lái)解決這個(gè)問(wèn)題。來(lái)解決這個(gè)問(wèn)題。 這是因?yàn)?,如果?dāng)前這是因?yàn)?,如果?dāng)前8251A已經(jīng)處于復(fù)位狀態(tài),已經(jīng)處于復(fù)位狀態(tài),就會(huì)把第一個(gè)就會(huì)把第一個(gè)0當(dāng)作雙同步字符的內(nèi)同步方式當(dāng)作雙同步字符的內(nèi)同步方式字,爾后的兩個(gè)字,爾后的兩個(gè)0當(dāng)作同步字符;當(dāng)作同步字符; 若若8251A正在等待同步字符,就會(huì)把第一個(gè)正在等待同步字符,就會(huì)把第一個(gè)0或第一、第二個(gè)或第一、第二個(gè)0當(dāng)作同步字符,爾后的

42、當(dāng)作同步字符,爾后的0看做看做工作命令字;工作命令字; 其他情況把其他情況把3個(gè)個(gè)0都視作工作命令字。都視作工作命令字。 程序段如下:程序段如下: MOV DX,8251A-C ;8251A命令口地址命令口地址 XOR AL,AL ;連續(xù)輸出連續(xù)輸出3個(gè)個(gè)0 OUT DX,AL OUT DX,AL OUT DX,AL MOV AL,40H ;內(nèi)部復(fù)位內(nèi)部復(fù)位 OUT DX,AL MOV AL,0FBH ;寫(xiě)方式命令字寫(xiě)方式命令字1111 1011B OUT DX,AL MOV AL,37H ;寫(xiě)工作命令字寫(xiě)工作命令字 OUT DX,AL (2)初始化為同步方式初始化為同步方式 同步字符數(shù)為同步

43、字符數(shù)為2的內(nèi)同步,同步字符是的內(nèi)同步,同步字符是0AAH,7個(gè)數(shù)據(jù)位,偶校驗(yàn)。復(fù)位個(gè)數(shù)據(jù)位,偶校驗(yàn)。復(fù)位3個(gè)出錯(cuò)標(biāo)志,啟動(dòng)個(gè)出錯(cuò)標(biāo)志,啟動(dòng)收收/發(fā)器,送出就緒信號(hào),對(duì)同步字符進(jìn)行檢發(fā)器,送出就緒信號(hào),對(duì)同步字符進(jìn)行檢索。索。 則初始化程序段為:則初始化程序段為: MOV DX,8251A-C ;8251A命令口地址命令口地址 XOR AL,AL ;連續(xù)輸出;連續(xù)輸出3個(gè)個(gè)0 OUT DX,AL OUT DX,AL OUT DX,AL MOV AL,40H ;內(nèi)部復(fù)位內(nèi)部復(fù)位 OUT DX,AL MOV AL,38H ;寫(xiě)方式命令字寫(xiě)方式命令字0011 1000B OUT DX,AL MOV

44、AL,0AAH ;連續(xù)寫(xiě)入兩個(gè)連續(xù)寫(xiě)入兩個(gè)同步字符同步字符 OUT DX,AL OUT DX,AL MOV AL,97H ;寫(xiě)工作命令字寫(xiě)工作命令字 OUT DX,AL 2. 8251A應(yīng)用編程應(yīng)用編程 (1)雙機(jī)異步串行通信雙機(jī)異步串行通信 兩臺(tái)微機(jī)之間進(jìn)行串行通信,甲機(jī)發(fā)送,乙機(jī)兩臺(tái)微機(jī)之間進(jìn)行串行通信,甲機(jī)發(fā)送,乙機(jī)接收;兩機(jī)相距接收;兩機(jī)相距1m以?xún)?nèi)。要求把甲機(jī)上以?xún)?nèi)。要求把甲機(jī)上1KB的數(shù)據(jù)塊傳送到乙機(jī)中去。采用起止式異步方的數(shù)據(jù)塊傳送到乙機(jī)中去。采用起止式異步方式,字符長(zhǎng)度為式,字符長(zhǎng)度為7位,位,2位停止位,波特率因子位停止位,波特率因子為為64,無(wú)校驗(yàn)。,無(wú)校驗(yàn)。 CPU與與8

45、251A之間用之間用查詢(xún)方式查詢(xún)方式交換數(shù)據(jù)。兩臺(tái)交換數(shù)據(jù)。兩臺(tái)微機(jī)中的微機(jī)中的8251A的口地址相同:的口地址相同:320H為數(shù)據(jù)口為數(shù)據(jù)口地址,地址,321H為命令為命令/狀態(tài)口地址。狀態(tài)口地址。 由于是近距離傳輸,并且采用查詢(xún)由于是近距離傳輸,并且采用查詢(xún)I/O方式,方式,故可采用圖故可采用圖8.15所示連接。所示連接。 甲機(jī)的甲機(jī)的發(fā)送發(fā)送程序如下:程序如下: DATA SEGMENT TBUFF DB 1024 DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX LEA BX

46、,TBUFF MOV CX,1024 MOV DX,321H ;初始化初始化8251A XOR AL,AL OUT DX,AL OUT DX,AL OUT DX,AL MOV AL, 40H ;復(fù)位復(fù)位 OUT DX,AL MOV AL,11001011B ;異步通信的方式命令字異步通信的方式命令字 OUT DX,AL MOV AL,00110011B ;工作命令字工作命令字 OUT DX,AL LOOP1:MOV DX,321H ;測(cè)試是否可發(fā)送測(cè)試是否可發(fā)送 IN AL,DX TEST AL,1 ;TxRDY發(fā)送器是否準(zhǔn)備好發(fā)送器是否準(zhǔn)備好 JZ LOOP1 ;沒(méi)有,繼續(xù)測(cè)試沒(méi)有,繼續(xù)測(cè)試

47、 MOV DX,320H ;發(fā)送一個(gè)字符發(fā)送一個(gè)字符 MOV AL,BX OUT DX,AL INC BX DEC CX ;是否發(fā)送完?是否發(fā)送完? JNZ LOOP1 ;未發(fā)完,繼續(xù)未發(fā)完,繼續(xù) MOV AH,4CH ;已發(fā)完,退出已發(fā)完,退出 INT 21H CODE ENDS END START 乙機(jī)的乙機(jī)的接收接收程序如下:程序如下: DATA SEGMENT RBUFF DB 1024 DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA BX,RBUFF MOV C

48、X,1024 MOV DX,321H ;初始化初始化8251A XOR AL,AL OUT DX,AL OUT DX,AL OUT DX,AL MOV AL, 40H ;復(fù)位復(fù)位 OUT DX,AL MOV AL,11001011B ;異步通信的方式命令字,異步通信的方式命令字,通信雙方的格式相同通信雙方的格式相同 OUT DX,AL MOV AL,00010110B ;工作命令字工作命令字 OUT DX,AL LOOP1:MOV DX,321H ;測(cè)試是否已接收好測(cè)試是否已接收好 IN AL,DX TEST AL,2 ;RxRDY接收器是否準(zhǔn)備好接收器是否準(zhǔn)備好 JZ LOOP1 ;未接收,

49、繼續(xù)測(cè)試未接收,繼續(xù)測(cè)試 MOV DX,320H ;讀出接收的字符,存入緩沖區(qū)讀出接收的字符,存入緩沖區(qū) IN AL,DX MOV BX, AL INC BX DEC CX ;是否接收完?是否接收完? JNZ LOOP1 ;未完,繼續(xù)未完,繼續(xù) MOV AH,4CH ;已收完,退出已收完,退出 INT 21H CODE ENDS END START(2)雙機(jī)同步串行通信雙機(jī)同步串行通信 仍然如上題圖仍然如上題圖8.15所示,兩臺(tái)微機(jī)之間進(jìn)行所示,兩臺(tái)微機(jī)之間進(jìn)行對(duì)對(duì)等等串行通信,兩機(jī)相距串行通信,兩機(jī)相距1m以?xún)?nèi)。要求傳送的以?xún)?nèi)。要求傳送的數(shù)據(jù)為數(shù)據(jù)為1KB。采用同步字符數(shù)為采用同步字符數(shù)為2

50、的內(nèi)同步,的內(nèi)同步,同步字符是同步字符是55H,8個(gè)數(shù)據(jù)位,偶校驗(yàn)。復(fù)位個(gè)數(shù)據(jù)位,偶校驗(yàn)。復(fù)位3個(gè)出錯(cuò)標(biāo)志,啟動(dòng)收個(gè)出錯(cuò)標(biāo)志,啟動(dòng)收/發(fā)器,送出就緒信號(hào),發(fā)器,送出就緒信號(hào),對(duì)同步字符進(jìn)行檢索。對(duì)同步字符進(jìn)行檢索。 CPU與與8251A之間用查詢(xún)方式交換數(shù)據(jù)。兩臺(tái)之間用查詢(xún)方式交換數(shù)據(jù)。兩臺(tái)微機(jī)中的微機(jī)中的8251A的口地址相同:的口地址相同:320H為數(shù)據(jù)口為數(shù)據(jù)口地址,地址,321H為命令為命令/狀態(tài)口地址。狀態(tài)口地址。 兩機(jī)相同的兩機(jī)相同的收、發(fā)程序收、發(fā)程序如下:如下: DATA SEGMENT TBUFF DB 1024 DUP(?) RBUFF DB 1024 DUP(?) DAT

51、A ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV ES,AX MOV DX,321H ;初始化初始化8251A XOR AL,AL OUT DX,AL OUT DX,AL OUT DX,AL MOV AL,40H ;復(fù)位復(fù)位 OUT DX,AL MOV AL,00111100B ;方式命令字,通信雙方的方式命令字,通信雙方的格式相同格式相同 OUT DX,AL MOV AL,55H ;同步字符同步字符 OUT DX,AL OUT DX,AL MOV AL,10110111B ;工作命令字工作命令

52、字 OUT DX,AL LEA DI,TBUFF LEA SI,RBUFF MOV BX,1024 MOV CX,1024 RECEIVE: ;接收字符接收字符 TEST CX,0FFFFH JZ SEND MOV DX,321H IN AL,DX TEST AL,2 JZ SEND MOV DX,320H IN AL,DX MOV SI,AL INC SI DEC CX SEND: ;發(fā)送字符發(fā)送字符 TEST BX,0FFFFH JZ NEXT MOV DX,321H IN AL,DX TEST AL,1 JZ NEXT MOV DX,320H MOV AL,DI OUT DX,AL IN

53、C DI DEC BX NEXT: TEST CX,0FFFFH JNZ RECEIVE TEST BX,0FFFFH JNZ SEND MOV AH,4CH ;已收、發(fā)完,退出已收、發(fā)完,退出 INT 21H CODE ENDS END START(3)用用8251A設(shè)計(jì)設(shè)計(jì)RS-232C標(biāo)準(zhǔn)的串行通信口標(biāo)準(zhǔn)的串行通信口 要求要求 用用8251A設(shè)計(jì)一個(gè)按設(shè)計(jì)一個(gè)按RS-232C標(biāo)準(zhǔn)進(jìn)行零標(biāo)準(zhǔn)進(jìn)行零MODEM方方式、全雙工異步串行通信接口。如果有兩臺(tái)微機(jī)之間式、全雙工異步串行通信接口。如果有兩臺(tái)微機(jī)之間需要通信,可以直接利用這個(gè)接口互連,且雙方在各需要通信,可以直接利用這個(gè)接口互連,且雙方在

54、各自的鍵盤(pán)上按鍵向?qū)Ψ桨l(fā)送字符,同時(shí)又可接收對(duì)方自的鍵盤(pán)上按鍵向?qū)Ψ桨l(fā)送字符,同時(shí)又可接收對(duì)方發(fā)來(lái)的字符。字符數(shù)據(jù)格式為起止式,發(fā)來(lái)的字符。字符數(shù)據(jù)格式為起止式,2位停止位,位停止位,8位數(shù)據(jù)位,偶校驗(yàn),波特率因子為位數(shù)據(jù)位,偶校驗(yàn),波特率因子為16。 發(fā)送的字符和接收的字符均在屏幕上顯示。發(fā)送的字符和接收的字符均在屏幕上顯示。 波特率在波特率在110bit/s、150bit/s、300bit/s、600bit/s、1200bit/s、2400bit/s、4800bit/s和和9600bit/s八檔中任八檔中任選。選。 按下按下Esc鍵退出程序返回鍵退出程序返回DOS。 分析分析 由于要求波特率可選,因此需要設(shè)置波特率時(shí)由于要求波特率可選,因此需要設(shè)置波

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論