《微型計算機接口技術》第6章 開關量輸入輸出控制接口_第1頁
《微型計算機接口技術》第6章 開關量輸入輸出控制接口_第2頁
《微型計算機接口技術》第6章 開關量輸入輸出控制接口_第3頁
《微型計算機接口技術》第6章 開關量輸入輸出控制接口_第4頁
《微型計算機接口技術》第6章 開關量輸入輸出控制接口_第5頁
已閱讀5頁,還剩115頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1第6章數(shù)字量輸入輸出接口

2目錄6.1并行接口的概念6.2并行接口控制芯片8255A6.3數(shù)字量并行接口的應用6.4數(shù)字量串行接口及芯片3概述數(shù)字量輸入輸出接口包括數(shù)字量輸入和數(shù)字量輸出兩大部分。數(shù)字量是計算機能夠直接識別和處理的信號。輸入輸出系統(tǒng)中的主要數(shù)字量包括開關量輸入和輸出。所以數(shù)字量又稱為開關量。本章主要介紹數(shù)字量并行輸入輸出接口、數(shù)字量串行輸入輸出接口以及光電隔離的輸入輸出接口。46.1并行接口的概念并行接口通信就是把一個字符的各位同時用幾根線進行傳輸。并行通信用在傳輸速率要求較高,而傳輸距離較短的場合。圖6-1給出了數(shù)據(jù)總線進行并行通行的例子。01010110

