并行和串行接口電路.doc_第1頁(yè)
并行和串行接口電路.doc_第2頁(yè)
并行和串行接口電路.doc_第3頁(yè)
并行和串行接口電路.doc_第4頁(yè)
并行和串行接口電路.doc_第5頁(yè)
已閱讀5頁(yè),還剩19頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第10章 并行和串行接口電路1教學(xué)目的和要求:掌握串行通信和并行通信的概念掌握并行接口電路8255A的使用掌握串行接口電路8251A的使用2教學(xué)重點(diǎn):8255A的使用8251A的使用3掌握難點(diǎn):8255A的使用8251A的使用5教學(xué)方法:課堂講授6教學(xué)內(nèi)容摘要:10.1 概述10.1.1 并行通信1. 并行接口圖10.1 并行接口與CPU、外設(shè)的連接2. 并行接口的組成狀態(tài)寄存器狀態(tài)寄存器用來(lái)存放外設(shè)的信息,CPU通過(guò)訪問(wèn)這個(gè)寄存器來(lái)了解某個(gè)外設(shè)的狀態(tài),進(jìn)而控制外設(shè)的工作,以便與外設(shè)進(jìn)行數(shù)據(jù)交換。控制寄存器并行接口中有一個(gè)控制寄存器,CPU對(duì)外設(shè)的操作命令都寄存在控制寄存器中。數(shù)據(jù)緩沖寄存器在并行接口中還設(shè)置了輸入緩沖寄存器和輸出緩沖寄存器,緩沖器是用來(lái)暫存數(shù)據(jù)。因?yàn)橥庠O(shè)與CPU交換數(shù)據(jù),CPU的速度遠(yuǎn)遠(yuǎn)高于外設(shè)的速度。例如,打印機(jī)的打印速度與CPU的速度相差的遠(yuǎn)不止是一個(gè)數(shù)量級(jí),在并行接口中設(shè)置緩沖器,把要傳送的數(shù)據(jù)先放入緩沖器中,打印機(jī)按照安排好的打印隊(duì)列進(jìn)行打印,這樣可以保證輸入,輸出數(shù)據(jù)的可靠性。3. 數(shù)據(jù)輸入過(guò)程數(shù)據(jù)輸入過(guò)程,指的是外設(shè)向CPU輸入數(shù)據(jù)。 當(dāng)外設(shè)將數(shù)據(jù)通過(guò)數(shù)據(jù)輸入線送給接口時(shí),先使?fàn)顟B(tài)線“輸入數(shù)據(jù)準(zhǔn)備好”為高電平。然后通過(guò)接口把數(shù)據(jù)接收到輸入緩沖寄存器中,同時(shí)把“輸入回答”信號(hào)置成高電平“1”,并發(fā)給外設(shè)。 外設(shè)接到回答信號(hào)后,將撤消“輸入數(shù)據(jù)準(zhǔn)備好”的信號(hào)。當(dāng)接口收到數(shù)據(jù)后,會(huì)在狀態(tài)寄存器中設(shè)置“準(zhǔn)備好輸入”狀態(tài)位,以便CPU對(duì)其進(jìn)行查詢。 接口向CPU發(fā)出一個(gè)中斷請(qǐng)求信號(hào),這樣CPU可以用軟件查詢方式,也可以用中斷的方式將接口中的數(shù)據(jù)輸入到CPU中。 CPU在接收到數(shù)據(jù)后,將“準(zhǔn)備好輸入”的狀態(tài)位自動(dòng)清除,并使數(shù)據(jù)總線處于高阻狀態(tài)。準(zhǔn)備外設(shè)向CPU輸入下一個(gè)數(shù)據(jù)。4. 數(shù)據(jù)輸出過(guò)程數(shù)據(jù)輸出過(guò)程,指的是CPU向外設(shè)輸出數(shù)據(jù)。 當(dāng)外設(shè)從接口接收到一個(gè)數(shù)據(jù)后,接口的輸出緩沖寄存器“空”,使?fàn)顟B(tài)寄存的“輸出數(shù)據(jù)準(zhǔn)備好”狀態(tài)位置成高電平“1”,這表示CPU可以向外設(shè)接口輸出數(shù)據(jù),這個(gè)狀態(tài)位可供CPU查詢。 此時(shí)接口也可向CPU發(fā)出一個(gè)中斷請(qǐng)求信號(hào),同上面的輸入過(guò)程相同,CPU可以用軟件查詢方式,也可以用中斷的方式將CPU中的數(shù)據(jù)通過(guò)接口輸出到外設(shè)中。當(dāng)輸出數(shù)據(jù)送到接口的輸出緩沖寄存器后,再輸出到外設(shè)。 與此同時(shí),接口向外設(shè)發(fā)送一個(gè)啟動(dòng)信號(hào),啟動(dòng)外設(shè)接收數(shù)據(jù)。外設(shè)接收到數(shù)據(jù)后,向接口回送一個(gè)“輸出回答”信號(hào)。 接口電路收到該信號(hào)后,自動(dòng)將接口狀態(tài)寄存器中的“準(zhǔn)備好輸出”狀態(tài)位重新置為高電平“1”,通知CPU可以向外設(shè)輸出下一個(gè)數(shù)據(jù)。10.1.2 串行通信圖10.2 串行接口與CPU、外設(shè)的連接1. 串行接口的組成串行接口是通過(guò)系統(tǒng)總線和CPU相連,串行接口部件的典型結(jié)構(gòu)如圖10.2所示。主要由控制寄存器、狀態(tài)寄存器、數(shù)據(jù)輸入寄存器和數(shù)據(jù)輸出寄存器4部分組成??刂萍拇嫫骺刂萍拇嫫饔脕?lái)保存決定接口工作方式的控制信息。狀態(tài)寄存器狀態(tài)寄存器中的每一個(gè)狀態(tài)位都可以用來(lái)標(biāo)識(shí)傳輸過(guò)程中某一種錯(cuò)誤或當(dāng)前傳輸狀態(tài)。 數(shù)據(jù)寄存器數(shù)據(jù)輸入寄存器:在輸入過(guò)程中,串行數(shù)據(jù)一位一位地從傳輸線進(jìn)入串行接口的移位寄存器,經(jīng)過(guò)串入并出(串行輸入并行輸出)電路的轉(zhuǎn)換,當(dāng)接收完一個(gè)字符之后,數(shù)據(jù)就從移位寄存器傳送到數(shù)據(jù)輸入寄存器,等待CPU讀取。數(shù)據(jù)輸出寄存器:在輸出過(guò)程中,當(dāng)CPU輸出一個(gè)數(shù)據(jù)時(shí),先送到數(shù)據(jù)輸出緩沖寄存器,然后,數(shù)據(jù)由輸出寄存器傳到移位寄存器,經(jīng)過(guò)并入串出(并行輸入串行輸出)電路的轉(zhuǎn)換一位一位地通過(guò)輸出傳輸線送到對(duì)方。串行接口中的數(shù)據(jù)輸入移位寄存器和數(shù)據(jù)輸出移位寄存器是為了和數(shù)據(jù)輸入緩沖寄存器和數(shù)據(jù)輸出緩沖寄存器配對(duì)使用的。在學(xué)習(xí)串行通信方式時(shí),很有必要了解一下有關(guān)串行通信中的一些基本概念,這里僅做簡(jiǎn)單介紹。2. 串行通信中使用的術(shù)語(yǔ)發(fā)送時(shí)鐘和接收時(shí)鐘把二進(jìn)制數(shù)據(jù)序列稱為比特組,由發(fā)送器發(fā)送到傳輸線上,再由接收器從傳輸線上接收。二進(jìn)制數(shù)據(jù)序列在傳輸線上是以數(shù)字信號(hào)形式出現(xiàn),即用高電平表示二進(jìn)制數(shù)1,低電平表示二進(jìn)制數(shù)0。而且每一位持續(xù)的時(shí)間是固定的,在發(fā)送時(shí)是以發(fā)送時(shí)鐘作為數(shù)據(jù)位的劃分界限,在接收時(shí)是以接收時(shí)鐘作為數(shù)據(jù)位的檢測(cè)。 發(fā)送時(shí)鐘:串行數(shù)據(jù)的發(fā)送由發(fā)送時(shí)鐘控制,數(shù)據(jù)發(fā)送過(guò)程是:把并行的數(shù)據(jù)序列送入移位寄存器,然后通過(guò)移位寄存器由發(fā)送時(shí)鐘觸發(fā)進(jìn)行移位輸出,數(shù)據(jù)位的時(shí)間間隔可由發(fā)送時(shí)鐘周期來(lái)劃分。接收時(shí)鐘:串行數(shù)據(jù)的接收是由接收時(shí)鐘來(lái)檢測(cè),數(shù)據(jù)接收過(guò)程是:傳輸線上送來(lái)的串行數(shù)據(jù)序列由接收時(shí)鐘作為移位寄存器的觸發(fā)脈沖,逐位打入移位寄存器。DTE和DCE數(shù)據(jù)終端設(shè)備(data terminal equipment,DTE):是對(duì)屬于用戶所有聯(lián)網(wǎng)設(shè)備和工作站的統(tǒng)稱,它們是數(shù)據(jù)的源或目的或者即是源又是目的。例如:數(shù)據(jù)輸入/輸出設(shè)備,通信處理機(jī)或各種大、中、小型計(jì)算機(jī)等。DTE可以根據(jù)協(xié)議來(lái)控制通信的功能。數(shù)據(jù)電路終端設(shè)備或數(shù)據(jù)通信設(shè)備(data circuit-terminating equipment或data communication equipment,DCE):前者為CCITT標(biāo)準(zhǔn)所用,后者為EIA標(biāo)準(zhǔn)所用。DCE是對(duì)網(wǎng)絡(luò)設(shè)備的統(tǒng)稱,該設(shè)備為用戶設(shè)備提供入網(wǎng)的連接點(diǎn)。自動(dòng)呼叫/應(yīng)答設(shè)備、調(diào)制解調(diào)器Modem和其他一些中間設(shè)備均屬DCE。信道信道是傳輸信息所經(jīng)過(guò)的通道,是連接2個(gè)DTE的線路,它包括傳輸介質(zhì)和有關(guān)的中間設(shè)備。 3. 串行通信中的工作方式串行通信中的工作方式分為:?jiǎn)喂ねㄐ欧绞健腚p工通信方式和全雙工通信方式圖10.3 串行通信工作方式4. 同步通信和異步通信方式串行通信分為2種類型:一種是同步通信方式,另一種是異步通信方式。同步通信方式同步通信方式的特點(diǎn)是:由一個(gè)統(tǒng)一的時(shí)鐘控制發(fā)送方和接收方,若干字符組成一個(gè)信息組,字符要一個(gè)接著一個(gè)傳送;沒(méi)有字符時(shí),也要發(fā)送專用的“空閑”字符或者是同步字符,因?yàn)橥絺鬏敃r(shí),要求必須連續(xù)傳送字符,每個(gè)字符的位數(shù)要相同,中間不允許有間隔。同步傳輸?shù)奶卣魇牵涸诿拷M信息的開始(常稱為幀頭)要加上l一2個(gè)同步字符,后面跟著8位的字符數(shù)據(jù)。同步通信的數(shù)據(jù)格式如圖10.4所示。10.4 同步通信字符格式圖傳送時(shí)每個(gè)字符的后面是否要奇、偶校驗(yàn),由初始化時(shí)設(shè)同步方式字決定。異步通信方式異步通信的特點(diǎn)是:字符是一幀一幀的傳送,每一幀字符的傳送靠起始位來(lái)同步。在數(shù)據(jù)傳輸過(guò)程中,傳輸線上允許有空字符。所謂異步通信,是指通信中兩個(gè)字符的時(shí)間間隔是不固定的,而在同一字符中的兩個(gè)相鄰代碼間的時(shí)間間隔是固定的通信。異步通信中發(fā)送方和接收方的時(shí)鐘頻率也不要求完全一樣,但不能超過(guò)一定的允許范圍,異步傳輸時(shí)的數(shù)據(jù)格式如圖10.5所示。圖10.5 異步通信字符格式字符的前面是一位起始位(低電平),之后跟著58位的數(shù)據(jù)位,低位在前、高位在后。數(shù)據(jù)位后是奇、偶校驗(yàn)位,最后是停止位(高電平)。是否要奇、偶校驗(yàn)位,以及停止位設(shè)定的位數(shù)是1,1.5位或2位都由初始化時(shí)設(shè)置異步方式字來(lái)決定。5. 通信中必須遵循的規(guī)定字符格式的規(guī)定通信中,傳輸字符的格式要按規(guī)定寫,圖10.5是異步通信的字符格式。在異步傳輸方式每個(gè)字符在傳送時(shí),前面必須加一個(gè)起始位,后面必須加停止位來(lái)結(jié)束,停止位可以為1位,1.5位,2位。奇、偶校驗(yàn)位可以加也可以不加。比特率:比特率作為串行傳輸中數(shù)據(jù)傳輸速度的測(cè)量單位,用每秒傳輸?shù)亩M(jìn)制數(shù)的位數(shù)bit/s(位/秒)來(lái)表示。波特率:波特率是用來(lái)描述每秒鐘內(nèi)發(fā)生二進(jìn)制信號(hào)的事件數(shù),用來(lái)表示一個(gè)二進(jìn)制數(shù)據(jù)位的持續(xù)時(shí)間。 有關(guān)在遠(yuǎn)距離傳輸時(shí),數(shù)字信號(hào)送到傳輸介質(zhì)之前要調(diào)制為模擬信號(hào),再用比特率來(lái)測(cè)量傳輸速度就不那么方便直觀了。因此引入波特率作為速率測(cè)量單位即:波特率1/二進(jìn)制位的持續(xù)時(shí)間比特率可以大于或等于波特率,假定用正脈沖表示“1”,負(fù)脈沖表示“0”,這時(shí)比特率就等于波特率。假如每秒鐘要傳輸10個(gè)數(shù)據(jù)位,則其速率為l0波特,若發(fā)送到傳輸介質(zhì)時(shí),把每位數(shù)據(jù)用10個(gè)脈沖來(lái)調(diào)制,則比特率就為100b/s,即比特率大于波特率。發(fā)送時(shí)鐘與波特率的關(guān)系是:時(shí)鐘頻率72波特率(n可以是l,16,32,64。,2為波特率因子,是傳輸一位二進(jìn)制數(shù)時(shí)所用的時(shí)鐘周期數(shù)。不同芯片的n由手冊(cè)中給出)。波特率是表明傳輸速度的標(biāo)準(zhǔn),國(guó)際上規(guī)定的一個(gè)標(biāo)準(zhǔn)的波特率系列是:110,300,600,1200,1800,2400,4800,9600,19200。大多數(shù)CRT顯示終端能在1109600波特率下工作,異步通信允許發(fā)送方和接收方的時(shí)鐘誤差或波特率誤差在45。6.信號(hào)的調(diào)制與解調(diào)計(jì)算機(jī)對(duì)數(shù)字信號(hào)的通信,要求傳輸線的頻帶很寬,但在實(shí)際的長(zhǎng)距離傳輸中,通常是利用電話線來(lái)傳輸,電話線的頻帶一般都比較窄。為保證信息傳輸?shù)恼_,都普遍采用調(diào)制解調(diào)器(modem)來(lái)實(shí)現(xiàn)遠(yuǎn)距離的信息傳輸,現(xiàn)在還有很多家庭上網(wǎng)仍使用modem連接。調(diào)制解調(diào)器,顧名思義主要是完成調(diào)制和解調(diào)的功能。經(jīng)過(guò)調(diào)制器(modulator)可把數(shù)字信號(hào)轉(zhuǎn)換為模擬信號(hào),經(jīng)過(guò)解調(diào)器(demodulator)把模擬信號(hào)轉(zhuǎn)換為數(shù)字信號(hào)。使用modem實(shí)現(xiàn)了對(duì)通信雙方信號(hào)的轉(zhuǎn)換過(guò)程,如圖10.6所示。現(xiàn)在modem的數(shù)據(jù)傳輸速率理論值可達(dá)72Kb/s,而實(shí)際速率僅為33.6Kb/s圖10.6 調(diào)制與解調(diào)過(guò)程10.2 可編程并行接口電路Intel 8255A10.2.1 8255A的主要性能和內(nèi)部結(jié)構(gòu)8255A是為Intel公司的80系列微機(jī)配套的通用可編程并行接口芯片,具有三個(gè)可編程的端口(A端口、B端口和C端口),每個(gè)端口8條線,共有24條I/O引腳,也可分為2組工作,每組12條線,并有三種工作方式??删幊淌侵缚赏ㄟ^(guò)軟件設(shè)置芯片的工作方式,因此這個(gè)芯片在與外部設(shè)備相連接時(shí),通常不需要附加太多的外部邏輯電路,這給用戶的使用帶來(lái)很大方便。芯片的主要技術(shù)性能如下: (1) 輸入、輸出電平與TTL電平完全兼容。 (2) 時(shí)序特性好。 (3) 部分位可以直接置“1”/置“0”,便于實(shí)現(xiàn)控制接口使用。 (4) 單一的+5 V電源。8255A的內(nèi)部結(jié)構(gòu)框圖如圖10.7(a)所示,圖10.7(b)為8255A的外引腳圖。從圖中可以看到,8255A主要由4部分組成。圖10.7 8255內(nèi)部結(jié)構(gòu)和引腳圖(a) 8255A內(nèi)部結(jié)構(gòu);(b) 8255A外引腳圖1. 三個(gè)獨(dú)立的數(shù)據(jù)口8255A的三個(gè)數(shù)據(jù)口分別是A端口、B端口、C端口,它們彼此獨(dú)立,都是8位的數(shù)據(jù)口,用來(lái)完成和外設(shè)之間的信息交換。三個(gè)口在使用上有所不同。1) A端口A端口對(duì)應(yīng)一個(gè)8位的數(shù)據(jù)輸入鎖存器和一個(gè)8位的數(shù)據(jù)輸出鎖存器和緩沖器。因此A端口適合用在雙向的數(shù)據(jù)傳輸場(chǎng)合,用A端口傳送數(shù)據(jù),不管是輸入還是輸出,都可以鎖存。2) B端口和C端口這兩個(gè)口分別是由一個(gè)8位的數(shù)據(jù)輸入緩沖器和一個(gè)8位的數(shù)據(jù)輸出鎖存器和緩沖器組成。因此用B端口和C端口傳送數(shù)據(jù)作輸出端口時(shí),數(shù)據(jù)信息可以實(shí)現(xiàn)鎖存功能;而用作輸入口時(shí),則不能對(duì)數(shù)據(jù)實(shí)現(xiàn)鎖存,這一點(diǎn)在使用中要注意。在實(shí)際應(yīng)用中,A端口和B端口通常作為獨(dú)立的輸入口和輸出口,而C端口常用來(lái)配合A端口和B端口的工作使用。C端口分成兩個(gè)4位的端口,這兩個(gè)4位的端口分別作為A端口和B端口的控制信號(hào)和輸入狀態(tài)信號(hào)使用。2. A組控制電路和B組控制電路控制電路分成A組控制和B組控制兩組,A組控制電路控制A端口和C端口的高4位(PC4PC7)。B組控制電路控制B端口和C端口的低4位(PC0PC3)。這兩組控制電路的作用是:由它們內(nèi)部的控制寄存器接收CPU輸出的方式控制命令字,還接收來(lái)自讀/寫控制邏輯電路的讀/寫命令,根據(jù)控制命令決定A組和B組的工作方式和讀/寫操作。3. 讀寫控制邏輯電路這部分電路是用來(lái)完成對(duì)8255A內(nèi)部三個(gè)數(shù)據(jù)口的譯碼工作,由CPU的地址總線A1、A0和8255A的片選信號(hào)CS和WR、RD信號(hào)組合后產(chǎn)生控制命令,并將產(chǎn)生的控制命令傳送給A組和B組的控制電路,從而完成對(duì)數(shù)據(jù)信息的傳輸控制。4. 數(shù)據(jù)總線緩沖器這是一個(gè)雙向、三態(tài)的8位數(shù)據(jù)總線緩沖器,是8255A和系統(tǒng)總線相連接的通道,用來(lái)傳送輸入/輸出的數(shù)據(jù)、CPU發(fā)出的控制字以及外設(shè)的狀態(tài)信息??傊?,8255A與CPU之間的所有信息傳輸都要經(jīng)過(guò)數(shù)據(jù)總線緩沖器。10.2.2 8255A的外部特性8255A是40條引腳的雙列直插式芯片,引腳排列如圖10.7(b)所示。單一的+5 V電源,使用時(shí)要注意它的+5V電源引腳是第26腳,地線引腳是第7腳,它不像大多數(shù)TTL芯片電源和地線在右上角和左下角的位置,除了電源和地線之外,其他引腳的信號(hào)按連接的功能可分為兩大組。1. 與CPU相連的引腳RESET(35PIN):芯片的復(fù)位信號(hào),高電平時(shí)有效。復(fù)位后把8255A內(nèi)部的所有寄存器都清0,并將三個(gè)數(shù)據(jù)口自動(dòng)設(shè)置為輸入口。CS(6PIN):片選信號(hào),低電平時(shí)有效。只有當(dāng)CS=0時(shí),芯片被選中,才能對(duì)8255A進(jìn)行讀、寫操作。RD(5PIN):讀信號(hào),低電平有效。只有當(dāng)CS=0,RD=0,才允許從8255A的三個(gè)端口中讀取數(shù)據(jù)。WR(36PIN):寫信號(hào),低電平有效。只有當(dāng)CS=0,WR=0,才允許從8255A的三個(gè)端口寫入數(shù)據(jù)或者是寫入控制字。A1、A0(8,9PIN):端口譯碼信號(hào)。用來(lái)選擇8255A內(nèi)部的三個(gè)數(shù)據(jù)端口和一個(gè)控制端口的地址。其中對(duì)控制口只能進(jìn)行寫操作。(1) 當(dāng)A1A0=00時(shí),選中A端口。(2) 當(dāng)A1A0=01時(shí),選中B端口。(3) 當(dāng)A1A0=10時(shí),選中C端口。(4) 當(dāng)A1A0=11時(shí),選中控制端口。A1、A0與讀、寫信號(hào)組合對(duì)各端口所執(zhí)行的操作如表10-1所示。D7D0(2734PIN):雙向三態(tài)8位數(shù)據(jù)線,與系統(tǒng)的數(shù)據(jù)總線相連接。8255A的數(shù)據(jù)線為8條,這樣8位的接口芯片在與8086外部數(shù)據(jù)線為16條的CPU相連接時(shí),應(yīng)考慮接口芯片本身對(duì)地址的要求。由于在8086這樣的16位外部總線系統(tǒng)中,CPU在進(jìn)行數(shù)據(jù)傳輸時(shí),低8位對(duì)應(yīng)一個(gè)偶地址,高8位對(duì)應(yīng)一個(gè)奇地址。如果將8255A的數(shù)據(jù)線D7D0與8086CPU的數(shù)據(jù)總線的低8位相連的話,從CPU這邊看來(lái),要求8255A的4個(gè)端口地址都應(yīng)為偶地址,這樣才能保證對(duì)8255A的端口的讀/寫能在一個(gè)總線周期內(nèi)完成,但又要滿足8255A本身對(duì)4個(gè)端口規(guī)定的地址要求是00,01,10,11。因此將8255A的A1和A0分別與8086系統(tǒng)總線的A2和A1相連,而將最低位A0總設(shè)置為0。2. 和外設(shè)端相連的引腳PA7PA0(3740 PIN,l4PIN):A端口的輸入/輸出引腳PB7PB0(2518 PIN):B端口的輸入/輸出引腳PC7PC0(1013,1714 PIN):C端口的輸入/輸出引腳10.2.3 8255A的控制字和編程由CPU執(zhí)行輸出指令,向8255A的端口輸出不同的控制字來(lái)決定它的工作方式??刂谱址譃閮煞N,分別稱為方式選擇控制字和端口C置1/置0控制字。根據(jù)控制寄存器的D7位的狀態(tài)決定是哪一種控制字。1. 方式選擇控制字方式選擇控制字用來(lái)決定8255A三個(gè)數(shù)據(jù)端口各自的工作方式,它的格式如圖10.8所示。它由一個(gè)8位的寄存器組成。圖10.8 8255A的方式選擇控制字2. C端口置1/置0控制字8255A在和CPU傳輸數(shù)據(jù)的過(guò)程中,經(jīng)常將C端口的某幾位作為控制位或狀態(tài)位來(lái)使用,從而配合A端口或B端口的工作。為了方便用戶,在8255A芯片初始化時(shí),C端口置1/置0控制字可以單獨(dú)設(shè)置C端口的某一位為0或某一位為1??刂谱值腄7位為“0”時(shí),是C端口置1/置0控制字中的標(biāo)識(shí)位,具體的格式如圖10.9所示。 圖10.9 8255A的C端口置1/置0控制字10.2.4 8255A的工作方式8255A有三種工作方式,分別稱為方式0,方式1和方式2。其中A端口可以工作在三種方式中的任一種;B端口只能工作在方式0和方式1;C端口通常作為控制信號(hào)使用,配合A端口和B端口的工作。每種工作方式的具體內(nèi)容如下所述。1. 方式0:基本的輸入/輸出方式方式0之所以被稱為基本的輸入/輸出方式,是因?yàn)樵谶@種方式下,A端口、B端口和C端口(C端口分為2個(gè)4位使用)都可提供簡(jiǎn)單的輸入和輸出操作,對(duì)每個(gè)端口不需要固定的應(yīng)答式聯(lián)絡(luò)信號(hào)。工作在方式0時(shí),在程序中可直接使用輸入指令(IN)和輸出(OUT)指令對(duì)各端口進(jìn)行讀寫。方式0的基本定義是2個(gè)8位的端口和2個(gè)4位的端口。任何一個(gè)端口都可以作為輸入或輸出,輸出的數(shù)據(jù)可以被鎖存,輸入的數(shù)據(jù)不能鎖存。方式0的輸入時(shí)序如圖10.10所示,輸出時(shí)序如圖10.11所示。從輸入時(shí)序圖可以看到,對(duì)各信號(hào)的要求是:(1) 地址信號(hào)要領(lǐng)先于RD信號(hào)到達(dá),8255A在RD信號(hào)有效以后,最長(zhǎng)經(jīng)過(guò)250 ns的時(shí)間,就可以使數(shù)據(jù)在數(shù)據(jù)總線上得到穩(wěn)定。(2) 在一般的微處理器系統(tǒng)中都配備了地址鎖存器,保證CPU對(duì)先發(fā)出的地址能夠鎖存,可以滿足地址信號(hào)先于RD信號(hào)到達(dá),對(duì)于從讀信號(hào)有效到數(shù)據(jù)穩(wěn)定的時(shí)間,應(yīng)由輸入設(shè)備給予滿足。在使用時(shí)應(yīng)注意,方式0對(duì)輸入數(shù)據(jù)不做鎖存。圖10.10 8255A方式0輸入時(shí)序圖10.11 8255A方式0輸出時(shí)序從輸出時(shí)序圖可以看到,為了將數(shù)據(jù)能可靠地輸出到8255A,對(duì)各信號(hào)的要求是:(1) 地址信號(hào)必須在寫信號(hào)之前有效,同時(shí)要求在信號(hào)有效(也就是為低電平時(shí))期間內(nèi),地址信號(hào)不能發(fā)生變化,要保證一直有效,直到在撤消(變高后)后的20 ns時(shí)間以后,地址信號(hào)才允許發(fā)生變化。(2) 寫脈沖 (為低電平時(shí)間)的寬度最小要求是400 ns。(3) 要求數(shù)據(jù)也必須在寫信號(hào)之前最少有100 ns時(shí)間出現(xiàn)在數(shù)據(jù)總線上。寫信號(hào)撤消后,數(shù)據(jù)的最小保持時(shí)間是30 ns。滿足上述條件,寫信號(hào)結(jié)束后,最長(zhǎng)經(jīng)過(guò)350 ns的時(shí)間,CPU輸出的數(shù)據(jù)就可以出現(xiàn)在8255A的指定端口。方式0一般用于無(wú)條件傳送的場(chǎng)合,不需要應(yīng)答式聯(lián)絡(luò)信號(hào),外設(shè)總是處于準(zhǔn)備好的狀態(tài)。也可以用作查詢式傳送,查詢式傳送時(shí),需要有應(yīng)答信號(hào)??梢詫端口、B端口作為數(shù)據(jù)口使用。把C端口分為2部分,其中4位規(guī)定為輸出,用來(lái)輸出一些控制信息,另外4位規(guī)定為輸入,用來(lái)讀入外設(shè)的狀態(tài)。利用C端口配合A端口和B端口完成查詢式的I/O操作。2. 方式1:選通輸入/輸出方式在這種方式下,當(dāng)A端口和B端口進(jìn)行輸入輸出時(shí),必須利用C端口提供的選通和應(yīng)答信號(hào),而且這些信號(hào)與C端口中的某些位之間有著固定的對(duì)應(yīng)關(guān)系,這種關(guān)系是硬件本身決定的不是軟件可以改變的。由于工作在方式l時(shí),要由C端口中的固定位來(lái)作為選通和應(yīng)答等控制信號(hào),因此稱方式1為選通的輸入/輸出方式。方式1的基本定義是,分成2組(A組和B組),每組包含一個(gè)8位的數(shù)據(jù)端口和1個(gè)4位的控制/數(shù)據(jù)端口。8位的數(shù)據(jù)端口既可以作為輸入,也可以作為輸出,輸入和輸出都可以被鎖存。4位的控制/數(shù)據(jù)端口用于傳送8位數(shù)據(jù)端口的控制和狀態(tài)信息。1) 選通的輸入方式方式1在選通輸入方式下對(duì)應(yīng)的控制信號(hào)如圖10.12所示。圖10.13是方式1在選通輸入方式的工作時(shí)序圖。選通輸入方式的工作過(guò)程是:當(dāng)外設(shè)的數(shù)據(jù)已送到8255A某個(gè)端口的數(shù)據(jù)線上時(shí),就發(fā)出選通輸入信號(hào)STB,將數(shù)據(jù)通過(guò)A端口或B端口鎖存到8255A的數(shù)據(jù)輸入寄存器,STB信號(hào)的寬度至少是500 ns。STB信號(hào)變低后最多經(jīng)過(guò)300 ns時(shí)間,使輸入緩沖器滿信號(hào)IBF變?yōu)楦唠娖剑鐖D10.13中表示的箭頭。輸入緩沖器滿意味著將阻止外設(shè)輸入新的數(shù)據(jù),可供CPU來(lái)查詢。在選通輸入信號(hào)結(jié)束后,最多經(jīng)過(guò)300 ns時(shí)間,向CPU發(fā)出中斷請(qǐng)求信號(hào)(要在中斷允許的情況下),如圖10.13中表示的箭頭,使中斷請(qǐng)求信號(hào)INTR變高,CPU可以響應(yīng)中斷。當(dāng)CPU響應(yīng)中斷后才發(fā)出讀信號(hào)RD,將數(shù)據(jù)讀入到CPU中,讀信號(hào)有效(低電平為有效)后,最多經(jīng)過(guò)400 ns時(shí)間,STB就清除中斷請(qǐng)求,使中斷請(qǐng)求信號(hào)變低,如圖10.13中表示的箭頭。當(dāng)讀信號(hào)結(jié)束后,才使輸入緩沖器滿信號(hào)IBF變低,如圖10.13中表示的箭頭。IBF變低表明輸入緩沖器已空,通知外設(shè)可以輸入新的數(shù)據(jù)。圖10.12 方式1選通輸入下對(duì)應(yīng)的控制信號(hào)(a) 對(duì)A端口;(b) 對(duì)B端口圖10.13 8255A方式l輸入時(shí)序當(dāng)8255A的A端口和B端口工作在選通輸入方式時(shí),對(duì)應(yīng)的C端口固定分配,規(guī)定是PC3PC5分配給A端口,PC0PC2分配給B端口,C端口剩下的2位PC7、PC6可作為簡(jiǎn)單的輸入/輸出線使用。控制字的D3位為“1”時(shí),PC7、PC6作輸入;控制字的D3位為“0”時(shí),PC7、PC6作輸出。在方式1選通輸入方式時(shí),各控制信號(hào)的意義如下:STB(Strobe):選通輸入信號(hào),低電平有效。A組方式控制字中對(duì)應(yīng)PC4;B組方式控制字中對(duì)應(yīng)PC2。當(dāng)該信號(hào)有效時(shí),從外部設(shè)備來(lái)的8位數(shù)據(jù)送入到8255A的輸入緩沖器中,負(fù)脈沖寬度最小是500 ns。IBF(Input Buffer Full):輸入緩沖器滿信號(hào),高電平有效。A組方式控制字中對(duì)應(yīng)PC5;B組方式控制字中對(duì)應(yīng)PC1。這是8255A送給外設(shè)的聯(lián)絡(luò)信號(hào),當(dāng)8255A的輸入緩沖區(qū)已有一個(gè)新數(shù)據(jù)后,輸出這個(gè)信號(hào)供CPU查詢。該信號(hào)在選通輸入信號(hào)STB變低后,300 ns時(shí)間內(nèi)即變?yōu)橛行У母唠娖?。在RD信號(hào)撤消后的300 ns時(shí)間內(nèi)IBF信號(hào)才撤消,變?yōu)闊o(wú)效的低電平,這樣保證了數(shù)據(jù)傳輸?shù)目煽啃?。INTR(Interrupt Request):中斷請(qǐng)求信號(hào),高電平有效。A組方式控制字中對(duì)應(yīng)PC3;B組方式控制字中對(duì)應(yīng)PC0。這是8255A向CPU發(fā)出的中斷請(qǐng)求信號(hào)。當(dāng)STB信號(hào)撤消變?yōu)楦唠娖胶笞疃?00 ns時(shí)間內(nèi),并且IBF信號(hào)也為高電平,INTR信號(hào)產(chǎn)生變?yōu)橛行У母唠娖?。INTR信號(hào)變高后可以請(qǐng)求CPU讀取數(shù)據(jù)。當(dāng)CPU發(fā)出的RD信號(hào)有效后,400 ns的時(shí)間內(nèi)INTR信號(hào)將撤消,變?yōu)榈碗娖健NTE(Interrupt Enable):中斷允許信號(hào),高電平有效。該信號(hào)為高時(shí),允許中斷請(qǐng)求,為低時(shí)則屏蔽中斷請(qǐng)求。INTE的狀態(tài)是用軟件通過(guò)由C端口置1/置0控制字來(lái)控制的,在A組中,使PC4置“1”后INTEA變高;在B組中,使PC2置“1”后INTEB變高,A端口和B端口才允許中斷。如果PC4和PC2都置“0”,與之對(duì)應(yīng)的INTE信號(hào)為低,則禁止中斷。對(duì)于這種選通的輸入方式,如果采用查詢式輸入時(shí),CPU先查詢8255A的輸入緩沖器是否滿了,也就是IBF是否為高? 如果輸入緩沖器滿信號(hào)IBF為高,則CPU就可以從8255A讀入數(shù)據(jù)。如果采用中斷方式傳送數(shù)據(jù)時(shí),應(yīng)該先用C端口置1/置0的控制字使相應(yīng)的端口允許中斷,也就是要使PC4或PC2置1。2) 選通的輸出方式方式1在選通輸出情況下對(duì)應(yīng)的控制信號(hào)如圖10.14所示,圖10.15是方式1選通輸出情況下的工作時(shí)序圖。這種方式的工作過(guò)程與選通輸入的情況相類似。圖10.14 方式l輸出時(shí)C端口對(duì)A、B端口的控制(a) 對(duì)A端口;(b) 對(duì)B端口圖10.15 8255A方式1輸出時(shí)序當(dāng)8255A的A端口和B端口工作在選通輸出方式時(shí),對(duì)應(yīng)的C端口也是固定分配,規(guī)定是PC3、PC6、PC7分配給A端口;PC2、PC1、PC0分配給B端口,剩下的2位PC4、PC5可作為簡(jiǎn)單的輸入/輸出線使用。當(dāng)控制字的D3位為“1”時(shí),PC4、PC5作輸入;當(dāng)控制字的D3位為“0”時(shí),PC4、PC5作輸出。 方式1選通輸出方式時(shí),各控制信號(hào)的意義如下:OBF(Output Buffer Fu11):輸出緩沖器滿信號(hào),低電平有效。A組方式控制字中對(duì)應(yīng)PC7;B組方式控制字中對(duì)應(yīng)PC1,這是8255A與外設(shè)的聯(lián)絡(luò)信號(hào)。當(dāng)CPU向8255A的端口中傳送了數(shù)據(jù)以后,由8255A向外設(shè)發(fā)出低電平的OBF信號(hào),通知外設(shè)可以把數(shù)據(jù)取走。由輸出指令產(chǎn)生的寫信號(hào)WR的上升沿出現(xiàn)后,最多經(jīng)過(guò)650 ns時(shí)間,將OBF信號(hào)置成有效即變?yōu)榈碗娖?,如圖10.15中表示的箭頭。當(dāng)應(yīng)答信號(hào)ACK變?yōu)橛行У牡碗娖胶?50 ns時(shí)間,OBF信號(hào)撤消變?yōu)楦唠娖?,如圖10.15中表示的箭頭。ACK(Acknowledge):數(shù)據(jù)接收應(yīng)答信號(hào),低電平有效。A組方式控制字中對(duì)應(yīng)PC6;B組方式控制字中對(duì)應(yīng)PC2,這是外設(shè)的響應(yīng)信號(hào),當(dāng)CPU輸出給8255A的數(shù)據(jù)已由外設(shè)接收后,外設(shè)就向8255A回送一個(gè)低電平的應(yīng)答信號(hào)ACK。INTR:中斷請(qǐng)求信號(hào),高電平有效。A組方式控制字中對(duì)應(yīng)PC3;B組方式控制字中對(duì)應(yīng)PC0。當(dāng)外設(shè)已經(jīng)接受了CPU輸出的數(shù)據(jù)后,由8255A向CPU發(fā)出中斷請(qǐng)求,要求CPU輸出新的數(shù)據(jù)。當(dāng)ACK撤消后為高電平,OBF也為高電平,中斷允許信號(hào)INTE也為高時(shí),INTR中斷請(qǐng)求信號(hào)被置位為高電平,如圖10.19中表示的箭頭。作為請(qǐng)求CPU進(jìn)行下一次數(shù)據(jù)輸出的中斷請(qǐng)求信號(hào),是在WR有效的下降沿出現(xiàn)后850 ns時(shí)間內(nèi)使它變?yōu)闊o(wú)效的低電平,如圖10.19中表示的箭頭。INTE:中斷允許信號(hào),高電平有效。當(dāng)該信號(hào)為“1”時(shí),允許中斷,為“0”時(shí),A端口(B端口)處于中斷屏蔽狀態(tài),即不發(fā)出中斷請(qǐng)求信號(hào)INTR。在使用時(shí),中斷允許信號(hào)INTE是用軟件通過(guò)對(duì)C端口置1/置0的控制字來(lái)設(shè)置的。當(dāng)PC6置1時(shí),A端口允許中斷;PC2置1,B端口允許中斷。反之,如果A、B端口所對(duì)應(yīng)的PC6、PC2置0時(shí),則處于中斷屏蔽狀態(tài),即不允許中斷。當(dāng)8255A工作在方式l輸出選通方式時(shí),一般是采用中斷方式與CPU通信。從圖10.19方式1輸出工作時(shí)序圖中可以看到,CPU響應(yīng)中斷以后,就向8255A輸出數(shù)據(jù),寫信號(hào)出現(xiàn)。當(dāng)寫信號(hào)WR撤消,其上升沿一方面撤消中斷請(qǐng)求信號(hào)INTR,如圖10.19中表示的箭頭使INTR變低,表示CPU對(duì)上一次中斷已經(jīng)響應(yīng)過(guò)。另一方面使OBF信號(hào)變?yōu)橛行У牡碗娖剑鐖D10.19中表示的箭頭,以通知外設(shè)可以接收下一個(gè)數(shù)據(jù)。實(shí)際上,CPU在發(fā)出寫信號(hào)后要經(jīng)過(guò)最長(zhǎng)350 ns時(shí)間,數(shù)據(jù)才能出現(xiàn)在端口的輸出緩沖器中。當(dāng)外設(shè)收到數(shù)據(jù)后,便發(fā)出一個(gè)ACK信號(hào),ACK信號(hào)有效后使OBF變成無(wú)效的高電平,如圖10.19中表示的箭頭,表示數(shù)據(jù)已經(jīng)取走,當(dāng)前緩沖器空。ACK信號(hào)結(jié)束時(shí)使INTR信號(hào)變?yōu)橛行У母唠娖?,如圖10.19中表示的箭頭,向CPU發(fā)出中斷請(qǐng)求信號(hào),從而開始新的數(shù)據(jù)輸出過(guò)程。3. 方式2:帶選通的雙向傳輸方式在雙向的傳輸方式中,8255A可以向外設(shè)發(fā)送數(shù)據(jù),同時(shí)CPU通過(guò)這8位數(shù)據(jù)線又接收外設(shè)的數(shù)據(jù),因此稱為雙向的傳輸方式。方式2的基本定義是,只能適用于A端口,一個(gè)8位的雙向端口(A端口)和1個(gè)5位的控制端口(C端口)。A端口的輸入和輸出都可以被鎖存。5位的控制端口用于傳送8位雙向端口的控制和狀態(tài)信息。當(dāng)A端口工作在方式2時(shí),由PA7PA0作為8位數(shù)據(jù)線,因?yàn)橐蒀端口對(duì)A端口進(jìn)行控制,所以稱為帶選通的雙向傳輸方式。C端口對(duì)A端口的控制信號(hào)分別如圖10.16和圖10.17所示。在這種方式下,C端口中有5位PC7PC3作為控制信號(hào)和狀態(tài)信息使用,剩下的3位PC2PC0可作為簡(jiǎn)單的輸入/輸出線使用。當(dāng)控制字的D0位為1時(shí),PC2PC0作輸入;當(dāng)控制字的D0位為0時(shí),PC2PC0作輸出。STB:選通信號(hào),低電平有效。對(duì)應(yīng)于PC4,由外設(shè)提供給8255A。該信號(hào)負(fù)責(zé)把外設(shè)送到8255A的數(shù)據(jù)送入輸入鎖存器。IBF:輸入緩沖器滿信號(hào),高電平有效。對(duì)應(yīng)PC5,是8255A送給CPU的狀態(tài)信息,供CPU查詢用。當(dāng)該信號(hào)有效時(shí),表示當(dāng)前已經(jīng)有一個(gè)新的數(shù)據(jù)送到了輸入鎖存器中,CPU可以取走。OBF:輸出緩沖器滿信號(hào),低電平有效。對(duì)應(yīng)PC7,由8255A發(fā)給外設(shè)的選通信號(hào),當(dāng)OBF有效時(shí),表明CPU已經(jīng)將一個(gè)數(shù)據(jù)寫入8255A的A端口中,通知外設(shè)可以取走數(shù)據(jù)。INTR:中斷請(qǐng)求信號(hào),高電平有效。對(duì)應(yīng)PC3,不論A端口工作在輸入方式還是工作在輸出方式,當(dāng)一個(gè)操作完成,并且要進(jìn)入下一個(gè)操作時(shí),8255A都要向CPU發(fā)出中斷請(qǐng)求信號(hào)。ACK:數(shù)據(jù)接收應(yīng)答信號(hào),低電平有效。對(duì)應(yīng)PC6,這是外設(shè)對(duì)信號(hào)OBF的響應(yīng)信號(hào),該信號(hào)為低電平時(shí),使A端口的輸出緩沖器打開,送出數(shù)據(jù)到外設(shè)。否則,當(dāng)該信號(hào)為高電平時(shí),方式2時(shí)輸出緩沖器處于高阻狀態(tài)。圖10.16 方式2時(shí)C端口對(duì)A端口的控制信號(hào)INTEl:輸出中斷允許信號(hào)。當(dāng)該信號(hào)為“1”時(shí),允許8255A向CPU發(fā)出由A端口輸出數(shù)據(jù)的中斷請(qǐng)求信號(hào)。反之,如果該信號(hào)為“0”時(shí),即使輸出緩沖器空,也不允許8255A向CPU發(fā)中斷請(qǐng)求信號(hào)。INTEl信號(hào)的置1或置0,是用軟件使C端口的PC6置1或置0來(lái)實(shí)現(xiàn)的。INTE2:輸入中斷允許信號(hào)。當(dāng)該信號(hào)為“1”時(shí),允許8255A中A端口的輸入處于中斷允許狀態(tài),反之,如果該信號(hào)為“0”時(shí),A端口的輸入處于中斷屏蔽狀態(tài),即不允許中斷。INTE2信號(hào)的置1或置0,同樣是用軟件通過(guò)C端口的PC4置1或置0來(lái)實(shí)現(xiàn)。通過(guò)仔細(xì)分析方式2的工作時(shí)序圖10.17,會(huì)發(fā)現(xiàn)方式2的時(shí)序基本相當(dāng)于方式1的選通輸入時(shí)序和選通輸出的時(shí)序的組合。從圖10.17中可以看到,對(duì)于輸入過(guò)程,當(dāng)外設(shè)向A端口送來(lái)數(shù)據(jù)時(shí),選通信號(hào)STB也跟著有效變?yōu)榈碗娖?,選通信號(hào)將數(shù)據(jù)鎖存到8255A的A端口的輸入鎖存器中。同樣也正是由于STB信號(hào)的變低,才使得輸入緩沖器滿信號(hào)IBF變?yōu)楦唠娖?,如圖10.17中表示的箭頭。當(dāng)選通信號(hào)STB結(jié)束,也就是變?yōu)楦唠娖綍r(shí),又使中斷請(qǐng)求信號(hào)INTR有效,變?yōu)楦唠娖?,如圖10.17中表示的箭頭。當(dāng)CPU響應(yīng)輸入中斷,執(zhí)行輸入指令時(shí),會(huì)產(chǎn)生RD信號(hào),在讀信號(hào)RD有效期間,將數(shù)據(jù)從A端口讀入到CPU中。當(dāng)RD信號(hào)結(jié)束后輸入緩沖器滿信號(hào)IBF又變?yōu)榈碗娖?,如圖10.17中表示的箭頭。中斷請(qǐng)求信號(hào)INTR雖然為高也不再起作用。對(duì)于輸出過(guò)程,當(dāng)CPU響應(yīng)中斷后,在中斷服務(wù)程序中執(zhí)行輸出指令時(shí),將發(fā)出寫脈沖WR,WR的下降沿使中斷請(qǐng)求信號(hào)INTR變低,如圖10.17中表示的箭頭。WR信號(hào)結(jié)束其上升降沿使輸出緩沖器滿OBF信號(hào)變?yōu)橛行У牡碗娖?,如圖10.17中表示的箭頭。OBF信號(hào)送到外設(shè),當(dāng)外設(shè)接到OBF信號(hào)后,發(fā)出應(yīng)答信號(hào)ACK,如圖10.17中表示的箭頭。由ACK信號(hào)打開8255A的輸出緩沖器,使數(shù)據(jù)出現(xiàn)在A端口和數(shù)據(jù)總線上,ACK信號(hào)結(jié)束時(shí)使輸出緩沖器滿信號(hào)OBF變?yōu)闊o(wú)效的高電平,如圖10.17中表示的箭頭,從而開始下一個(gè)數(shù)據(jù)傳輸過(guò)程。由于方式2是雙向傳輸?shù)墓ぷ鞣绞?,如果一個(gè)外設(shè)既可以作為輸入,又可以作為輸出時(shí),采用8255A的方式2與它相連就十分方便。圖10.17 8255A方式2時(shí)序10.2.5 8255A的應(yīng)用舉例8255A初始化時(shí),先要寫入控制字,指定它的工作方式,然后才能通過(guò)編程,將總線上的數(shù)據(jù)從8255A輸出給外設(shè),或者將外部設(shè)備的數(shù)據(jù)通過(guò)8255A送到CPU中。舉一個(gè)通過(guò)8255A把CPU中的數(shù)據(jù)輸出到打印機(jī)上的例子。圖10.18(a)采用查詢方式傳送數(shù)據(jù),A端口作為8位數(shù)據(jù)的輸出端口,工作在方式1輸出方式。C端口作為狀態(tài)端口和控制端口使用,一般的打印機(jī)有3個(gè)主要的控制狀態(tài)信號(hào)線。BUSY表示打印機(jī)是否處于“忙”狀態(tài),高電平有效;DATASTB選通信號(hào),低電平有效,當(dāng)該信號(hào)有效時(shí),將CPU的數(shù)據(jù)輸出到打印機(jī)中;ACK是打印機(jī)對(duì)主機(jī)的應(yīng)答信號(hào),當(dāng)打印機(jī)接收完字符后發(fā)出這個(gè)信號(hào)。當(dāng)DATASTB信號(hào)有效時(shí),將BUSY信號(hào)置為高電平,ACK有效使BUSY置為低電平,圖中的單穩(wěn)定用來(lái)展寬脈沖,以滿足DATASTB打印機(jī)對(duì)信號(hào)要求的時(shí)間寬度。圖10.18 8255A與打印機(jī)的接口方式(a) 查詢方式電路圖;(b) 中斷方式電路圖A端口地址用PortA表示,C端口地址用PortC表示,控制端口地址用PortCtr表示。輸出500個(gè)字符程序段如下: MOVAL,0A8H;A端口方式1輸出,PC4輸入 MOVDX,PortCtr;控制口送DX OUTDX,AL;輸出控制字 MOVCX,500;傳送500個(gè)字符 MOVDI,Buffer;送字符緩沖區(qū)首址LOOP1:MOV AL,DI MOVDX,PortA ;A端口地址送DXOUTDX,AL;從A端口輸出一個(gè)字符MOVDX,PonC ;C端口地址送DXNEXT:IN AL,DX ;從C端口讀入打印機(jī)狀態(tài)TESTAL,10H ;測(cè)試BUSY信號(hào)JNZNEXT;如果打印機(jī)忙,等待INCDI;緩沖區(qū)首址加1LOOPLOOP1;繼續(xù)輸出下一個(gè)字符如果采用中斷方式傳送數(shù)據(jù),電路的連接形式如圖10.18(b)所示。由CPU控制PC4產(chǎn)生選通脈沖,PC4作輸出用,這里OBF沒(méi)有用。PC3作為中斷請(qǐng)求INTR,由ACK信號(hào)上升沿產(chǎn)生,使用IRQ3,中斷向量0BH。在編寫有關(guān)中斷的程序時(shí),中斷服務(wù)程序要盡量短,把其他的處理工作都放在主程序中。程序段如下:MOVAL,0A0HMOVDX,PortCtrOUTDX,AL;A端口,方式1輸出方式,PC4作輸出MOVAL,00001000B;置PC4=1,令DATASTB1選通無(wú)效CLI;關(guān)中斷MOVAH,35HMOVAL,0BHINT21H;將0BH中斷向量取到ES、BX中PUSHES PUSHBX;保存0BH中斷向量PUSHDSMOVDX,OFFSET INTSERV;中斷子程序的偏移地址送DXMOVAX,SEG INTSERVMOVDS,AX;中斷子程序段地址送DS;設(shè)置0BH中斷向量,即將DS,DX的內(nèi)容傳送到中斷向量表中MOVAL,0BHMOVAH,25HINT21H POPDSMOVAL,0DHMOVDX,PortCtrOUTDX,AL;將PC6置“1”,使INTE為“1”,允許8255A端口中斷STI;開中斷,允許中斷請(qǐng)求信號(hào)進(jìn)入CPUCLIPOPDXPOPDS;將開始?jí)簵5腅S、BX的內(nèi)容彈入DX中MOVAL,0BHMOVAH,25HINT21H;恢復(fù)0BH原中斷向量STI中斷服務(wù)程序 INTSERV:PUSHAD;通用寄存器進(jìn)棧MOVAL,CL;打印字符送ALMOVDX,PortAOUTDX,AL;打印字符送A端口MOVAL,00HMOVDX,PortCtrOUTDX,AL;置PC40,產(chǎn)生選通信號(hào),使DATASTB為低電平INCALOUTDX,AL;使PC4=1,撤消選通信號(hào)MOVDX,20HOUTDX,20H;發(fā)EOI命令POPAD;通用寄存器出棧IRET;中斷返回10.3 可編程串行接口電路Intel 8251A10.3.1 8251A的主要性能和內(nèi)部結(jié)構(gòu)825lA是可編程的串行通信接口芯片,它的基本性能如下: (1) 可工作在同步方式,也可工作在異步方式。同步方式下波特率為064 000波特,異步方式下波特率為019 200波特。 (2) 在同步方式時(shí),每個(gè)字符可定義為5、6、7或8位。兩種方法實(shí)現(xiàn)同步,由內(nèi)部自動(dòng)檢測(cè)同步字符或由外部給出同步信號(hào)。允許同步方式下增加奇/偶校驗(yàn)位進(jìn)行校驗(yàn)。(3) 在異步方式下,每個(gè)字符可定義為5、6、7或8位,用1位作奇偶校驗(yàn)。時(shí)鐘速率可用軟件定義為波特率的l、16或64倍。另外,8251A在異步方式下能自動(dòng)為每個(gè)被輸出的數(shù)據(jù)增圖10.19 825lA內(nèi)部結(jié)構(gòu)原理框圖加1個(gè)起始位,并能根據(jù)軟件編程為每個(gè)輸出數(shù)據(jù)設(shè)置1位、1.5位或2位停止位。(4) 能進(jìn)行出錯(cuò)檢測(cè)。帶有奇偶、溢出和幀錯(cuò)誤等檢測(cè)電路,用戶可通過(guò)輸入狀態(tài)寄存器的內(nèi)容進(jìn)行查詢。8251A的內(nèi)部結(jié)構(gòu)框圖如圖10.19所示。從圖中可以看出,它由數(shù)據(jù)總線緩沖器、讀/寫控制邏輯、發(fā)送緩沖器、發(fā)送控制器、接收緩沖器、接收控制器、調(diào)制/解調(diào)器控制邏輯、同步字符寄存器及控制各種操作的方式寄存器等組成。各部件實(shí)現(xiàn)的功能如下所示。1) 數(shù)據(jù)總線緩沖器數(shù)據(jù)總線緩沖器通過(guò)8位數(shù)據(jù)線D7D0和CPU的數(shù)據(jù)總線相連,負(fù)責(zé)把接收口接收到的信息送給CPU,或把CPU發(fā)來(lái)的信息送給發(fā)送口。還可隨時(shí)把狀態(tài)寄存器中的內(nèi)容讀到CPU中,在825lA初始化時(shí),分別把方式字、控制字和同步字符送到方式寄存器、控制寄存器和同步字符寄存器中。2) 讀/寫控制邏輯表10-7 8251A的控制信號(hào)與執(zhí)行的操作之間的對(duì)應(yīng)關(guān)系C/執(zhí)行的操作0000010110100011CPU由8251A輸入數(shù)據(jù)CPU向8251A輸出數(shù)據(jù)CPU讀取8251A的狀態(tài)CPU向8251A寫入控制命令3) 發(fā)送緩沖器與發(fā)送控制器發(fā)送緩沖器包括發(fā)送移位寄存器和數(shù)據(jù)輸出寄存器,發(fā)送移位寄存器通過(guò)825lA芯片的TXD管腳將串行數(shù)據(jù)發(fā)送出去。數(shù)據(jù)輸出寄存器寄存來(lái)自CPU的數(shù)據(jù),當(dāng)發(fā)送移位寄存器空時(shí),數(shù)據(jù)輸出寄存器的內(nèi)容送給移位寄存器。發(fā)送控制電路對(duì)串行數(shù)據(jù)實(shí)行發(fā)送控制。發(fā)送器的另一個(gè)功能是發(fā)送中止符(BREAK),中止符由在通信線上的連續(xù)低電平信號(hào)組成,它是用來(lái)在全雙工通信時(shí)中止發(fā)送終端的,只要8251A的命令寄存器的bit3為“1”,發(fā)送器就始終發(fā)送終止符。4) 接收緩沖器與接收控制器接收緩沖器包括接收移位寄存器和數(shù)據(jù)輸入寄存器。串行輸入的數(shù)據(jù)通過(guò)8251A芯片的RXD管腳逐位進(jìn)入接收移位寄存器,然后變成并行格式進(jìn)入數(shù)據(jù)輸入寄存器,等待CPU取走。接收控制電路是用來(lái)控制數(shù)據(jù)接收工作。5) 調(diào)制/解調(diào)器控制邏輯利用8251A進(jìn)行遠(yuǎn)距離通信時(shí),發(fā)送方要通過(guò)調(diào)制解調(diào)器將輸出的串行數(shù)字信號(hào)變?yōu)槟M信號(hào),再發(fā)送出去。接收方也必須將模擬信號(hào)經(jīng)過(guò)調(diào)制解調(diào)器變?yōu)閿?shù)字信號(hào),才能由串行接口接收。在全雙工通信方式下,每個(gè)收、發(fā)口都是要連接調(diào)制解調(diào)器。調(diào)制解調(diào)器控制電路是專為調(diào)制解調(diào)器提供控制信號(hào)用的。10.3.2 8251A的外部特性圖10.20 8251A引腳圖1. 8251A與CPU的接口信號(hào)8251A與CPU的接口信號(hào)可以分為五類,具體如下。1) 雙向的數(shù)據(jù)信號(hào)線D7D0825lA有8條數(shù)據(jù)線D7D0,D7為最高位,D0為最低位。825lA通過(guò)這8根線和CPU的數(shù)據(jù)總線相連接,實(shí)際上,數(shù)據(jù)線上不只是傳輸數(shù)據(jù),還傳輸CPU對(duì)825lA的編程命令字和825lA送往CPU的狀態(tài)信息。 2) 片選信號(hào)CSCS(輸入,11引腳)為片選信號(hào),低電平有效,芯片被選中才能工作,如果8251A未被選中,數(shù)據(jù)線D7D0將處于高阻狀態(tài),讀/寫信號(hào)對(duì)芯片都不起作用。3) 讀/寫控制信號(hào)RD (輸入,13引腳)為讀信號(hào),低電平有效。當(dāng)該信號(hào)有效時(shí),并且CS也為低電平,CPU可以從8251A讀取數(shù)據(jù)或狀態(tài)信息。WR (輸入,10引腳)為寫信號(hào),低電平有效。當(dāng)該信號(hào)有效時(shí),并且CS也為低電平,CPU可以向8251寫入數(shù)據(jù)或控制字。 C/D(輸入,12引腳)為控制/數(shù)據(jù)信號(hào),分時(shí)復(fù)用。用來(lái)區(qū)分當(dāng)前讀/寫的是數(shù)據(jù)還是控制信息或狀態(tài)信息。當(dāng)C/D為高電平時(shí),系統(tǒng)處理的是控制信息或狀態(tài)信息,從D7D0端寫入8251A的必須是方式字、控制字或同步字符。當(dāng)C/D為低電平時(shí),寫入的是數(shù)據(jù)。RESET(輸入,21引腳)為復(fù)位信號(hào),高電平有效。當(dāng)該信號(hào)為高時(shí),8251A實(shí)現(xiàn)復(fù)位功能,內(nèi)部所有的寄存器都被置為初始狀態(tài)。CLK(輸入,20引腳)為主時(shí)鐘信號(hào),用于芯片內(nèi)部的定時(shí)。對(duì)于同步方式,它的頻率必須大于發(fā)送時(shí)鐘TXC和接收時(shí)鐘RXC的30倍。對(duì)于異步方式,必須大于它們的4.5倍。8251A的時(shí)鐘頻率規(guī)定在0.743.1 MHz的范圍內(nèi)。8251A共有三種時(shí)鐘信號(hào):CLK、 TXC和RXC 。其中發(fā)送時(shí)鐘和接收時(shí)鐘由波特率和波特率因子來(lái)決定。4) 與發(fā)送有關(guān)的聯(lián)絡(luò)信號(hào)TXRDY(輸入,15引腳)為發(fā)送器準(zhǔn)備好信號(hào),高電平有效。當(dāng)該信號(hào)為高電平時(shí),通知CPU,8251A已經(jīng)準(zhǔn)備好發(fā)送一個(gè)字符,表示CPU可以輸入數(shù)據(jù)。所謂發(fā)送器準(zhǔn)備好,就是控制字的第0位TXEN為“1時(shí),使8251A允許發(fā)送,并且調(diào)制解調(diào)器已做好接收準(zhǔn)備,發(fā)出信號(hào)使8251A的CTS信號(hào)變低為有效,因此TXRDY為輸出緩沖器空與CTS與TXEN。TXRDY可作為中斷申請(qǐng)信號(hào),也可作為查詢方式的聯(lián)絡(luò)信號(hào)使用。TXEMPTY(輸入,18引腳)為發(fā)送器空信號(hào),控制8251A發(fā)送器發(fā)送字符的速度。對(duì)于同步方式,它的輸入時(shí)鐘頻率應(yīng)等于發(fā)送數(shù)據(jù)的波特率,對(duì)于異步方式,它的頻率應(yīng)等于發(fā)送波特率和波特率因子的乘積。5) 與接收有關(guān)的聯(lián)絡(luò)信號(hào)。RXRDY(輸出,14引腳)為接收器準(zhǔn)備好信號(hào),高電平有效。當(dāng)該信號(hào)為高時(shí),表示825lA已從外部設(shè)備或調(diào)制解調(diào)器中收到一個(gè)字符,等待CPU取走。它可以作為中斷請(qǐng)求信號(hào)或查詢聯(lián)絡(luò)信號(hào)與CPU聯(lián)系。SYNDET/BRKDET(輸入/輸出,16引腳)為同步檢測(cè)/斷缺檢測(cè)信號(hào),高電平有效。在同步方式下,SYNDET執(zhí)行同步檢測(cè)功能,可以工作在輸入狀態(tài),也可以工作在輸出狀態(tài)。同步檢測(cè)分為內(nèi)同步和外同步兩種方式。采用哪種同步方式要取決于8251A的工作方式,由初始化時(shí)寫入方式寄存器的方式字來(lái)決定。當(dāng)8251A工作在內(nèi)同步方式時(shí),SYNDET作為輸出端,是在8251A內(nèi)部檢測(cè)同步字符。如果8251A檢測(cè)到了所要求的一個(gè)或兩個(gè)同步字符時(shí),SYNDET輸出高電平,表示已達(dá)到同步,后續(xù)收到的是有效數(shù)據(jù)。當(dāng)8251A工作在外同步方式時(shí),SYNDET作為輸入端。外同步是由外部其他機(jī)構(gòu)來(lái)檢測(cè)同步字符,當(dāng)外部檢測(cè)到同步字符以后,從SYNDET端向8251A輸入一個(gè)高電平信號(hào),表示已達(dá)到同步,接收器可以串行接收數(shù)據(jù)。芯片復(fù)位時(shí),SYNDET為低電平。在異步方式下BRKDET實(shí)現(xiàn)斷缺檢測(cè)功能,當(dāng)RXC端連續(xù)收到8

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論