微型計算機輸入輸出接口.ppt
《微型計算機輸入輸出接口.ppt》由會員分享,可在線閱讀,更多相關《微型計算機輸入輸出接口.ppt(74頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、第5章 微型計算機輸入輸出接口,5.1 輸入輸出接口 5.2 輸入輸出數(shù)據(jù)傳輸?shù)目刂品绞?5.3 開關量輸入輸出接口,5.1 輸入輸出接口,5.1.1 外部設備及其信號 5.1.2 I/O接口的功能 5.1.3 I/O端口的編址方法 5.1.4 簡單I/O接口的組成,5.1.1 外部設備及其信號 外部設備(Peripheral Device) 按照與CPU數(shù)據(jù)傳輸?shù)姆较騽澐? (1)輸入設備 鍵盤、鼠標、光筆 輸入圖形信息的掃描儀、數(shù)碼相機 檢測現(xiàn)場信息的數(shù)字化測試儀表 模擬量采集和模擬量數(shù)字量轉(zhuǎn)換裝置等,(2)輸出設備 顯示器、打印機 繪圖儀 現(xiàn)場控制的數(shù)字量模擬量轉(zhuǎn)換裝置和執(zhí)行元件 (3)
2、復合輸入輸出設備 外存儲設備是典型的復合輸入輸出設備: 磁帶機(Tape Driver) 軟磁盤驅(qū)動器(Floppy Driver) 硬磁盤驅(qū)動器(Hard Disk Driver) 光盤驅(qū)動器(Compact Disk Driver) 許多光盤只能讀出信息,稱為CDROM (Compact DiskRead Only Memory),只讀光盤只能用作輸入設備。,2. 外部設備的信號 (1)數(shù)據(jù)信號 按照信號的物理形態(tài),可分為以下幾種; 數(shù)字量: 以二進制形式表述的數(shù)據(jù)、圖形或文字信息。 模擬量: 現(xiàn)場的物理量通過傳感器件,轉(zhuǎn)換為大小與之對應的電壓或電流信號。這些量呈連續(xù)變化的形態(tài),稱為模擬量
3、(Analog)。 開關量: 開關量是只有二種狀態(tài)(0,1)的量,如開關的接通(ON)與斷開(OFF),電機的啟停等 脈沖量: 計數(shù)脈沖、定時脈沖和控制脈沖 對于輸入設備,數(shù)據(jù)信號從外設送往CPU對于輸出設備,數(shù)據(jù)信號從CPU發(fā)往外部設備。,(2)狀態(tài)信號 狀態(tài)信號表明外部設備當前的工作狀態(tài),用來協(xié)調(diào)CPU與外部設備之間的操作。 典型的狀態(tài)信號:READY, BUSY 有的設備有指示出錯狀態(tài)的信號,如打印機的紙盡(Paper Out),故障(Fault)。 不同的外設可以有不同的狀態(tài)信號。 狀態(tài)信號總是從外部設備發(fā)往CPU。,(3)控制信號 控制信號是CPU向外設發(fā)出的命令,它指定設備的工作方
4、式,啟動或停止設備 控制信號的格式因設備而異 控制信號從CPU發(fā)往外部設備 數(shù)據(jù)信號、狀態(tài)信號、控制信號都是以“數(shù)據(jù)”的形式,通過數(shù)據(jù)總線在CPU和外部設備之間進行傳輸?shù)摹?5.1.2 I/O接口的功能 接口:計算機一個部件與另一個部件之間的連接界面。 功能: 1. 設備選擇功能 CPU通過地址代碼來標識和選擇不同的外部設備 接口對系統(tǒng)總線上傳輸?shù)耐庠O地址進行譯碼,在檢測到本設備地址代碼時,產(chǎn)生相應的“選中”信號 2. 信息傳輸功能 設備被“選中”時: 從CPU/數(shù)據(jù)總線接收數(shù)據(jù)或控制信息 外部設備的數(shù)據(jù)或狀態(tài)信息發(fā)往數(shù)據(jù)總線/CPU,3. 數(shù)據(jù)格式轉(zhuǎn)換功能 外設使用的數(shù)據(jù)格式與CPU數(shù)據(jù)格式
5、不同時,接口要進行二種數(shù)據(jù)格式之間的相互轉(zhuǎn)換。 聯(lián)絡功能 從系統(tǒng)總線或外設接收一個數(shù)據(jù)后,發(fā)出“數(shù)據(jù)到”聯(lián)絡信號,通知外設或CPU取走數(shù)據(jù) 數(shù)據(jù)傳輸完成,向?qū)Ψ桨l(fā)出信號,準備進行下次傳輸 5. 中斷管理功能 向CPU申請中斷; 向CPU發(fā)中斷類型號; 中斷優(yōu)先權的管理; 在以8086為CPU的系統(tǒng)中,這些功能大部份可以由專門的中斷控制器實現(xiàn)。,復位功能 接口在接收系統(tǒng)的復位信號后,將接口電路及其所連接的外部設備置成初始狀態(tài)。 7. 可編程功能 有些接口具有可編程特性,可以用指令來設定接口的工作方式、工作參數(shù)和信號的極性。,錯誤檢測功能 (1) 物理信道上的傳輸錯誤 信號在線路上傳輸時,如果
6、遇到干擾信號,可能發(fā)生傳輸錯誤。 檢測傳輸錯誤的常見方法是奇偶檢驗。 (2) 數(shù)據(jù)傳輸中的覆蓋錯誤 輸入設備完成一次輸入操作后,把所獲得的數(shù)據(jù)暫存在接口內(nèi) 如果在該設備完成下一次輸入操作之后,CPU還沒有從接口取走數(shù)據(jù),那么,在新的數(shù)據(jù)送入接口后,上一次的數(shù)據(jù)被覆蓋,從而導致數(shù)據(jù)的丟失 輸出操作中也可能產(chǎn)生類似的錯誤 覆蓋錯誤導致數(shù)據(jù)的丟失,易發(fā)生在高速數(shù)據(jù)傳輸?shù)膱龊?5.1.3 I/O端口的編址方法 有兩種不同的I/O端口編址方式: 1. I/O端口與內(nèi)存統(tǒng)一編址 把內(nèi)存的一部分地址分配給I/O端口,一個8位端口占用一個內(nèi)存單元地址,也稱為存儲器映射編址方式 優(yōu)點: 訪問內(nèi)存單元和I/O端口
7、使用相同的指令,使用方便 降低CPU電路的復雜性 缺點: 減少了內(nèi)存可用范圍 難以區(qū)分訪問內(nèi)存和I/O的指令,降低了程序的可讀性和可維護性,I/O端口與內(nèi)存獨立編址 內(nèi)存儲器和I/O端口各自有自己獨立的地址空間 訪問I/O端口需要專門的I/O指令 8086/8088 CPU采用這種方式 訪問內(nèi)存儲器 使用20根地址線A0A19 使M/IO#=1 內(nèi)存地址范圍為000000FFFFFH共1MB 訪問I/O端口 使用低16根地址線A0A15 使M/IO#= 0 I/O端口地址范圍為00000FFFFH共64K,3 IBM PC 微型計算機I/O端口地址分配 在PC系列微機中,僅使用A0A9共10條
8、地址線定義I/O端口(設A11A15= 0),尋址范圍為03FFH 前256個端口地址供主板上尋址I/O接口芯片使用,后768個供擴展槽接口卡使用 用戶設計I/O接口電路的時候,應使用系統(tǒng)未占用的端口地址區(qū)域 為避免所選擇的地址與其他擴展卡沖突,最好將其設計成地址可選的型式 IBM-PC微機系統(tǒng)板各I/O接口器件端口地址見表5-1。,5.1.4 簡單I/O接口的組成 端口 端口:接口內(nèi)的寄存器,用來暫存CPU和外設之間傳輸?shù)臄?shù)據(jù)、狀態(tài)和命令。 端口地址:每一個端口有一個獨立的地址。 外部設備地址:設備接口內(nèi)各端口的地址,一臺外部設備可以擁有幾個通常是相鄰的端口地址。 端口種類:數(shù)據(jù)端口、命令端
9、口(控制端口)和狀態(tài)端口。 如果外部設備的信息(數(shù)據(jù)/狀態(tài))已經(jīng)鎖存,端口也可以由三態(tài)緩沖電路組成。,地址譯碼電路 地址譯碼是接口的基本功能之一。 一個接口上的幾個端口地址通常是連續(xù)排列的,可以把16位地址碼分解為二個部分: 高位地址碼用作對接口的選擇; 低位地址碼用來選擇接口內(nèi)不同的端口。 例如:某接口占有地址330H333H: 高8位地址為11001100B時,本接口被選中; 低2位地址為00,01,10,11時,選擇接口內(nèi)的不同端口。,圖5-1 端口的地址譯碼電路和跳線器,為了避免地址沖突,許多接口電路允許用“跳線器(JUMPER)”改變端口地址。上頁圖3-1(b) 將異或門的輸出代替圖
10、3-1(a)中的A8,A9引腳: 二個跳線引腳均接地時,上面譯碼電路仍然產(chǎn)生330H333H的端口譯碼信號; 當二個跳線引腳均接“1”時,上面譯碼電路會產(chǎn)生030H033H的端口譯碼信號 同理還可以產(chǎn)生130H133H,230H233H的譯碼信號。 8086工作于最大模式時,上面的M/IO#、WR#、RD#信號由8288總線控制器發(fā)出的IORC#、IOWC#代替。,由于讀、寫操作不會同時進行,一個輸入端口和另一個輸出端口可以使用同一個地址編碼。 例如,可安排數(shù)據(jù)輸入端口、數(shù)據(jù)輸出端口使用同一個地址330H,命令端口和狀態(tài)端口共同使用地址331H。 需要注意的是,數(shù)據(jù)輸入端口和數(shù)據(jù)輸出端口雖然使
11、用相同的地址,但卻是二個各自獨立的不同的端口。,數(shù)據(jù)鎖存器與緩沖器 數(shù)據(jù)(狀態(tài))輸入端口: 必須通過三態(tài)緩沖器與系統(tǒng)總線相連,保證數(shù)據(jù)總線能夠正常地進行數(shù)據(jù)傳送。 輸入設備在完成一次輸入操作后,在輸出數(shù)據(jù)的同時,產(chǎn)生數(shù)據(jù)選通信號,把數(shù)據(jù)打入八位鎖存器74LS273 鎖存器的輸出信號通過三態(tài)八位緩沖器74LS244連接到系統(tǒng)數(shù)據(jù)總線。 數(shù)據(jù)端口讀信號由地址譯碼電路產(chǎn)生。 高電平(無效):緩沖器輸出端呈高阻態(tài)。 低電平(有效,端口被選中 ):已鎖存的數(shù)據(jù)通過74LS244送往系統(tǒng)數(shù)據(jù)總線,被CPU所接收。,圖5-3 輸入設備接口的數(shù)據(jù)鎖存和緩沖電路,數(shù)據(jù)(命令)輸出端口: CPU送往外設的數(shù)據(jù)或命
12、令,應由接口進行鎖存,以便使外設有充分的時間接收和處理。 八位輸出鎖存電路例(圖5-4)。,圖5-4 輸出鎖存電路,簡單的輸入輸出接口(圖5-5) 把地址譯碼、數(shù)據(jù)鎖存與緩沖、狀態(tài)寄存器、命令寄存器各個電路組合起來,構成簡單輸入輸出接口 接口連接的信號: 與系統(tǒng)總線連接: 地址總線A0A15 數(shù)據(jù)總線D0D7 控制總線M/IO#、RD# 、WR# (最小模式時)或IOWC#、IORC#(最大模式時)相連接 與外部設備相連:數(shù)據(jù)、狀態(tài)、命令。,圖5-5 簡單接口的組成,5.2 輸入輸出數(shù)據(jù)傳輸?shù)目刂品绞?5.2.1 程序方式 5.2.2 中斷方式 5.2.3 直接存儲器存取(DMA)方式,5.2
13、.1 程序方式 在程序控制下進行信息傳送 分為無條件傳送和條件傳送二種 1 無條件傳送方式 對于簡單的外部設備的IO操作可以隨時進行; 例如,開關、發(fā)光二極管 這些簡單設備的輸入信號一般不需要鎖存,可以通過三態(tài)緩沖器與系統(tǒng)數(shù)據(jù)總線直接相連。 簡單輸出設備的信號一般需要由鎖存器鎖存,圖5-6 無條件輸入輸出傳送接口,條件傳送方式 條件傳送也稱為查詢式傳送、異步傳送; 接口電路除了有傳送數(shù)據(jù)的端口以外,還應有儲存和傳送狀態(tài)的端口。 對于輸入過程: 外設將數(shù)據(jù)準備好, “準備好(READY)”標志位置1; CPU將數(shù)據(jù)取走,READY=0 對于輸出過程: 外設接收到數(shù)據(jù),將“忙(BUSY)”標志位置
14、1 數(shù)據(jù)輸出完成,將 “BUSY”清零。,一個數(shù)據(jù)的“條件傳送”過程: CPU從接口中讀取狀態(tài)字; CPU檢測狀態(tài)字的對應位是否滿足“就緒”條件,如果不滿足,則回到前一步重新讀取狀態(tài)字; 如狀態(tài)字表明外設已處于“就緒”狀態(tài),則傳送數(shù)據(jù)。,圖5-9 查詢式輸入流程,查詢方式輸入接口電路(圖5-7) 接口內(nèi)有兩個端口: 數(shù)據(jù)端口(8位,輸入) 狀態(tài)端口(1位,輸入,連接在D7上,=1表示有數(shù)據(jù)) 選通信號有二個作用: 將外設的數(shù)據(jù)送到接口的鎖存器中; 使接口中的D觸發(fā)器置“l(fā)”(READY=1) 數(shù)據(jù)信息和狀態(tài)信息從不同端口經(jīng)過數(shù)據(jù)總線送到CPU。,圖5-7 查詢式輸入接口電路,匯編語言程序: A
15、GAIN: IN AL, STAT_PORT; 讀狀態(tài)端口,D7=1表示“數(shù)據(jù)就緒” TEST AL,80H; 測試“數(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ù)已準備好則讀取數(shù)據(jù) */,查詢方式輸出接口電路(圖5-8) 接口內(nèi)有兩個端口: 數(shù)據(jù)端口(8位,輸出) 狀態(tài)端口(1位,輸入,連接在D7上,=1表示正在輸出,“BUSY”) CPU讀取接口中的狀態(tài): 外設忙( BUSY =1),CPU等待 外
16、設空閑( BUSY =0),向外設輸出數(shù)據(jù),圖5-8 查詢式輸出接口電路,“數(shù)據(jù)端口寫”信號作用: 把數(shù)據(jù)打入“鎖存器”; 將“狀態(tài)觸發(fā)器”置1 D觸發(fā)器的作用: 為外設提供一個聯(lián)絡信號STB,告訴外設現(xiàn)在接口中已有數(shù)據(jù)可供提??; 用作該設備的狀態(tài)標志( “忙”,BUSY)。,匯編語言程序: ONE: IN AL, STATUS_PORT ; 讀狀態(tài)端口 TESTAL, 80H ; 測試“忙”位 JNZ ONE ; 忙,再讀狀態(tài)端口 MOV AL, DATA ; 不忙,取來數(shù)據(jù) OUT DATA_PORT, AL ; 送入數(shù)據(jù)端口 C語言程序: do stat = inportb( st
17、atus_port ); while ( stat /*設備空閑:輸出數(shù)據(jù) */,查詢式輸入輸出的程序設計例 某字符輸入設備以查詢方式工作: 數(shù)據(jù)輸入端口: 0054H, 狀態(tài)端口: 0056H。 狀態(tài)寄存器:D0=1,數(shù)據(jù)準備好,可以輸入; 狀態(tài)寄存器:D1=1,輸入設備發(fā)生故障 要求: 從該設備上輸入80個字符,配上水平和垂直校驗碼(偶校驗),向串行口輸出。 如果設備出錯,顯示錯誤信息后停止。,匯編語言程序: .data Buffer DB 81 dup( ? ) Message DB Device Fault !,0DH,0AH,$ .code Start:MOV AX,da
18、ta ;對DS初始化 MOV DS,AX LEA SI, Buffer ;設置SI為緩沖區(qū)指針 MOV CX, 80;設置CX為計數(shù)器 MOVDL, 0 ;DL置垂直校驗碼初值,Next:IN AL, 56H ;讀入狀態(tài) TEST AL,02H ;測狀態(tài)寄存器D1 JNZ ERROR ;設備故障,轉(zhuǎn)ERROR TEST AL, 01H ;測狀態(tài)寄存器D0 JZ Next;未準備好,則等待,再測 IN AL,54H ;準備好, 輸入字符 AND AL, 7FH ;清最高位,進行校驗 JPE Store ;已經(jīng)是偶數(shù)個1,則轉(zhuǎn)Store ORAL,80H ;奇數(shù)
19、個1,將最高位置為1 Store: XOR DL,AL ;產(chǎn)生垂直校驗碼 MOV SI, AL ;將字符送緩沖區(qū) INC SI ;修改地址指針 LOOP Next ;80個字符未輸入完成,繼續(xù),MOVSI, DL ; 輸入完成, 保存垂直校驗碼 Tranfer:LEA SI,Buffer;準備發(fā)送,SI中置字符串首址 MOV CX,81 ;發(fā)送字符數(shù) One:MOV AH,04H ;設置串口輸出功能號 MOV DL, SI ;取出一個字符 INT 21H;從串口輸出 INC SI;修改指針 LOOP One ;輸出下一個字符 JMP Done Error:MOV
20、AH, 09H;設備故障,輸出出錯信息 LEA DX, Message INT 21H Done: MOV AH, 4CH INT 21H;返回DOS END Start,說明: 程序由二段循環(huán)程序組成: 第一段程序從設備輸入80個字符,同時產(chǎn)生它的水平/垂直校驗碼存入緩沖區(qū); 第二段程序?qū)⒕彌_區(qū)內(nèi)容通過串口輸出。 測試狀態(tài)位要注意先后次序:由于設備故障將導致該設備不能正常輸入,使完成標志(D0)恒為零。所以,在設備發(fā)生故障時先判是否完成可能導致程序死循環(huán)。 產(chǎn)生水平校驗碼:從設備讀入數(shù)據(jù),清除最高位,根據(jù)剩余七位的奇偶特性決定最高位置1或不變(保持為0)。 產(chǎn)生垂直校驗碼:將80個字節(jié)半加(
21、異或)得到。,多個設備循環(huán)查詢方法舉例: 三個設備,它們狀態(tài)端口地址分別為STATl、STAT2、STAT3,三個狀態(tài)端口均使用第5位作為準備好標志。 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 ,說明: PR
22、OCl、PROC2、PROC3是三個設備輸入數(shù)據(jù)并進行處理的子程序。 FLAG存放三個設備輸入完成的標志,D0, D1, D2分別代表一個設備的輸入完成情況(=0表示未完成,=1表示完成)。 上例僅適用于三個設備工作速度都比較慢的情況; 如果其中一個設備工作速度很快,而其他設備的輸入輸出處理程序運行時間又較長,可能發(fā)生“覆蓋錯誤”。 在這種情況下,應優(yōu)先執(zhí)行工作速度較快的外設的IO過程,然后再執(zhí)行其他設備的IO過程。,5.2.2 中斷方式 程序查詢方式的特點: 程序查詢方式解決了CPU與外設工作的協(xié)調(diào)問題,但是卻大大降低了CPU的使用效率; 在程序查詢方式中,CPU處于主動地位,外設處于消極等
23、待查詢的被動地位; 設備較多時,查詢方式的數(shù)據(jù)傳送很難使每一個外設都能工作在最佳狀態(tài)。,程序中斷方式特點: 賦予系統(tǒng)中的外設某種主動申請、配合CPU工作的“權利”。 外設把數(shù)據(jù)準備好時,主動向CPU發(fā)出一個請求信號。 CPU接收到請求信號后,暫停當前的工作,進行該設備的數(shù)據(jù)傳送操作。 賦予外設 “主動權”之后,CPU可以不必反復查詢該設備的狀態(tài),而是正常地處理系統(tǒng)任務; CPU與外設處于某種“并行工作”的狀態(tài),從而提高CPU的工作效率。,中斷方式舉例: 某外設在1秒內(nèi)傳送100個字節(jié)。 若用程序查詢的方式傳送,則CPU為傳送100個字節(jié)所化費的時間等于1秒。 用中斷控制方式傳送,CPU為執(zhí)行一
24、個字節(jié)的傳送需要進入一次中斷服務程序。 設CPU執(zhí)行一次中斷服務程序需要100s; 傳遞100個字節(jié)CPU所使用的時間為100s100=10ms; CPU處理中斷開銷為1,99的時間可執(zhí)行其他任務; 中斷方式的數(shù)據(jù)傳送仍在程序的控制下執(zhí)行,稱為程序中斷方式; 適應于中、慢速的外部設備數(shù)據(jù)傳送。,3.2.3 直接存儲器存取(DMA)方式 程序中斷方式,程序查詢方式的缺點: 中斷方式: 每傳送一次數(shù)據(jù),CPU必須執(zhí)行一次中斷服務程序; 對于高速數(shù)據(jù)傳輸,容易產(chǎn)生“覆蓋錯誤”。 程序查詢方式: 響應速度比中斷方式要快一些,完成一次數(shù)據(jù)傳輸仍然需要執(zhí)行七、八條以上的指令。 CPU的工作速度不高時仍有可
25、能跟不上外設數(shù)據(jù)傳輸?shù)男枰?直接存儲器傳送 (Direct Memory AccessDMA) 將外設的數(shù)據(jù)不經(jīng)過CPU直接送入內(nèi)存儲器; 或者,從內(nèi)存儲器不經(jīng)過CPU直接送往外部設備; 一次DMA傳送只需要執(zhí)行一個DMA周期(相當于一個總線讀寫周期); 能夠滿足高速外設數(shù)據(jù)傳輸?shù)男枰?需要一個專門的器件來協(xié)調(diào)外設接口和內(nèi)存儲器的數(shù)據(jù)傳輸,稱為DMA控制器(DMAC),圖5-10 DMA數(shù)據(jù)傳送示意圖,5.3 開關量輸入輸出接口,5.3.1 開關量輸入接口 5.3.2 開關量輸出接口,5.3.1 開關量輸入接口 1 基本的開關量輸入接口 開關形態(tài):單刀單擲開關/單刀雙擲開關/按鈕 開關量通
26、過三態(tài)緩沖器與系統(tǒng)數(shù)據(jù)總線連接 常用的三態(tài)緩沖器: 74LS244(輸入輸出同相)/74LS240(輸入輸出反相) 一條輸入指令可以同時讀入8位或16位開關量。,圖5-11 基本開關量輸入接口,2 矩陣式開關量輸入接口 開關數(shù)量多時,可以排列成矩陣,例如:圖5-12(鍵盤) 數(shù)據(jù)輸出端口連接8根“行線”(Row,R0R7); 數(shù)據(jù)輸入端口連接8根“列線”(Column, C0C7); 電路特點: 沒有鍵按下時,列線端口輸入為全“1”; 行線端口輸出全“1”時,不論有無鍵按下,列線端口輸入仍然為全“1”; 某一行線輸出“0”時,如果該行上有一個鍵按下,則輸入端口輸入代碼為7個“1”,1個“0”,
27、0的位置與被按下鍵的位置相對應。,圖5-12 鍵盤(矩陣式開關量輸入)接口,鍵盤掃描與編碼: 對8根行線逐行掃描,識別按鍵的所在行、列,從而獲得該鍵的代碼; 一個鍵的編碼可以用它的二字節(jié)“行列碼”表示。例如,(R3,C2)的二字節(jié)“行列碼”為F7FBH: F7H=11110111 :按鍵在R3行上; FBH=11111011 :按鍵在C2列上; 用“行列碼”查表,可以得到這個鍵的代碼。 鍵的編碼也可以用一字節(jié)“掃描碼”表示。上例中按鍵的一字節(jié)“掃描碼”為32H: 高4位0011:鍵所在的行; 低4位0010:鍵所在的列; 鍵剛按下時,會產(chǎn)生“抖動”。,鍵盤掃描程序: 沒有鍵被按下,返回1; 有
28、鍵按下時返回按鍵的二字節(jié)“行列碼”(行碼為高8位,列碼為低8位); RPORT, CPORT 定義為行、列端口的地址。 unsigned int kbinput( ) unsigned int row, row0, column, code, k=0; outportb( RPORT, 0); /*各行輸出全0,測試有無鍵按下*/ if (inportb(CPORT) /* 延時20ms,消除抖動 */,if (inportb(CPORT) /* 形成下一個行碼 */ ,if (column = = 0 xff ) return( 0 xffff ); /* 未找到按鍵所在行,返回全“1
29、” */ code = (row0 ,5.3.2 開關量輸出接口 1 基本的開關量輸出接口 常見的開關量輸出: LED發(fā)光二極管 LED指示燈用于指示室內(nèi)儀表狀態(tài) 小功率LED可以由邏輯電路直接驅(qū)動: 輸出0:LED發(fā)光 輸出1:LED熄滅 執(zhí)行元件驅(qū)動線圈,表5-3 部分邏輯電路輸出端電流,大功率LED驅(qū)動或執(zhí)行元件驅(qū)動線圈的驅(qū)動: 普通邏輯電路輸出,外接功率放大三極管驅(qū)動; 集電極開路驅(qū)動器(OC驅(qū)動器),輸出端通過上拉 電阻接高壓。,2 LED七段數(shù)碼顯示管接口,圖5-15 多位LED數(shù)碼顯示接口,多位LED顯示器驅(qū)動: 設置位碼,熄滅所有數(shù)碼管; 將一個數(shù)碼管的字形代碼(段碼)送入
30、段碼端口; 設置位碼,點亮一個數(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,c
31、ode leddisp proc far pushds; 保護各寄存器內(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)計數(shù)器,初值8,one: moval, 0 out bitport, al; 送位碼0,熄滅各LED moval, buffersi ;取出一個待輸出數(shù)字 xlat; 轉(zhuǎn)換成七段碼 outsegport, al
32、; 向段碼端口輸出 moval, bitcode outbitport, al; 輸出位碼,點亮一個LED rorbitcode, 1; 修改位碼,得到下一個位碼 incsi; 修改輸出緩沖區(qū)指針 calldelay; 延時 loopone; 循環(huán),點亮下一個LED,popsi popcx;恢復各寄存器 popbx popax popds ret; 返回主程序 leddispendp end,習題5,1. 接口電路與外部設備之間傳送的信號有哪幾種?傳輸方向怎樣? 2. 接口電路有哪些功能?哪些功能是必需的? 3. I/O端口的編址有哪幾種方法?各有什么利弊?80X86系列CPU采用哪種方法?
33、4. 按照傳輸信號的種類,I/O端口有幾種?它們信號的傳輸方向怎樣? 5. I/O端口譯碼電路的作用是什么?在最小模式和最大模式下分別有哪些輸入信號? 6. 外部設備數(shù)據(jù)傳送有哪幾種控制方式?從外部設備的角度,比較不同方式對外部設備的響應速度。,7. 敘述一次查詢式輸出過程中,接口內(nèi)各電路、信號的狀態(tài)變化過程。 8. 比較程序中斷方式和查詢方式的區(qū)別,根據(jù)比較,指出中斷工作方式的優(yōu)缺點。 9. 比較DMA方式和程序中斷方式的區(qū)別,根據(jù)比較,指出DMA工作方式的優(yōu)缺點。 10. 某輸入設備數(shù)據(jù)端口、狀態(tài)端口、控制端口地址分別為70H, 71H, 72H。狀態(tài)端口D5=1表示輸入完成,控制端口D7
34、=1表示啟動設備輸入(輸入完成后由設備清除該位)。從該設備輸入100個字節(jié)數(shù)據(jù),存入以BUFFER為首地址的緩沖區(qū)。如果啟動該設備1秒后仍未完成一次輸入,則視為超時錯,顯示出錯信息后返回。分別用8086匯編語言和C語言編寫完成上述功能的I/O程序。,11. 某輸出設備數(shù)據(jù)端口、狀態(tài)端口地址分別為220H, 221H。狀態(tài)端口D0=1表示輸出完成。將數(shù)據(jù)段中以STRING為首地址的20個字符(用七位ASCII代碼存儲)添加水平和垂直校驗發(fā)送到該外部設備。用8086匯編語言編寫完成上述功能的I/O程序。 12. 試畫出矩陣式鍵盤查詢的程序流程圖。 13. 試畫出公用端口多位LED輸出的程序流程圖。,
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 川渝旅游日記成都重慶城市介紹推薦景點美食推薦
- XX國有企業(yè)黨委書記個人述責述廉報告及2025年重點工作計劃
- 世界濕地日濕地的含義及價值
- 20XX年春節(jié)節(jié)后復工安全生產(chǎn)培訓人到場心到崗
- 大唐女子圖鑒唐朝服飾之美器物之美繪畫之美生活之美
- 節(jié)后開工第一課輕松掌握各要點節(jié)后常見的八大危險
- 廈門城市旅游介紹廈門景點介紹廈門美食展示
- 節(jié)后開工第一課復工復產(chǎn)十注意節(jié)后復工十檢查
- 傳統(tǒng)文化百善孝為先孝道培訓
- 深圳城市旅游介紹景點推薦美食探索
- 節(jié)后復工安全生產(chǎn)培訓勿忘安全本心人人講安全個個會應急
- 預防性維修管理
- 常見閥門類型及特點
- 設備預防性維修
- 2.乳化液泵工理論考試試題含答案