D0D1D2D3D4D5D6D7目的D0D1D2D3D4D5D6D7源圖6-1數(shù)據(jù)總線進行并行通行的例子56.2并行接口控制芯片8255A8255A是Intel公司生產的可編程并行接口芯片,它有多種工作方式可以進行選擇,并且通常無需外圍電路,使用方便而且廣泛。6.2.18255A的編程結構6.2.28255A的引腳功能6.2.38255A的控制字6.2.48255A的工作方式66.2.18255A的編程結構8255A的邏輯結構如圖6-2所示,主要包括三個并行的輸入/輸出端口A、B和C,A組和B組的控制電路,數(shù)據(jù)緩沖器以及讀寫控制邏輯等部分。為了與A組和B組進行區(qū)分,以下將端口A、B和C稱為PA口、PB口和PC口。78(1)PA、PB和PC口的作用與功能8255A有三個I/O端口,分別是PA、PB和PC,三個端口都是8位的,并且通過編程可以作為輸入、輸出或輸入/輸出端口使用。PA口是一個獨立的8位I/O口,有數(shù)據(jù)輸入/輸出鎖存功能。PB口也是一個獨立的8位I/O口,有數(shù)據(jù)輸出鎖存功能。PC口可以看作是一個獨立的8位I/O口;也可以看作是兩個獨立的4位I/O口,還可看作獨立的8位I/O口。有數(shù)據(jù)輸出鎖存功能。端口PA和PB通常獨立使用,而端口PC既可以獨立使用,也可以配合端口PA和PB的工作,為它們提供聯(lián)絡信號,包括選通信號和應答信號。端口PC在獨立工作時,既可以8位并行輸入或輸出,也可以按位操作,具有更大的靈活性。9(2)A組和B組的控制電路在配合端口PA和PB工作時,端口PC被分為兩部分,高4位(PC7~PC4)與端口PA一起構成了A組,而低4位(PC3~PC0)與端口PB一起構成了B組。A組和B組的控制電路接收由讀寫控制邏輯獲得的控制字,分別對A組和B組的工作方式進行控制,因此A組和B組可以工作在不同方式下。10(3)數(shù)據(jù)緩沖器雙向、三態(tài)的數(shù)據(jù)緩沖器是8255A與數(shù)據(jù)總線的接口,微處理器可以通過它向三個I/O端口寫入或讀出數(shù)據(jù),或者寫入控制字以選擇8255A的工作方式。(4)讀寫控制邏輯讀寫控制邏輯電路負責管理8255A的數(shù)據(jù)傳輸過程,實現(xiàn)8255A內部和外部的數(shù)據(jù)、控制字的傳送。它根據(jù)地址、控制信號(復位信號、讀寫信號和片選信號等)的組合來決定將微處理器發(fā)送的控制字傳送給A組或B組的控制電路,或者選擇輸入或輸出數(shù)據(jù)到PA、PB和PC口。116.2.28255A的引腳功能1.面向CPU的引腳信號及功能D0-D7:8位,雙向,三態(tài)數(shù)據(jù)線,用來與系統(tǒng)數(shù)據(jù)總線相連;RESET:復位信號,高電平有效,輸入,用來清除8255A的內部寄存器,并置A口,B口,C口均為輸入方式;A1,A0:內部口地址的選擇,輸入。這兩個引腳上的信號組合決定對8255A內部的哪一個口或寄存器進行操作122.面向外設的引腳信號及功能PA0~PA7:A組數(shù)據(jù)信號,用來連接外設;具有輸入、輸出鎖存功能,可以作為單向或雙向信號線使用。PB0~PB7:B組數(shù)據(jù)信號,用來連接外設;具有輸出鎖存功能,僅可以作為單向信號線使用。PC0~PC7:C組數(shù)據(jù)信號,用來連接外設或者作為控制信號。具有輸出鎖存功能,僅可以作為單向信號線使用。136.2.38255A的控制字1.方式控制字(控制口)142.C口置位/復位控制字(控制口)注意:這里必須使用控制口操作PC口153、8255A的狀態(tài)字8255A無狀態(tài)寄存器,在方式1和方式2時,可以用端口C兼作狀態(tài)用。166.2.48255A的工作方式1.方式0方式0稱為基本輸入/輸出方式,適合在同步傳輸(無條件傳輸)和程序查詢方式下工作,CPU通過軟件方式確認外設狀態(tài),與外設交換數(shù)據(jù),因而不適合在實時性要求高的應用環(huán)境。在方式0中,PA、PB和PC相互獨立工作,PC又分為高4位和低4位兩個獨立的部分,通過控制字可以將這四部分任意選擇為輸入或輸出,共有16種組合。17初始化實例例如,某系統(tǒng)要求使用8255A的C口的PC4輸出一個由高到低的跳變。寫出8255A的方式控制字和初始化程序段?!窘狻坑捎诒纠魂P心PA和PB的工作方式,所以不用考慮設置8255A的方式控制字。為了實現(xiàn)PC4輸出一個由高到低的跳變,需要PC4先輸出一個高電平,然后輸出一個低電平。方法一:采用普通方式設置PC為輸出,然后置位/復位PC4,具體程序段如下:MOV DX,控制口MOV AL,1000XXXB ;選擇PC高位輸出,方式0OUT DX,AL ;MOV DX,PC口MOV AL,XXX1XXXXB ;即PC4設置為高電平輸出OUT DX,AL ;PC4置0(低電平)MOV AL,XXX0XXXXB ;即PC4設置為低電平輸出OUT DX,AL ;PC4置0(低電平)18為了實現(xiàn)PC4輸出一個由高到低的跳變,需要PC4先輸出一個高電平,然后輸出一個低電平。方法2:采用置位/復位PC口方式,具體程序段如下:MOV DX,控制口MOV AL,00001001B ;即05H,選擇PC4,置位OUT DX,AL ;PC4置1(高電平)MOV AL,00001000B ;即05H,選擇PC4,復位OUT DX,AL ;PC4置0(低電平)對于PC口可以采用兩種方法之一,方法二簡單。對應PA和PB口,只能采用方法一,不能使用方法二。特別注意:方法二對控制口進行,不是PC端口。192.方式1方式1是一種選通I/O方式,A口和B口仍作為兩個獨立的8位I/O數(shù)據(jù)通道,可單獨連接外設,通過編程分別設置它們?yōu)檩斎牖蜉敵?,輸入輸出均具有?shù)據(jù)鎖存功能。而C口則要有6位(分成兩個3位)分別作為A口和B口的應答聯(lián)絡線,其余2位仍可工作在方式0,可通過編程設置為輸入或輸出。20(1)方式1的輸入組態(tài)和應答信號的功能圖6-7給出了8255A的A口和B口在方式1的輸入組態(tài)圖。C口的PC3-PC5用作A口的應答聯(lián)絡線,PC0-PC2則作用B口的應答聯(lián)絡線,余下的PC6~PC7還可作為方式0使用。21方式1輸入組態(tài)的應答聯(lián)絡線2223方式1的輸出組態(tài)和應答信號24253.方式2方式2為雙向選通I/O方式,只有A口才有此方式。這時,C口有5根線用作A口的應答聯(lián)絡信號,其余3根線可用作方式0,也可用作B口方式1的應答聯(lián)絡線。方式2就是方式1的輸入與輸出方式的組合,各應答信號的功能也相同。而C口余下的PC0~PC2正好可以充當B口方式1的應答線,若B口不用或工作于方式0,則這三條線也可工作于方式0。26方式2為雙向選通I/O方式中斷請求輸出緩沖器滿輸出應答(外設讀走數(shù)據(jù))輸入選通(外設準備好了數(shù)據(jù))輸入緩沖器滿(8255已經收到數(shù)據(jù))作為普通輸入輸出(方式0)276.3并行接口的應用

