版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第8章 輸入/輸出系統(tǒng) 8.1 輸入/輸出系統(tǒng)概述 8.2 微機(jī)系統(tǒng)與外設(shè)交換信息的方式8.3 8254定時(shí)器/計(jì)數(shù)器 8.1 輸入/輸出系統(tǒng)概述 一. 概 述 1. 接口電路的作用 I/O設(shè)備與總線之間的連接輸出接口電路輸出設(shè)備輸入接口電路輸入設(shè)備系統(tǒng)總線 接口電路的作用 CPU數(shù)據(jù) 輸出接口電路 輸出設(shè)備 CPU 輸入接口電路 輸入設(shè)備數(shù)據(jù)接口: 是CPU與外部設(shè)備交換信息的中轉(zhuǎn)站 2. 接口電路的功能 應(yīng)具有數(shù)據(jù)暫存功能 應(yīng)有端口地址譯碼器 (便于使用IN, OUT指令讀寫數(shù)據(jù)) 與外設(shè)之間有聯(lián)絡(luò)功能 有中斷管理能力 有數(shù)據(jù)轉(zhuǎn)換功能(并 串,串 并)CPU與外設(shè)之間的接口信息 CPU與一
2、個(gè)外設(shè)交換信息,通常需要以下一些信號(hào): 1. 數(shù)據(jù)(Data) 數(shù)字量鍵盤等輸入的數(shù)據(jù); 模擬量如溫度、壓力、流量等; ( 需先經(jīng)過A/D轉(zhuǎn)換,將其變?yōu)閿?shù)字量,由CPU處理后,再經(jīng)過D/A 轉(zhuǎn) 換,變?yōu)槟M量,進(jìn)行控制),這部分工作由接口電路來完成。 開關(guān)量如開關(guān)的合與斷等。 2. 狀態(tài)信息(Status) 輸入時(shí), 輸入設(shè)備的信息是否準(zhǔn)備好; 輸出時(shí),輸出設(shè)備是否有空等。 3. 控制信息(Control) 控制輸入輸出設(shè)備的啟動(dòng)和停止等。 CPU接口電路 I/O設(shè)備數(shù)據(jù)狀態(tài)控制數(shù)據(jù)狀態(tài)控制3. 關(guān)于端口的概念 “端口”是接口電路中, 能與CPU交換信息(使用IN, OUT) 的寄存器。端口1
3、端口2端口NCPU接口電路 I/O設(shè)備數(shù)據(jù)狀態(tài)控制數(shù)據(jù)狀態(tài)控制 為了將數(shù)據(jù)、狀態(tài)、控制信息區(qū)分開,在接口電路中,設(shè)有不同的端口,如數(shù)據(jù)端口、狀態(tài)端口、控制端口,以接收、存放、輸出不同的信息。端口1端口2端口4端口3端口用于存放信息的 8位或16位鎖存器, 緩沖器等。 在PC機(jī)中通常為8位 端口分類:數(shù)據(jù)口: 存放CPU向外設(shè)輸出或外設(shè)輸入的數(shù)據(jù)??刂瓶? 存放控制信息-控制接口電路、外設(shè)的工作。狀態(tài)口: 存放狀態(tài)信息 反映外設(shè)的狀態(tài)。 注意:接口電路必須具有數(shù)據(jù)口。注:每個(gè)端口,系統(tǒng)都為它編了一個(gè)地址,系統(tǒng)只要給出某個(gè)地址,通過譯碼電路,就能找到相應(yīng)的I/O接口電路中的端口寄存器。問 題:系統(tǒng)
4、給出的地址是內(nèi)存單元地址還是I/O端口寄存器的地址?解決方案:合理安排I/O端口寄存器的編址方式。 將存儲(chǔ)器與外設(shè)端口統(tǒng)一編址 將外設(shè)接口電路的一個(gè)端口作為存儲(chǔ)器的一個(gè)單元。優(yōu)點(diǎn):不需要專門的輸入輸出指令,可用全部 的存儲(chǔ)器操作指令。(指令多且靈活) 如:mov kou1,bx 缺點(diǎn):外設(shè)占用內(nèi)存單元,相對(duì)減少了內(nèi)存容量。65F302 0024E0內(nèi)存與外設(shè)內(nèi)存外設(shè)Kou1026D0000000001EFFFFF0000F0001F0002FFFFF 4. 端口的編址方式 存儲(chǔ)器映像方式 I/O端口獨(dú)立編址 優(yōu)點(diǎn):不占用內(nèi)存 缺點(diǎn):CPU需設(shè)專門的 I/O指令。65F302 00外設(shè)00000
5、0FFFFFF0100KOU1KOU2KOU3112233 44KOU100KOU101113232 01內(nèi)存00000FFFFF5. PC系列機(jī)的端口編址 PC系列機(jī)采用端口獨(dú)立編址;從8088 奔騰微處理器, 設(shè)計(jì)時(shí)用A15 A0低16位地址尋址 I/O 端口;所以, CPU的端口尋址能力為216=65536個(gè);基于微處理器的PC系列, 實(shí)際使用A9 A0 做I/O地址; 所以, PC系列機(jī) I/O 端口地址最多為 210=1024個(gè)。這1024個(gè)口地址, 系統(tǒng)本身(主板上, 以及常 規(guī) I/O接口)已經(jīng)占用了一部分。 端口地址( I/O 空間)沒有分段的概念。 二. 最常用的 I/O 指
6、令1.直接尋址 I/O 指令設(shè)n為8位端口地址IN AL , n ; 口地址為n的端口中取數(shù) AL OUT n , AL ; AL內(nèi)容 口地址為n的端口寄存器IN AX , n ; (n) AL, (n+1) AH OUT n , AX ; AL n口, AH n+1口如: IN AL , 61H OUT 43H, ALOUT 43H, AL2. DX間址的I/O指令 當(dāng)口地址 n 8位二進(jìn)制數(shù)時(shí), 用DX間址 注意: I/O 指令只能在端口和AL, AX, EAX之間 交換信息, 用DX間址, 但不能使用方括號(hào), 即不能寫成: IN AL, DX。IN AL , DX ; DX的端口內(nèi)容 A
7、LOUT DX , AL ; AL DX的端口寄存器IN AX , DX ; DX AL, DX+1 AHOUT DX , AX ; AL DX, AH DX+1 的端口寄存器 如: MOV DX, 3F8H IN AL , DX ;從3F8H端口取數(shù) AL8.2 微機(jī)系統(tǒng)與外設(shè)交換信息的方式微機(jī)系統(tǒng)與 I/O 端口的信息交換有四種方式: 無條件傳送 查詢方式 中斷方式 DMA方式采用何種方式與接口的硬件電路有直接關(guān)系1.無條件傳送 輸入接口:控=0,出=入控=1,出為高阻入出控入出控控=1,出=入控=0,出為高阻八個(gè)三態(tài)門地址譯碼器IOR數(shù)據(jù)線外設(shè)8入出控執(zhí)行IN指令之前, 外設(shè)數(shù)據(jù)已經(jīng)準(zhǔn)備
8、好。 傳送流程演示傳送流程演示 輸出接口8鎖存器地址譯碼器IOW數(shù)據(jù)線外設(shè) QCP D.D7D0執(zhí)行OUT指令時(shí): AL內(nèi)容 數(shù)據(jù)線, 口地址 地址線上, IOW=低, 把數(shù)據(jù)鎖存到 鎖存器中。 2.查詢方式 用查詢方式交換信息, 必先了解外設(shè)的狀態(tài)。 查詢方式輸入流程從狀態(tài)口讀取 狀態(tài)信息數(shù)據(jù)準(zhǔn)備好?執(zhí)行IN指令,取出數(shù)據(jù)YN從狀態(tài)口讀取 狀態(tài)信息外設(shè)空閑否?執(zhí)行OUT指令,輸出一個(gè)數(shù)據(jù)YN 查詢方式輸出流程查詢方式輸入接口示意圖地址譯碼器地址總線IOR鎖存器(8)三態(tài)緩沖 器 (8)CPU數(shù)據(jù)線數(shù)據(jù) 輸 入 設(shè) 備輸入選通信號(hào) RD Q +5V狀態(tài)標(biāo)志寄存器IOR地址譯碼器數(shù)據(jù)口選中接數(shù)據(jù)
9、線D7位狀態(tài)口地址=200H數(shù)據(jù)口地址=201H 查詢式輸入核心程序 設(shè)狀態(tài)口地址=200H 數(shù)據(jù)口地址=201H RSCAN : MOV DX , 200H IN AL , DX TEST AL , 80H JZ RSCAN MOV DX , 201H IN AL , DX 查詢式輸出接口示意圖“0”為空閑鎖存器(8)數(shù)據(jù)IOW地址譯碼器地址總線IOR數(shù)據(jù)總線數(shù)據(jù)口選中ACK 輸 出 設(shè) 備Q D +5V狀態(tài)標(biāo)志狀態(tài)口選中接數(shù)據(jù)線D0位 R 查詢式數(shù)據(jù)輸出核心程序 設(shè)狀態(tài)口地址=200H=數(shù)據(jù)口地址 TSCAN: MOV DX, 200H IN AL, DX TEST AL, 1 JNZ T
10、SCAN MOV DX, 200H MOV AL, 某數(shù) OUT DX, AL3. 中斷控制方式 在有多個(gè)外設(shè)的系統(tǒng)中,多個(gè)外設(shè)要求CPU為它服務(wù)是隨機(jī)的 若采用查詢方式工作,就不能保證系統(tǒng)實(shí)時(shí)地對(duì)外設(shè)的請(qǐng)求作出響應(yīng) 為了提高CPU的效率,使系統(tǒng)有實(shí)時(shí)性能,導(dǎo)致了中斷處理技術(shù)的產(chǎn)生傳送流程演示特點(diǎn): 在外設(shè)沒有作好數(shù)據(jù)傳送準(zhǔn)備時(shí),CPU可執(zhí)行與傳送數(shù)據(jù)無關(guān)的其它指令 當(dāng)外設(shè)作好傳送準(zhǔn)備后,主動(dòng)向CPU請(qǐng)求中斷 若CPU響應(yīng)這一請(qǐng)求,則暫停正在運(yùn)行的程序,轉(zhuǎn)入中斷服務(wù)程序,完成數(shù)據(jù)傳送 待服務(wù)完畢后,自動(dòng)返回原來運(yùn)行的程序4.直接存儲(chǔ)器存?。―MA)方式為什么要有DMA?什么是DMA?特點(diǎn): 用
11、硬件實(shí)現(xiàn)在外設(shè)與內(nèi)存間直接進(jìn)行數(shù)據(jù)交換,而不通過CPU 數(shù)據(jù)傳送速度的上限就取決于存儲(chǔ)器的工作速度 速度快傳送流程演示幾種傳送方式的比較:1. 無條件傳送:只能用于外部設(shè)備與CPU 的動(dòng)作同步時(shí),否則出錯(cuò)。這種方式已 較少使用2. 查詢傳送: 接口簡(jiǎn)單, 但在傳送過程中,若外設(shè)數(shù)據(jù)沒有準(zhǔn)備好,則CPU一直在查詢、等待,而 不能做其他事情。CPU的效率低下。3. 中斷傳送: 只有當(dāng)外設(shè)數(shù)據(jù)準(zhǔn)備好時(shí)(向CPU發(fā)出請(qǐng)求),CPU才進(jìn)行數(shù)據(jù)傳送(在 中斷服務(wù)程序中),其余時(shí)間CPU可以做其他事情。CPU效率大大提高。 但是,每傳送一次數(shù)據(jù),CPU都要執(zhí)行一次中斷服務(wù)程序,在中斷服務(wù)程 序中,除執(zhí)行 I
12、N 和 OUT 指令外,還要進(jìn)行下列工作: 保護(hù)斷點(diǎn)、保護(hù)標(biāo)志寄存器、保護(hù)某些通用寄存 、恢復(fù)等一 些工作, 95%的時(shí)間是額外開銷,從而傳送效率并不高。 DMA傳送: 在DMAC的控制下,外設(shè)直接和存儲(chǔ)器(也可外設(shè)與外設(shè),存儲(chǔ) 器與 存儲(chǔ)器之間)進(jìn)行數(shù)據(jù)傳送,而不必經(jīng)過CPU ,傳送速度基本取決于 外設(shè)與存儲(chǔ)器的速度,從而傳送效率大大提高。8.3 8254定時(shí)器/計(jì)數(shù)器計(jì)算機(jī)中的定時(shí)和延時(shí)控制、對(duì)外部事件或信號(hào)的計(jì)數(shù) 軟件方法 固定時(shí)間的硬件定時(shí) 可編程的硬件定時(shí)計(jì)算機(jī)系統(tǒng)中采用可編程定時(shí)/計(jì)數(shù)器I8253和I8254 8254內(nèi)部集成了3個(gè)16位的計(jì)數(shù)器, 每個(gè)計(jì)數(shù)器有6種工作方式,計(jì)數(shù)初
13、值可設(shè)定為二進(jìn)制或BCD碼。最高工作頻率10兆。一.8254內(nèi)部結(jié)構(gòu) (24腳)數(shù)據(jù)總線 緩沖器讀寫控制控制字寄存器 0號(hào)計(jì)數(shù)器 1號(hào)計(jì)數(shù)器 2號(hào)計(jì)數(shù)器RDWRA0CSA1D70GATE0OUT0CLK0GATE1OUT1CLK1GATE2OUT2CLK2數(shù)據(jù)總線 緩沖器讀寫控制控制字寄存器 0號(hào)計(jì)數(shù)器 1號(hào)計(jì)數(shù)器 2號(hào)計(jì)數(shù)器RDWRA0CSA1D70GATE0OUT0CLK0GATE1OUT1CLK1GATE2OUT2CLK2數(shù)據(jù)總線緩沖器: 完成和系統(tǒng)數(shù)據(jù)線的配接。 對(duì)外有8條數(shù)據(jù)線D70 8254的內(nèi)部結(jié)構(gòu)數(shù)據(jù)總線 緩沖器讀寫控制控制字寄存器 0號(hào)計(jì)數(shù)器 1號(hào)計(jì)數(shù)器 2號(hào)計(jì)數(shù)器RDWRA
14、0CSA1D70GATE0OUT0CLK0GATE1OUT1CLK1GATE2OUT2CLK2讀寫控制模塊: 選擇芯片內(nèi)部的控制寄存器和計(jì)數(shù)器, 在讀寫命令的控制下對(duì)選中的端口進(jìn)行讀寫操作。對(duì)外有5條引線。 8254的內(nèi)部結(jié)構(gòu) 8254的內(nèi)部結(jié)構(gòu)數(shù)據(jù)總線 緩沖器讀寫控制控制字寄存器 0號(hào)計(jì)數(shù)器 1號(hào)計(jì)數(shù)器 2號(hào)計(jì)數(shù)器RDWRA0CSA1D70GATE0OUT0CLK0GATE1OUT1CLK1GATE2OUT2CLK2控制寄存器: 寄存CPU對(duì)其初始化編程時(shí)寫入的控制字,以決定計(jì)數(shù)器的工作方式和并設(shè)置讀出命令。 8254的內(nèi)部結(jié)構(gòu)數(shù)據(jù)總線 緩沖器讀寫控制控制字寄存器 0號(hào)計(jì)數(shù)器 1號(hào)計(jì)數(shù)器 2
15、號(hào)計(jì)數(shù)器RDWRA0CSA1D70GATE0OUT0CLK0GATE1OUT1CLK1GATE2OUT2CLK2計(jì)數(shù)器: 每個(gè)計(jì)數(shù)器對(duì)外有3條線 GATE 控制信號(hào) CLK 計(jì)數(shù)脈沖輸入 OUT 計(jì)數(shù)器輸出 8254的內(nèi)部結(jié)構(gòu)口地址譯碼器A9A2AEND7D0IORIOWA1A0D7D0RDWRA1A0CS8254二. 8254與系統(tǒng)總線的連接I/O口地址分2段A9A2參加譯碼,譯碼 輸出負(fù)脈沖。使CS=0, 選中8254A1,A0直接與芯片A1,A0 相連,選擇片內(nèi)寄存器執(zhí)行IN時(shí)從選中的內(nèi)部 寄存器讀執(zhí)行OUT時(shí)向選中的內(nèi) 部寄存器寫三.8254內(nèi)部寄存器/計(jì)數(shù)器口地址 在CS=0前提下
16、A1 A0 選中0 0 0#計(jì)數(shù)器0 1 1#計(jì)數(shù)器 0 2#計(jì)數(shù)器1 1 控制寄存器設(shè)8254與系統(tǒng)總線如上圖聯(lián)接: 口地址=40H43H,“選中”8254,則0#2#計(jì) 數(shù)器口地址=40H42H,控制口地址=43H??诘刂?2FCH2FFH,“選中”8254,則 0#2#計(jì)數(shù)器口地址=2FCH2FEH,控制口 地址=2FFH。四.計(jì)數(shù)器內(nèi)部結(jié)構(gòu)示意圖 內(nèi)部數(shù)據(jù)線計(jì)數(shù)初值寄存器(16位)減1計(jì)數(shù)器(16位)計(jì)數(shù)值鎖存器(16位)鎖存命令GATECLKOUT內(nèi)部數(shù)據(jù)線初始化編程時(shí): 計(jì)數(shù)初值 計(jì)數(shù)初值寄存器 減1計(jì)數(shù)器內(nèi)部數(shù)據(jù)線計(jì)數(shù)初值寄存器(16位)減1計(jì)數(shù)器(16位)計(jì)數(shù)值鎖存器(16位)
17、鎖存命令GATECLKOUT內(nèi)部數(shù)據(jù)線 計(jì)數(shù)器的內(nèi)部結(jié)構(gòu)當(dāng)GATA=1時(shí), CLK的下降沿使計(jì)數(shù)器減1,當(dāng)計(jì)數(shù)值減到0 (或某個(gè)值由工作方式確定)時(shí), OUT有輸出。內(nèi)部數(shù)據(jù)線計(jì)數(shù)初值寄存器(16位)減1計(jì)數(shù)器(16位)計(jì)數(shù)值鎖存器(16位)鎖存命令GATECLKOUT內(nèi)部數(shù)據(jù)線 計(jì)數(shù)器的內(nèi)部結(jié)構(gòu) 計(jì)數(shù)初值 = f c l k / f o u t收到鎖存命令后, 當(dāng)前計(jì)數(shù)值 計(jì)數(shù)值鎖存器(以便讀出檢查), 而計(jì)數(shù)器仍然做減1計(jì)數(shù)內(nèi)部數(shù)據(jù)線計(jì)數(shù)初值寄存器(16位)減1計(jì)數(shù)器(16位)計(jì)數(shù)值鎖存器(16位)鎖存命令GATECLKOUT內(nèi)部數(shù)據(jù)線 計(jì)數(shù)器的內(nèi)部結(jié)構(gòu)作用: 選擇一個(gè)計(jì)數(shù)器, 確定工作方
18、式, 并規(guī)定初 值的寫入順序和計(jì)數(shù)初值 (一串0, 1代碼) 的數(shù)制。 五. 8254命令字 / 狀態(tài)字 D7 D6 D5 D4 D3 D2 D1 D0 計(jì)數(shù)器選擇 讀寫方式選擇 工作方式選擇 數(shù)制選擇 D7 D6=00 選擇0#計(jì)數(shù)器, =01 選擇1#計(jì)數(shù)器 =10 選擇2#計(jì)數(shù)器, =11 標(biāo)志該命令字 是 “讀出命令” 1.方式選擇命令字 D5 D4=00 標(biāo)志該命令為 “鎖存命令” =01 初值寫入時(shí), 只寫低8位, 高8位自動(dòng) 補(bǔ)0;計(jì)數(shù)值讀出時(shí), 只能讀低8位 =10 初值寫入時(shí), 只寫高8位, 低8位自動(dòng) 補(bǔ)0;計(jì)數(shù)值讀出時(shí), 只能讀高8位。 =11 初值寫入 / 計(jì)數(shù)值讀出的
19、順序?yàn)橄?低8位,后高8位。D7 D6 D5 D4 D3 D2 D1 D0 計(jì)數(shù)器選擇 讀寫方式選擇 工作方式選擇 數(shù)制選擇 8254的命令字和狀態(tài)字 D3 D2 D1 選中的計(jì)數(shù)器工作在 0 0 0 方式 00 0 1 1 1 0 2 1 1 31 0 0 41 0 1 5 D0=0, 計(jì)數(shù)初值為二進(jìn)制數(shù), D0=1, 初值為BCD碼數(shù)。D7 D6 D5 D4 D3 D2 D1 D0 計(jì)數(shù)器選擇 讀寫方式選擇 工作方式選擇 數(shù)制選擇 8254的命令字和狀態(tài)字 2. 鎖存命令( D5 D4=00 標(biāo)志該命令為 “鎖存命令”)D7 D6 為鎖存對(duì)象。 = 0 0,鎖存0#當(dāng)前計(jì)數(shù)值 = 0 1,
20、鎖存1#當(dāng)前計(jì)數(shù)值 = 1 0,鎖存2#當(dāng)前計(jì)數(shù)值計(jì)數(shù)器選擇 0 0 D7 D6 D5 D4 D3 D0D7 D611D5 D4 = 00 8254的命令字和狀態(tài)字 3.讀出命令讀出命令是多通道的鎖存命令, 一條命令可以鎖存3個(gè)計(jì)數(shù)器的計(jì)數(shù)值、計(jì)數(shù)器狀態(tài)。 1 1 0D7 D6 D00: 鎖存當(dāng)前計(jì)數(shù)值0: 鎖存計(jì)數(shù)器狀態(tài)1: 選擇0#計(jì)數(shù)器D7D6D0=110是讀命令1: 選擇1#計(jì)數(shù)器1: 選擇2#計(jì)數(shù)器 8254的命令字和狀態(tài)字 4. 狀態(tài)字 與方式選擇命令字相同D7 D6 D5 D00: 計(jì)數(shù)初值已裝入計(jì)數(shù)器1: 計(jì)數(shù)初值未裝入計(jì)數(shù)器0: OUT腳為低電平1: OUT腳為高電平 825
21、4的命令字和狀態(tài)字 CPU對(duì)8254的初始化編程 例: 設(shè)8254的口地址為40H 43H, 要求2#計(jì)數(shù)器工作在方式3, 計(jì)數(shù)初值=4000, 寫出2#的初始化程序段。1. 對(duì)8254一個(gè)計(jì)數(shù)器的初始化編程步驟: 向控制寄存器寫入方式選擇命令字 目的: 選擇一個(gè)計(jì)數(shù)器, 并確定其工作方式 和計(jì)數(shù)值(計(jì)數(shù)初值)的讀 / 寫順序。 向選擇的計(jì)數(shù)器寫入計(jì)數(shù)初值。 注意: 如果方式選擇命令字D0=0, 則初值 應(yīng)是二進(jìn)制, 否則初值應(yīng)是BCD碼數(shù)。解1: 設(shè)初值為二進(jìn)制, 初值寫入順序?yàn)橄鹊?位后高8位。 MOV AL, 10110110B OUT 43H, AL MOV AX, 4000 OUT
22、42H, AL MOV AL, AH OUT 42H, AL解2: 設(shè)初值為二進(jìn)制, 寫入順序?yàn)閮H寫高8位。 MOV AL, 10100110B OUT 43H, AL MOV AL, 40 OUT 42H, AL注意: 解2是錯(cuò)誤的, 因?yàn)?4000=0FA0H, 其低8位不等于0。 8254的初始化編程 解3: 設(shè)初值為BCD碼, 寫入順序?yàn)橄鹊秃蟾摺?MOV AL, 10110111B OUT 43H, AL MOV AL, 0 OUT 42H, AL MOV AL, 40H OUT 42H, AL解4: 設(shè)初值為BCD碼, 僅寫高8位。 MOV AL, 10100111B OUT 43
23、H, AL MOV AL, 40H OUT 42H, AL 注意: 4000的BCD碼數(shù)應(yīng)寫成4000H, 解3、解4是正確的。 8254的初始化編程 2. 當(dāng)計(jì)數(shù)初值 9999時(shí), “初值”選為二進(jìn)制或 BCD碼都可以; 當(dāng)計(jì)數(shù)初值 9999時(shí), “初值”只能選二進(jìn)制。3. 程序中如何表示BCD碼數(shù)? 設(shè)初值=(1234)10 則 MOV AX, 1234H 是正確的 寫成 MOV AX, 1234 是錯(cuò)誤的4. 方式選擇命令, 鎖存命令, 讀出命令必須寫入 控制口。 8254的初始化編程 6. 關(guān)于讀出命令 讀出命令也是鎖存命令, 如果在鎖存計(jì)數(shù)值 的同時(shí), 也鎖存狀態(tài), 那么在隨后對(duì)計(jì)數(shù)
24、器讀 出時(shí), 先讀出的是狀態(tài)字, 后讀的是計(jì)數(shù)值。5. 關(guān)于鎖存命令 當(dāng)程序員要了解計(jì)數(shù)器的當(dāng)前計(jì)數(shù)值時(shí), 先 向控制口寫入鎖存命令, 然后從選擇的計(jì)數(shù) 器端口讀取當(dāng)前計(jì)數(shù)值。 8254的初始化編程 六. 8254工作方式 有6種工作方式, 均在CLK下降沿計(jì)數(shù)一次。有2種啟動(dòng)方式: 軟件啟動(dòng), 硬件啟動(dòng)。 軟件啟動(dòng): GATA=1, 初值寫入后, 開始計(jì)數(shù)。 硬件啟動(dòng): 初值寫入后, 不計(jì)數(shù)。當(dāng)GATE從 0 1后開始計(jì)數(shù)。 方式0: 計(jì)數(shù)結(jié)束OUT引腳輸出正躍變信號(hào)軟件啟動(dòng), 計(jì)數(shù)值減到0, OUT從0 1。WR結(jié)束后,第一個(gè)CLK完成初值裝入 3 2 1 0 1CLKWRN=3GATE=
25、1OUT 8254的工作方式 方式1: (可重觸發(fā)的) 硬件啟動(dòng)的單脈沖發(fā)生器GATE由0 1, 下一個(gè)CLK下降沿, 使OUT由1 0, 且裝入計(jì)數(shù)值GATE再次從0 1之后, 下一個(gè)CLK完成初值自動(dòng)重裝 3 2 3 2 1 0 3 2 1 0 N TCLKCLKWRN=3GATE=1OUTGATEOUTTOUT 8254的工作方式 硬件啟動(dòng)(由外部門控信號(hào)啟動(dòng)計(jì)數(shù))初值寫入后不計(jì)數(shù), 當(dāng)GATE從0 1時(shí), OUT 從1 0。之后每個(gè)CLK下降沿計(jì)數(shù)值減1, 計(jì)數(shù)值減到0時(shí), OUT從0 1。 所以: 輸出負(fù)脈沖的寬度=NTCLK計(jì)數(shù)過程中, GATE再次從0 1, 初值自動(dòng)重裝,從而使
26、OUT輸出的負(fù)脈沖加寬 ( 即有可重 觸發(fā)的性能)。 8254的工作方式 方式2: 分頻器(脈沖發(fā)生器)軟件啟動(dòng)減1計(jì)數(shù), 減到1時(shí)OUT從1 0,下一CLK初值 自動(dòng)重裝。所以: OUT為周期性波形, 輸出負(fù)脈 沖的寬度為一個(gè)TCLK, 周期=N TCLK 3 2 1 3 2 1CLKWRN=3GATE=1OUT 周期=N TCLK 8254的工作方式 方式3: 方波發(fā)生器CLKWRN=4GATE=1OUT 4 2 4 2 4 2軟件啟動(dòng), 減2計(jì)數(shù), 有初值自動(dòng)重裝功能。 N=偶數(shù)時(shí), 計(jì)數(shù)值減到0時(shí)初值重裝, 輸出1:1連續(xù)波形。 8254的工作方式 GATE=1WRN=5CLK 4 2
27、 0 4 2 4 2 0OUT N=奇數(shù)時(shí): 裝入的及重新裝入的初值均為寫入的初值-1。 輸出正脈沖期間, 減到-2時(shí)重新裝初值 輸出負(fù)脈沖期間, 減到0時(shí)重新裝初值 輸出正脈沖寬度=TCLK (N+1) / 2 輸出負(fù)脈沖寬度=TCLK (N1) / 2 8254的工作方式 方式4: 軟件啟動(dòng), 單脈沖發(fā)生器軟件啟動(dòng), 減1計(jì)數(shù),減到0 有輸出, 無初值自動(dòng)重裝功能。 3 2 1 0 -1CLKN=3WRGATE=1OUT 8254的工作方式 方式5: 硬件啟動(dòng), 單脈沖發(fā)生器 硬件啟動(dòng), 減1計(jì)數(shù), 減到0有輸出。CLKN=3WR 3 2 1 0 -1OUTGATEGATE從0 1, 下一
28、個(gè)CLK下降沿裝入計(jì)數(shù)初值開始計(jì)數(shù) 8254的工作方式 6種工作方式的比較:方式1方式4方式5功能都是單脈沖發(fā)生器啟動(dòng)方式硬件啟動(dòng)軟件啟動(dòng)硬件啟動(dòng)輸出負(fù)脈寬=N TCLK負(fù)脈寬=TCLK初值重裝在計(jì)數(shù)過程中(OUT=0期間) GATE從01時(shí)初值重裝 計(jì)數(shù)過程中(OUT=1期間) GATE從0 1時(shí)初值重裝 8254的工作方式 方式0方式2方式3功能計(jì)數(shù)結(jié)束, 輸出正躍變脈沖發(fā)生器方波發(fā)生器啟動(dòng)方式都是軟件啟動(dòng)輸出啟動(dòng)后延時(shí)(N+1)TCLK輸出正躍變負(fù)脈寬=TCLK周期=N CLK N=偶數(shù),輸出1:1方波初值重裝計(jì)數(shù)結(jié)束, 初值自動(dòng)重裝 8254的工作方式 七. 8254在PC機(jī)中的應(yīng)用1
29、. 電路:主8259ACLK0 OUT0CLK1CLK2GATE0 OUT1GATE1GATE2 OUT2fclk=1.193182 MHZ+5V8254 PB0 PB18255 B口IR0 Q D動(dòng)態(tài)存儲(chǔ)器刷新電路清“0”+5V與門濾波口地址61H 3個(gè)計(jì)數(shù)器的時(shí)鐘端都為1.193182 MHZ GATE0, GATE1固定接+5v GATE2, OUT2輸出受8255的PB0、PB1控制2. 系統(tǒng)8254口地址為40H 43H。 3. 系統(tǒng)加電后,由BIOS完成對(duì)3個(gè)計(jì)數(shù)器初始化。 4. 各計(jì)數(shù)器的使用現(xiàn)狀如下: 8254的應(yīng)用 工作在方式3, 計(jì)數(shù)初值=0,OUT0=周期為 55ms的方
30、波信號(hào)。 作用: 每隔55ms通過中斷系統(tǒng)提出 一次日時(shí)鐘中斷請(qǐng)求。主8259ACLK0 OUT0CLK1CLK2GATE0 OUT1GATE1GATE2 OUT2fclk=1.193182 MHZ+5V PB0 PB18255 B口IR0 Q D動(dòng)態(tài)存儲(chǔ)器刷新電路清“0”+5V與門濾波口地址61H8254 0#計(jì)數(shù)器 8254的應(yīng)用 主8259ACLK0 OUT0CLK1CLK2GATE0 OUT1GATE1GATE2 OUT2fclk=1.193182 MHZ+5V PB0 PB18255 B口IR0 Q D動(dòng)態(tài)存儲(chǔ)器刷新電路清“0”+5V與門濾波口地址61H8254 工作在方式2, 計(jì)數(shù)
31、初值=18, OUT1=周期為15.1s的連續(xù)脈沖。 作用: 每隔15.1s(向DMAC)提出一次“動(dòng)態(tài)存儲(chǔ)器刷新請(qǐng)求”。1#計(jì)數(shù)器 8254的應(yīng)用 主8259ACLK0 OUT0CLK1CLK2GATE0 OUT1GATE1GATE2 OUT2fclk=1.193182 MHZ+5V PB0 PB18255 B口IR0 Q D動(dòng)態(tài)存儲(chǔ)器刷新電路清“0”+5V與門濾波口地址61H8254 工作在方式3, 初值=533H,為音響 系統(tǒng)提供900HZ方波。2#計(jì)數(shù)器 8254的應(yīng)用 主8259ACLK0 OUT0CLK1CLK2GATE0 OUT1GATE1GATE2 OUT2fclk=1.193
32、182 MHZ+5V8254 PB0 PB18255 B口IR0 Q D動(dòng)態(tài)存儲(chǔ)器刷新電路清“0”+5V與門濾波口地址61H 用戶程序禁止使用1#計(jì)數(shù)器。 用戶程序可以使用0#, 2#計(jì)數(shù)器。注意: 8254的應(yīng)用 八. 系統(tǒng)8254 應(yīng)用舉例: 編寫音樂程序, 演唱 “友誼地久天長(zhǎng)”。歌譜: 友誼地久天長(zhǎng) 1=F 2/4 蘇格蘭民歌 5 1 . 1 1 3 2 . 1 2 3 1 . 1 3 5 6 . 6 6 5 . 3 1. 怎 能 忘記 舊 日 朋友,心 中 能 不 懷 想, 舊 日 朋2. 我 們 曾經(jīng) 終 日 游蕩,在故鄉(xiāng)的 青 山 上, 我 們 也3. 我 們 也曾 經(jīng) 日 逍遙
33、,蕩 漾 在 綠 波 上, 但 如 今4. 我 們 往日 情 意 相投,讓 我 們 緊 握 手, 讓 我 們. 8254的應(yīng)用 3 1 2 . 1 2 3 1 . 6 6 5 1 . 6 5 . 3 3 1 2 . 1 2 6友 豈 能 相忘, 友誼 地 久 天 長(zhǎng);曾 歷 盡 苦辛, 到處 奔 波 流 浪;卻 勞 燕 分飛, 遠(yuǎn)隔 大 海 重 洋;來 舉 杯 暢飲, 友誼 地 久 天 長(zhǎng);5 . 3 3 5 6 . 1 5 . 3 3 1 2 . 1 2 3 1 . 6 6 5 1 . :誼 萬 歲! 舉 杯 痛飲, 同聲 歌頌 友誼 地 久 天 長(zhǎng)。友 誼 萬 歲, 友. . . . .
34、8254的應(yīng)用 設(shè)計(jì)思路: 1.開 / 關(guān)揚(yáng)聲器的子程序OPEN PROC IN AL, 61H OR AL, 03H OUT 61H, AL RET OPEN ENDPCLOSE PROC IN AL, 61H AND AL, 0FCH OUT 61H, AL RETCLOSE ENDP 8254的應(yīng)用 2. 使2#計(jì)數(shù)器產(chǎn)生單音頻的程序段 2#應(yīng)工作在方式3, 計(jì)數(shù)初值=1.193182兆 / 頻率值,而(1.193182 106)10=1234DEH。 所以: 在2#寫入方式選擇命令字之后, 執(zhí)行下列程序段即可。 方式選擇命令字 控制口(BIOS已經(jīng)做了)。 MOV DX, 12H MO
35、V AX, 34DEH MOV CX, 頻率值 DIV CX ;初值A(chǔ)X OUT 42H, AL MOV AL, AH OUT 42H, AL 8254的應(yīng)用 3.音符頻率表 一首歌曲由若干音符組成, 每一音符對(duì)應(yīng)一個(gè)頻率。下表給出了各種音符的頻率對(duì)照表。音符頻率表 (單位: HZ)音頻 音符 1 2 3 4 5 6 7 A 221 248 278 294 330 371 416B 248 278 312 330 371 416 467C 131 147 165 175 196 221 248D 147 165 185 196 221 248 278E 165 185 208 221 248
36、278 312F 175 196 221 234 262 294 330G 196 221 248 262 294 330 371. . . . . . . 8254的應(yīng)用 音符頻率表 (單位: HZ)音頻 音符 1 2 3 4 5 6 7A 441 495 556 589 661 742 833B 495 556 624 661 742 833 935C 262 294 330 350 393 441 495D 294 330 371 393 441 495 556E 330 371 416 441 495 556 624F 350 393 441 467 525 589 661G 393
37、441 495 525 589 661 742 8254的應(yīng)用 音符頻率表 (單位: HZ)音頻 音符 1 2 3 4 5 6 7A 882 990 1112 1178 1322 1484 1665B 990 1112 1248 1322 1484 1665 1869C 525 589 661 700 786 882 990D 589 661 742 786 882 990 1112E 661 742 833 882 990 1112 1248F 700 786 882 935 1049 1178 1322G 786 882 990 1049 1178 1322 1484. . . . . .
38、 . 8254的應(yīng)用 4. 音符的演唱時(shí)間 這是編程的關(guān)鍵,有兩種處理方法: 直接給出每一音符演唱的絕對(duì)時(shí)間 這種方法, 程序調(diào)試很困難, 特別是對(duì)于缺少 音樂細(xì)胞的人, 對(duì)于不太熟悉的歌曲, 很難把 握演唱的節(jié)奏。 給出每一音符演唱的 “單位時(shí)間” 單位時(shí)間 N=演唱時(shí)間 N為調(diào)試參數(shù),預(yù)先給一個(gè)值,試聽后再 修改。這種方法, 大大加快了調(diào)試時(shí)間。 8254的應(yīng)用 5.怎樣確定 “單位時(shí)間” 3/4拍 1/4拍 一拍.1=F2/45 1 . 1 1 3 因?yàn)? 一首歌曲中,每個(gè)音符的演唱時(shí)間有一拍、半拍、1/4拍如果最短的音符為1/8拍, 則定義: 一拍音符的單位時(shí)間為8 半拍音符的單位時(shí)間
39、為4 1/4拍音符的單位時(shí)間為2 1/8拍音符的單位時(shí)間為1 如: 8254的應(yīng)用 根據(jù)選定的歌曲,將各音符對(duì)應(yīng)的頻率值列成一張頻率表,將各音符演唱的單位時(shí)間列成一張時(shí)間表。頻率表的表項(xiàng)和時(shí)間表的表項(xiàng)要一一對(duì)應(yīng),不能錯(cuò)位。 8254的應(yīng)用 6. 音樂程序框圖 取頻率值轉(zhuǎn)換成計(jì)數(shù)初值 2#計(jì)數(shù)器取單位時(shí)間 轉(zhuǎn)換成演唱時(shí)間 延時(shí)調(diào)整頻率表、時(shí)間表指針 接通揚(yáng)聲器有鍵入?關(guān)閉揚(yáng)聲器,返回DOSYN數(shù)據(jù)段, 設(shè)置頻率表, 時(shí)間表 8254的應(yīng)用 . 486DATA SEGMENT USE16 TABF DW -1, 262, 350, 352, 350, 441, 393, 350, 393, 441
40、 DW 350, 352, 441, 525, 589, 588, 589, 525, 441 DW 440, 350, 393, 350, 393, 441, 350, 293, 294, 262 DW 350, 589, 525, 441, 440, 350, 393, 350, 393, 589 DW 525, 441, 440, 525, 589, 700, 525, 441, 440, 350 DW 393, 350, 393, 441, 350, 294, 292, 262, 350, 0 TABT DB 4, 4, 6, 2, 4, 4, 6, 2, 4, 4 DB 6, 2,
41、4, 4, 12, 1, 3, 6, 2 DB 4, 4, 6, 2, 4, 4, 6, 2, 4, 4 DB 12, 4, 6, 2, 4, 4, 6, 2, 4, 4 DB 6, 2, 4, 4, 12, 4, 6, 2, 4, 4 DB 6, 2, 4, 4, 6, 2, 4, 4, 12 N EQU 150000 ;微秒 DATA ENDS 7. 程 序 8254的應(yīng)用 CODE SEGMENT USE16 ASSUME CS:CODE, DS:DATA BEG: MOV AX, DATA MOV DS, AX OPEN: IN AL, 61H OR AL, 00000011B OUT
42、 61H, AL ;接通揚(yáng)聲器 AGA: MOV SI, OFFSET TABF ;SI是頻率表指針 MOV DI, OFFSET TABT ;DI是時(shí)間表指針 LAST: CMP WORD PTR SI, 0 ;唱完一遍? JE AGA ;是,轉(zhuǎn) MOV DX, 12H MOV AX, 34DEH DIV WORD PTR SI ;頻率轉(zhuǎn)換成計(jì)數(shù)初值 OUT 42H, AL ;低8位送2號(hào)計(jì)數(shù)器 MOV AL, AH OUT 42H, AL ;高8位送2號(hào)計(jì)數(shù)器 8254的應(yīng)用 CALL DELAY ;延時(shí) ADD SI, 2 ;頻率表指針加2 INC DI ;時(shí)間表指針加1 MOV AH, 1 INT 16H ;有鍵入? JZ LAST ; 否 CLOSE: IN AL, 61H AND AL, 11111100B OUT 61H, AL ;關(guān)閉揚(yáng)聲器 MOV AH, 4CH INT 21H 8254的應(yīng)用 DELAY PROC ;延時(shí)子程序 MOV EAX, 0 MOV AL, DI IMUL EAX, EAX, N ;EAX=演唱時(shí)間 (
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 西交利物浦大學(xué)《藥事管理學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 二零二五年獨(dú)立電影導(dǎo)演合作聘用協(xié)議2篇
- 二零二五版辦公室耗材專業(yè)配送與售后服務(wù)合同2篇
- 武昌職業(yè)學(xué)院《空間解析幾何》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024版投資顧問居間服務(wù)協(xié)議示范文本版B版
- 2025年度砂石料電商平臺(tái)支付結(jié)算合作協(xié)議3篇
- 中建四局2024年度標(biāo)準(zhǔn)建筑工程協(xié)議模板版
- 2025年度智能照明系統(tǒng)安裝與維護(hù)勞務(wù)外包合同范本2篇
- 二零二五年度貨物運(yùn)輸合同貨物損壞賠償及維修服務(wù)合同3篇
- 2024版家庭裝修簡(jiǎn)易合同范本
- 設(shè)計(jì)材料與工藝課程 課件 第1章 產(chǎn)品設(shè)計(jì)材料與工藝概述
- 幼兒園反恐防暴技能培訓(xùn)內(nèi)容
- 食品企業(yè)質(zhì)檢員聘用合同
- 中醫(yī)診所內(nèi)外部審計(jì)制度
- 自然辯證法學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 2024年國(guó)家危險(xiǎn)化學(xué)品經(jīng)營(yíng)單位安全生產(chǎn)考試題庫(kù)(含答案)
- 護(hù)理員技能培訓(xùn)課件
- 河南省鄭州市2023-2024學(xué)年高二上學(xué)期期末考試 數(shù)學(xué) 含答案
- 2024年資格考試-WSET二級(jí)認(rèn)證考試近5年真題集錦(頻考類試題)帶答案
- 試卷中國(guó)電子學(xué)會(huì)青少年軟件編程等級(jí)考試標(biāo)準(zhǔn)python三級(jí)練習(xí)
- 公益慈善機(jī)構(gòu)數(shù)字化轉(zhuǎn)型行業(yè)三年發(fā)展洞察報(bào)告
評(píng)論
0/150
提交評(píng)論