




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第第8 8章章 輸入輸入/ /輸出系統(tǒng)輸出系統(tǒng) 一一. 概概 述述 1. 接口電路的作用接口電路的作用 CPU數(shù)據(jù)數(shù)據(jù) 輸出接口電路輸出接口電路 輸出設(shè)備輸出設(shè)備 CPU 輸入接口電路輸入接口電路 輸入設(shè)備數(shù)據(jù)輸入設(shè)備數(shù)據(jù)接口接口: 是是CPU與外部設(shè)備交換信息的中轉(zhuǎn)站與外部設(shè)備交換信息的中轉(zhuǎn)站 I/O設(shè)備與總線之間的連接設(shè)備與總線之間的連接輸出接口電路輸出接口電路輸出設(shè)備輸出設(shè)備輸入接口電路輸入接口電路輸入設(shè)備輸入設(shè)備系系統(tǒng)統(tǒng)總總線線I/O接口電路接口電路2. 接口電路的功能接口電路的功能 應(yīng)具有數(shù)據(jù)暫存功能應(yīng)具有數(shù)據(jù)暫存功能 應(yīng)有端口地址譯碼器應(yīng)有端口地址譯碼器 (便于使用便于使用IN,
2、OUT指令讀寫數(shù)據(jù)指令讀寫數(shù)據(jù)) 與外設(shè)之間有聯(lián)絡(luò)功能與外設(shè)之間有聯(lián)絡(luò)功能 有中斷管理能力有中斷管理能力 有數(shù)據(jù)轉(zhuǎn)換功能有數(shù)據(jù)轉(zhuǎn)換功能(并并 串串,串串 并并)3. 關(guān)于端口的概念關(guān)于端口的概念 “端口端口”是是接口電路接口電路中中, 能與能與CPU交換信息交換信息(使用使用IN, OUT) 的的寄存器寄存器。 端口分類端口分類:數(shù)據(jù)口數(shù)據(jù)口: 存放存放CPU向外設(shè)輸出或外設(shè)輸入的數(shù)據(jù)。向外設(shè)輸出或外設(shè)輸入的數(shù)據(jù)??刂瓶诳刂瓶? 存放控制信息存放控制信息-控制接口電路、外設(shè)的控制接口電路、外設(shè)的 工作。工作。狀態(tài)口狀態(tài)口: 存放狀態(tài)信息存放狀態(tài)信息 反映外設(shè)的狀態(tài)。反映外設(shè)的狀態(tài)。 注意:接口
3、電路必須具有數(shù)據(jù)口。注意:接口電路必須具有數(shù)據(jù)口。注:注:每個(gè)端口,系統(tǒng)都為它編了一個(gè)地址,系統(tǒng)只要給出每個(gè)端口,系統(tǒng)都為它編了一個(gè)地址,系統(tǒng)只要給出某個(gè)地址,通過(guò)譯碼電路,就能找到相應(yīng)的某個(gè)地址,通過(guò)譯碼電路,就能找到相應(yīng)的I/O接口電路中接口電路中的端口寄存器。的端口寄存器。問(wèn)問(wèn) 題:題:系統(tǒng)給出的地址是內(nèi)存單元地址還是系統(tǒng)給出的地址是內(nèi)存單元地址還是I/O端口寄存端口寄存器的地址?器的地址?解決方案:解決方案:合理安排合理安排I/O端口寄存器的編址方式。端口寄存器的編址方式。 4. 端口的編址方式端口的編址方式 存儲(chǔ)器映像方式存儲(chǔ)器映像方式 把端口和存儲(chǔ)單元等同看待把端口和存儲(chǔ)單元等同看
4、待, 統(tǒng)一編址統(tǒng)一編址。 特點(diǎn)特點(diǎn): 凡訪問(wèn)存儲(chǔ)單元的指令都可訪問(wèn)凡訪問(wèn)存儲(chǔ)單元的指令都可訪問(wèn) I/O端口端口,端口地址占用存儲(chǔ)空間。端口地址占用存儲(chǔ)空間。 I/O端口端口獨(dú)立編址獨(dú)立編址 特點(diǎn)特點(diǎn): I/O 端口不占用存儲(chǔ)空間,端口不占用存儲(chǔ)空間, CPU要有專用的要有專用的 I/O 指令。指令。5. PC系列機(jī)的端口編址系列機(jī)的端口編址 PC系列機(jī)采用端口獨(dú)立編址;系列機(jī)采用端口獨(dú)立編址;從從8088 奔騰微處理器奔騰微處理器, 設(shè)計(jì)時(shí)用設(shè)計(jì)時(shí)用A15 A0 低低16位地址尋址位地址尋址 I/O 端口;端口; 所以所以, CPU的端口尋址能力為的端口尋址能力為216=65536個(gè);個(gè);基于
5、微處理器的基于微處理器的PC系列系列, 實(shí)際使用實(shí)際使用A9 A0 做做I/O地址;地址; 所以所以, PC系列機(jī)系列機(jī) I/O 端口地址最多為端口地址最多為 210=1024個(gè)。個(gè)。這這1024個(gè)口地址個(gè)口地址, 系統(tǒng)本身系統(tǒng)本身(主板上主板上, 以及常以及常 規(guī)規(guī) I/O接口接口)已經(jīng)占用了一部分。已經(jīng)占用了一部分。 端口地址端口地址( I/O 空間空間)沒有分段的概念。沒有分段的概念。 二二. 最常用的最常用的 I/O 指令指令1.直接尋址直接尋址 I/O 指令指令設(shè)設(shè)n為為8位端口地址位端口地址IN AL , n ; 口地址為口地址為n的端口中取數(shù)的端口中取數(shù) AL OUT n , A
6、L ; AL內(nèi)容內(nèi)容 口地址為口地址為n的端口寄存器的端口寄存器IN AX , n ; (n) AL, (n+1) AH OUT n , AX ; AL n口口, AH n+1口口如如: IN AL , 61H OUT 61H, AL2. DX間址的間址的I/O指令指令 當(dāng)口地址當(dāng)口地址 n 8位二進(jìn)制數(shù)時(shí)位二進(jìn)制數(shù)時(shí), 用用DX間址間址 注意注意: I/O 指令只能在端口和指令只能在端口和AL, AX, EAX之間之間 交換信息交換信息, 用用DX間址間址, 但不能使用方括號(hào)但不能使用方括號(hào), 即不能寫成即不能寫成: IN AL, DX。IN AL , DX ; DX的端口內(nèi)容的端口內(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ù)端口取數(shù) AL微機(jī)系統(tǒng)與微機(jī)系統(tǒng)與 I/O 端口的信息交換有四種方式端口的信息交換有四種方式: 無(wú)條件傳送無(wú)條件傳送 查詢方式查詢方式 中斷方式中斷方式 DMA方式方式采用何種方式與接口的硬件電路有直接關(guān)系采用何種方式與接口的硬件電路有直接關(guān)系1.無(wú)條件傳送無(wú)條件傳送 輸入接口輸入接口:八八個(gè)個(gè)三三態(tài)態(tài)門門地址譯碼器地
8、址譯碼器IOR數(shù)據(jù)線數(shù)據(jù)線外設(shè)外設(shè)8入入出出控控控控=0,出,出=入入控控=1,出為高,出為高阻阻入入出出控控入入出出控控控控=1,出,出=入入控控=0,出為高阻,出為高阻執(zhí)行執(zhí)行IN指令之前指令之前, 外設(shè)數(shù)據(jù)已經(jīng)準(zhǔn)備好。外設(shè)數(shù)據(jù)已經(jīng)準(zhǔn)備好。 輸出接口輸出接口鎖鎖存存器器地址譯碼器地址譯碼器IOW數(shù)據(jù)線數(shù)據(jù)線外設(shè)外設(shè)8 QCP D.D7D0執(zhí)行執(zhí)行OUT指令時(shí)指令時(shí): AL內(nèi)容內(nèi)容 數(shù)據(jù)線,數(shù)據(jù)線, 口地址口地址 地址線上地址線上, IOW=低低, 把數(shù)據(jù)鎖存到把數(shù)據(jù)鎖存到 鎖存器中。鎖存器中。 2.查詢方式查詢方式 用查詢方式交換信息用查詢方式交換信息, 必先了解外設(shè)的狀態(tài)。必先了解外設(shè)的
9、狀態(tài)。 查詢方式輸入流程查詢方式輸入流程從狀態(tài)口讀取從狀態(tài)口讀取 狀態(tài)信息狀態(tài)信息數(shù)據(jù)準(zhǔn)備好?數(shù)據(jù)準(zhǔn)備好?執(zhí)行執(zhí)行IN指令指令,取出數(shù)據(jù)取出數(shù)據(jù)YN從狀態(tài)口讀取從狀態(tài)口讀取 狀態(tài)信息狀態(tài)信息外設(shè)空閑否外設(shè)空閑否?執(zhí)行執(zhí)行OUT指令指令,輸出一個(gè)數(shù)據(jù)輸出一個(gè)數(shù)據(jù)YN 查詢方式輸出流程查詢方式輸出流程查詢方式輸入接口示意圖查詢方式輸入接口示意圖地址譯碼器地址譯碼器地址總線地址總線IOR鎖鎖存存器器(8)三態(tài)三態(tài)緩沖緩沖 器器 (8)CPU數(shù)據(jù)線數(shù)據(jù)線數(shù)據(jù)數(shù)據(jù) 輸輸 入入 設(shè)設(shè) 備備輸入選輸入選通信號(hào)通信號(hào) RD Q +5V狀態(tài)標(biāo)志狀態(tài)標(biāo)志寄存器寄存器IOR地址譯碼器地址譯碼器數(shù)據(jù)口選中數(shù)據(jù)口選中接
10、接數(shù)數(shù)據(jù)據(jù)線線D7位位 查詢式輸入核心程序查詢式輸入核心程序 設(shè)狀態(tài)口地址設(shè)狀態(tài)口地址=200H 數(shù)據(jù)口地址數(shù)據(jù)口地址=201HRSCAN : MOV DX , 200H(狀態(tài)端口地址狀態(tài)端口地址) IN AL , DX TEST AL , 80H JZ RSCAN MOV DX , 201H IN AL , DX 查詢式輸出接口示意圖查詢式輸出接口示意圖“0”為空閑為空閑鎖鎖存存器器(8)數(shù)據(jù)數(shù)據(jù)IOW地址譯碼器地址譯碼器地址總線地址總線IOR數(shù)據(jù)總線數(shù)據(jù)總線數(shù)據(jù)口選中數(shù)據(jù)口選中ACK 輸輸 出出 設(shè)設(shè) 備備Q D +5V狀態(tài)標(biāo)志狀態(tài)標(biāo)志狀態(tài)口選中狀態(tài)口選中接數(shù)據(jù)線接數(shù)據(jù)線D0位位 R 查詢
11、式數(shù)據(jù)輸出核心程序查詢式數(shù)據(jù)輸出核心程序 設(shè)狀態(tài)口地址設(shè)狀態(tài)口地址=200H=數(shù)據(jù)口地址數(shù)據(jù)口地址 TSCAN: MOV DX, 200H IN AL, DX TEST AL, 1 JNZ TSCAN MOV DX, 200H MOV AL, 某數(shù)某數(shù) OUT DX, AL3.3. 中斷控制方式中斷控制方式 在有多個(gè)外設(shè)的系統(tǒng)中,多個(gè)外設(shè)要求在有多個(gè)外設(shè)的系統(tǒng)中,多個(gè)外設(shè)要求CPUCPU為它服務(wù)為它服務(wù)是隨機(jī)的是隨機(jī)的 若采用查詢方式工作,就不能保證系統(tǒng)實(shí)時(shí)地對(duì)外若采用查詢方式工作,就不能保證系統(tǒng)實(shí)時(shí)地對(duì)外設(shè)的請(qǐng)求作出響應(yīng)設(shè)的請(qǐng)求作出響應(yīng) 為了提高為了提高CPUCPU的效率,使系統(tǒng)有實(shí)時(shí)性能,
12、導(dǎo)致了的效率,使系統(tǒng)有實(shí)時(shí)性能,導(dǎo)致了中中斷處理技術(shù)斷處理技術(shù)的產(chǎn)生的產(chǎn)生特點(diǎn):特點(diǎn): 在外設(shè)沒有作好數(shù)據(jù)傳送準(zhǔn)備時(shí),在外設(shè)沒有作好數(shù)據(jù)傳送準(zhǔn)備時(shí),CPUCPU可執(zhí)行與傳送數(shù)據(jù)無(wú)可執(zhí)行與傳送數(shù)據(jù)無(wú)關(guān)的其它指令關(guān)的其它指令 當(dāng)外設(shè)作好傳送準(zhǔn)備后,主動(dòng)向當(dāng)外設(shè)作好傳送準(zhǔn)備后,主動(dòng)向CPUCPU請(qǐng)求中斷請(qǐng)求中斷 若若CPUCPU響應(yīng)這一請(qǐng)求,則暫停正在運(yùn)行的程序,轉(zhuǎn)入中斷服響應(yīng)這一請(qǐng)求,則暫停正在運(yùn)行的程序,轉(zhuǎn)入中斷服務(wù)程序,完成數(shù)據(jù)傳送務(wù)程序,完成數(shù)據(jù)傳送 待服務(wù)完畢后,自動(dòng)返回原來(lái)運(yùn)行的程序待服務(wù)完畢后,自動(dòng)返回原來(lái)運(yùn)行的程序4.4.直接存儲(chǔ)器存?。ㄖ苯哟鎯?chǔ)器存取(DMADMA)方式方式為什么要
13、有為什么要有DMA?什么是什么是DMA?特點(diǎn):特點(diǎn): 用硬件實(shí)現(xiàn)在外設(shè)與內(nèi)存間直接進(jìn)行數(shù)據(jù)交換,而不通用硬件實(shí)現(xiàn)在外設(shè)與內(nèi)存間直接進(jìn)行數(shù)據(jù)交換,而不通過(guò)過(guò)CPUCPU 數(shù)據(jù)傳送速度的上限就取決于存儲(chǔ)器的工作速度數(shù)據(jù)傳送速度的上限就取決于存儲(chǔ)器的工作速度 速度快速度快計(jì)算機(jī)中的定時(shí)和延時(shí)控制、對(duì)外部事件或信號(hào)的計(jì)數(shù)計(jì)算機(jī)中的定時(shí)和延時(shí)控制、對(duì)外部事件或信號(hào)的計(jì)數(shù) 軟件方法軟件方法 固定時(shí)間的硬件定時(shí)固定時(shí)間的硬件定時(shí) 可編程的硬件定時(shí)可編程的硬件定時(shí)計(jì)算機(jī)系統(tǒng)中采用可編程定時(shí)計(jì)算機(jī)系統(tǒng)中采用可編程定時(shí)/計(jì)數(shù)器計(jì)數(shù)器I8253和和I8254 8254內(nèi)部集成了內(nèi)部集成了3個(gè)個(gè)16位的計(jì)數(shù)器位的計(jì)數(shù)
14、器, 每個(gè)計(jì)數(shù)器有每個(gè)計(jì)數(shù)器有6種工作方式,種工作方式,計(jì)數(shù)初值可設(shè)定為二進(jìn)制或計(jì)數(shù)初值可設(shè)定為二進(jìn)制或BCD碼。最高工作頻率碼。最高工作頻率10兆。兆。一一.8254內(nèi)部結(jié)構(gòu)內(nèi)部結(jié)構(gòu) (24腳腳)數(shù)據(jù)總線數(shù)據(jù)總線 緩沖器緩沖器讀寫讀寫控制控制控制字控制字寄存器寄存器 0號(hào)號(hào)計(jì)數(shù)器計(jì)數(shù)器 1號(hào)號(hào)計(jì)數(shù)器計(jì)數(shù)器 2號(hào)號(hào)計(jì)數(shù)器計(jì)數(shù)器RDWRA0CSA1D70GATE0GATE0OUT0OUT0CLK0CLK0GATE1GATE1OUT1OUT1CLK1CLK1GATE2GATE2OUT2OUT2CLK2CLK2數(shù)據(jù)總線數(shù)據(jù)總線 緩沖器緩沖器讀寫讀寫控制控制控制字控制字寄存器寄存器 0號(hào)號(hào)計(jì)數(shù)器計(jì)數(shù)器
15、 1號(hào)號(hào)計(jì)數(shù)器計(jì)數(shù)器 2號(hào)號(hào)計(jì)數(shù)器計(jì)數(shù)器RDWRA0CSA1D70GATE0GATE0OUT0OUT0CLK0CLK0GATE1GATE1OUT1OUT1CLK1CLK1GATE2GATE2OUT2OUT2CLK2CLK2 數(shù)據(jù)總線緩沖器數(shù)據(jù)總線緩沖器: 完成和系統(tǒng)數(shù)據(jù)線的配接。完成和系統(tǒng)數(shù)據(jù)線的配接。 對(duì)外有對(duì)外有8條數(shù)據(jù)線條數(shù)據(jù)線D70 8254 8254的內(nèi)部結(jié)構(gòu)的內(nèi)部結(jié)構(gòu)數(shù)據(jù)總線數(shù)據(jù)總線 緩沖器緩沖器讀寫讀寫控制控制控制字控制字寄存器寄存器 0號(hào)號(hào)計(jì)數(shù)器計(jì)數(shù)器 1號(hào)號(hào)計(jì)數(shù)器計(jì)數(shù)器 2號(hào)號(hào)計(jì)數(shù)器計(jì)數(shù)器RDWRA0CSA1D70GATE0GATE0OUT0OUT0CLK0CLK0GATE1
16、GATE1OUT1OUT1CLK1CLK1GATE2GATE2OUT2OUT2CLK2CLK2 讀寫控制模塊讀寫控制模塊: 選擇芯片內(nèi)部的控制寄存器和計(jì)數(shù)器選擇芯片內(nèi)部的控制寄存器和計(jì)數(shù)器, 在讀寫在讀寫命令的控制下對(duì)選中的端口進(jìn)行讀寫操作。對(duì)外有命令的控制下對(duì)選中的端口進(jìn)行讀寫操作。對(duì)外有5條引線。條引線。 8254 8254的內(nèi)部結(jié)構(gòu)的內(nèi)部結(jié)構(gòu)CS 計(jì)數(shù)初值寫入計(jì)數(shù)器#000001 操 作 計(jì)數(shù)初值寫入計(jì)數(shù)器#100011 計(jì)數(shù)初值寫入計(jì)數(shù)器#200101 向控制字寄存器寫控制字00111 讀計(jì)數(shù)器#0當(dāng)前計(jì)數(shù)值01000 讀計(jì)數(shù)器#1當(dāng)前計(jì)數(shù)值01010 讀計(jì)數(shù)器#2當(dāng)前計(jì)數(shù)值01100
17、011101XXXX01XX1無(wú)操作無(wú)操作禁止 表7.1 8254內(nèi)部寄存器讀/寫操作RDWRA1A0 8254 8254的內(nèi)部結(jié)構(gòu)的內(nèi)部結(jié)構(gòu)數(shù)據(jù)總線數(shù)據(jù)總線 緩沖器緩沖器讀寫讀寫控制控制控制字控制字寄存器寄存器 0號(hào)號(hào)計(jì)數(shù)器計(jì)數(shù)器 1號(hào)號(hào)計(jì)數(shù)器計(jì)數(shù)器 2號(hào)號(hào)計(jì)數(shù)器計(jì)數(shù)器RDWRA0CSA1D70GATE0GATE0OUT0OUT0CLK0CLK0GATE1GATE1OUT1OUT1CLK1CLK1GATE2GATE2OUT2OUT2CLK2CLK2 控制寄存器控制寄存器: 寄存寄存CPU對(duì)其初始化編程時(shí)寫入的控制字,對(duì)其初始化編程時(shí)寫入的控制字,以決定計(jì)數(shù)器的工作方式和并設(shè)置讀出命令。以決定
18、計(jì)數(shù)器的工作方式和并設(shè)置讀出命令。 8254 8254的內(nèi)部結(jié)構(gòu)的內(nèi)部結(jié)構(gòu)數(shù)據(jù)總線數(shù)據(jù)總線 緩沖器緩沖器讀寫讀寫控制控制控制字控制字寄存器寄存器 0號(hào)號(hào)計(jì)數(shù)器計(jì)數(shù)器 1號(hào)號(hào)計(jì)數(shù)器計(jì)數(shù)器 2號(hào)號(hào)計(jì)數(shù)器計(jì)數(shù)器RDWRA0CSA1D70GATE0GATE0OUT0OUT0CLK0CLK0GATE1GATE1OUT1OUT1CLK1CLK1GATE2GATE2OUT2OUT2CLK2CLK2計(jì)數(shù)器計(jì)數(shù)器: 每個(gè)計(jì)數(shù)器對(duì)外有每個(gè)計(jì)數(shù)器對(duì)外有3條線條線 GATE 控制信號(hào)控制信號(hào) CLK 計(jì)數(shù)脈沖輸入計(jì)數(shù)脈沖輸入 OUT 計(jì)數(shù)器輸出計(jì)數(shù)器輸出 8254 8254的內(nèi)部結(jié)構(gòu)的內(nèi)部結(jié)構(gòu)口地址口地址譯碼器譯碼器
19、A9A2AEND7D0IORIOWA1A0D7D0RDWRA1A0CS8254 二二. 8254與系統(tǒng)總線的連接與系統(tǒng)總線的連接I/O口地址分口地址分2段段A9A2參加譯碼,譯碼參加譯碼,譯碼 輸出負(fù)脈沖。使輸出負(fù)脈沖。使CS=0, 選中選中8254A1,A0直接與芯片直接與芯片A1,A0 相連,選擇片內(nèi)寄存器相連,選擇片內(nèi)寄存器執(zhí)行執(zhí)行IN時(shí)從選中的內(nèi)部時(shí)從選中的內(nèi)部 寄存器讀寄存器讀執(zhí)行執(zhí)行OUT時(shí)向選中的內(nèi)時(shí)向選中的內(nèi) 部寄存器寫部寄存器寫三三.8254內(nèi)部寄存器內(nèi)部寄存器/計(jì)數(shù)器口地址計(jì)數(shù)器口地址 在在CS=0前提下前提下 A1 A0 選中選中0 0 0#0 0 0#計(jì)數(shù)器計(jì)數(shù)器0 1
20、 1#0 1 1#計(jì)數(shù)器計(jì)數(shù)器1 1 0 2#0 2#計(jì)數(shù)器計(jì)數(shù)器1 1 1 1 控制寄存器控制寄存器設(shè)設(shè)8254與系統(tǒng)總線如上圖聯(lián)接與系統(tǒng)總線如上圖聯(lián)接: 口地址口地址=40H43H,“選中選中”8254,則,則0#2#計(jì)計(jì) 數(shù)器口地址數(shù)器口地址=40H42H,控制口地址,控制口地址=43H。口地址口地址=2FCH2FFH,“選中選中”8254,則,則 0#2#計(jì)數(shù)器口地址計(jì)數(shù)器口地址=2FCH2FEH,控制口,控制口 地址地址=2FFH。四四.計(jì)數(shù)器內(nèi)部結(jié)構(gòu)示意圖計(jì)數(shù)器內(nèi)部結(jié)構(gòu)示意圖 內(nèi)部數(shù)據(jù)線內(nèi)部數(shù)據(jù)線計(jì)數(shù)初值寄存器計(jì)數(shù)初值寄存器(16位位)減減1計(jì)數(shù)器計(jì)數(shù)器(16位位)計(jì)數(shù)值鎖存器計(jì)數(shù)
21、值鎖存器(16位位)鎖存命令鎖存命令GATECLKOUT內(nèi)部數(shù)據(jù)線內(nèi)部數(shù)據(jù)線 初始化編程時(shí)初始化編程時(shí): : 計(jì)數(shù)初值計(jì)數(shù)初值 計(jì)數(shù)初值寄存器計(jì)數(shù)初值寄存器 減減1 1計(jì)數(shù)器計(jì)數(shù)器內(nèi)部數(shù)據(jù)線內(nèi)部數(shù)據(jù)線計(jì)數(shù)初值寄存器計(jì)數(shù)初值寄存器(16位位)減減1計(jì)數(shù)器計(jì)數(shù)器(16位位)計(jì)數(shù)值鎖存器計(jì)數(shù)值鎖存器(16位位)鎖存命令鎖存命令GATECLKOUT內(nèi)部數(shù)據(jù)線內(nèi)部數(shù)據(jù)線 計(jì)數(shù)器的內(nèi)部結(jié)構(gòu)計(jì)數(shù)器的內(nèi)部結(jié)構(gòu) 當(dāng)當(dāng)GATA=1時(shí)時(shí), CLK的下降沿使計(jì)數(shù)器減的下降沿使計(jì)數(shù)器減1,當(dāng)計(jì)數(shù)值減到當(dāng)計(jì)數(shù)值減到0 (或某個(gè)值或某個(gè)值由工作方式確定由工作方式確定)時(shí)時(shí), OUT有輸出。有輸出。內(nèi)部數(shù)據(jù)線內(nèi)部數(shù)據(jù)線計(jì)數(shù)初
22、值寄存器計(jì)數(shù)初值寄存器(16位位)減減1計(jì)數(shù)器計(jì)數(shù)器(16位位)計(jì)數(shù)值鎖存器計(jì)數(shù)值鎖存器(16位位)鎖存命令鎖存命令GATECLKOUT內(nèi)部數(shù)據(jù)線內(nèi)部數(shù)據(jù)線 計(jì)數(shù)器的內(nèi)部結(jié)構(gòu)計(jì)數(shù)器的內(nèi)部結(jié)構(gòu) 計(jì)數(shù)初值計(jì)數(shù)初值 = f c l k / f o u t 收到鎖存命令后收到鎖存命令后, 當(dāng)前計(jì)數(shù)值當(dāng)前計(jì)數(shù)值 計(jì)數(shù)值鎖存器計(jì)數(shù)值鎖存器(以便讀出以便讀出檢查檢查), 而計(jì)數(shù)器仍然做減而計(jì)數(shù)器仍然做減1計(jì)數(shù)計(jì)數(shù)內(nèi)部數(shù)據(jù)線內(nèi)部數(shù)據(jù)線計(jì)數(shù)初值寄存器計(jì)數(shù)初值寄存器(16位位)減減1計(jì)數(shù)器計(jì)數(shù)器(16位位)計(jì)數(shù)值鎖存器計(jì)數(shù)值鎖存器(16位位)鎖存命令鎖存命令GATECLKOUT內(nèi)部數(shù)據(jù)線內(nèi)部數(shù)據(jù)線 計(jì)數(shù)器的內(nèi)部結(jié)
23、構(gòu)計(jì)數(shù)器的內(nèi)部結(jié)構(gòu)作用作用: 選擇一個(gè)計(jì)數(shù)器選擇一個(gè)計(jì)數(shù)器, 確定工作方式確定工作方式, 并規(guī)定初并規(guī)定初 值的寫入順序和計(jì)數(shù)初值值的寫入順序和計(jì)數(shù)初值 (一串一串0, 1代碼代碼) 的數(shù)制。的數(shù)制。 五五. 8254命令字命令字 / 狀態(tài)字狀態(tài)字 D7 D6 D5 D4 D3 D2 D1 D0 計(jì)數(shù)器選擇計(jì)數(shù)器選擇 讀寫方式選擇讀寫方式選擇 工作方式選擇工作方式選擇 數(shù)制選擇數(shù)制選擇 D7 D6=00 選擇選擇0#計(jì)數(shù)器計(jì)數(shù)器, =01 選擇選擇1#計(jì)數(shù)器計(jì)數(shù)器 =10 選擇選擇2#計(jì)數(shù)器計(jì)數(shù)器, =11 標(biāo)志該命令字標(biāo)志該命令字 是是 “讀出命令讀出命令” 1.方式選擇命令字方式選擇命令字
24、 D5 D4=00 標(biāo)志該命令為標(biāo)志該命令為 “鎖存命令鎖存命令” =01 初值寫入時(shí)初值寫入時(shí), 只寫低只寫低8位位, 高高8位自動(dòng)位自動(dòng) 補(bǔ)補(bǔ)0;計(jì)數(shù)值讀出時(shí);計(jì)數(shù)值讀出時(shí), 只能讀低只能讀低8位位 =10 初值寫入時(shí)初值寫入時(shí), 只寫高只寫高8位位, 低低8位自動(dòng)位自動(dòng) 補(bǔ)補(bǔ)0;計(jì)數(shù)值讀出時(shí);計(jì)數(shù)值讀出時(shí), 只能讀高只能讀高8位。位。 =11 初值寫入初值寫入 / 計(jì)數(shù)值讀出的順序?yàn)橄扔?jì)數(shù)值讀出的順序?yàn)橄?低低8位位,后高后高8位。位。D7 D6 D5 D4 D3 D2 D1 D0 計(jì)數(shù)器選擇計(jì)數(shù)器選擇 讀寫方式選擇讀寫方式選擇 工作方式選擇工作方式選擇 數(shù)制選擇數(shù)制選擇 8254 82
25、54的命令字和狀態(tài)字的命令字和狀態(tài)字 D3 D2 D1 選中的計(jì)數(shù)器工作在選中的計(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ì)數(shù)初值為二進(jìn)制數(shù)二進(jìn)制數(shù), D0=1, 初值為初值為BCD碼數(shù)碼數(shù)。D7 D6 D5 D4 D3 D2 D1 D0 計(jì)數(shù)器選擇計(jì)數(shù)器選擇 讀寫方式選擇讀寫方式選擇 工作方式選擇工作方式選擇 數(shù)制選擇數(shù)制選擇 8254 8254的命令字和狀態(tài)字的命令字和狀態(tài)字 2. 鎖存命令鎖存命令( D5 D4=00 標(biāo)志該命令為標(biāo)志該命令為 “鎖存命令鎖存命令”)D7 D6 為鎖存對(duì)象。為鎖存對(duì)象。
26、= 0 0,鎖存,鎖存0#當(dāng)前計(jì)數(shù)值當(dāng)前計(jì)數(shù)值 = 0 1,鎖存,鎖存1#當(dāng)前計(jì)數(shù)值當(dāng)前計(jì)數(shù)值 = 1 0,鎖存,鎖存2#當(dāng)前計(jì)數(shù)值當(dāng)前計(jì)數(shù)值計(jì)數(shù)器選擇計(jì)數(shù)器選擇 0 0 D7 D6 D5 D4 D3 D0D7 D611D5 D4 = 00 8254 8254的命令字和狀態(tài)字的命令字和狀態(tài)字 3.讀出命令讀出命令讀出命令是多通道的鎖存命令讀出命令是多通道的鎖存命令, 一條命令可以鎖存一條命令可以鎖存3個(gè)計(jì)個(gè)計(jì)數(shù)器的計(jì)數(shù)值、計(jì)數(shù)器狀態(tài)。數(shù)器的計(jì)數(shù)值、計(jì)數(shù)器狀態(tài)。 1 1 0D7 D6 D00: 鎖存當(dāng)前計(jì)數(shù)值鎖存當(dāng)前計(jì)數(shù)值0: 鎖存計(jì)數(shù)器狀態(tài)鎖存計(jì)數(shù)器狀態(tài)1: 選擇選擇0#計(jì)數(shù)器計(jì)數(shù)器D7D6D
27、0=110是讀命令是讀命令1: 選擇選擇1#計(jì)數(shù)器計(jì)數(shù)器1: 選擇選擇2#計(jì)數(shù)器計(jì)數(shù)器 8254 8254的命令字和狀態(tài)字的命令字和狀態(tài)字 4. 4. 狀態(tài)字狀態(tài)字 與方式選擇命令字相同與方式選擇命令字相同D7 D6 D5 D00: 計(jì)數(shù)初值已裝入計(jì)數(shù)器計(jì)數(shù)初值已裝入計(jì)數(shù)器1: 計(jì)數(shù)初值未裝入計(jì)數(shù)器計(jì)數(shù)初值未裝入計(jì)數(shù)器0: OUT腳為低電平腳為低電平1: OUT腳為高電平腳為高電平 8254 8254的命令字和狀態(tài)字的命令字和狀態(tài)字 CPU對(duì)對(duì)8254的初始化編程的初始化編程 例例: 設(shè)設(shè)8254的口地址為的口地址為40H 43H, 要求要求2#計(jì)數(shù)器工作在方式計(jì)數(shù)器工作在方式3, 計(jì)數(shù)初值計(jì)
28、數(shù)初值=4000, 寫出寫出2#的初始化程序段。的初始化程序段。1. 對(duì)對(duì)8254一個(gè)計(jì)數(shù)器的初始化編程步驟一個(gè)計(jì)數(shù)器的初始化編程步驟: 向控制寄存器寫入方式選擇命令字向控制寄存器寫入方式選擇命令字 目的目的: 選擇一個(gè)計(jì)數(shù)器選擇一個(gè)計(jì)數(shù)器, 并確定其工作方式并確定其工作方式 和計(jì)數(shù)值(計(jì)數(shù)初值)的讀和計(jì)數(shù)值(計(jì)數(shù)初值)的讀 / 寫順序。寫順序。 向選擇的計(jì)數(shù)器寫入計(jì)數(shù)初值。向選擇的計(jì)數(shù)器寫入計(jì)數(shù)初值。 注意注意: 如果方式選擇命令字如果方式選擇命令字D0=0, 則初值則初值 應(yīng)是二進(jìn)制應(yīng)是二進(jìn)制, 否則初值應(yīng)是否則初值應(yīng)是BCD碼數(shù)。碼數(shù)。解解1: 設(shè)初值為二進(jìn)制設(shè)初值為二進(jìn)制, 初值寫入順
29、序?yàn)橄鹊统踔祵懭腠樞驗(yàn)橄鹊?位后高位后高8位。位。 MOV AL, 10110110B OUT 43H, AL MOV AX, 4000 OUT 42H, AL MOV AL, AH OUT 42H, AL解解2: 設(shè)初值為二進(jìn)制設(shè)初值為二進(jìn)制, 寫入順序?yàn)閮H寫高寫入順序?yàn)閮H寫高8位。位。 MOV AL, 10100110B OUT 43H, AL MOV AL, 40 OUT 42H, AL注意注意: 解解2是錯(cuò)誤的是錯(cuò)誤的, 因?yàn)橐驗(yàn)?4000=0FA0H, 其低其低8位不等于位不等于0。 8254 8254的初始化編程的初始化編程 解解3: 設(shè)初值為設(shè)初值為BCD碼碼, 寫入順序?yàn)橄鹊秃?/p>
30、高寫入順序?yàn)橄鹊秃蟾摺?MOV AL, 10110111B OUT 43H, AL MOV AL, 0 OUT 42H, AL MOV AL, 40H OUT 42H, AL解解4: 設(shè)初值為設(shè)初值為BCD碼碼, 僅寫高僅寫高8位。位。 MOV AL, 10100111B OUT 43H, AL MOV AL, 40H OUT 42H, AL 注意注意: 4000的的BCD碼數(shù)應(yīng)寫成碼數(shù)應(yīng)寫成4000H, 解解3、解、解4是正確的。是正確的。 8254 8254的初始化編程的初始化編程 2. 當(dāng)計(jì)數(shù)初值當(dāng)計(jì)數(shù)初值 9999時(shí)時(shí), “初值初值”選為二進(jìn)制或選為二進(jìn)制或 BCD碼都可以;碼都可以;
31、 當(dāng)計(jì)數(shù)初值當(dāng)計(jì)數(shù)初值 9999時(shí)時(shí), “初值初值”只能選二進(jìn)制。只能選二進(jìn)制。3. 程序中如何表示程序中如何表示BCD碼數(shù)碼數(shù)? 設(shè)初值設(shè)初值=(1234)10 則則 MOV AX, 1234H 是正確的是正確的 寫成寫成 MOV AX, 1234 是錯(cuò)誤是錯(cuò)誤的4. 方式選擇命令方式選擇命令, 鎖存命令鎖存命令, 讀出命令必須寫入讀出命令必須寫入 控制口。控制口。 8254 8254的初始化編程的初始化編程 6. 關(guān)于讀出命令關(guān)于讀出命令 讀出命令也是鎖存命令讀出命令也是鎖存命令, 如果在鎖存計(jì)數(shù)值如果在鎖存計(jì)數(shù)值 的同時(shí)的同時(shí), 也鎖存狀態(tài)也鎖存狀態(tài), 那么在隨后對(duì)計(jì)數(shù)器讀那么在隨后對(duì)計(jì)
32、數(shù)器讀 出時(shí)出時(shí), 先讀出的是狀態(tài)字先讀出的是狀態(tài)字, 后讀的是計(jì)數(shù)值。后讀的是計(jì)數(shù)值。5. 關(guān)于鎖存命令關(guān)于鎖存命令 當(dāng)程序員要了解計(jì)數(shù)器的當(dāng)前計(jì)數(shù)值時(shí)當(dāng)程序員要了解計(jì)數(shù)器的當(dāng)前計(jì)數(shù)值時(shí), 先先 向控制口寫入鎖存命令向控制口寫入鎖存命令, 然后從選擇的計(jì)數(shù)然后從選擇的計(jì)數(shù) 器端口讀取當(dāng)前計(jì)數(shù)值。器端口讀取當(dāng)前計(jì)數(shù)值。 8254 8254的初始化編程的初始化編程 六六. 8254工作方式工作方式 有有6種工作方式種工作方式, 均在均在CLK下降沿計(jì)數(shù)一次。下降沿計(jì)數(shù)一次。 有有2種啟動(dòng)方式種啟動(dòng)方式: 軟件啟動(dòng)軟件啟動(dòng), 硬件啟動(dòng)。硬件啟動(dòng)。 軟件啟動(dòng)軟件啟動(dòng): GATA=1, 初值寫入后初值
33、寫入后, 開始計(jì)數(shù)。開始計(jì)數(shù)。 硬件啟動(dòng)硬件啟動(dòng): 初值寫入后初值寫入后, 不計(jì)數(shù)。當(dāng)不計(jì)數(shù)。當(dāng)GATE從從 0 1后開始計(jì)數(shù)。后開始計(jì)數(shù)。 方式方式0: 計(jì)數(shù)結(jié)束計(jì)數(shù)結(jié)束OUT引腳輸出正躍變信號(hào)引腳輸出正躍變信號(hào)軟件啟動(dòng)軟件啟動(dòng), 計(jì)數(shù)值減到計(jì)數(shù)值減到0, OUT從從0 1。WR結(jié)束后,第一個(gè)CLK完成初值裝入 3 2 1 0 1CLKWRN=3GATE=1OUT 8254 8254的工作方式的工作方式 方式方式1: (可重觸發(fā)的可重觸發(fā)的) 硬件啟動(dòng)的單脈沖發(fā)生器硬件啟動(dòng)的單脈沖發(fā)生器GATE由由0 1, 下一個(gè)下一個(gè)CLK下降沿下降沿, 使使OUT由由1 0, 且裝入計(jì)數(shù)值且裝入計(jì)數(shù)值G
34、ATE再次從再次從0 1之后之后, 下一個(gè)下一個(gè)CLK完成初值自動(dòng)重裝完成初值自動(dòng)重裝 3 2 3 2 1 0 3 2 1 0 N TCLKCLKWRN=3GATE=1OUTGATEOUTTOUT 8254 8254的工作方式的工作方式 硬件啟動(dòng)(由外部門控信號(hào)啟動(dòng)計(jì)數(shù))硬件啟動(dòng)(由外部門控信號(hào)啟動(dòng)計(jì)數(shù)) 初值寫入后不計(jì)數(shù)初值寫入后不計(jì)數(shù), 當(dāng)當(dāng)GATE從從0 1時(shí)時(shí), OUT 從從1 0。之后每個(gè)。之后每個(gè)CLK下降沿計(jì)數(shù)值減下降沿計(jì)數(shù)值減1, 計(jì)計(jì) 數(shù)值減到數(shù)值減到0時(shí)時(shí), OUT從從0 1。 所以所以: 輸出負(fù)脈沖的寬度輸出負(fù)脈沖的寬度=NTCLK 計(jì)數(shù)過(guò)程中計(jì)數(shù)過(guò)程中, GATE再次從
35、再次從0 1, 初值自動(dòng)重初值自動(dòng)重 裝裝,從而使從而使OUT輸出的負(fù)脈沖加寬輸出的負(fù)脈沖加寬 ( 即有可重即有可重 觸發(fā)的性能觸發(fā)的性能)。 8254 8254的工作方式的工作方式 方式方式2: 分頻器分頻器(脈沖發(fā)生器脈沖發(fā)生器) 軟件啟動(dòng)軟件啟動(dòng) 減減1計(jì)數(shù)計(jì)數(shù), 減到減到1時(shí)時(shí)OUT從從1 0,下一下一CLK初值初值 自動(dòng)重裝。自動(dòng)重裝。所以所以: OUT為周期性波形為周期性波形, 輸出負(fù)脈輸出負(fù)脈 沖的寬度為一個(gè)沖的寬度為一個(gè)TCLK, 周期周期=N TCLK 3 2 1 3 2 1CLKWRN=3GATE=1OUT 周期=N TCLK 8254 8254的工作方式的工作方式 方式方
36、式3: 方波發(fā)生器方波發(fā)生器CLKWRN=4GATE=1OUT 4 2 4 2 4 2軟件啟動(dòng)軟件啟動(dòng), 減減2計(jì)數(shù)計(jì)數(shù), 有初值自動(dòng)重裝功能。有初值自動(dòng)重裝功能。 N=偶數(shù)時(shí)偶數(shù)時(shí), 計(jì)數(shù)值減到計(jì)數(shù)值減到0時(shí)初值重裝時(shí)初值重裝, 輸出輸出1:1連續(xù)波形。連續(xù)波形。 8254 8254的工作方式的工作方式 GATE=1WRN=5CLK 4 2 0 4 2 4 2 0OUT N=奇數(shù)時(shí):奇數(shù)時(shí): 裝入的及重新裝入的初值均為寫入的初值裝入的及重新裝入的初值均為寫入的初值-1。 輸出正脈沖期間輸出正脈沖期間, 減到減到-2時(shí)重新裝初值時(shí)重新裝初值 輸出負(fù)脈沖期間輸出負(fù)脈沖期間, 減到減到0時(shí)重新裝初
37、值時(shí)重新裝初值 輸出正脈沖寬度輸出正脈沖寬度=TCLK (N+1) / 2 輸出負(fù)脈沖寬度輸出負(fù)脈沖寬度=TCLK (N1) / 2 8254 8254的工作方式的工作方式 方式方式4: 軟件啟動(dòng)軟件啟動(dòng), 單脈沖發(fā)生器單脈沖發(fā)生器軟件啟動(dòng)軟件啟動(dòng), 減減1計(jì)數(shù)計(jì)數(shù),減到減到0 有輸出有輸出, 無(wú)無(wú)初值自動(dòng)重裝功能。初值自動(dòng)重裝功能。 3 2 1 0 -1CLKN=3WRGATE=1OUT 8254 8254的工作方式的工作方式 方式方式5: 硬件啟動(dòng)硬件啟動(dòng), 單脈沖發(fā)生器單脈沖發(fā)生器 硬件啟動(dòng)硬件啟動(dòng), 減減1計(jì)數(shù)計(jì)數(shù), 減到減到0有輸出。有輸出。CLKN=3WR 3 2 1 0 -1OU
38、TGATEGATE從從0 1, 下一個(gè)下一個(gè)CLK下降沿下降沿裝入計(jì)數(shù)初值開始計(jì)數(shù)裝入計(jì)數(shù)初值開始計(jì)數(shù) 8254 8254的工作方式的工作方式 6種工作方式的比較種工作方式的比較:方式方式1方式方式4方式方式5功能功能都是單脈沖發(fā)生器都是單脈沖發(fā)生器啟動(dòng)方式啟動(dòng)方式硬件啟動(dòng)硬件啟動(dòng)軟件啟動(dòng)軟件啟動(dòng)硬件啟動(dòng)硬件啟動(dòng)輸出輸出負(fù)脈寬負(fù)脈寬=N TCLK負(fù)脈寬負(fù)脈寬=TCLK初值重裝初值重裝在計(jì)數(shù)過(guò)程中在計(jì)數(shù)過(guò)程中(OUT=0期間)期間) GATE從從01時(shí)初值時(shí)初值重裝重裝 計(jì)數(shù)過(guò)程中計(jì)數(shù)過(guò)程中(OUT=1期間)期間) GATE從從0 1時(shí)初值重裝時(shí)初值重裝 8254 8254的工作方式的工作方式
39、方式方式0方式方式2方式方式3功能功能計(jì)數(shù)結(jié)束計(jì)數(shù)結(jié)束, 輸出正躍變輸出正躍變脈沖發(fā)生器脈沖發(fā)生器方波發(fā)生器方波發(fā)生器啟動(dòng)方式啟動(dòng)方式都是軟件啟動(dòng)都是軟件啟動(dòng)輸出輸出啟動(dòng)后延時(shí)啟動(dòng)后延時(shí)(N+1)TCLK輸出正躍變輸出正躍變負(fù)脈寬負(fù)脈寬=TCLK周期周期=N CLK N=偶數(shù)偶數(shù),輸輸出出1:1方波方波初值重裝初值重裝計(jì)數(shù)結(jié)束計(jì)數(shù)結(jié)束, 初值自動(dòng)重裝初值自動(dòng)重裝 8254 8254的工作方式的工作方式 七七. 8254在在PC機(jī)中的應(yīng)用機(jī)中的應(yīng)用1. 電路電路:主主8259ACLK0 OUT0CLK1CLK2GATE0 OUT1GATE1GATE2 OUT2fclk=1.193182 MHZ+
40、5V8254 PB0 PB18255 B口口IR0 Q D動(dòng)態(tài)存儲(chǔ)器動(dòng)態(tài)存儲(chǔ)器刷新電路刷新電路清清“0”+5V與與門門濾波濾波口地址口地址61H 3個(gè)計(jì)數(shù)器的時(shí)鐘端都為個(gè)計(jì)數(shù)器的時(shí)鐘端都為1.193182 MHZ GATE0, GATE1固定接固定接+5v GATE2, OUT2輸出受輸出受8255的的PB0、PB1控制控制2. 系統(tǒng)系統(tǒng)8254口地址為口地址為40H 43H。 3. 系統(tǒng)加電后系統(tǒng)加電后,由由BIOS完成對(duì)完成對(duì)3個(gè)計(jì)數(shù)器初始化。個(gè)計(jì)數(shù)器初始化。 4. 各計(jì)數(shù)器的使用現(xiàn)狀如下:各計(jì)數(shù)器的使用現(xiàn)狀如下: 8254 8254的應(yīng)用的應(yīng)用 工作在方式工作在方式3, 計(jì)數(shù)初值計(jì)數(shù)初值
41、=0,OUT0=周期為周期為 55ms的方波信號(hào)。的方波信號(hào)。 作用作用: 每隔每隔55ms通過(guò)中斷系統(tǒng)提出通過(guò)中斷系統(tǒng)提出 一次日時(shí)鐘中斷請(qǐng)求。一次日時(shí)鐘中斷請(qǐng)求。主主8259ACLK0 OUT0CLK1CLK2GATE0 OUT1GATE1GATE2 OUT2fclk=1.193182 MHZ+5V PB0 PB18255 B口口IR0 Q D動(dòng)態(tài)存儲(chǔ)器動(dòng)態(tài)存儲(chǔ)器刷新電路刷新電路清清“0”+5V與與門門濾波濾波口地址口地址61H8254 0#計(jì)數(shù)器計(jì)數(shù)器 8254 8254的應(yīng)用的應(yīng)用 主主8259ACLK0 OUT0CLK1CLK2GATE0 OUT1GATE1GATE2 OUT2fcl
42、k=1.193182 MHZ+5V PB0 PB18255 B口口IR0 Q D動(dòng)態(tài)存儲(chǔ)器動(dòng)態(tài)存儲(chǔ)器刷新電路刷新電路清清“0”+5V與與門門濾波濾波口地址口地址61H8254 工作在方式工作在方式2, 計(jì)數(shù)初值計(jì)數(shù)初值=18, OUT1=周期周期為為15.1s的連續(xù)脈沖。的連續(xù)脈沖。 作用作用: 每隔每隔15.1s(向向DMAC)提出一次提出一次“動(dòng)態(tài)存儲(chǔ)器刷新請(qǐng)求動(dòng)態(tài)存儲(chǔ)器刷新請(qǐng)求”。1#計(jì)數(shù)器計(jì)數(shù)器 8254 8254的應(yīng)用的應(yīng)用 主主8259ACLK0 OUT0CLK1CLK2GATE0 OUT1GATE1GATE2 OUT2fclk=1.193182 MHZ+5V PB0 PB1825
43、5 B口口IR0 Q D動(dòng)態(tài)存儲(chǔ)器動(dòng)態(tài)存儲(chǔ)器刷新電路刷新電路清清“0”+5V與與門門濾波濾波口地址口地址61H8254 工作在方式工作在方式3, 初值初值=533H,為音響,為音響 系統(tǒng)提供系統(tǒng)提供900HZ方波。方波。2#計(jì)數(shù)器計(jì)數(shù)器 8254 8254的應(yīng)用的應(yīng)用 主主8259ACLK0 OUT0CLK1CLK2GATE0 OUT1GATE1GATE2 OUT2fclk=1.193182 MHZ+5V8254 PB0 PB18255 B口口IR0 Q D動(dòng)態(tài)存儲(chǔ)器動(dòng)態(tài)存儲(chǔ)器刷新電路刷新電路清清“0”+5V與與門門濾波濾波口地址口地址61H 用戶程序禁止使用用戶程序禁止使用1#計(jì)數(shù)器。計(jì)數(shù)器
44、。 用戶程序可以使用用戶程序可以使用0#, 2#計(jì)數(shù)器。計(jì)數(shù)器。注意注意: 8254 8254的應(yīng)用的應(yīng)用 八八. 系統(tǒng)系統(tǒng)8254 應(yīng)用舉例應(yīng)用舉例: 編寫音樂程序編寫音樂程序, 演唱演唱 “友誼地久天長(zhǎng)友誼地久天長(zhǎ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)曾經(jīng) 終終 日日 游蕩游蕩,在在故鄉(xiāng)的故鄉(xiāng)的 青青 山山 上上, 我我 們們 也也3
45、. 我我 們們 也曾也曾 經(jīng)經(jīng) 日日 逍遙逍遙,蕩蕩 漾漾 在在 綠綠 波波 上上, 但但 如如 今今4. 我我 們們 往日往日 情情 意意 相投相投,讓讓 我我 們們 緊緊 握握 手手, 讓讓 我我 們們. 8254 8254的應(yīng)用的應(yīng)用 3 1 2 . 1 2 3 1 . 6 6 5 1 . 6 5 . 3 3 1 2 . 1 2 6友友 豈豈 能能 相忘相忘, 友誼友誼 地地 久久 天天 長(zhǎng)長(zhǎng);曾曾 歷歷 盡盡 苦辛苦辛, 到處到處 奔奔 波波 流流 浪浪;卻卻 勞勞 燕燕 分飛分飛, 遠(yuǎn)隔遠(yuǎn)隔 大大 海海 重重 洋洋;來(lái)來(lái) 舉舉 杯杯 暢飲暢飲, 友誼友誼 地地 久久 天天 長(zhǎng)長(zhǎng);5
46、. 3 3 5 6 . 1 5 . 3 3 1 2 . 1 2 3 1 . 6 6 5 1 . :誼誼 萬(wàn)萬(wàn) 歲歲! 舉舉 杯杯 痛飲痛飲, 同聲同聲 歌頌歌頌 友誼友誼 地地 久久 天天 長(zhǎng)。長(zhǎng)。友友 誼誼 萬(wàn)萬(wàn) 歲歲, 友友. . . . . 8254 8254的應(yīng)用的應(yīng)用 設(shè)計(jì)思路設(shè)計(jì)思路: 1.開開 / 關(guān)揚(yáng)聲器的子程序關(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 8254
47、的應(yīng)用的應(yīng)用 2. 使使2#計(jì)數(shù)器產(chǎn)生單音頻的程序段計(jì)數(shù)器產(chǎn)生單音頻的程序段 2#應(yīng)工作在方式應(yīng)工作在方式3, 計(jì)數(shù)初值計(jì)數(shù)初值=1.193182兆兆 / 頻頻 率值,而(率值,而(1.193182 106)10=1234DEH。 所以:所以: 在在2#寫入方式選擇命令字之后寫入方式選擇命令字之后, 執(zhí)行下執(zhí)行下 列程序段即可。列程序段即可。 方式選擇命令字方式選擇命令字 控制口控制口(BIOS已經(jīng)做了已經(jīng)做了)。 MOV DX, 12H MOV AX, 34DEH MOV CX, 頻率值頻率值 DIV CX ;初值初值A(chǔ)X OUT 42H, AL MOV AL, AH OUT 42H, AL
48、 8254 8254的應(yīng)用的應(yīng)用 3.音符頻率表音符頻率表 一首歌曲由若干音符組成一首歌曲由若干音符組成, 每一音符對(duì)應(yīng)一個(gè)每一音符對(duì)應(yīng)一個(gè) 頻率。下表頻率。下表 給出了各種音符的頻率對(duì)照表。給出了各種音符的頻率對(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 278 31
49、2F 175 196 221 234 262 294 330G 196 221 248 262 294 330 371. . . . . . . 8254 8254的應(yīng)用的應(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
50、 589 661G 393 441 495 525 589 661 742 8254 8254的應(yīng)用的應(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
51、990 1049 1178 1322 1484. . . . . . . 8254 8254的應(yīng)用的應(yīng)用 4. 音符的演唱時(shí)間音符的演唱時(shí)間 這是編程的關(guān)鍵這是編程的關(guān)鍵,有兩種處理方法有兩種處理方法: 直接給出每一音符演唱的絕對(duì)時(shí)間直接給出每一音符演唱的絕對(duì)時(shí)間 這種方法這種方法, 程序調(diào)試很困難程序調(diào)試很困難, 特別是對(duì)于缺少特別是對(duì)于缺少 音樂細(xì)胞的人音樂細(xì)胞的人, 對(duì)于不太熟悉的歌曲對(duì)于不太熟悉的歌曲, 很難把很難把 握演唱的節(jié)奏。握演唱的節(jié)奏。 給出每一音符演唱的給出每一音符演唱的 “單位時(shí)間單位時(shí)間” 單位時(shí)間單位時(shí)間 N=演唱時(shí)間演唱時(shí)間 N為調(diào)試參數(shù),預(yù)先給一個(gè)值,試聽后再為調(diào)
52、試參數(shù),預(yù)先給一個(gè)值,試聽后再 修改。這種方法修改。這種方法, 大大加快了調(diào)試時(shí)間。大大加快了調(diào)試時(shí)間。 8254 8254的應(yīng)用的應(yīng)用 5.怎樣確定怎樣確定 “單位時(shí)間單位時(shí)間” 3/4拍拍 1/4拍拍 一拍一拍.1=F2/45 1 . 1 1 3 因?yàn)橐驗(yàn)? 一首歌曲中一首歌曲中,每個(gè)音符的演唱時(shí)間有一拍、半拍、每個(gè)音符的演唱時(shí)間有一拍、半拍、1/4拍拍如果最短的音符為如果最短的音符為1/8拍拍, 則定義則定義: 一拍音符的單位時(shí)間為一拍音符的單位時(shí)間為8 半拍音符的單位時(shí)間為半拍音符的單位時(shí)間為4 1/4拍音符的單位時(shí)間為拍音符的單位時(shí)間為2 1/8拍音符的單位時(shí)間為拍音符的單位時(shí)間為1
53、 如如: 8254 8254的應(yīng)用的應(yīng)用 根據(jù)選定的歌曲,將各音符對(duì)應(yīng)的頻率值列成一張頻根據(jù)選定的歌曲,將各音符對(duì)應(yīng)的頻率值列成一張頻率表,將各音符演唱的單位時(shí)間列成一張時(shí)間表。率表,將各音符演唱的單位時(shí)間列成一張時(shí)間表。頻率表的表項(xiàng)和時(shí)間表的表項(xiàng)要一一對(duì)應(yīng),不能錯(cuò)位。頻率表的表項(xiàng)和時(shí)間表的表項(xiàng)要一一對(duì)應(yīng),不能錯(cuò)位。 8254 8254的應(yīng)用的應(yīng)用 6. 音樂程序框圖音樂程序框圖 取頻率值轉(zhuǎn)換成取頻率值轉(zhuǎn)換成計(jì)數(shù)初值計(jì)數(shù)初值 2#計(jì)數(shù)器計(jì)數(shù)器取單位時(shí)間取單位時(shí)間 轉(zhuǎn)換成轉(zhuǎn)換成演唱時(shí)間演唱時(shí)間 延時(shí)延時(shí)調(diào)整頻率表、時(shí)間表指針調(diào)整頻率表、時(shí)間表指針 接通揚(yáng)聲器接通揚(yáng)聲器有鍵入?有鍵入?關(guān)閉揚(yáng)聲器,
54、返回關(guān)閉揚(yáng)聲器,返回DOSYN數(shù)據(jù)段數(shù)據(jù)段, 設(shè)置頻率表設(shè)置頻率表, 時(shí)間表時(shí)間表 8254 8254的應(yīng)用的應(yīng)用 . 486DATA SEGMENT USE16 TABF DW -1, 262, 350, 352, 350, 441, 393, 350, 393, 441 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
55、, 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, 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 ;
56、微秒微秒 DATA ENDS 7. 程程 序序 8254 8254的應(yīng)用的應(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 61H, AL ;接通揚(yáng)聲器接通揚(yáng)聲器 AGA: MOV SI, OFFSET TABF ;SI是頻率表指針是頻率表指針 MOV DI, OFFSET TABT ;DI是時(shí)間表指針是時(shí)間表指針 LAST: CMP WORD PTR SI, 0 ;唱完一遍唱完一遍? JE AGA ;是是,轉(zhuǎn)轉(zhuǎn) MOV DX, 12H MOV AX, 34DEH DIV WORD PTR SI ;頻率轉(zhuǎn)換成計(jì)數(shù)初值頻率轉(zhuǎn)換成計(jì)數(shù)初值 OUT 42H, AL ;低低8位送位送2號(hào)計(jì)數(shù)器號(hào)計(jì)數(shù)器 MOV AL, AH OUT 42H, AL ;高高8位送位送2號(hào)計(jì)數(shù)器號(hào)計(jì)數(shù)器 8254 8254的應(yīng)用的應(yīng)用 C
溫馨提示
- 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ù)覽,若沒有圖紙預(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《綠野仙蹤》心得體會(huì)
- 《直角的初步認(rèn)識(shí)》教學(xué)反思
- 雙方合作開發(fā)合同范本
- 代播服務(wù)合同范本
- 各公司合同范例
- 代辦入職合同范本
- 單位集資住房合同范例
- 包裝公司加盟合同范本
- 古董陶瓷買賣合同范本
- 北京預(yù)付卡合同范本
- 2024年山東省高考生物試卷真題(含答案解析)
- 光伏發(fā)電站項(xiàng)目安全技術(shù)交底資料
- 富血小板血漿(PRP)臨床實(shí)踐與病例分享課件
- 跨文化交際教程 課件 杜平 Unit 1 Cultural Awareness and Intercultural Communication-Unit 3 Nonverbal Communication
- 光伏工程施工組織設(shè)計(jì)
- 社保知識(shí)競(jìng)賽考試題及答案
- 華為HCSA-Presales-IT售前認(rèn)證備考試題及答案
- 2024-2030年中國(guó)纖維板行業(yè)發(fā)展趨勢(shì)與投資戰(zhàn)略研究報(bào)告
- 小學(xué)二年級(jí)上冊(cè)數(shù)學(xué)思維訓(xùn)練題100道及答案解析
- 2024年品酒師職業(yè)技能大賽理論考試題庫(kù)及答案
- 2024-2025學(xué)年全國(guó)中學(xué)生天文知識(shí)競(jìng)賽考試題庫(kù)(含答案)
評(píng)論
0/150
提交評(píng)論