6.3.1七段數(shù)碼管接口28本節(jié)介紹8255A的典型應用,包括8255A與LED的接口、8255A與非編碼鍵盤的接口、8255A與并行打印機的接口。1、單個LED與8255A的接口2、多個LED與8255A的接口296.3.1七段數(shù)碼管接口數(shù)碼顯示管(LED)是一種簡單的顯示輸出設備,通常作為儀器、儀表的顯示器,用于顯示數(shù)字或少數(shù)字符。LED種類較多、大小各異,主要有七段數(shù)碼管和16段數(shù)碼管。圖6.13給出了一種七段式數(shù)碼管的內部結構。30顯示不同數(shù)字和字符時,七段數(shù)碼管需要點亮的二極管位置不同。如,顯示數(shù)字“3”,需要點亮a、b、c和g四段發(fā)光二極管。表6-2給出了圖6.13所示結構的七段數(shù)碼管實現(xiàn)數(shù)字0~9以及字符A~F時,需要發(fā)光的二極管段。31顯示的數(shù)字發(fā)光的段顯示的數(shù)字發(fā)光的段顯示的字符發(fā)光的段顯示的字符發(fā)光的段0abcdef5afgcdAabcefgFaefg1bc6afgcdebabcdefgqabcfg2abged7abcCadef–g3abgcd8abcdefgdbcdeg=gd4fgbc9abcdfgEadefgPabefg321、單個七段數(shù)碼管與8255A的接口8255A與單個數(shù)碼管的接口電路如圖6.14所示。共陽33該數(shù)碼管由8個發(fā)光二極管構成,對外引腳共9個,分別是a、b、c、d、e、f、g、dp和公共引腳,采用共陽極結構。除Vcc外,每個引腳外接1個460歐姆的電阻,然后連接到8255A的PB口的PB0~PB7上。根據(jù)題意,當在PB0上輸出低電平時,LED的a段二極管發(fā)光,輸出高電平時,LED的a段二極管熄滅。其它各段發(fā)光的方法依次類推。34首先,分析圖中LED實現(xiàn)不同數(shù)字和字符時發(fā)光的二極管,由此確定PB口輸出什么數(shù)值時控制顯示不同的“數(shù)字”或“字符”。例如,要顯示數(shù)字“2”時,需要點亮a、b、d、e、g共5段發(fā)光二極管,根據(jù)a、b、d、e、g與PB口的連接關系,可以確定PB口的值應該設置為PB0=0(a段),PB1=0(b段),PB2=1(c短),PB3=0(d段),PB4=0(e段),PB5=1(f段),PB6=0(g段),PB0=1(DP段),寫出字節(jié)的形式就是10100100B,即0A4H。這種為確定顯示字符而確定的CPU需要送出的控制數(shù)值,稱為LED段碼或字形碼。表6-3給出了全部16進制數(shù)字字符的LED段碼。35顯示數(shù)符發(fā)光段LED段碼顯示數(shù)符發(fā)光段LED段碼0abcdefC0HAabcefg88H1bcF9Hbcdefg2abgedA4HCadef3abgcdB0Hdbcdeg4fgbc99HEadefg5afgcd92HFaefg6afgcde82Hqabcfg7abcE8H–g8abcdefg80H=gd9abcdfg9FPabefg36在上例中,采用共陽LED,低有效驅動顯示,如果要求先顯示數(shù)字“3”,然后顯示數(shù)字“6”,寫出程序段?!窘狻肯确治鰯?shù)字“3”和數(shù)字“6“顯示時的LED段碼,分別為:0B0H和82H,然后寫出程序段如下:MOVDX,8255控制口MOVAL,10000000B ;80H,8255A初始化B口方式0,輸出OUTDX,AL MOVDX,8255PB口MOVAL,0B0H ;“3”的段碼OUTDX,AL ;顯示“3”MOVAL,82H ;“6”的段碼OUTDX,AL ;顯示“6”372、8255A與多個LED的接口圖6-15為8255A驅動8個LED的接口電路。其中的七段數(shù)碼管采用共陰LED,每個LED包含8個引腳,分別是a、b、c、d、e、f、g、dp和公共引腳。除公共引腳外,每個引腳外接1個460歐姆的電阻(圖中未給出),然后連接到8255A的PA口的PA0~PA7上。每個LED的公共引腳經過反相器連接到PC口的PC0~PC7。3839在這種有多個數(shù)碼管的情況下,通常采用動態(tài)掃描的方式來控制數(shù)碼管的顯示,其過程是首先使PC0輸出高電平,而PC1~PC7輸出低電平,選中數(shù)碼管U0,然后由PA口根據(jù)要顯示的第一個數(shù)字輸出8位數(shù)據(jù)(稱為段碼或字形碼),盡管段碼同時到達8個數(shù)碼管的段選線,但只有U0能夠顯示,因此將第一個數(shù)字顯示在U0上。這種狀態(tài)維持2m后,接下來使PC1輸出高電平,而其它7位輸出低電平,可以在數(shù)碼管U1上顯示第二個數(shù)字。以此類推,周而復始,就可以使8個數(shù)碼管同時顯示8位數(shù)字。上述動態(tài)掃描過程利用了視覺暫留現(xiàn)象。為了能夠獲得較好的顯示效果,每個數(shù)碼管的掃描時間需要選取恰當,時間太長會造成閃爍現(xiàn)象。40求解過程-第1階段:設置段碼表本例由于采用共陰LED,而且LED引腳和PA口的連接順序不同(引腳a、b、c、d、e、f、g、dp分別對應PA口的PA7~0),因而得到的段碼(字形碼)不同。PA位PA7PA6PA5PA4PA3PA2PA1PA0DB位D7D6D5D4D3D2D1D0段abcdefgdp段碼011111100FCH10110000060H211011010DAH311110010F2H40110011066H510110110B6H610111110BEH711100000E0H811111110FEH911110110F6HA111

