




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(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指令讀寫(xiě)數(shù)據(jù)) 與外設(shè)之間有聯(lián)絡(luò)功能 有中斷管理能力 有數(shù)據(jù)轉(zhuǎn)換功能(并 串,串 并)CPU與外設(shè)之間的接口信息 CPU與一
2、個(gè)外設(shè)交換信息,通常需要以下一些信號(hào): 1. 數(shù)據(jù)(Data) 數(shù)字量鍵盤(pán)等輸入的數(shù)據(jù); 模擬量如溫度、壓力、流量等; ( 需先經(jīng)過(guò)A/D轉(zhuǎn)換,將其變?yōu)閿?shù)字量,由CPU處理后,再經(jīng)過(guò)D/A 轉(zhuǎn) 換,變?yōu)槟M量,進(jìn)行控制),這部分工作由接口電路來(lái)完成。 開(kāi)關(guān)量如開(kāi)關(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ū)分開(kāi),在接口電路中,設(shè)有不同的端口,如數(shù)據(jù)端口、狀態(tài)端口、控制端口,以接收、存放、輸出不同的信息。端口1端口2端口4端口3端口用于存放信息的 8位或16位鎖存器, 緩沖器等。 在PC機(jī)中通常為8位 端口分類(lèi):數(shù)據(jù)口: 存放CPU向外設(shè)輸出或外設(shè)輸入的數(shù)據(jù)。控制口: 存放控制信息-控制接口電路、外設(shè)的工作。狀態(tài)口: 存放狀態(tài)信息 反映外設(shè)的狀態(tài)。 注意:接口電路必須具有數(shù)據(jù)口。注:每個(gè)端口,系統(tǒng)都為它編了一個(gè)地址,系統(tǒng)只要給出某個(gè)地址,通過(guò)譯碼電路,就能找到相應(yīng)的I/O接口電路中的端口寄存器。問(wèn) 題:系統(tǒng)
4、給出的地址是內(nèi)存單元地址還是I/O端口寄存器的地址?解決方案:合理安排I/O端口寄存器的編址方式。 將存儲(chǔ)器與外設(shè)端口統(tǒng)一編址 將外設(shè)接口電路的一個(gè)端口作為存儲(chǔ)器的一個(gè)單元。優(yōu)點(diǎn):不需要專(zhuān)門(mé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è)專(zhuān)門(mén)的 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 空間)沒(méi)有分段的概念。 二. 最常用的 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), 即不能寫(xiě)成: 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 端口的信息交換有四種方式: 無(wú)條件傳送 查詢(xún)方式 中斷方式 DMA方式采用何種方式與接口的硬件電路有直接關(guān)系1.無(wú)條件傳送 輸入接口:控=0,出=入控=1,出為高阻入出控入出控控=1,出=入控=0,出為高阻八個(gè)三態(tài)門(mén)地址譯碼器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.查詢(xún)方式 用查詢(xún)方式交換信息, 必先了解外設(shè)的狀態(tài)。 查詢(xún)方式輸入流程從狀態(tài)口讀取 狀態(tài)信息數(shù)據(jù)準(zhǔn)備好?執(zhí)行IN指令,取出數(shù)據(jù)YN從狀態(tài)口讀取 狀態(tài)信息外設(shè)空閑否?執(zhí)行OUT指令,輸出一個(gè)數(shù)據(jù)YN 查詢(xún)方式輸出流程查詢(xún)方式輸入接口示意圖地址譯碼器地址總線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 查詢(xún)式輸入核心程序 設(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 查詢(xún)式輸出接口示意圖“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 查詢(xún)式數(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ī)的 若采用查詢(xún)方式工作,就不能保證系統(tǒng)實(shí)時(shí)地對(duì)外設(shè)的請(qǐng)求作出響應(yīng) 為了提高CPU的效率,使系統(tǒng)有實(shí)時(shí)性能,導(dǎo)致了中斷處理技術(shù)的產(chǎn)生傳送流程演示特點(diǎn): 在外設(shè)沒(méi)有作好數(shù)據(jù)傳送準(zhǔn)備時(shí),CPU可執(zhí)行與傳送數(shù)據(jù)無(wú)關(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)返回原來(lái)運(yùn)行的程序4.直接存儲(chǔ)器存取(DMA)方式為什么要有DMA?什么是DMA?特點(diǎn): 用
11、硬件實(shí)現(xiàn)在外設(shè)與內(nèi)存間直接進(jìn)行數(shù)據(jù)交換,而不通過(guò)CPU 數(shù)據(jù)傳送速度的上限就取決于存儲(chǔ)器的工作速度 速度快傳送流程演示幾種傳送方式的比較:1. 無(wú)條件傳送:只能用于外部設(shè)備與CPU 的動(dòng)作同步時(shí),否則出錯(cuò)。這種方式已 較少使用2. 查詢(xún)傳送: 接口簡(jiǎn)單, 但在傳送過(guò)程中,若外設(shè)數(shù)據(jù)沒(méi)有準(zhǔn)備好,則CPU一直在查詢(xún)、等待,而 不能做其他事情。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í)間是額外開(kāi)銷(xiāo),從而傳送效率并不高。 DMA傳送: 在DMAC的控制下,外設(shè)直接和存儲(chǔ)器(也可外設(shè)與外設(shè),存儲(chǔ) 器與 存儲(chǔ)器之間)進(jìn)行數(shù)據(jù)傳送,而不必經(jīng)過(guò)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ù)總線 緩沖器讀寫(xiě)控制控制字寄存器 0號(hào)計(jì)數(shù)器 1號(hào)計(jì)數(shù)器 2號(hào)計(jì)數(shù)器RDWRA0CSA1D70GATE0OUT0CLK0GATE1OUT1CLK1GATE2OUT2CLK2數(shù)據(jù)總線 緩沖器讀寫(xiě)控制控制字寄存器 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ù)總線 緩沖器讀寫(xiě)控制控制字寄存器 0號(hào)計(jì)數(shù)器 1號(hào)計(jì)數(shù)器 2號(hào)計(jì)數(shù)器RDWRA
14、0CSA1D70GATE0OUT0CLK0GATE1OUT1CLK1GATE2OUT2CLK2讀寫(xiě)控制模塊: 選擇芯片內(nèi)部的控制寄存器和計(jì)數(shù)器, 在讀寫(xiě)命令的控制下對(duì)選中的端口進(jìn)行讀寫(xiě)操作。對(duì)外有5條引線。 8254的內(nèi)部結(jié)構(gòu) 8254的內(nèi)部結(jié)構(gòu)數(shù)據(jù)總線 緩沖器讀寫(xiě)控制控制字寄存器 0號(hào)計(jì)數(shù)器 1號(hào)計(jì)數(shù)器 2號(hào)計(jì)數(shù)器RDWRA0CSA1D70GATE0OUT0CLK0GATE1OUT1CLK1GATE2OUT2CLK2控制寄存器: 寄存CPU對(duì)其初始化編程時(shí)寫(xiě)入的控制字,以決定計(jì)數(shù)器的工作方式和并設(shè)置讀出命令。 8254的內(nèi)部結(jié)構(gòu)數(shù)據(jù)總線 緩沖器讀寫(xiě)控制控制字寄存器 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) 部寄存器寫(xiě)三.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ī)定初 值的寫(xiě)入順序和計(jì)數(shù)初值 (一串0, 1代碼) 的數(shù)制。 五. 8254命令字 / 狀態(tài)字 D7 D6 D5 D4 D3 D2 D1 D0 計(jì)數(shù)器選擇 讀寫(xiě)方式選擇 工作方式選擇 數(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 初值寫(xiě)入時(shí), 只寫(xiě)低8位, 高8位自動(dòng) 補(bǔ)0;計(jì)數(shù)值讀出時(shí), 只能讀低8位 =10 初值寫(xiě)入時(shí), 只寫(xiě)高8位, 低8位自動(dòng) 補(bǔ)0;計(jì)數(shù)值讀出時(shí), 只能讀高8位。 =11 初值寫(xiě)入 / 計(jì)數(shù)值讀出的
19、順序?yàn)橄?低8位,后高8位。D7 D6 D5 D4 D3 D2 D1 D0 計(jì)數(shù)器選擇 讀寫(xiě)方式選擇 工作方式選擇 數(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ù)器選擇 讀寫(xiě)方式選擇 工作方式選擇 數(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, 寫(xiě)出2#的初始化程序段。1. 對(duì)8254一個(gè)計(jì)數(shù)器的初始化編程步驟: 向控制寄存器寫(xiě)入方式選擇命令字 目的: 選擇一個(gè)計(jì)數(shù)器, 并確定其工作方式 和計(jì)數(shù)值(計(jì)數(shù)初值)的讀 / 寫(xiě)順序。 向選擇的計(jì)數(shù)器寫(xiě)入計(jì)數(shù)初值。 注意: 如果方式選擇命令字D0=0, 則初值 應(yīng)是二進(jìn)制, 否則初值應(yīng)是BCD碼數(shù)。解1: 設(shè)初值為二進(jìn)制, 初值寫(xiě)入順序?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)制, 寫(xiě)入順序?yàn)閮H寫(xiě)高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碼, 寫(xiě)入順序?yàn)橄鹊秃蟾摺?MOV AL, 10110111B OUT 43H, AL MOV AL, 0 OUT 42H, AL MOV AL, 40H OUT 42H, AL解4: 設(shè)初值為BCD碼, 僅寫(xiě)高8位。 MOV AL, 10100111B OUT 43
23、H, AL MOV AL, 40H OUT 42H, AL 注意: 4000的BCD碼數(shù)應(yīng)寫(xiě)成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 是正確的 寫(xiě)成 MOV AX, 1234 是錯(cuò)誤的4. 方式選擇命令, 鎖存命令, 讀出命令必須寫(xiě)入 控制口。 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í), 先 向控制口寫(xiě)入鎖存命令, 然后從選擇的計(jì)數(shù) 器端口讀取當(dāng)前計(jì)數(shù)值。 8254的初始化編程 六. 8254工作方式 有6種工作方式, 均在CLK下降沿計(jì)數(shù)一次。有2種啟動(dòng)方式: 軟件啟動(dòng), 硬件啟動(dòng)。 軟件啟動(dòng): GATA=1, 初值寫(xiě)入后, 開(kāi)始計(jì)數(shù)。 硬件啟動(dòng): 初值寫(xiě)入后, 不計(jì)數(shù)。當(dāng)GATE從 0 1后開(kāi)始計(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)(由外部門(mén)控信號(hào)啟動(dòng)計(jì)數(shù))初值寫(xiě)入后不計(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ù)過(guò)程中, 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í): 裝入的及重新裝入的初值均為寫(xiě)入的初值-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 有輸出, 無(wú)初值自動(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ù)初值開(kāi)始計(jì)數(shù) 8254的工作方式 6種工作方式的比較:方式1方式4方式5功能都是單脈沖發(fā)生器啟動(dòng)方式硬件啟動(dòng)軟件啟動(dòng)硬件啟動(dòng)輸出負(fù)脈寬=N TCLK負(fù)脈寬=TCLK初值重裝在計(jì)數(shù)過(guò)程中(OUT=0期間) GATE從01時(shí)初值重裝 計(jì)數(shù)過(guò)程中(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與門(mén)濾波口地址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通過(guò)中斷系統(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與門(mén)濾波口地址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與門(mén)濾波口地址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與門(mén)濾波口地址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與門(mén)濾波口地址61H 用戶程序禁止使用1#計(jì)數(shù)器。 用戶程序可以使用0#, 2#計(jì)數(shù)器。注意: 8254的應(yīng)用 八. 系統(tǒng)8254 應(yīng)用舉例: 編寫(xiě)音樂(lè)程序, 演唱 “友誼地久天長(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)隔 大 海 重 洋;來(lái) 舉 杯 暢飲, 友誼 地 久 天 長(zhǎng);5 . 3 3 5 6 . 1 5 . 3 3 1 2 . 1 2 3 1 . 6 6 5 1 . :誼 萬(wàn) 歲! 舉 杯 痛飲, 同聲 歌頌 友誼 地 久 天 長(zhǎng)。友 誼 萬(wàn) 歲, 友. . . . .
34、8254的應(yīng)用 設(shè)計(jì)思路: 1.開(kāi) / 關(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#寫(xiě)入方式選擇命令字之后, 執(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ì)于缺少 音樂(lè)細(xì)胞的人, 對(duì)于不太熟悉的歌曲, 很難把 握演唱的節(jié)奏。 給出每一音符演唱的 “單位時(shí)間” 單位時(shí)間 N=演唱時(shí)間 N為調(diào)試參數(shù),預(yù)先給一個(gè)值,試聽(tīng)后再 修改。這種方法, 大大加快了調(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. 音樂(lè)程序框圖 取頻率值轉(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. 本站所有資源如無(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 節(jié)假日行車(chē)安全培訓(xùn)
- 項(xiàng)目施工合同培訓(xùn)
- 機(jī)房溫控節(jié)能相關(guān)行業(yè)投資方案范本
- 系列高效脫氧劑相關(guān)行業(yè)投資規(guī)劃報(bào)告范本
- 網(wǎng)絡(luò)安全合作保密免責(zé)條款
- 稀土發(fā)光材料相關(guān)行業(yè)投資方案范本
- 地理信息系統(tǒng)基礎(chǔ)與實(shí)戰(zhàn)測(cè)試題
- 辦公場(chǎng)所租賃合同書(shū)
- 學(xué)校委托管理協(xié)議書(shū)
- 食品加工工藝及質(zhì)量控制標(biāo)準(zhǔn)試題
- GA/T 1788.4-2021公安視頻圖像信息系統(tǒng)安全技術(shù)要求第4部分:安全管理平臺(tái)
- FEKO教程-教學(xué)講解課件
- 鋼板型材機(jī)械性能試驗(yàn)報(bào)告
- 2023年蘇州市吳中產(chǎn)業(yè)投資集團(tuán)有限公司招聘筆試模擬試題及答案解析
- 船舶制造基地可行性研究報(bào)告
- 腫瘤生物靶向治療護(hù)理課件
- 紅樓夢(mèng)人物關(guān)系圖譜可A4打印版
- 石化公司建設(shè)項(xiàng)目竣工文件整理歸檔規(guī)范
- A4線纜標(biāo)簽數(shù)據(jù)模板
- 加油站電器火災(zāi)應(yīng)急預(yù)案演練記錄
- 沖壓件,汽車(chē)表面零件缺陷及原因分析
評(píng)論
0/150
提交評(píng)論