




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、習題五1 接口電路與外部設(shè)備之間傳送的信號有哪幾種? 傳輸方向怎樣?數(shù)據(jù)信號:對于輸入設(shè)備,數(shù)據(jù)信號從外設(shè)通過接口送往總線,對于輸出設(shè)備,數(shù)據(jù)信號從總線通過接口發(fā)往外部設(shè)備。狀態(tài)信號:狀態(tài)信號表明外部設(shè)備當前的工作狀態(tài),用來協(xié)調(diào)CPU 與外部設(shè)備之間的操作。狀態(tài)信號總是從外部設(shè)備通過接口發(fā)往總線。控制信號:控制信號是CPU 向外設(shè)發(fā)出的命令,它指定設(shè)備的工作方式,啟動或停止設(shè)備。控制信號從CPU 通過接口發(fā)往外部設(shè)備。2 接口電路有哪些功能?哪些功能是必需的?接口電路可以具備:設(shè)備選擇功能、信息傳輸功能、數(shù)據(jù)格式轉(zhuǎn)換功能、聯(lián)絡(luò)功能、中 斷管理功能、復(fù)位功能、可編程功能和錯誤檢測等功能。其中設(shè)備
2、選擇功能和信息傳輸功能是每一個接口電路所必備的。其他的功能是否需要則由設(shè)備的特點和工作方式?jīng)Q定。3 I/O端口的編址有哪幾種方法?各有什么利弊?80X86系列CPU采用哪種方法?I/O端口的編址有兩種不同的方式。I/O端口與內(nèi)存統(tǒng)一編址:把內(nèi)存的一部分地址分配給I/O端口,一個8位端口占用一個內(nèi)存單元地址。已經(jīng)用于I/O端口的地址,存儲器不能再使用。I/O端口與內(nèi)存統(tǒng)一編址后,訪問內(nèi)存儲器單元和I/O端口使用相同的指令,這有助于降 低CPU電路的復(fù)雜性,并給使用者提供方便。但是,I/O端口占用內(nèi)存地址,相對減少了內(nèi) 存可用范圍。而且,由于難以區(qū)分訪問內(nèi)存和I/O的指令,降低了程序的可讀性和可維
3、護性。I/O端口與內(nèi)存獨立編址:這種編址方法中,內(nèi)存儲器和I/O端口各自有自己獨立的地址空間。訪問I/O端口需要專門的I/O指令。80x86 CPU采用I/O端口獨立編址方式。4 按照傳輸信號的種類,I/O端口有幾種?它們信號的傳輸方向怎樣?按照傳輸信號的種類,I/O端口有三種:數(shù)據(jù)端口:數(shù)據(jù)信息從端口輸入 CPU (輸入設(shè)備接口),或者從CPU寫入端口(輸出設(shè) 備接口);狀態(tài)端口:外設(shè)狀態(tài)信息從端口輸入 CPU;控制端口:命令信息從 CPU寫入端口。5 I/O端口譯碼電路的作用是什么?在最小模式和最大模式下分別有哪些輸入信號?I/O端口譯碼電路用于產(chǎn)生端口的讀寫選擇信號。在最小模式下,譯碼電
4、路接受來自總 線的地址信號(16位),M/IO (= 0), RD或者WR信號。最大模式下,譯碼電路接受地址 信號(16位),IOR或者IOW信號。6 外部設(shè)備數(shù)據(jù)傳送有哪幾種控制方式?從外部設(shè)備的角度,比較不同方式對外部設(shè)備的 響應(yīng)速度。外部設(shè)備數(shù)據(jù)傳送有以下四種控制方式。直接傳送方式(也稱為無條件傳送方式、同步傳送方式):這種情況下,外部端口完全被 動地等待CPU的訪問,沒有確定的響應(yīng)速度,響應(yīng)時間取決于 CPU忙碌的程度以及程序?qū)?外部設(shè)備控制采取的策略。查詢方式:如果CPU在某一時刻只對一個外設(shè)采用查詢方式進行數(shù)據(jù)傳輸,CPU的響應(yīng)延遲約為310個指令周期。響應(yīng)速度快于中斷方式,慢于
5、DMA方式。中斷方式:CPU的響應(yīng)延遲平均為幾十個指令周期,慢于查詢方式,但是這種方式可以 同時管理多個外部設(shè)備。DMA方式:外部端口的傳輸請求由 DMA控制器響應(yīng),由于DMAC是一個專用于傳輸控制的電路,任務(wù)單一,不發(fā)生 DMA 傳輸競爭時,響應(yīng)延遲僅為12個 DMAC 使用的時鐘周期,遠快于中斷方式和查詢方式。7 敘述一次查詢式輸出過程中,接口內(nèi)各電路、信號的狀態(tài)變化過程。一個數(shù)據(jù)的查詢式輸出過程由二個階段組成:CPU 從接口反復(fù)讀取狀態(tài)字:由地址譯碼電路產(chǎn)生狀態(tài)端口選擇信號,該信號不影響接口內(nèi)部的狀態(tài)。外部設(shè)備輸出完成后,返回 “確認” 信號, 該信號將狀態(tài)寄存器相關(guān)位( READY )
6、置位。如狀態(tài)字表明外設(shè)已處于“就緒”狀態(tài),則向數(shù)據(jù)端口傳送數(shù)據(jù)。由地址譯碼電路產(chǎn)生的數(shù)據(jù)端口選通信號一方面將數(shù)據(jù)總線上的數(shù)據(jù)寫入數(shù)據(jù)寄存器,同時清除狀態(tài)寄存器中的相關(guān)位(READY) ,向輸出設(shè)備發(fā)出輸出啟動信號。有的輸出接口設(shè)有控制端口,輸出啟動信號通過寫控制端口產(chǎn)生。8 比較程序中斷方式和查詢方式的區(qū)別,根據(jù)比較,指出中斷工作方式的優(yōu)缺點。中斷方式:外部設(shè)備工作完成后,通過“中斷請求”信號“主動”向 CPU “報告”。查詢方式:外部設(shè)備工作完成后,狀態(tài)信號儲存在接口電路內(nèi),被動地等待CPU 來讀取。根據(jù)上述比較,可以得到中斷工作方式的如下特點:優(yōu)點:1) CPU 能夠及時了解外部設(shè)備的狀態(tài)
7、,從而對外部設(shè)備IO 請求進行及時處理。2) 由于CPU “被動”地等待外部設(shè)備的“中斷請求”,外部設(shè)備進行輸入髓出操作時, CPU 可以同時執(zhí)行其他的程序,CPU 和外部設(shè)備“并行”工作。3) 由于同樣的原因,在中斷方式下,CPU 可以同時管理多臺外部設(shè)備,CPU 的效率得到提高。缺點:4) 用中斷方式需要CPU 增加相應(yīng)的管理邏輯,增加了CPU 電路的復(fù)雜性。5) 由于CPU “被動”地接收“中斷請求”信號,CPU必須通過與外部的一個聯(lián)絡(luò)過程才能知道是那一個設(shè)備在申請中斷,這增加了響應(yīng)時間。為了從當前任務(wù)轉(zhuǎn)移到中斷服務(wù),CPU 必須保護原有的運行環(huán)境,進行“任務(wù)”的“切換”,這也會增加響應(yīng)
8、時間。6) 有較多的設(shè)備使用中斷方式時,會產(chǎn)生“中斷申請”的“競爭”。這一方面降低了響應(yīng)速度,另一方面增加了管理的復(fù)雜性。9 比較 DMA 方式和程序中斷方式的區(qū)別,根據(jù)比較,指出DMA 工作方式的優(yōu)缺點。中斷方式:外部設(shè)備每進行一個數(shù)據(jù)的輸入/輸出,都要通過“中斷申請”要求CPU 進行處理。CPU 通過執(zhí)行一段“中斷服務(wù)程序”完成數(shù)據(jù)的傳輸。DMA 方式: CPU 通過對 DMAC 的初始化,啟動一個數(shù)據(jù)塊的傳輸操作。之后的數(shù)據(jù)傳輸通過信號的聯(lián)絡(luò),在外設(shè)接口和存儲器之間進行,CPU 只需簡單地讓出總線,而無需其他操作。根據(jù)上述比較,可以得到DMA 工作方式的如下特點:優(yōu)點:1) 對于 CPU
9、 而言,它的任務(wù)僅僅是在一個數(shù)據(jù)塊傳輸之前對DMAC 進行初始化,CPU 用于傳輸控制的操作達到最小(不考慮與通道/IO 處理器方式的比較), CPU的效率最高。CPU 與外設(shè)“并行”工作。2) 外部設(shè)備一個數(shù)據(jù)輸入/輸出完成后,向 DMAC 申請進行數(shù)據(jù)傳輸,響應(yīng)時間僅為DMAC 的 13個時鐘周期。響應(yīng)速度達到最快,可以滿足高速傳輸?shù)男枰?。缺點:1) 實現(xiàn) DMA 控制需要增加DMA 控制器和總線控制邏輯,增加了系統(tǒng)的復(fù)雜性。2) DMA 傳輸需要占用總線,并且具有較高的“優(yōu)先級”。這使得系統(tǒng)對其他設(shè)備的響應(yīng)速度不能得到明確的保證。10 某輸入設(shè)備接口數(shù)據(jù)端口、狀態(tài)端口、控制端口地址分別為
10、 70H, 71H, 72H。狀態(tài)端口D5=1 表示輸入完成,控制端口D7=1 表示啟動設(shè)備輸入(輸入完成后由設(shè)備清除該位)。從該設(shè)備輸入100 個字節(jié)數(shù)據(jù),存入以 BUFFER 為首地址的緩沖區(qū)。如果啟動該設(shè)備1 秒后仍未完成一次輸入,則視為超時錯,顯示出錯信息后返回。分別用8086 匯編語言和C 語言編寫完成上述功能的I/O 程序。匯編語言程序:DATASEGMENTBUFFERDB100 DUP(?)ERRORDB13, 10, “OVERTIME ! ”, 13, 10, “$”DATAENDS;CODESEGMENTASSUMECS: CODE, DS:DATASTART:MOVAX
11、, DA TAMOVDS, AXMOVCX, 100LEABX, BUFFERONE:XORDX, DX; DX 用作響應(yīng)計時器,初值0MOVAL, 80HOUT72H, AL;啟動輸入W:INAL, 71HINCDX;記錄延遲時間TESTAL, 00100000B;測試完成位JNZREAD;輸入完成,轉(zhuǎn)READ 讀取數(shù)據(jù)CMPDX, 50000;假設(shè)循環(huán)50000次時間為1 秒JBW;未超時,繼續(xù)測試JMPOVERTIME;超過1 秒,報告出錯READ:INAL, 70H;讀入數(shù)據(jù)MOVBX, AL;數(shù)據(jù)存入緩沖區(qū)INCBX;修改指針LOOPONE; 100 個數(shù)據(jù)尚未輸入完成,轉(zhuǎn)ONE 繼
12、續(xù)JMPDONE; 100個數(shù)據(jù)輸入完成,轉(zhuǎn) DONE 結(jié)束程序OVERTIME:LEADX, ERRORMOVAH, 9INT21H;響應(yīng)超時,顯示出錯信息DONE:MOVAX, 4C00HINT21H;返回OSCODEENDSENDSTARTC 語言程序:main( ) int i, status, time, buffer100 ;for( i=0; i<100; i+ ) outportb( 0x72, 0x80 );/* 啟動輸入*/for( time = 0; time < 20000; time+ ) status = inportb( 0x71 );/* 讀狀態(tài)*/
13、if ( status & 0x20) buffer i = inportb ( 0x70 ); exit; /* 讀數(shù)據(jù),保存*/if ( time >= 20000 ) printf( “n Over Time ! n” ); exit ; /* 超時報錯*/11 某輸出設(shè)備數(shù)據(jù)端口、狀態(tài)端口地址分別為220H, 221H。 狀態(tài)端口D0=1 表示輸出完成。將數(shù)據(jù)段中以STRING 為首地址的20 個字符(用七位ASCII 代碼存儲)添加水平和垂直校驗發(fā)送到該外部設(shè)備。用8086匯編語言編寫完成上述功能的I/O 程序。匯編語言程序: DATASEGMENTSTRINGDB 2
14、0 DUP ( ? )SUMDB 0DATAENDS; CODESEGMENTASSUME CS: CODE, DS: DATASTART:MOVAX, DATAMOVDS, AXMOVCX, 20LEABX, STRINGMOVSUM, 0; 垂直校驗碼初值為0ONE:MOVDX, 221H; DX 置為狀態(tài)端口地址INAL, DXTESTAL, 00000001B;測試輸出完成位JZONE;未完成,轉(zhuǎn)ONE 繼續(xù)讀取狀態(tài)MOVAL, BX; 從字符串取出一個字符的ASCII 代碼ANDAL, 07FH;清除最高位,準備置入校驗位JPEOUTPUT;判代碼奇偶屬性,ORAL, 80H;奇數(shù)個
15、“1”,最高位置1(偶校驗)OUTPUT:MOVDX, 220HOUTDX, AL;輸出添加了校驗位的代碼XORSUM, AL;生成垂直校驗位INCBX;修改指針LOOPONE;20個數(shù)據(jù)尚未輸出完成,轉(zhuǎn)ONE 繼續(xù)MOVDX, 221H;輸出垂直校驗代碼LAST:INAL, DXTESTAL, 00000001BJZLASTMOVAL, SUMMOVDX, 220HOUTDX, ALDONE:MOVAX, 4C00HINT21H;返回OSCODEENDSENDSTART12 試畫出矩陣式鍵盤查詢的程序流程圖。行掃描法鍵盤掃描流程上述流程中假設(shè)鍵盤為8X8結(jié)構(gòu),如果有鍵按下,返回它的8位掃描碼
16、。其中:最低3位為該鍵所在列,次低3位為該鍵所在行,最高2位為0。如果沒有鍵按下,返回8位“1”。13.試畫出公用端口多位LED輸出的程序流程圖。共用端口 LED3描流程Y返回題六1 什么叫中斷? 有哪幾種不同類型的中斷?由于某個事件的發(fā)生,CPU 暫停當前正在執(zhí)行的程序,轉(zhuǎn)而執(zhí)行處理該事件的一個程序。該程序執(zhí)行完成后,CPU 接著執(zhí)行被暫停的程序。這個過程稱為中斷。根據(jù)中斷源的位置,有兩種類型的中斷。有的中斷源在CPU 的內(nèi)部,稱為內(nèi)部中斷。大多數(shù)的中斷源在CPU 的外部,稱為外部中斷。根據(jù)中斷引腳的不同,或者CPU 響應(yīng)中斷的不同條件,也可以把中斷劃分為可屏蔽中斷和不可屏蔽中斷兩種。2 什
17、么是中斷類型?它有什么用處?用若干位二進制表示的中斷源的編號,稱為中斷類型。中斷類型用來區(qū)分不同的中斷,使 CPU 能夠在中斷響應(yīng)時調(diào)出對應(yīng)的中斷服務(wù)程序進行中斷處理。3 有哪幾種確定中斷優(yōu)先級的方法?說明每一種方法各自的優(yōu)劣之處。確定中斷優(yōu)先權(quán)有四種可選的方法。(1) 軟件查詢法:采用程序查詢的方法確定中斷服務(wù)的順序。這種方法中斷邏輯最簡單(基本上不需要外部中斷邏輯), 優(yōu)先級可以靈活設(shè)置,但中斷響應(yīng)所需時間最長。(2) 分類申請法:CPU 分設(shè)二個中斷申請信號的輸入引腳。這種方法需要CPU 提供條件。(3) 鏈式優(yōu)先權(quán)排隊:菊花鏈法。這種方法需要的外部中斷邏輯比較簡單,容易實現(xiàn),但是設(shè)備較
18、多時信號延遲大,對設(shè)備故障敏感。(4) 可編程中斷控制器: “向量” 優(yōu)先權(quán)排隊專用電路。這種方法功能最全面,控制靈活,可以通過程序設(shè)定中斷優(yōu)先權(quán)為固定的或循環(huán)的,但需要增加專用的中斷控制器。4 什么是中斷嵌套?使用中斷嵌套有什么好處?對于可屏蔽中斷,實現(xiàn)中斷嵌套的條件是什么?CPU 在處理級別較低的中斷過程中,出現(xiàn)了級別較高的中斷請求。CPU 停止執(zhí)行低級別中斷的處理程序而去優(yōu)先處理高級別中斷,等高級別中斷處理完畢后,再接著執(zhí)行低級別的 未處理完的中斷處理程序,這種中斷處理方式稱為多重(級)中斷或中斷嵌套。使用中斷嵌套可以使高優(yōu)先級別的中斷得到及時的響應(yīng)和處理。對于可屏蔽中斷,由于CPU 在
19、響應(yīng)中斷時已將IF 清零,所以一定要在中斷處理程序中加入開中斷指令,才有可能進行中斷嵌套。5 .什么叫中斷屏蔽?如何設(shè)置I/O接口的中斷屏蔽?用程序的方法使某些中斷源的中斷請求不能夠發(fā)送到CPU ,或者雖然能夠發(fā)送但是不能得到響應(yīng),這種方法稱為中斷屏蔽。在外設(shè)的接口內(nèi)增設(shè)一個中斷屏蔽觸發(fā)器(可以用 D觸發(fā)器實現(xiàn)),該觸發(fā)器的Q端與 中斷請求信號相“與”后連接到INTR。當Q =。時,中斷請求不能發(fā)往INTR。通過設(shè)定中 斷屏蔽觸發(fā)器的狀態(tài),可以控制中斷請求信號是否能夠送到 INTR端。置IF= 0,可以使80X86CPU不響應(yīng)來自INTR的可屏蔽中斷請求。6 .什么是中斷向量?中斷類型為 1F
20、H的中斷向量為2345H: 1234H,畫圖說明它在中斷向量表中的安置位置。0000:007CH34H0000:007DH12H0000:007EH45H0000:007FH23H中斷服務(wù)程序的入口地址稱為中斷向量。中斷類型為1FH, 它的中斷向量放置在1FHX4=0000: 7CH開始的位置上。如右 圖。7 .敘述一次可屏蔽中斷的全過程。(1)中斷源請求中斷外部中斷源通過INTR引腳向CPU請求中斷。(2)中斷響應(yīng)中斷源提出中斷請求后,如果CPU處于允許中斷狀態(tài)(IF=1);沒有不可屏蔽中斷請求和總線請求;當前指令執(zhí)行結(jié)束。則轉(zhuǎn)入中斷響應(yīng)周期。在中斷響應(yīng)周期:CPU取得中斷源的中斷類型;將標
21、志寄存器FLAGS和CS、IP (斷點)先后壓入堆棧保存;清除自陷標志位TF和中斷允許標志位IF;讀中斷向量表,獲得相應(yīng)的中斷服務(wù)程序入口地址,轉(zhuǎn)入中斷服務(wù)程序。(3)中斷服務(wù)中斷服務(wù)程序的主要內(nèi)容包括:保護現(xiàn)場開中斷中斷處理關(guān)中斷恢復(fù)現(xiàn)場(4)中斷返回8 簡要敘述8259A 內(nèi)部 IRR, IMR, ISR 三個寄存器各自的作用。三個寄存器長度均為8 位。IRR用來記錄引腳IR7IRo上由外部設(shè)備送來的中斷請求信號。當外部中斷請求線IRi變?yōu)橛行r,IRR 中與之對應(yīng)的第i 位被置 1。IMR 用于設(shè)置對中斷請求的屏蔽信號。此寄存器的第i 位被置 1 時,與之對應(yīng)的外部中斷請求線IRi被屏蔽
22、,不能向CPU發(fā)出INT信號。可通過軟件設(shè)置IMR內(nèi)容,確定每一個 中斷請求的屏蔽狀態(tài)。ISR 用于記錄當前正在被服務(wù)的所有中斷級,包括尚未服務(wù)完而中途被更高優(yōu)先級打斷的中斷級。若CPU響應(yīng)了 IRi中斷請求,則ISR中與之對應(yīng)的第i位置1。ISR用于中斷優(yōu)先 級管理。9 8259A 是怎樣進行中斷優(yōu)先權(quán)管理的?8259A 通過以下兩種途徑實現(xiàn)對中斷優(yōu)先權(quán)的管理:( 1) 通過設(shè)置中斷屏蔽寄存器IMR ,可以屏蔽某些中斷請求,從而動態(tài)地改變各請求端的優(yōu)先級別。( 2) 8259A 響應(yīng)某個中斷請求之后,將 ISR 寄存器對應(yīng)位置1。 如果后續(xù)的中斷請求級別低于正在響應(yīng)的中斷請求,則該中斷不能立
23、即被響應(yīng)。反之, 如果新的中斷請求級別高于正在響應(yīng)的中斷請求,則允許進行中斷嵌套。中斷服務(wù)結(jié)束時,應(yīng)將 ISR 寄存器對應(yīng)位清零。10 特殊全嵌套方式有什么特點?它的使用場合是什么?特殊全嵌套方式一般用于級聯(lián)方式下的8259A 主片。如果8259A主片在一次中斷處理尚未結(jié)束時,收到了來自同一個引腳的第二次中斷請求, 并且該8259A采用普通全嵌套方式,則它不會響應(yīng)來自同一個引腳的第二次中斷請求。如果該 8259A 采用特殊全嵌套方式,就會響應(yīng)該請求(中斷嵌套),從而可以及時響應(yīng)連接在同一從片8259A上,并且相對有較高優(yōu)先級別的中斷請求。11 .向8259A發(fā)送“中斷結(jié)束”命令有什么作用? 8
24、259A有哪幾種中斷結(jié)束方式?分析各自的利弊。中斷服務(wù)完成時,必須給8259A一個命令,使這個中斷級別在ISR中的相應(yīng)位清“ 0”,表示該中斷處理已經(jīng)結(jié)束,允許響應(yīng)新的較低級別的中斷。這個命令稱為 “中斷結(jié)束”命令。8259A 有兩種不同的中斷結(jié)束方式。( 1)自動中斷結(jié)束方式(AEOI )8259A 在中斷響應(yīng)周期內(nèi)自動清除ISR 中對應(yīng)位。這種方式使用簡單,但是不能充分實現(xiàn)中斷的優(yōu)先權(quán)管理。這種方式只能用在系統(tǒng)中只有一個8259A,且多個中斷不會嵌套的情況。(2)非自動中斷結(jié)束方式(EOI)從中斷服務(wù)程序返回前,在程序里向8259A輸出一個中斷結(jié)束命令(EOI),把ISR對應(yīng) 位清“0”。
25、這種方式可以有效地實現(xiàn)中斷優(yōu)先權(quán)的管理,從而保證高優(yōu)先級的中斷可以得到及時響應(yīng)。但是,如果在程序里忘了將 ISR對應(yīng)位清零,那么,8259A將不再響應(yīng)這個中斷 以及比它級別低的中斷請求。12 .某系統(tǒng)中有兩片8259A,從片的請求信號連主片的IR2弓|腳,設(shè)備A中斷請求信號連從 片IR5弓I腳。說明設(shè)備 A在一次I/O操作完成后通過兩片8259A向8086申請中斷, 8086CPU通過兩片8259A響應(yīng)中斷,進入設(shè)備A中斷服務(wù)程序,發(fā)送中斷結(jié)束命令,返 回斷點的全過程。設(shè)備A通過從片IR5引腳向從片發(fā)出中斷請求;從片將IRR5置“1”,并通過INT (與主片IR2相連)向主片發(fā)出中斷請求; 主
26、片將IRR2置“1”,通過INT (與CPU的INTR相連)向CPU發(fā)出中斷請CPU通過第一個INTA向主片和從片響應(yīng)中斷請求;主片8259A在CAS0CAS2上發(fā)出代碼“ 010”,表示連接在IR2上的從片中 斷被響應(yīng),同時主片還把本片ISR2置“1”,把本片IRR2清“0”;從片收到第一個INTA和主片CAS0CAS2上發(fā)來的010代碼后,將本片ISR5 置“1”,同時把本片IRR5清“0”。收到第二個1NTA后,將本片IRR5對應(yīng)的中斷 類型通過數(shù)據(jù)總線發(fā)往CPU;CPU進入設(shè)備A的中斷服務(wù)程序,在程序中先后對主片和從片發(fā)出中斷結(jié)束 命令,兩個芯片內(nèi)的ISR2和ISR5先后被清零。中斷服
27、務(wù)結(jié)束,返回斷點繼續(xù)執(zhí)行。13 .某8086系統(tǒng)用3片8259A級聯(lián)構(gòu)成中斷系統(tǒng),主片中斷類型號從10H開始。從片的中斷申請連主片的IR4和IR6引腳,它們的中斷類型號分別從 20H、30H開始。主、從片 采用電平觸發(fā),嵌套方式,普通中斷結(jié)束方式。請編寫它們的初始化程序。假設(shè)主片端口地址為10H, 12H。從片的端口地址分別為 18H, 1AH和1CH, 1EH。MOVAL, 00011001B;主片ICW1OUT10H, AL;電平觸發(fā),級連方式MOVAL, 10H;主片ICW2OUT12H, AL;主片中斷類型MOVAL, 01010000B;主片ICW3OUT12H, AL;IR4, I
28、R6連有從片MOVAL, 00010001B;主片ICW4OUT12H, ALMOVAL, 00011001BOUT18H, ALMOVAL, 20HOUT1AH, ALMOVAL, 00000100BOUT1AH, ALMOVAL, 00000001BOUT1AH, ALMOVAL, 00011001BOUT1CH, ALMOVAL, 30HOUT1EH,ALMOVAL, 00000110BOUT1EH, ALMOVAL, 00000001BOUT1EH, AL注意:;特殊全嵌套,非自動中斷結(jié)束ICW1;電平觸發(fā),級連方式ICW2;從片中斷類型ICW3IR4 引腳上ICW4;非特殊全嵌套,非
29、自動中斷結(jié)束ICW1;電平觸發(fā),級連方式ICW2;從片中斷類型ICW3IR6 引腳上ICW4;非特殊全嵌套,非自動中斷結(jié)束(1) 由于8086系統(tǒng)有16根數(shù)據(jù)線,各8259A的端口地址均為偶數(shù)(假設(shè)各8259A的數(shù)據(jù)線連接在8086系統(tǒng)的低8位數(shù)據(jù)線上)。2)主片用特殊全嵌套,從片用一般全嵌套。14 .給下面的8259A初始化程序加上注釋,說明各命令字的含義。MOV AL, 13H; ICW1: 邊沿觸發(fā),單片8259AOUT 50H, AL;MOV AL, 08H;ICW2:中斷類型高 5位為 00001OUT 51H, AL;MOV AL, 0BH;ICW4:非特殊全嵌套,緩沖方式,主片,
30、非自動中斷結(jié)束OUT 51H, AL;15 .設(shè)8259A端口地址為20H和21H,怎樣發(fā)送清除ISR3的命令?為了清除ISR3,需要通過 OCW2發(fā)送特殊的中斷結(jié)束命令,使 SL=1, EOI=1, L2L1L0=011 。指令如下:MOVOUTAL, 01100011B20H, AL16 .圖4-17能否直接用于8086系統(tǒng)?為什么?圖4-17不能直接用于8086系統(tǒng),原因是:(1) 多個設(shè)備的中斷請求如果直接送往 CPU,應(yīng)采用“線或”的方法,每個接口的中斷請求信號應(yīng)由“ OC門(集電極開路門)”以“負邏輯”的方式連接,如下 圖。(2) 電路沒有解決中斷優(yōu)先權(quán)的問題。CPU用INTA信號
31、響應(yīng)中斷時,會將所有正在申請中斷的接口的請求信號清除。加接“菊花鏈”可以解決該問題。(3) 電路沒有解決中斷類型的發(fā)送問題, 需要增加相關(guān)電路。例如,把設(shè)備接口的INTR 連接至U 8259A。題七1.8255A的方式選擇控制字和C 口按位控制字的端口地址是否一樣,8255A怎樣區(qū)分這兩種控制字?寫出A 端口作為基本輸入,B 端口作為基本輸出的初始化程序。解:( 1)8255A 的方式選擇控制字和C 口按位控制字的端口地址一樣,它們之間的區(qū)別在控制字的D7 位 (特征位)的值不同,8255A 的方式選擇控制字D7=1 , 而 C 口按位置位 /復(fù)位控制字D7=0。(2)初始化程序:(設(shè)端口地址
32、為,A 口: 200H, B 口: 201H,控制口: 203H)MOVMOVOUTAL , 90HDX, 203HDX, AL2用 8255A的 A 端口接8 位二進制輸入,B 端口和C 端口各接8 只發(fā)光二極管顯示二進制數(shù)。編寫一段程序,把 A 端口讀入的數(shù)據(jù)送B 端口顯示,而 C 端口的各位則采用置0/置1 的方式顯示A 端口的值。解: (設(shè)端口地址為,A 口: 200H, B 口: 201H, C202H,控制口: 203H)MOVAL, 90H; 8255A 初始化:MOVDX, 203H; 8255A各組方式0, A 口¥俞入OUTMOVDX , AL; B、C 口輸出D
33、X, 200HINMOVAL , DX;讀A 口輸入值DX, 201HOUTDX, AL;送B 口輸出MOVMOVAH , AL; A 口輸入值轉(zhuǎn)存在AH 中DX, 203HMOVCX, 08; CX置循環(huán)次數(shù)初值MOVAL , 00H; C 端口置0/置 1 控制字初值LPA: ANDAL , 0FEH;清除最低位SHRAH, 1; A 端口一位轉(zhuǎn)入CFADCAL, 0; A 端口一位從CF 轉(zhuǎn)入命令字OUTDX, AL; A端口一位從送往C端口對應(yīng)位ADDAL , 02H;形成下一個命令字LOOPLPA;處理C 端口下一位3.將8255A用作兩臺計算機并行通信的接口電路,請畫出采用查詢式輸
34、入/輸出方式工作的接口電路,并寫出采用查詢式輸入/輸出方式的程序。解:用兩片8255作兩臺計算機8088_A與8088_B之間并行通信的接口電路,兩片8255之間 的連接如下圖所示。兩片8255均在方式1、查詢方式下工作。(1) 8088_A輸出程序:(8255_A的A 口作為數(shù)據(jù)輸出口,C 口的PCo作為“數(shù)據(jù)輸出選通”信號,負脈沖輸 出。C 口的PC6作為“應(yīng)答”信號輸入,負脈沖有效。端口地址:A 口: 200H, C 202H,控制口: 203H)DATA SEGMENTBuffer DB This is a example.”, 0DH, 0AH, -1DATA ENDSCODESTA
35、RT: MOVMOVLEAMOVMOVSEGMENTAX, DATADS, AXBX, Buffer DX , 203H AL , 0A0H;輸出緩沖區(qū)指針送BX;將PC0置1;延時等待對方完成初始化;A 口查詢方式輸出;8255_A的方式選擇字,A 口工作在方式1、輸出,C 口低四位輸出OUTDX ,ALMOVAL,1OUTDX,ALCALL DELAYNEXT:MOVDX,202HINAL,DLTESTAL,80H;判別OBF是否啟效JZNEXT;數(shù)據(jù)尚未取走,等待MOVDX ,200HMOVAL,BXOUTDX,AL;輸出一項數(shù)據(jù)INCBXMOVDX,203HMOVAL,0OUTDX,A
36、LNOPNOPINCALOUTDX,AL;通過PC0向?qū)Ψ桨l(fā)選通佶CMPBYTE PTRBX-1,-1 ;判斷輸出是否完成JNENEXT;未完成,繼續(xù)MOVAX,4C00HINT21HCODEENDSENDSTART(2) 8088_B輸入程序:(8255_B的A 口作為輸入,方式1, PC4作為“數(shù)據(jù)輸入選通”信號效。PC0為“應(yīng)答”信號輸出,負脈沖有效。端口地址:A 口: 210H, C 212H,控制口: 213H)(負脈沖)輸入,負脈沖有DATA SEGMENTBuffer DB 80 DUP (?)DATA ENDSCODE SEGMENTSTART: MOVAX,DATAMOVDS
37、,AXLEABX,Buffer;輸入緩沖區(qū)指針送BXMOVDX,213HMOVAL,0B0H;8255_B的方式選擇字,A 口工作在方式1,輸入,C 口低四位輸出。OUTDX,ALMOVAL,01HOUT DX, ALPC0 置 1,表示沒有“應(yīng)答”信號CALL DELAY;延時等待對方狀態(tài)就緒A 口查詢方式輸入AGA:MOV DX, 212HINAL,DXTESTAL,20HJZAGA; PC5 ( IBF )是否為1,不是,無數(shù)據(jù)輸入,繼續(xù)查詢不是,無數(shù)據(jù)輸入,繼續(xù)查詢MOVDX, 210HINAL, DXMOVBX, ALMOVDX, 212HMOVAL, 0OUTDX, ALINCBX
38、NOPNOPINCALOUTDX, AL;通過PC0向發(fā)送方發(fā)“應(yīng)答”負脈沖CMPBYTE PTRBX-1, -1;數(shù)據(jù)接收完了嗎?JNEAGA;未完,繼續(xù)MOVAX, 4C00HINT21HCODE ENDSEND START說明:這道題有多種可選的解法,上面的方法是程序比較簡單的一種。這種方法實施時,應(yīng)先啟動8088B, 使它首先 “就緒” , 然后開始通訊。由于雙方都用負脈沖進行選通,聯(lián)絡(luò)過程比較簡單,也比較可靠。可選的另一種方法是:在上述連接的基礎(chǔ)上用中斷方式進行數(shù)據(jù)傳輸,以提高 CPU 的工作效率。 需要編制雙方的中斷服務(wù)程序,初始化時要設(shè)置中斷向量,允許 8255中斷, 開放中斷等
39、操作。當然也要連接相應(yīng)的中斷請求信號線。可選的第三種方法是:雙方用一根狀態(tài)線(C 端口某一位)送往對方,用這兩根線進行聯(lián)絡(luò)( “握手” ) 。這種方法看似簡單,其實程序是比較復(fù)雜的。雙方聯(lián)絡(luò)的過程如下圖。8088B在初始化完成后,把它的狀態(tài)線置為“高電平”,表示可以開始接受數(shù)據(jù)。而8088A在初始化完成后,把它的狀態(tài)線置為“低電平”,表示數(shù)據(jù)傳輸尚未開始。 8088A查詢8088B的狀態(tài),在發(fā)現(xiàn)8088B “就緒”(狀態(tài)線為高電平)后,把數(shù)據(jù)發(fā)往8255的(A或B)端口。 8088A發(fā)出數(shù)據(jù)之后把本機狀態(tài)置為 “就緒”(高電平),表示數(shù)據(jù)已經(jīng)送到端口的數(shù)據(jù)線上。 8088B查tU 8088A的
40、狀態(tài),得知8088A的狀態(tài)線“就緒”,知道8088A已經(jīng)把數(shù)據(jù)送出,于是從8255接收數(shù)據(jù),并把自身的狀態(tài)線置為“未就緒”,表示已經(jīng)把 8088A發(fā)出的數(shù)據(jù)接收。 8088A查詢到8088B的狀態(tài)線變?yōu)榈碗娖?,知道對方已?jīng)把數(shù)據(jù)接收完成,于是把本機的狀態(tài)線置為“低電平”,表示這個數(shù)據(jù)的發(fā)送已經(jīng)完成,而下一個數(shù) 據(jù)尚未發(fā)出。 8088B查詢到8088A的狀態(tài)線變?yōu)椤暗碗娖健?,知道對方已?jīng)結(jié)束了第一個數(shù)據(jù)的傳輸,在本機做好下一個數(shù)據(jù)的接收準備之后(例如,把數(shù)據(jù)存入緩沖區(qū),如果緩沖區(qū)滿,則把緩沖區(qū)內(nèi)容存入磁盤文件),把本機狀態(tài)線置為“高電平”,表 示已經(jīng)做好了接收下一個數(shù)據(jù)的準備。 8088A得知8
41、088B做好準備,發(fā)送下一個數(shù)據(jù)。于是,下一個數(shù)據(jù)的傳輸可以由此開始(轉(zhuǎn))。這種方法實施時,應(yīng)首先啟動 8088A。4.設(shè)計一個用8255A作為8個七段顯示器的接口電路,并設(shè)計一個把內(nèi)存地址為ADDRA的8個數(shù)字在這8個七段顯示器上顯示的程序。解:設(shè)8個七段顯示器采用共陽接法,A 口控制段的顯示,B 口控制位的顯示。端口地址 A 口:200H, B口: 201H,控制口: 203HDATASEGMENTADDRADBX,X,X,X,X,X,X,XTABLEDB40H, 4FH, 24H, 30H, 19HDB12H, 02H, 78H, 00H, 10HDISPBITDB?DATAENDSCO
42、DE SEGMENTASSUMECS: CODE, DS: DATASTART: MOVAX,DATAMOVDS,AXMOVAL,80H;對8255A初始化,方式0, ¥俞出MOVDX,203HOUTDX,ALLEABX,TABLE; BX 置為七段碼表首地址MOVDISPBIT,7FH;置位碼初值為7FHLEASI,ADDRA; SI 置為顯示緩沖區(qū)首地址MOVCX,8; CX 置為循環(huán)次數(shù)初值8AGA: MOVAL,0FFHMOVDX,201HOUTDX,AL;熄滅所有數(shù)碼管MOVAL,SI;取出一個待顯示數(shù)XLAT;轉(zhuǎn)換成七段碼MOVDX,200HOUTDX,AL;送入段碼端口
43、MOVAL,DISPBIT;MOVDX,201HOUTDX,AL;送當前位碼,點亮一個數(shù)碼管RORDISPBIT,1;產(chǎn)生下一個位碼INCSI;修改指針,指向下一個待顯示數(shù)據(jù)CALLDELAY;延時LOOPAGA;處理下一個數(shù)碼管的顯示MOVAX,4C00HINT21HCODE ENDSENDSTART58254定時/計數(shù)器的定時與計數(shù)方式有什么區(qū)別? 8254在方式 0工作時, 各通道的CLK、 GATE 信號有什么作用? 各通道的控制字地址都相同,8254是怎樣區(qū)分的?解:( 1) 8254作為計數(shù)器使用時,對 CLK 端的輸入脈沖進行單純的減法計數(shù),這時 CLK端輸入的脈沖不作為計時基準
44、。此外, 用作計數(shù)器時,計數(shù)完成后必須重新初始化,只能使用一次。8254作為定時器使用時,要求CLK 端輸入的脈沖必須作為時鐘基準,通過對該基準時鐘脈沖的計數(shù)來實現(xiàn)精確定時。用作定時器時,計數(shù)的過程周而往復(fù),重復(fù)進行。2) 8254 工作在方式0 時, CLK 端輸入計數(shù)用的脈沖信號;GATE 信號為高電平時, 對 CLK 端輸入的脈沖進行計數(shù);GATE 信號為低電平時,暫停計數(shù);GATE信號重新為高電平后,恢復(fù)原先的計數(shù)。(3)由8254的方式控制字中的D7、D6兩位來選擇計數(shù)通道。6.設(shè)8254的端口地址為0240H0243H,通道0輸入的CLK頻率為1MHz,為使通道 0 輸出 1KHz
45、 的方波,編寫初始化程序。如果讓通道0 與通道 1 級聯(lián)(即OUT0接 CLK1 )實現(xiàn) 1 秒鐘定時,則初始化程序如何編制。解:1) 通道 0 輸出 1KHz 的方波:計數(shù)初值為1MHz/1KHz = 1000,等于十六進制數(shù)03E8H,控制字設(shè)定為先寫低8位,后寫高8 位,方式下:3 工作,二進制計數(shù)方式,所以控制字為二進制計數(shù)方式,所以控制字為 36H。初始化程序如MOVMOVOUTMOVAL , DX, DX, DX,36H ; 243H AL ; 240H0 的控制字MOVOUTAL , 0E8HDX, AL ;寫入通道0 的時間常數(shù)MOVAL , 03H ;OUTDX, AL ;(
46、 2)通道0 與通道1 級聯(lián)實現(xiàn)1 秒定時:要實現(xiàn)1 秒定時,對1MHz輸入脈沖進行分頻的系數(shù)為 1000000=5000* 200。通道 0 工作在方式2,分頻系數(shù)200,采用十進制計數(shù),則通道0 方式控制字為:25H。通道1 工作在方式0,分頻系數(shù)5000,也采用十進制計數(shù),則通道1 方式控制字為:61H。初始化程序如下:MOVAL , 25H;通道0 控制字:方式2,十進制計數(shù),只寫高8 位MOVDX, 243H;OUTDX, AL;MOVAL , 61H;通道1 控制字:方式0,十進制計數(shù),只寫高8 位OUTDX, AL;MOVDX, 0240H;MOVAL , 02H;通道0 時間常
47、數(shù)(BCD 數(shù)高8 位)OUTDX, AL;MOVAL , 50H;通道1 時間常數(shù)(BCD 數(shù)高8 位)MOVDX, 0241H;OUT DX, AL如果要再次進行1秒鐘定時,則需要對通道1重新初始化。如果需要連續(xù)的1秒定時信 號,則通道1應(yīng)選用方式3。對總數(shù)為1000000的分頻系數(shù),可以有多種分解方法。7.編制一個使PC機的8254產(chǎn)生600Hz方波的程序,并使該方波送至揚聲器發(fā)聲。解:PC機中利用8254定時器的通道2來驅(qū)動揚聲器。通道2的工作及其輸出受到主 板上8255A的PB 口(口地址61H)控制:GATE2接PB0,即PB0=1時,定時器才可 能工作;OUT2與PB1相與后輸出
48、到揚聲器,即PB1=1時,定時器2的OUT2才能輸 出到揚聲器。定時器的輸出波形是對1.1931MHZ頻率信號分頻得到的,因此將定時器 2工作 在方式3,分頻系數(shù)用下式計算:分頻系數(shù)=1193100+給定頻率(1193100=12348CH)因此程序如下:MOVAL ,0B6H;通道2控制字:方式3, 16位常數(shù)OUT43H,AL;送入8254控制端口MOVDX ,12HMOVAX ,348CH;DX, AX中置入常數(shù)12348cHMOVDI ,600;DI為輸出頻率DIVDI;除法運算,計算分頻系數(shù)OUT42H,AL;低8位送通道2MOVAL ,AHOUT42H,AL;高8位送通道2INAL
49、 ,61HORAL ,3OUT61H,AL;將8255A的B端口低2位置“1”8.在RS-232C接口標準中,引腳TxD、RxD、RTS、CTS、DTR、dsr、的功能是什么?解:TxD:串行數(shù)據(jù)輸出。RxD:串行數(shù)據(jù)輸入。:數(shù)據(jù)終端準備好狀態(tài),低電平有效。用于向調(diào)制解調(diào)器或外設(shè)表示數(shù)據(jù)終端已準備好。:數(shù)據(jù)設(shè)備準備好狀態(tài),低電平有效。調(diào)制解調(diào)器或外設(shè)準備好時DSR有效。RTs :請求發(fā)送信號,低電平有效。表示數(shù)據(jù)終端設(shè)備已經(jīng)做好發(fā)送數(shù)據(jù)的準備,請調(diào) 制解調(diào)器/外設(shè)準備接收數(shù)據(jù)。CTS:清除發(fā)送(允許傳送)信號,低電平有效。調(diào)制解調(diào)器/外設(shè)作好傳送準備,允許數(shù)據(jù)終端設(shè)備發(fā)送數(shù)據(jù)時CTS有效。9.
50、 16550的通信控制寄存器中的尋址位有什么作用?在初始化編程時,應(yīng)該怎樣設(shè)置? 解:16550芯片內(nèi),接收緩沖寄存器/發(fā)送保持寄存器的地址與除數(shù)低字節(jié)寄存器的地 址相同,中斷允許寄存器的地址與除數(shù)高字節(jié)寄存器的地址相同。為了區(qū)分同一地址的 不同用途,16550使用DLAB位來加以標識。DLAB位是通信線控制寄存器的最高位 D7, 該位設(shè)置為0,隨后的相應(yīng)操作對接收緩沖寄存器/發(fā)送保持寄存器或中斷允許寄存器進 行;該位設(shè)置為1,隨后的相應(yīng)操作對除數(shù)寄存器進行。在向除數(shù)寄存器寫入初值之前, 應(yīng)將DLAB置為1。由于一般不需要重復(fù)訪問除數(shù)寄存器,寫完除數(shù)后應(yīng)將DLAB置為0,以方便后續(xù)的操作。10.編寫用PC機中16550查詢方式輸入50個字符的異步通信程序。設(shè)16550的端口地址為 3F8H3FFH,數(shù)據(jù)格式為:8位數(shù)據(jù)位、1位偶校驗位、2位停止位,通信速率為19.2Kbps。 解:接收子程序中,如果接收成功,清 CF標志,否則,置位CF標志位。程序如下:;16550查詢方式接收程序DATA SEGMENTREC_DATA DB 50
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 浙江省溫州市鹿城區(qū)2025年七下英語期中聯(lián)考模擬試題含答案
- 2025年醫(yī)院電子病歷系統(tǒng)優(yōu)化構(gòu)建醫(yī)療信息化協(xié)同發(fā)展模式與技術(shù)創(chuàng)新報告
- 咨詢工程師實務(wù)視頻課件
- 2025年醫(yī)藥企業(yè)研發(fā)外包(CRO)在臨床試驗數(shù)據(jù)分析與解讀中的方法與工具報告
- 2025年山東省臨沂市蘭山區(qū)英語七下期末教學質(zhì)量檢測模擬試題含答案
- 經(jīng)典思維模型精解集之營銷力篇
- 保密安全試題及答案
- 數(shù)字文化產(chǎn)業(yè)商業(yè)模式創(chuàng)新:2025年網(wǎng)絡(luò)直播與短視頻內(nèi)容創(chuàng)作研究報告
- 2025年工業(yè)互聯(lián)網(wǎng)平臺網(wǎng)絡(luò)安全隔離技術(shù)在工業(yè)互聯(lián)網(wǎng)安全領(lǐng)域的市場機遇與挑戰(zhàn)研究報告001
- 安全檢查培訓試題及答案
- 火鍋店領(lǐng)班的崗位職責和工作流程
- 二人合伙協(xié)議書(電子版)
- 上門廚師項目商業(yè)計劃書
- 第35屆中國化學奧林匹克(初賽競賽)試題及參考答案
- 許可證有效期內(nèi)輻射安全和防護工作總結(jié)
- 四川省中小流域暴雨洪水計算表格(尾礦庫洪水計算)
- 山東大學齊魯醫(yī)學院
- 椅子部件圖紙
- 街道綜合協(xié)管員筆試題
- 入庫單(標準范本)
- GB/T 4744-2013紡織品防水性能的檢測和評價靜水壓法
評論
0/150
提交評論