1110EEH41第2階段:設置顯示緩沖區(qū)8個LED要顯示的數(shù)字可以放到顯示緩沖區(qū)DispBuff中。例如,8個LED要顯示“20070501”,則DispBuff的值可以設置為:2,0,0,7,0,5,0,1。通過修改顯示緩沖區(qū),可以讓8個LED顯示不同的數(shù)字,簡化了軟件設計。DispBuff: 02H,00H,00H,07H,00H,05H,00H,01H ;放置要實現(xiàn)的8個數(shù)字,作為查找下表的偏移量使用42第3階段:設計8個LED輪流顯示的完整程序//初始化8255AMOV AL,10000000B ;PA、PC均為方式0,輸出

MOV DX,PORTCTL ;8255A控制口

OUT DX,ALBEGIN:MOV CX,8 ;循環(huán)8次

MOV DI,OffsetDisBuff

MOV BX,OffsetSegCodeTab MOV SI,0MOV AH,00000001B ;PC0設置為1,選中第一個LED43MOV AH,00000001B ;PC0設置為1,選中第一個LEDSCAN:MOV AL,AH ;使PC口相應位置位

MOVDX,PORTC

;MOV DX,PORTCTL ;C口位控時的指令

OUT DX,AL ;使PC口相應位置位

ADD DI,SI ;查找顯示緩沖區(qū)

MOVDX,[DI] ;取出要顯示的數(shù)字符

MOV AL,[BX+DX] ;取出顯示字符的段值(字形碼)

INC SI ;下一個要顯示字符的偏移量

MOV DX,PORTA ;PA口輸出字形碼

OUT DX,ALCALL DELAY2MS SHL AH,1 ;為顯示下一個數(shù)碼管做準備

;ADD AH,2 ;C口位控時,為顯示下一個數(shù)碼管做準備

LOOP SCAN JMP BEGIN ;重復顯示446.3.2非編碼鍵盤接口鍵盤根據(jù)實現(xiàn)方法可以分為編碼鍵盤和編碼鍵盤非兩種。編碼鍵盤是指可以直接提供按鍵編碼(如ASCII碼)的鍵盤。為了能夠提供按鍵編碼,編碼鍵盤內部需要有鍵盤掃描電路,這些硬件電路能夠檢測是否有鍵按下,并根據(jù)按下的是哪一個鍵而輸出其編碼。比如經常使用的PC機鍵盤,其內部專門設有一個單片機進行鍵盤檢測和處理。非編碼鍵盤只有按鍵而無掃描電路,這些按鍵它由多個開關組合而成。4516個鍵的鍵盤對于大多數(shù)的鍵盤,按鍵被排成行和列的矩陣。下面以機械式開關構成的16個鍵的鍵盤為例(如圖6-16所示),來討論鍵盤接口的工作原理,這種原理對采用其它類型的開關的鍵盤也是適用的。46分析設16個鍵分別為16進制數(shù)字0~9和A~F,鍵盤排列、連線及接口電路如圖6-16所示。16個鍵排成4行×4列的矩陣,通過8255A構成的接口與CPU連接。8255A的端口A作輸出,端口B作輸入。矩陣的4條行線接到輸出端口A的PA3~PA0,用程序能改變這4條行線上的電平。4條列線連到輸人端口B的PB3~PB0,4條行線還同時接到輸人端口B的PB7~PB4上(這不是必須的,可以不接),這樣,用輸入指令讀取B口狀態(tài)時,可同時讀取鍵盤的行列信號。4716個按鍵的掃描碼例如,對于數(shù)字0,它位于3行、3列,壓下“0”鍵時,從B口可讀得D7位和D3位為0,其余位為1,所以數(shù)字0的編碼為01110111B,即77H;對于數(shù)字6,處于2行1列,壓下‘6’鍵時,D6位和D1位0以其余位為1,所以數(shù)字6的編碼為10111101B=BDH。按鍵01234567掃描碼77H7BH7DH7EH0B7H0BBH0BDH0BEH按鍵89ABCDEF掃描碼0D7H0DBH0DDH0DEH0E7H0EBH0EDH0EEH48確定程序流程包括鍵盤檢測、去抖動、鍵值編碼和確定鍵名等。具體流程如下:(1)檢測是否所有鍵都松開了,若沒有則反復檢測(該步可省去)。當所有鍵都松開了,轉(2);(2)檢測是否有鍵壓下,若無鍵壓下則反復檢測。(3)若有鍵壓下,則通過延遲20ms消除鍵抖動,如果該鍵還按下,則繼續(xù)判斷是哪個鍵按下,否則,繼續(xù)檢測。(4)對壓下的鍵進行編碼,將該鍵的行列信號轉換成16進制碼,由此可確定哪個鍵被壓下了。如出現(xiàn)多鍵重接的情況,只有在其它鍵均釋放后,僅剩一個鍵閉合時,才把此鍵當作本次壓下的鍵。(5)該鍵釋放后,再回到(2)。49給出具體程序首先給出該8255A的端口地址(這里是假設,實際系統(tǒng)根據(jù)地址譯碼確定),具體為:PORTAEQU0FF9H ;8255A口地址PORTBEQU0FFBH ;8255B口地址PORTCTLEQU0FFFH ;8255控制口地址然后確定程序出口,具體參數(shù)為:若返回值AH=0,表示已讀到有效的鍵值,并在AL中存有0~F鍵的16進制代碼;若返回值AH=l,則表示出錯。最后給出程序段,包括注釋與說明。50給出具體程序本段程序可以省略等待全部按鍵釋放51給出具體程序本段程序檢查是否有鍵按下?52本段程序檢查哪一個鍵按?本段程序編碼并查表從按鍵F開始查表,直到按鍵0。如果按鍵較少,則不用查表,根據(jù)編碼轉去直接處理

