歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > PPT文檔下載  

微型計(jì)算機(jī)輸入輸出接口.ppt

  • 資源ID:14781518       資源大?。?span id="dcm2iam" class="font-tahoma">1.22MB        全文頁數(shù):74頁
  • 資源格式: PPT        下載積分:14.9積分
快捷下載 游客一鍵下載
會(huì)員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺(tái)登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要14.9積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機(jī)號(hào),方便查詢和重復(fù)下載(系統(tǒng)自動(dòng)生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

 
賬號(hào):
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會(huì)被瀏覽器默認(rèn)打開,此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請(qǐng)使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請(qǐng)知曉。

微型計(jì)算機(jī)輸入輸出接口.ppt

第5章 微型計(jì)算機(jī)輸入輸出接口,5.1 輸入輸出接口 5.2 輸入輸出數(shù)據(jù)傳輸?shù)目刂品绞?5.3 開關(guān)量輸入輸出接口,5.1 輸入輸出接口,5.1.1 外部設(shè)備及其信號(hào) 5.1.2 I/O接口的功能 5.1.3 I/O端口的編址方法 5.1.4 簡(jiǎn)單I/O接口的組成,5.1.1 外部設(shè)備及其信號(hào) 外部設(shè)備(Peripheral Device) 按照與CPU數(shù)據(jù)傳輸?shù)姆较騽澐? (1)輸入設(shè)備 鍵盤、鼠標(biāo)、光筆 輸入圖形信息的掃描儀、數(shù)碼相機(jī) 檢測(cè)現(xiàn)場(chǎng)信息的數(shù)字化測(cè)試儀表 模擬量采集和模擬量數(shù)字量轉(zhuǎn)換裝置等,(2)輸出設(shè)備 顯示器、打印機(jī) 繪圖儀 現(xiàn)場(chǎng)控制的數(shù)字量模擬量轉(zhuǎn)換裝置和執(zhí)行元件 (3)復(fù)合輸入輸出設(shè)備 外存儲(chǔ)設(shè)備是典型的復(fù)合輸入輸出設(shè)備: 磁帶機(jī)(Tape Driver) 軟磁盤驅(qū)動(dòng)器(Floppy Driver) 硬磁盤驅(qū)動(dòng)器(Hard Disk Driver) 光盤驅(qū)動(dòng)器(Compact Disk Driver) 許多光盤只能讀出信息,稱為CDROM (Compact DiskRead Only Memory),只讀光盤只能用作輸入設(shè)備。,2. 外部設(shè)備的信號(hào) (1)數(shù)據(jù)信號(hào) 按照信號(hào)的物理形態(tài),可分為以下幾種; 數(shù)字量: 以二進(jìn)制形式表述的數(shù)據(jù)、圖形或文字信息。 模擬量: 現(xiàn)場(chǎng)的物理量通過傳感器件,轉(zhuǎn)換為大小與之對(duì)應(yīng)的電壓或電流信號(hào)。這些量呈連續(xù)變化的形態(tài),稱為模擬量(Analog)。 開關(guān)量: 開關(guān)量是只有二種狀態(tài)(0,1)的量,如開關(guān)的接通(ON)與斷開(OFF),電機(jī)的啟停等 脈沖量: 計(jì)數(shù)脈沖、定時(shí)脈沖和控制脈沖 對(duì)于輸入設(shè)備,數(shù)據(jù)信號(hào)從外設(shè)送往CPU對(duì)于輸出設(shè)備,數(shù)據(jù)信號(hào)從CPU發(fā)往外部設(shè)備。,(2)狀態(tài)信號(hào) 狀態(tài)信號(hào)表明外部設(shè)備當(dāng)前的工作狀態(tài),用來協(xié)調(diào)CPU與外部設(shè)備之間的操作。 典型的狀態(tài)信號(hào):READY, BUSY 有的設(shè)備有指示出錯(cuò)狀態(tài)的信號(hào),如打印機(jī)的紙盡(Paper Out),故障(Fault)。 不同的外設(shè)可以有不同的狀態(tài)信號(hào)。 狀態(tài)信號(hào)總是從外部設(shè)備發(fā)往CPU。,(3)控制信號(hào) 控制信號(hào)是CPU向外設(shè)發(fā)出的命令,它指定設(shè)備的工作方式,啟動(dòng)或停止設(shè)備 控制信號(hào)的格式因設(shè)備而異 控制信號(hào)從CPU發(fā)往外部設(shè)備 數(shù)據(jù)信號(hào)、狀態(tài)信號(hào)、控制信號(hào)都是以“數(shù)據(jù)”的形式,通過數(shù)據(jù)總線在CPU和外部設(shè)備之間進(jìn)行傳輸?shù)摹?5.1.2 I/O接口的功能 接口:計(jì)算機(jī)一個(gè)部件與另一個(gè)部件之間的連接界面。 功能: 1. 設(shè)備選擇功能 CPU通過地址代碼來標(biāo)識(shí)和選擇不同的外部設(shè)備 接口對(duì)系統(tǒng)總線上傳輸?shù)耐庠O(shè)地址進(jìn)行譯碼,在檢測(cè)到本設(shè)備地址代碼時(shí),產(chǎn)生相應(yīng)的“選中”信號(hào) 2. 信息傳輸功能 設(shè)備被“選中”時(shí): 從CPU/數(shù)據(jù)總線接收數(shù)據(jù)或控制信息 外部設(shè)備的數(shù)據(jù)或狀態(tài)信息發(fā)往數(shù)據(jù)總線/CPU,3. 數(shù)據(jù)格式轉(zhuǎn)換功能 外設(shè)使用的數(shù)據(jù)格式與CPU數(shù)據(jù)格式不同時(shí),接口要進(jìn)行二種數(shù)據(jù)格式之間的相互轉(zhuǎn)換。 聯(lián)絡(luò)功能 從系統(tǒng)總線或外設(shè)接收一個(gè)數(shù)據(jù)后,發(fā)出“數(shù)據(jù)到”聯(lián)絡(luò)信號(hào),通知外設(shè)或CPU取走數(shù)據(jù) 數(shù)據(jù)傳輸完成,向?qū)Ψ桨l(fā)出信號(hào),準(zhǔn)備進(jìn)行下次傳輸 5. 中斷管理功能 向CPU申請(qǐng)中斷; 向CPU發(fā)中斷類型號(hào); 中斷優(yōu)先權(quán)的管理; 在以8086為CPU的系統(tǒng)中,這些功能大部份可以由專門的中斷控制器實(shí)現(xiàn)。,復(fù)位功能 接口在接收系統(tǒng)的復(fù)位信號(hào)后,將接口電路及其所連接的外部設(shè)備置成初始狀態(tài)。 7. 可編程功能 有些接口具有可編程特性,可以用指令來設(shè)定接口的工作方式、工作參數(shù)和信號(hào)的極性。,錯(cuò)誤檢測(cè)功能 (1) 物理信道上的傳輸錯(cuò)誤 信號(hào)在線路上傳輸時(shí),如果遇到干擾信號(hào),可能發(fā)生傳輸錯(cuò)誤。 檢測(cè)傳輸錯(cuò)誤的常見方法是奇偶檢驗(yàn)。 (2) 數(shù)據(jù)傳輸中的覆蓋錯(cuò)誤 輸入設(shè)備完成一次輸入操作后,把所獲得的數(shù)據(jù)暫存在接口內(nèi) 如果在該設(shè)備完成下一次輸入操作之后,CPU還沒有從接口取走數(shù)據(jù),那么,在新的數(shù)據(jù)送入接口后,上一次的數(shù)據(jù)被覆蓋,從而導(dǎo)致數(shù)據(jù)的丟失 輸出操作中也可能產(chǎn)生類似的錯(cuò)誤 覆蓋錯(cuò)誤導(dǎo)致數(shù)據(jù)的丟失,易發(fā)生在高速數(shù)據(jù)傳輸?shù)膱?chǎng)合,5.1.3 I/O端口的編址方法 有兩種不同的I/O端口編址方式: 1. I/O端口與內(nèi)存統(tǒng)一編址 把內(nèi)存的一部分地址分配給I/O端口,一個(gè)8位端口占用一個(gè)內(nèi)存單元地址,也稱為存儲(chǔ)器映射編址方式 優(yōu)點(diǎn): 訪問內(nèi)存單元和I/O端口使用相同的指令,使用方便 降低CPU電路的復(fù)雜性 缺點(diǎn): 減少了內(nèi)存可用范圍 難以區(qū)分訪問內(nèi)存和I/O的指令,降低了程序的可讀性和可維護(hù)性,I/O端口與內(nèi)存獨(dú)立編址 內(nèi)存儲(chǔ)器和I/O端口各自有自己獨(dú)立的地址空間 訪問I/O端口需要專門的I/O指令 8086/8088 CPU采用這種方式 訪問內(nèi)存儲(chǔ)器 使用20根地址線A0A19 使M/IO#=1 內(nèi)存地址范圍為000000FFFFFH共1MB 訪問I/O端口 使用低16根地址線A0A15 使M/IO#= 0 I/O端口地址范圍為00000FFFFH共64K,3 IBM PC 微型計(jì)算機(jī)I/O端口地址分配 在PC系列微機(jī)中,僅使用A0A9共10條地址線定義I/O端口(設(shè)A11A15= 0),尋址范圍為03FFH 前256個(gè)端口地址供主板上尋址I/O接口芯片使用,后768個(gè)供擴(kuò)展槽接口卡使用 用戶設(shè)計(jì)I/O接口電路的時(shí)候,應(yīng)使用系統(tǒng)未占用的端口地址區(qū)域 為避免所選擇的地址與其他擴(kuò)展卡沖突,最好將其設(shè)計(jì)成地址可選的型式 IBM-PC微機(jī)系統(tǒng)板各I/O接口器件端口地址見表5-1。,5.1.4 簡(jiǎn)單I/O接口的組成 端口 端口:接口內(nèi)的寄存器,用來暫存CPU和外設(shè)之間傳輸?shù)臄?shù)據(jù)、狀態(tài)和命令。 端口地址:每一個(gè)端口有一個(gè)獨(dú)立的地址。 外部設(shè)備地址:設(shè)備接口內(nèi)各端口的地址,一臺(tái)外部設(shè)備可以擁有幾個(gè)通常是相鄰的端口地址。 端口種類:數(shù)據(jù)端口、命令端口(控制端口)和狀態(tài)端口。 如果外部設(shè)備的信息(數(shù)據(jù)/狀態(tài))已經(jīng)鎖存,端口也可以由三態(tài)緩沖電路組成。,地址譯碼電路 地址譯碼是接口的基本功能之一。 一個(gè)接口上的幾個(gè)端口地址通常是連續(xù)排列的,可以把16位地址碼分解為二個(gè)部分: 高位地址碼用作對(duì)接口的選擇; 低位地址碼用來選擇接口內(nèi)不同的端口。 例如:某接口占有地址330H333H: 高8位地址為11001100B時(shí),本接口被選中; 低2位地址為00,01,10,11時(shí),選擇接口內(nèi)的不同端口。,圖5-1 端口的地址譯碼電路和跳線器,為了避免地址沖突,許多接口電路允許用“跳線器(JUMPER)”改變端口地址。上頁圖3-1(b) 將異或門的輸出代替圖3-1(a)中的A8,A9引腳: 二個(gè)跳線引腳均接地時(shí),上面譯碼電路仍然產(chǎn)生330H333H的端口譯碼信號(hào); 當(dāng)二個(gè)跳線引腳均接“1”時(shí),上面譯碼電路會(huì)產(chǎn)生030H033H的端口譯碼信號(hào) 同理還可以產(chǎn)生130H133H,230H233H的譯碼信號(hào)。 8086工作于最大模式時(shí),上面的M/IO#、WR#、RD#信號(hào)由8288總線控制器發(fā)出的IORC#、IOWC#代替。,由于讀、寫操作不會(huì)同時(shí)進(jìn)行,一個(gè)輸入端口和另一個(gè)輸出端口可以使用同一個(gè)地址編碼。 例如,可安排數(shù)據(jù)輸入端口、數(shù)據(jù)輸出端口使用同一個(gè)地址330H,命令端口和狀態(tài)端口共同使用地址331H。 需要注意的是,數(shù)據(jù)輸入端口和數(shù)據(jù)輸出端口雖然使用相同的地址,但卻是二個(gè)各自獨(dú)立的不同的端口。,數(shù)據(jù)鎖存器與緩沖器 數(shù)據(jù)(狀態(tài))輸入端口: 必須通過三態(tài)緩沖器與系統(tǒng)總線相連,保證數(shù)據(jù)總線能夠正常地進(jìn)行數(shù)據(jù)傳送。 輸入設(shè)備在完成一次輸入操作后,在輸出數(shù)據(jù)的同時(shí),產(chǎn)生數(shù)據(jù)選通信號(hào),把數(shù)據(jù)打入八位鎖存器74LS273 鎖存器的輸出信號(hào)通過三態(tài)八位緩沖器74LS244連接到系統(tǒng)數(shù)據(jù)總線。 數(shù)據(jù)端口讀信號(hào)由地址譯碼電路產(chǎn)生。 高電平(無效):緩沖器輸出端呈高阻態(tài)。 低電平(有效,端口被選中 ):已鎖存的數(shù)據(jù)通過74LS244送往系統(tǒng)數(shù)據(jù)總線,被CPU所接收。,圖5-3 輸入設(shè)備接口的數(shù)據(jù)鎖存和緩沖電路,數(shù)據(jù)(命令)輸出端口: CPU送往外設(shè)的數(shù)據(jù)或命令,應(yīng)由接口進(jìn)行鎖存,以便使外設(shè)有充分的時(shí)間接收和處理。 八位輸出鎖存電路例(圖5-4)。,圖5-4 輸出鎖存電路,簡(jiǎn)單的輸入輸出接口(圖5-5) 把地址譯碼、數(shù)據(jù)鎖存與緩沖、狀態(tài)寄存器、命令寄存器各個(gè)電路組合起來,構(gòu)成簡(jiǎn)單輸入輸出接口 接口連接的信號(hào): 與系統(tǒng)總線連接: 地址總線A0A15 數(shù)據(jù)總線D0D7 控制總線M/IO#、RD# 、WR# (最小模式時(shí))或IOWC#、IORC#(最大模式時(shí))相連接 與外部設(shè)備相連:數(shù)據(jù)、狀態(tài)、命令。,圖5-5 簡(jiǎn)單接口的組成,5.2 輸入輸出數(shù)據(jù)傳輸?shù)目刂品绞?5.2.1 程序方式 5.2.2 中斷方式 5.2.3 直接存儲(chǔ)器存取(DMA)方式,5.2.1 程序方式 在程序控制下進(jìn)行信息傳送 分為無條件傳送和條件傳送二種 1 無條件傳送方式 對(duì)于簡(jiǎn)單的外部設(shè)備的IO操作可以隨時(shí)進(jìn)行; 例如,開關(guān)、發(fā)光二極管 這些簡(jiǎn)單設(shè)備的輸入信號(hào)一般不需要鎖存,可以通過三態(tài)緩沖器與系統(tǒng)數(shù)據(jù)總線直接相連。 簡(jiǎn)單輸出設(shè)備的信號(hào)一般需要由鎖存器鎖存,圖5-6 無條件輸入輸出傳送接口,條件傳送方式 條件傳送也稱為查詢式傳送、異步傳送; 接口電路除了有傳送數(shù)據(jù)的端口以外,還應(yīng)有儲(chǔ)存和傳送狀態(tài)的端口。 對(duì)于輸入過程: 外設(shè)將數(shù)據(jù)準(zhǔn)備好, “準(zhǔn)備好(READY)”標(biāo)志位置1; CPU將數(shù)據(jù)取走,READY=0 對(duì)于輸出過程: 外設(shè)接收到數(shù)據(jù),將“忙(BUSY)”標(biāo)志位置1 數(shù)據(jù)輸出完成,將 “BUSY”清零。,一個(gè)數(shù)據(jù)的“條件傳送”過程: CPU從接口中讀取狀態(tài)字; CPU檢測(cè)狀態(tài)字的對(duì)應(yīng)位是否滿足“就緒”條件,如果不滿足,則回到前一步重新讀取狀態(tài)字; 如狀態(tài)字表明外設(shè)已處于“就緒”狀態(tài),則傳送數(shù)據(jù)。,圖5-9 查詢式輸入流程,查詢方式輸入接口電路(圖5-7) 接口內(nèi)有兩個(gè)端口: 數(shù)據(jù)端口(8位,輸入) 狀態(tài)端口(1位,輸入,連接在D7上,=1表示有數(shù)據(jù)) 選通信號(hào)有二個(gè)作用: 將外設(shè)的數(shù)據(jù)送到接口的鎖存器中; 使接口中的D觸發(fā)器置“l(fā)”(READY=1) 數(shù)據(jù)信息和狀態(tài)信息從不同端口經(jīng)過數(shù)據(jù)總線送到CPU。,圖5-7 查詢式輸入接口電路,匯編語言程序: AGAIN: IN AL, STAT_PORT; 讀狀態(tài)端口,D7=1表示“數(shù)據(jù)就緒” TEST AL,80H; 測(cè)試“數(shù)據(jù)就緒”位 JZ AGAIN; 未就緒,繼續(xù)讀狀態(tài)端口 IN AL, DATA_PORT; 已就緒,從數(shù)據(jù)端口讀取數(shù)據(jù) C語言程序: do stat = inportb( stat_port ); while (stat /* 數(shù)據(jù)已準(zhǔn)備好則讀取數(shù)據(jù) */,查詢方式輸出接口電路(圖5-8) 接口內(nèi)有兩個(gè)端口: 數(shù)據(jù)端口(8位,輸出) 狀態(tài)端口(1位,輸入,連接在D7上,=1表示正在輸出,“BUSY”) CPU讀取接口中的狀態(tài): 外設(shè)忙( BUSY =1),CPU等待 外設(shè)空閑( BUSY =0),向外設(shè)輸出數(shù)據(jù),圖5-8 查詢式輸出接口電路,“數(shù)據(jù)端口寫”信號(hào)作用: 把數(shù)據(jù)打入“鎖存器”; 將“狀態(tài)觸發(fā)器”置1 D觸發(fā)器的作用: 為外設(shè)提供一個(gè)聯(lián)絡(luò)信號(hào)STB,告訴外設(shè)現(xiàn)在接口中已有數(shù)據(jù)可供提??; 用作該設(shè)備的狀態(tài)標(biāo)志( “忙”,BUSY)。,匯編語言程序: ONE: IN AL, STATUS_PORT ; 讀狀態(tài)端口 TESTAL, 80H ; 測(cè)試“忙”位 JNZ ONE ; 忙,再讀狀態(tài)端口 MOV AL, DATA ; 不忙,取來數(shù)據(jù) OUT DATA_PORT, AL ; 送入數(shù)據(jù)端口 C語言程序: do stat = inportb( status_port ); while ( stat /*設(shè)備空閑:輸出數(shù)據(jù) */,查詢式輸入輸出的程序設(shè)計(jì)例 某字符輸入設(shè)備以查詢方式工作: 數(shù)據(jù)輸入端口: 0054H, 狀態(tài)端口: 0056H。 狀態(tài)寄存器:D0=1,數(shù)據(jù)準(zhǔn)備好,可以輸入; 狀態(tài)寄存器:D1=1,輸入設(shè)備發(fā)生故障 要求: 從該設(shè)備上輸入80個(gè)字符,配上水平和垂直校驗(yàn)碼(偶校驗(yàn)),向串行口輸出。 如果設(shè)備出錯(cuò),顯示錯(cuò)誤信息后停止。,匯編語言程序: .data Buffer DB 81 dup( ? ) Message DB Device Fault !,0DH,0AH,$ .code Start:MOV AX,data ;對(duì)DS初始化 MOV DS,AX LEA SI, Buffer ;設(shè)置SI為緩沖區(qū)指針 MOV CX, 80;設(shè)置CX為計(jì)數(shù)器 MOVDL, 0 ;DL置垂直校驗(yàn)碼初值,Next:IN AL, 56H ;讀入狀態(tài) TEST AL,02H ;測(cè)狀態(tài)寄存器D1 JNZ ERROR ;設(shè)備故障,轉(zhuǎn)ERROR TEST AL, 01H ;測(cè)狀態(tài)寄存器D0 JZ Next;未準(zhǔn)備好,則等待,再測(cè) IN AL,54H ;準(zhǔn)備好, 輸入字符 AND AL, 7FH ;清最高位,進(jìn)行校驗(yàn) JPE Store ;已經(jīng)是偶數(shù)個(gè)1,則轉(zhuǎn)Store ORAL,80H ;奇數(shù)個(gè)1,將最高位置為1 Store: XOR DL,AL ;產(chǎn)生垂直校驗(yàn)碼 MOV SI, AL ;將字符送緩沖區(qū) INC SI ;修改地址指針 LOOP Next ;80個(gè)字符未輸入完成,繼續(xù),MOVSI, DL ; 輸入完成, 保存垂直校驗(yàn)碼 Tranfer:LEA SI,Buffer;準(zhǔn)備發(fā)送,SI中置字符串首址 MOV CX,81 ;發(fā)送字符數(shù) One:MOV AH,04H ;設(shè)置串口輸出功能號(hào) MOV DL, SI ;取出一個(gè)字符 INT 21H;從串口輸出 INC SI;修改指針 LOOP One ;輸出下一個(gè)字符 JMP Done Error:MOV AH, 09H;設(shè)備故障,輸出出錯(cuò)信息 LEA DX, Message INT 21H Done: MOV AH, 4CH INT 21H;返回DOS END Start,說明: 程序由二段循環(huán)程序組成: 第一段程序從設(shè)備輸入80個(gè)字符,同時(shí)產(chǎn)生它的水平/垂直校驗(yàn)碼存入緩沖區(qū); 第二段程序?qū)⒕彌_區(qū)內(nèi)容通過串口輸出。 測(cè)試狀態(tài)位要注意先后次序:由于設(shè)備故障將導(dǎo)致該設(shè)備不能正常輸入,使完成標(biāo)志(D0)恒為零。所以,在設(shè)備發(fā)生故障時(shí)先判是否完成可能導(dǎo)致程序死循環(huán)。 產(chǎn)生水平校驗(yàn)碼:從設(shè)備讀入數(shù)據(jù),清除最高位,根據(jù)剩余七位的奇偶特性決定最高位置1或不變(保持為0)。 產(chǎn)生垂直校驗(yàn)碼:將80個(gè)字節(jié)半加(異或)得到。,多個(gè)設(shè)備循環(huán)查詢方法舉例: 三個(gè)設(shè)備,它們狀態(tài)端口地址分別為STATl、STAT2、STAT3,三個(gè)狀態(tài)端口均使用第5位作為準(zhǔn)備好標(biāo)志。 TREE: MOV FLAG,0 INPUT: IN AL,STAT l TEST AL,20H JZ DEV2 CALL PROC l,DEV2: IN AL,STAT2 TEST AL,20H JZ DEV3 CALL PROC2 DEV3; IN AL,STAT3 TEST AL,20H JZ NOINPUT CALL PROC3 NOINPUT:CMP FLAG,07H JNE INPUT ,說明: PROCl、PROC2、PROC3是三個(gè)設(shè)備輸入數(shù)據(jù)并進(jìn)行處理的子程序。 FLAG存放三個(gè)設(shè)備輸入完成的標(biāo)志,D0, D1, D2分別代表一個(gè)設(shè)備的輸入完成情況(=0表示未完成,=1表示完成)。 上例僅適用于三個(gè)設(shè)備工作速度都比較慢的情況; 如果其中一個(gè)設(shè)備工作速度很快,而其他設(shè)備的輸入輸出處理程序運(yùn)行時(shí)間又較長(zhǎng),可能發(fā)生“覆蓋錯(cuò)誤”。 在這種情況下,應(yīng)優(yōu)先執(zhí)行工作速度較快的外設(shè)的IO過程,然后再執(zhí)行其他設(shè)備的IO過程。,5.2.2 中斷方式 程序查詢方式的特點(diǎn): 程序查詢方式解決了CPU與外設(shè)工作的協(xié)調(diào)問題,但是卻大大降低了CPU的使用效率; 在程序查詢方式中,CPU處于主動(dòng)地位,外設(shè)處于消極等待查詢的被動(dòng)地位; 設(shè)備較多時(shí),查詢方式的數(shù)據(jù)傳送很難使每一個(gè)外設(shè)都能工作在最佳狀態(tài)。,程序中斷方式特點(diǎn): 賦予系統(tǒng)中的外設(shè)某種主動(dòng)申請(qǐng)、配合CPU工作的“權(quán)利”。 外設(shè)把數(shù)據(jù)準(zhǔn)備好時(shí),主動(dòng)向CPU發(fā)出一個(gè)請(qǐng)求信號(hào)。 CPU接收到請(qǐng)求信號(hào)后,暫停當(dāng)前的工作,進(jìn)行該設(shè)備的數(shù)據(jù)傳送操作。 賦予外設(shè) “主動(dòng)權(quán)”之后,CPU可以不必反復(fù)查詢?cè)撛O(shè)備的狀態(tài),而是正常地處理系統(tǒng)任務(wù); CPU與外設(shè)處于某種“并行工作”的狀態(tài),從而提高CPU的工作效率。,中斷方式舉例: 某外設(shè)在1秒內(nèi)傳送100個(gè)字節(jié)。 若用程序查詢的方式傳送,則CPU為傳送100個(gè)字節(jié)所化費(fèi)的時(shí)間等于1秒。 用中斷控制方式傳送,CPU為執(zhí)行一個(gè)字節(jié)的傳送需要進(jìn)入一次中斷服務(wù)程序。 設(shè)CPU執(zhí)行一次中斷服務(wù)程序需要100s; 傳遞100個(gè)字節(jié)CPU所使用的時(shí)間為100s100=10ms; CPU處理中斷開銷為1,99的時(shí)間可執(zhí)行其他任務(wù); 中斷方式的數(shù)據(jù)傳送仍在程序的控制下執(zhí)行,稱為程序中斷方式; 適應(yīng)于中、慢速的外部設(shè)備數(shù)據(jù)傳送。,3.2.3 直接存儲(chǔ)器存取(DMA)方式 程序中斷方式,程序查詢方式的缺點(diǎn): 中斷方式: 每傳送一次數(shù)據(jù),CPU必須執(zhí)行一次中斷服務(wù)程序; 對(duì)于高速數(shù)據(jù)傳輸,容易產(chǎn)生“覆蓋錯(cuò)誤”。 程序查詢方式: 響應(yīng)速度比中斷方式要快一些,完成一次數(shù)據(jù)傳輸仍然需要執(zhí)行七、八條以上的指令。 CPU的工作速度不高時(shí)仍有可能跟不上外設(shè)數(shù)據(jù)傳輸?shù)男枰?直接存儲(chǔ)器傳送 (Direct Memory AccessDMA) 將外設(shè)的數(shù)據(jù)不經(jīng)過CPU直接送入內(nèi)存儲(chǔ)器; 或者,從內(nèi)存儲(chǔ)器不經(jīng)過CPU直接送往外部設(shè)備; 一次DMA傳送只需要執(zhí)行一個(gè)DMA周期(相當(dāng)于一個(gè)總線讀寫周期); 能夠滿足高速外設(shè)數(shù)據(jù)傳輸?shù)男枰?需要一個(gè)專門的器件來協(xié)調(diào)外設(shè)接口和內(nèi)存儲(chǔ)器的數(shù)據(jù)傳輸,稱為DMA控制器(DMAC),圖5-10 DMA數(shù)據(jù)傳送示意圖,5.3 開關(guān)量輸入輸出接口,5.3.1 開關(guān)量輸入接口 5.3.2 開關(guān)量輸出接口,5.3.1 開關(guān)量輸入接口 1 基本的開關(guān)量輸入接口 開關(guān)形態(tài):?jiǎn)蔚秵螖S開關(guān)/單刀雙擲開關(guān)/按鈕 開關(guān)量通過三態(tài)緩沖器與系統(tǒng)數(shù)據(jù)總線連接 常用的三態(tài)緩沖器: 74LS244(輸入輸出同相)/74LS240(輸入輸出反相) 一條輸入指令可以同時(shí)讀入8位或16位開關(guān)量。,圖5-11 基本開關(guān)量輸入接口,2 矩陣式開關(guān)量輸入接口 開關(guān)數(shù)量多時(shí),可以排列成矩陣,例如:圖5-12(鍵盤) 數(shù)據(jù)輸出端口連接8根“行線”(Row,R0R7); 數(shù)據(jù)輸入端口連接8根“列線”(Column, C0C7); 電路特點(diǎn): 沒有鍵按下時(shí),列線端口輸入為全“1”; 行線端口輸出全“1”時(shí),不論有無鍵按下,列線端口輸入仍然為全“1”; 某一行線輸出“0”時(shí),如果該行上有一個(gè)鍵按下,則輸入端口輸入代碼為7個(gè)“1”,1個(gè)“0”,0的位置與被按下鍵的位置相對(duì)應(yīng)。,圖5-12 鍵盤(矩陣式開關(guān)量輸入)接口,鍵盤掃描與編碼: 對(duì)8根行線逐行掃描,識(shí)別按鍵的所在行、列,從而獲得該鍵的代碼; 一個(gè)鍵的編碼可以用它的二字節(jié)“行列碼”表示。例如,(R3,C2)的二字節(jié)“行列碼”為F7FBH: F7H=11110111 :按鍵在R3行上; FBH=11111011 :按鍵在C2列上; 用“行列碼”查表,可以得到這個(gè)鍵的代碼。 鍵的編碼也可以用一字節(jié)“掃描碼”表示。上例中按鍵的一字節(jié)“掃描碼”為32H: 高4位0011:鍵所在的行; 低4位0010:鍵所在的列; 鍵剛按下時(shí),會(huì)產(chǎn)生“抖動(dòng)”。,鍵盤掃描程序: 沒有鍵被按下,返回1; 有鍵按下時(shí)返回按鍵的二字節(jié)“行列碼”(行碼為高8位,列碼為低8位); RPORT, CPORT 定義為行、列端口的地址。 unsigned int kbinput( ) unsigned int row, row0, column, code, k=0; outportb( RPORT, 0); /*各行輸出全0,測(cè)試有無鍵按下*/ if (inportb(CPORT) /* 延時(shí)20ms,消除抖動(dòng) */,if (inportb(CPORT) /* 形成下一個(gè)行碼 */ ,if (column = = 0 xff ) return( 0 xffff ); /* 未找到按鍵所在行,返回全“1” */ code = (row0 ,5.3.2 開關(guān)量輸出接口 1 基本的開關(guān)量輸出接口 常見的開關(guān)量輸出: LED發(fā)光二極管 LED指示燈用于指示室內(nèi)儀表狀態(tài) 小功率LED可以由邏輯電路直接驅(qū)動(dòng): 輸出0:LED發(fā)光 輸出1:LED熄滅 執(zhí)行元件驅(qū)動(dòng)線圈,表5-3 部分邏輯電路輸出端電流,大功率LED驅(qū)動(dòng)或執(zhí)行元件驅(qū)動(dòng)線圈的驅(qū)動(dòng): 普通邏輯電路輸出,外接功率放大三極管驅(qū)動(dòng); 集電極開路驅(qū)動(dòng)器(OC驅(qū)動(dòng)器),輸出端通過上拉 電阻接高壓。,2 LED七段數(shù)碼顯示管接口,圖5-15 多位LED數(shù)碼顯示接口,多位LED顯示器驅(qū)動(dòng): 設(shè)置位碼,熄滅所有數(shù)碼管; 將一個(gè)數(shù)碼管的字形代碼(段碼)送入段碼端口; 設(shè)置位碼,點(diǎn)亮一個(gè)數(shù)碼管 適當(dāng)延時(shí)后,重復(fù)以上過程 多位不同的數(shù)字同時(shí)顯示在不同的數(shù)碼管上。 送段碼之前熄滅所有數(shù)碼管可以消除“段碼”和“位碼”不同步產(chǎn)生的閃爍。,多位LED數(shù)碼顯示程序: 需要輸出的數(shù)字分別是1,2,3,4,5,6,7,8 段碼和位碼的端口地址分別是segport 和 bitport,;數(shù)據(jù)段和堆棧段 data Segtabdb 40h, 4fh, 24h, 30h, 19h db 12h, 02h, 78h, 00h, 10h buffer db 1, 2, 3, 4, 5, 6, 7, 8 segcodedb? bitcodedb? stack100h,code leddisp proc far pushds; 保護(hù)各寄存器內(nèi)容 pushax pushbx pushcx pushsi movax, data;裝載ds movds, ax leabx, segtab;bx 置為七段碼表首址 movbitcode, 80h ; 位碼初始值為80H(從左邊開始) movsi, 0;si用作輸出緩沖區(qū)指針,初值0 movcx, 8;cx 用作循環(huán)計(jì)數(shù)器,初值8,one: moval, 0 out bitport, al; 送位碼0,熄滅各LED moval, buffersi ;取出一個(gè)待輸出數(shù)字 xlat; 轉(zhuǎn)換成七段碼 outsegport, al; 向段碼端口輸出 moval, bitcode outbitport, al; 輸出位碼,點(diǎn)亮一個(gè)LED rorbitcode, 1; 修改位碼,得到下一個(gè)位碼 incsi; 修改輸出緩沖區(qū)指針 calldelay; 延時(shí) loopone; 循環(huán),點(diǎn)亮下一個(gè)LED,popsi popcx;恢復(fù)各寄存器 popbx popax popds ret; 返回主程序 leddispendp end,習(xí)題5,1. 接口電路與外部設(shè)備之間傳送的信號(hào)有哪幾種?傳輸方向怎樣? 2. 接口電路有哪些功能?哪些功能是必需的? 3. I/O端口的編址有哪幾種方法?各有什么利弊?80X86系列CPU采用哪種方法? 4. 按照傳輸信號(hào)的種類,I/O端口有幾種?它們信號(hào)的傳輸方向怎樣? 5. I/O端口譯碼電路的作用是什么?在最小模式和最大模式下分別有哪些輸入信號(hào)? 6. 外部設(shè)備數(shù)據(jù)傳送有哪幾種控制方式?從外部設(shè)備的角度,比較不同方式對(duì)外部設(shè)備的響應(yīng)速度。,7. 敘述一次查詢式輸出過程中,接口內(nèi)各電路、信號(hào)的狀態(tài)變化過程。 8. 比較程序中斷方式和查詢方式的區(qū)別,根據(jù)比較,指出中斷工作方式的優(yōu)缺點(diǎn)。 9. 比較DMA方式和程序中斷方式的區(qū)別,根據(jù)比較,指出DMA工作方式的優(yōu)缺點(diǎn)。 10. 某輸入設(shè)備數(shù)據(jù)端口、狀態(tài)端口、控制端口地址分別為70H, 71H, 72H。狀態(tài)端口D5=1表示輸入完成,控制端口D7=1表示啟動(dòng)設(shè)備輸入(輸入完成后由設(shè)備清除該位)。從該設(shè)備輸入100個(gè)字節(jié)數(shù)據(jù),存入以BUFFER為首地址的緩沖區(qū)。如果啟動(dòng)該設(shè)備1秒后仍未完成一次輸入,則視為超時(shí)錯(cuò),顯示出錯(cuò)信息后返回。分別用8086匯編語言和C語言編寫完成上述功能的I/O程序。,11. 某輸出設(shè)備數(shù)據(jù)端口、狀態(tài)端口地址分別為220H, 221H。狀態(tài)端口D0=1表示輸出完成。將數(shù)據(jù)段中以STRING為首地址的20個(gè)字符(用七位ASCII代碼存儲(chǔ))添加水平和垂直校驗(yàn)發(fā)送到該外部設(shè)備。用8086匯編語言編寫完成上述功能的I/O程序。 12. 試畫出矩陣式鍵盤查詢的程序流程圖。 13. 試畫出公用端口多位LED輸出的程序流程圖。,

注意事項(xiàng)

本文(微型計(jì)算機(jī)輸入輸出接口.ppt)為本站會(huì)員(za****8)主動(dòng)上傳,裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請(qǐng)重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!