INAL,DX CMPAL,77H JZKey0 CMPAL,7BH JZKey1

…53從上面鍵盤接口例子我們可以看到,為了要及時發(fā)現(xiàn)鍵盤中的按鍵是否按下,CPU必須定時或不斷地利用軟件(即上述掃描程序)對鍵盤進行掃描,這樣CPU的開銷太大,降低了CPU的工作效率。為此有關廠家專門開發(fā)了、用于鍵盤接口的大規(guī)模集成電路芯片,例如Intel8279、SSK814。按鍵01234567掃描碼77H7BH7DH7EH0B7H0BBH0BDH0BEH按鍵89ABCDEF掃描碼0D7H0DBH0DDH0DEH0E7H0EBH0EDH0EEH546.3.3并行打印機接口并行打印機接口(LPT)在不同PC系列機型中,以不同的形式出現(xiàn)。在PC/XT機中是以I/O擴展槽上的IBM并行打印機適配器板出現(xiàn),在AT機中是以插在I/O擴展槽上的IBM并行口/串行口適配器板出現(xiàn)?,F(xiàn)在的LPT則集成在主板上,隨著計算機的快速發(fā)展,LPT接口的使用頻率在下降,代之而起的是基于USB接口的打印機的廣泛使用。但作為打印機的主要接口之一,本節(jié)有必要進行介紹與講述。55Centronics總線標準在并行打印機中,設置有36引腳的Centronics總線標準插座。打印機與PC通過36芯-25芯電纜連接到PC的25芯D型連接器LPT上。它的25個引腳所代表的信號可分為:數(shù)據(jù)信號、狀態(tài)信號和控制信號三類。表6-6給出了Centronic總線引腳及其功能說明。56Centronic總線引腳及功能說明Centronic總線時序57例如,已知某微型英文打印機的接口信號如下,信號間的時序關系如圖6-17所示。其中:(1):輸入打印機的選通信號(5ms負脈沖),用來把數(shù)據(jù)打入打印機數(shù)據(jù)緩沖器;(2):初始化打印機信號(5ms負脈沖);(3)BUSY:打印機發(fā)出的狀態(tài)信息(“忙”信號),BUSY有效(高電平)時,表示打印機現(xiàn)在不能接收數(shù)據(jù),BUSY無效(低電平)時,表示打印機正處于空閑(準備好)狀態(tài),可以接收數(shù)據(jù)。(4)DATA0~DATA7:送往打印機的打印數(shù)據(jù),在英文字符打印機中,DATA0~DATA7上傳輸?shù)氖且蛴〉淖址腁SCII碼。58現(xiàn)在將英文打印機連接到8255A芯片上,8255A連接到PC/XT總線上,如圖6-18所示。已知有5ms延遲程序Delay5ms可供調用。59解答下列問題:(1)分析圖中的譯碼電路,給出8255A的PA、PB、PC和方式控制字的端口地址(用16進制表示);(2)給出8255A的方式控制字(用16進制表示),寫出初始化8255A的程序段; (3)完成判斷打印機忙的程序段;(4)完成下面的打印一個字符“A”的程序段。60【解】(1)由圖6-18的地址譯碼電路分析可知,8255A的片選信號連接到74LS138芯片的Y2上,即當Y2為低電平時選中8255A芯片。而74LS138的Y2為低電平的條件是:A9A8=11,A7A6=01,A4A3A2=010,A5為任意值。根據(jù)上述分析,8255A的PA口地址為:1101X01000B,即348H或368H。由此可得,8255A的PA、PB、PC和控制口的端口地址分別為:348H或368H,349H或369H,34AH或36AH,34BH或36BH。61解:(2)按照題意,8255A的PA為輸入(或輸出),PB為輸出,PC的低4位為輸出,高4位為輸入。由此可得8255A的方式字的值為98H。下面是初始化8255A的程序段:MOV DX,34BH或36BHMOV AL,98H OUT DX,AL (3)下面是判斷打印機忙的程序段;MOV DX,34AH ;或36AH,C口BUSY: IN AL,DXTEST AL,40H; 檢測PC6JNZ BUSY62(4)下面是打印一個字符“A”的程序段。MOV DX,PB的端口地址;MOV AL,41H;OUT DX,AL ;發(fā)送待打印字符MOV DX,34BH ;或36BH,控制口MOV AL,05H ;PC2位控 OUT DX,AL ;發(fā)送信號/STBMOV AL,04H ;PC2位控 OUT DX,AL ;發(fā)送信號/STBCALL Delay5msMOV AL,05H ;PC2位控OUT DX,AL ;發(fā)送信號/STBRET63上面的例子給出的是8255A工作于方式0的例子。但在實際應用中,打印機與8255A可以方便實現(xiàn)方式1的連接,即由硬件判斷打印機忙狀態(tài),通過中斷方式進行打印數(shù)據(jù)發(fā)送。圖6.19所示,微型打印機的接口由8255A的A組實現(xiàn),采用工作方式1、輸出方式。根據(jù)方式1的時序關系,微處理器將數(shù)據(jù)寫入PA口并由其引腳輸出后,PC7輸出信號,這正好作為數(shù)據(jù)選通信號將數(shù)據(jù)送入打印機,打印機完成接收操作后用信號指示8255A,隨后8255A產生中斷請求信號通知微處理器可以輸出下一個數(shù)據(jù)。646.4串行接口的基本概念第1節(jié):串行通信基礎第2節(jié):可編程串行接口芯片-8251第3節(jié):8251的串行異步通信的應用第4節(jié):PC系列串行異步通信接口第5節(jié):BIOS串行異步通信口的功能調用30一月2023修改65第1節(jié):串行通信基礎1)串行通信的物理連接2)串行通信類型和數(shù)據(jù)位鑒別方式3)串行通信協(xié)議4)串行通信的物理標準661)串行通信物理連接方式672)串行通信的類型和數(shù)據(jù)位的檢測方式串行異步通信格式

一幀字符用起始位和停止位同步682)串行通信的類型和數(shù)據(jù)位的檢測方式串行同步通信格式

用同步字符完成同步69

串行通信數(shù)據(jù)位的檢測

時鐘周期:Tc

數(shù)據(jù)位間隔:Td

Tc=Td/K

K:波特率因子(16,32,64)703)串行通信協(xié)議①異步通信協(xié)議②同步通信協(xié)議71①異步通信數(shù)據(jù)格式72

②串行同步通信協(xié)議BISYNC(BinarySynchronousCommunication):

SYN(1或多)、STX(起始控制符)、DATAFIELD(100或更多字節(jié))、ETX(結束控制符)、BCC(塊校驗字符)、PAD(幀結束FFH)73②串行同步通信協(xié)議SDLC(SerialDataLinkControl):

IBM用于計算機網絡中

SYNC(Flagbyte01111110)、Addressfield(8bits)、Controlfield(8bits)、Datafield(kbits)、Framecheck(16bits)、Endflag(01111110)744)物理標準

通信速率串行通信接口標準信號的調制和解調754)物理標準 通信速率波特率:bits/S,波特,與距離成反比100,300,600,1200,2400,4800,9600,1920076

串行通信接口標準:EIARS-232C

控制信號的定義77

串行通信接口標準:RS-232C

信號電平標準:采用負邏輯78信號電平標準:采用負邏輯TTL與RS-232電平變換

接口

1489

1488

1489

1488

接口

TTLTTLTTLTTL

RS-232

RS-232

79RS-232連接器連接方式80信號的調制和解調長距離傳輸時傳輸介質頻帶限制把發(fā)送代碼調制成正弦波調頻 FrequencyModulation 1:2100Hz 0:1070Hz調相移Frequency–ShiftKeying81

信號的調制和解調

長距離傳輸82幾種可編程串行接口芯片隨著大規(guī)模集成電路技術的發(fā)展,生產微處理器芯片的公司,紛紛推出可編程的支持異步規(guī)程或同步規(guī)程的接口芯片。下表列出幾種串行接口芯片。這些芯片都是可編程的,用芯片構成串行通信接口,只需附加地址譯碼器和數(shù)據(jù)驅動器、波特率發(fā)生器以及電平轉換器等簡單電路。有的芯片,例如INS8250芯片內還集成了波特率發(fā)生器,用它組成串行接口適配器時、電路結構更簡單。83下表列出幾種串行接口芯片PC機84第2節(jié):可編程串行通信接口8251 1)功能與結構

2)8251的編程

3)8251的應用

851)功能與結構-8251的基本性能可用于同步或異步傳送同步傳送時,每字符可選5~8bits;可內或外同步;能自動插入同步字符。異步傳送時,每字符可選5~8bits;接收與發(fā)送時鐘為通訊波特率的1、16或64倍。可產生中止字符(BreakCharacter)并能自動檢測和處理;可產生1、1.5或2bit的停止位;可檢測出假啟動信號。波特率,同步時最高64K波特;異步時最高19.2K波特。完全雙工,雙緩沖的發(fā)送器與接收器檢錯能力,具有奇偶錯、數(shù)據(jù)丟失錯和幀錯誤的檢測能力。全部入/出信號均為正常TTL電平。

861)8251的功能與結構Intel8251的結構見圖,為28條管腳雙列直插封裝。

從8251的結構圖上看到它的5個組成部分,即接收器、發(fā)送器、調制解調控制、讀/寫控制,以及幾個緩沖器。緩沖器又可細劃為狀態(tài)緩沖器,發(fā)送數(shù)據(jù)/命令緩沖器,和接收數(shù)據(jù)緩沖器3部分。871)8251的引腳安排D7~D0

(接外部數(shù)據(jù)總線)TXD——數(shù)據(jù)發(fā)送引腳,在不發(fā)送數(shù)據(jù)時一般為高電平,但是通過發(fā)送終止字符可以使其為低電平。/TxC

控制數(shù)據(jù)發(fā)送速率的時鐘輸入引腳,在發(fā)送數(shù)據(jù)時,TXD引腳在的每個下降沿移出一位數(shù)據(jù)。在同步方式下,數(shù)據(jù)傳送速率等于的CLK頻率,而在異步方式下,通過方式指令字可以選擇數(shù)據(jù)傳送速率為CLK頻率的1、1/16或1/64。888251的引腳安排TXRDY—發(fā)送器準備就緒引腳,當TXRDY為高電平時指示發(fā)送緩沖器已空,微處理器可以寫入新的數(shù)據(jù),寫信號上升沿引腳變低。引腳由TXEN控制,TXEN=0時TXRDY維持低電平。TXRDY通常作為中斷請求信號,而TXEN可以看成是中斷屏蔽位;8251A的狀態(tài)字中也有一位TXRDY,與TXRDY引腳的區(qū)別是不受和TXEN的控制,在查詢輸入/輸出方式中,微處理器查詢該狀態(tài)位來判斷是否可以傳送數(shù)據(jù)。89發(fā)送引腳TXEMPTY——發(fā)送緩沖器已空引腳,當發(fā)送緩沖器中的數(shù)據(jù)發(fā)送完畢,該引腳為高電平。當微處理器向發(fā)送緩沖器寫入數(shù)據(jù)時,寫信號上升沿使TXEMPTY變低。在同步方式下,若TXEMPTY為高電平,表示當前沒有數(shù)據(jù)可供發(fā)送,則8251A自動發(fā)送同步字符。90接收引腳SYNDET—同步字符檢測引腳。SYNDET既可以作為輸入引腳也可以作為輸出引腳。8251A復位后,SYNDET為低電平。內同步時,當在RxD線上檢測到同步字符后,SYNDET輸出高電平。外同步時,SYNDET為輸入。當外設完成同步字符檢測后,向此引腳輸入一個正跳變信號,使得8251A在下一個j接收時鐘的下降沿開始裝配字符。91接收引腳①RxD——數(shù)據(jù)接收引腳,8251A在/RxC的每個上升沿采樣RxD引腳。②/RxC——控制數(shù)據(jù)接收速率的時鐘輸入引腳,控制數(shù)據(jù)接收速率的方式與/TxC相同,在實際使用時/RxC與/TxC通常接在一起。③RxRDY——接收器準備就緒引腳,當RxRDY為高電平時,指示8251A的數(shù)據(jù)緩沖器中已經有接收到的數(shù)據(jù),可供微處理器讀出,并且由讀信號的上升沿復位。如果在RxRDY信號有效的情況下微處理器沒有及時取走數(shù)據(jù),新接收的數(shù)據(jù)會覆蓋數(shù)據(jù)緩沖器中原有數(shù)據(jù),造成溢出錯誤,并且使狀態(tài)字中的溢出錯誤標志OE置位。RXRDY可以作為中斷請求信號,也可以作為狀態(tài)信號供微處理器查詢92調制解調器控制電路(1)/DTR(DataTerminalReady)——數(shù)據(jù)終端準備就緒引腳(輸出,低電平有效),通過命令指令字可以使該引腳輸出低電平,通知調制解調器當前微處理器已經準備就緒。(2)/DSR(DataSetReady)——數(shù)據(jù)設備準備就緒引腳(輸入,低電平有效),當為低電平時,通知微處理器當前調制解調器已經準備就緒。由于該信號是輸入給8251A的,微處理器需要讀取8251A的狀態(tài)字來檢測該信號,以了解調制解調器當前的狀態(tài)。(3)/RTS(RequestToSend)——請求發(fā)送引腳(輸出、低電平有效),通過命令指令字可以使該引腳輸出低電平,通知調制解調器當前微處理器已經準備好發(fā)送。(4)/CTS(ClearToSend)——清除發(fā)送引腳(輸入,低電平有效),當為低電平時,表示調制解調器已經允許8251A發(fā)送數(shù)據(jù)。93時鐘信號8251時鐘信號:系統(tǒng)時鐘CLK的周期要在0.32ms-1.35ms范圍內。在異步方式下,應大于發(fā)送/接收時鐘/TxC、/RxC的4.5倍。接收時鐘/RxC和發(fā)送時鐘/TxC的頻率可為接收與發(fā)送數(shù)據(jù)的波特率的1、16或64倍。8251在/RxC的上升采樣數(shù)據(jù),數(shù)據(jù)在/TxC的下降沿由8251移位輸出。8251工作于異步方式,可選用CLK為1.8432MHz/2,即921.6KHz。發(fā)送與接收數(shù)據(jù)的波特率均為9600,/TxC和/RxC的頻率為波特率的16倍。這時系統(tǒng)時鐘頻率為/TxC、/RxC

的16倍。942)8251的編程機構8251A的內部可編程寄存器包括方式指令字寄存器和命令指令字寄存器。方式指令字規(guī)定了8251A的工作方式,命令指令字可以對8251A進行實時控制,而在同步方式中,需要寫入在傳送數(shù)據(jù)時使用的同步字符。方式指令字必須在復位后首先寫入,而且只能寫入一次,若改變8251A的工作方式,則必須先通過命令指令字使8251A復位。在寫入方式指令字后才可以寫入命令指令字和同步字符,并且可多次寫入95(1)方式指令字波特率分別是時鐘頻率的1、1/16和1/6496(2)命令指令字97(3)狀態(tài)字TE、OE和PE分別反映數(shù)據(jù)傳送中的三種錯誤,由硬件自動監(jiān)測,微處理器只有讀取狀態(tài)字才能知道數(shù)據(jù)傳送過程中是否有錯誤發(fā)生。98例如,若要查詢8251A接收器是否準備好,則可用下列程序段完成:MOVDX,0F2H ;狀態(tài)口LOPP:INAL,DX;讀狀態(tài)口ANDAL,02H ;查RxRDY=1?JZLOPP ;未準備好,則等待MOVDX,0F0H ;數(shù)據(jù)口INAL,DX ;已準備好則讀取數(shù)據(jù)998251A的讀寫操作方式(尋址)C/操作1XXX引腳D7~D0呈高阻態(tài)0X11引腳D7~D0呈高阻態(tài)0001向8251A中寫入數(shù)據(jù)0010從8251A中讀出數(shù)據(jù)0101向8251A中寫入指令字0110從8251A中讀出狀態(tài)字

C=COMMAND:三個寄存器D=DATA:TxBUF&RxBUF1008251A的初始化與編程8251在初始化編程時,首先使芯片復位,第一次向控制端口(奇地址)寫入的是方式字;如果是同步方式,接著向奇地址端口寫入的是同步字符,若有2個同步字符,則分2次寫入;以后不管是同步方式還是異步方式,只要不是復位命令,當A0接C/D#時,由CPU向奇地址端口寫入的是命令控制字,向偶地址端口寫入的是數(shù)據(jù)。在寫入命令指令字后,若IR=1,則引起內部復位,又回到流程的開始,可以重新寫入方式指令字。101初始化流程奇地址偶地址102同步方式初始化程序1下面是設置8251A為同步方式的初始化程序,8251A的C/D引腳接在地址總線的A0上,寫指令字的端口地址為51H。

MOV DX,51H

;設置端口地址

MOV AL,10111000H;寫入方式指令字

OUT DX,AL;同步方式,7位數(shù)據(jù),偶校驗

MOV AL,16H;使用一個同步字符,為16H OUT DX,AL MOV AL,97H;寫入命令字:啟動發(fā)送器、接收器

OUT DX,AL;復位錯誤標志,搜索同步字符103同步方式初始化程序28251A的C/D引腳接在地址總線的A1上,

指令字的端口地址為52H,數(shù)據(jù)為50H。

MOVDX,52H; 設置端口地址

MOVAL,40H; 復位8251A

OUTDX,AL

MOVAL,38H; 寫入方式指令字

OUTDX,AL; 同步方式,7位數(shù)據(jù),偶校驗

MOVAL,0FFH; 使用2個同步字符0xFF

OUTDX,AL

OUTDX,ALMOVAL,97H; 寫入方式指令字:啟動收發(fā)器、接收器

OUTDX,AL; 復位錯誤標志,搜索同步字符

104異步方式初始化程序;寫入方式指令字:異步方式,7位數(shù)據(jù),波特率因子1,偶校驗,1個停止位MOV AL,79HOUT 51H,AL;寫入命令指令字;啟動發(fā)送器、接收器,;復位錯誤標志MOV AL,35HOUT 51H,AL105第3節(jié)6.5.38251A的綜合應用圖6.32是利用8251A形成RS-232C串口的接口電路,8251A實現(xiàn)了串行數(shù)據(jù)的發(fā)送和接收,電路1488和1499用于實現(xiàn)信號的TTL電平與RS-232電平的相互轉換。設8251A的控制和狀態(tài)端口地址為52H,數(shù)據(jù)輸入和輸出端口地址為50H。106下面分析利用8251A接收80個字符后,放在BUFFER標號所指的內存緩沖區(qū)中的程序設計方法?!窘狻肯旅娴某绦蚨蜗葘?251A進行初始化,然后對狀態(tài)字進行測試,以便輸入字符。具體的程序段如下:MOVAL,0FAH;11111010B;設置方式指令字,異步方式,波特率因子16;7個數(shù)據(jù)位,2個停止位,偶校驗OUT52H,ALMOVAL,35H;00110101B;設置命令指令字,使發(fā)送器和接收器啟動,OUT52H,AL;并清除出錯指示位MOVDI,0 ;變址寄存器初始化MOVCX,80;計數(shù)器初始化,共收取80個字符1107異步接收BEGIN:INAL,52H

;讀取狀態(tài)字,測試RxRDY位是否為1,如為0,TESTAL,02H ;如果未收到字符,故繼續(xù)讀取狀態(tài)字并測試JZBEGININAL,50H

;讀取字符MOVDX,OFFSETBUFFERMOV[DX+DI],ALINCDI ;修改緩沖區(qū)指針I(yè)NAL,52H ;讀取狀態(tài)字TESTAL,38H ;測試有無幀校驗錯,奇/偶校驗錯和JZERROR ;溢出錯,如有,則轉出錯處理程序L00PBEGIN ;如沒錯,則再收下一個字符

溫馨提示

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

評論

0/150

提交評論