第九章輸入輸出方法及常用的接口電路_第1頁
第九章輸入輸出方法及常用的接口電路_第2頁
第九章輸入輸出方法及常用的接口電路_第3頁
第九章輸入輸出方法及常用的接口電路_第4頁
第九章輸入輸出方法及常用的接口電路_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、9.4 8253可編程定時計數(shù)器概述實現(xiàn)定時和計數(shù)有兩種方法:硬件定時和軟件定時。軟件定時是利用CPU每執(zhí)行一條指令都需要幾個固定的指令周期的原理,運用軟件編程的方式進行定時。硬件定時,是利用專門的定時電路實現(xiàn)精確定時。這種定時方式又可分為簡單硬件定時和利用可編程接口芯片實現(xiàn)定時。 1. 8253的組成與功能 8253內(nèi)部結(jié)構(gòu)框圖8D7-D0計數(shù)器0號控制字寄存器計數(shù)器1號計數(shù)器2號內(nèi)部數(shù)據(jù)總線數(shù)據(jù)總線緩沖器讀/寫邏輯A0A1RDWRCSCLK0GATE0OUT0CLK1GATE1OUT1CLK2GATE2OUT2結(jié)構(gòu)特點 減法計數(shù)器計數(shù)器控制寄存器讀寫邏輯數(shù)據(jù)緩沖16位計數(shù)寄存器16位計數(shù)單

2、元16位輸出鎖存器存放控制命令字8253的引腳配置D0D1D2D3D4D5D6D7RDWRA0A1CSVcc地電源線控制線數(shù)據(jù)線CLK0GATE0OUT0CLK1GATE1OUT1CLK2GATE2OUT2計數(shù)器0號計數(shù)器1號計數(shù)器2號91110151413181617876543212223192212412連接系統(tǒng)端的主要引線:D0-D7CSRDWRA0,A1 A1 A00 0 CNT00 1 CNT11 0 CNT21 1 控制寄存器由控制字格式中SC1,SC0位決定屬于哪個計數(shù)器選中控制寄存器10110讀輸出鎖存器OL當(dāng)前值01對計數(shù)器寄存器CR送初值選中計數(shù)器2#10010讀輸出鎖存

3、器OL當(dāng)前值01對計數(shù)器寄存器CR送初值選中計數(shù)器1#10100讀輸出鎖存器OL當(dāng)前值01對計數(shù)器寄存器CR送初值選中計數(shù)器0#10000功 能A0A1CSWRRD8253端口地址及操作功能 連接外設(shè)端的主要引線:CLK - 時鐘脈沖輸入GATE - 門控信號輸入OUT - 定時輸出 2. 8253的控制字、寫/讀操作及初始化編程8253的控制字格式 D7D6D5D4D3D2D1D00=二進制1=二十進制工作方式選擇000=方式0001=方式1010=方式2011=方式3100=方式4101=方式5通道控制字尋址00=通道0控制寄存器01=通道1控制寄存器10=通道2控制寄存器11=不用讀寫操

4、作00=鎖定當(dāng)前計數(shù)值01=讀/寫計數(shù)器低8位10=讀寫計數(shù)器高8位11=先讀/寫計數(shù)器低8位再讀/寫計數(shù)器高8位SC1 SC0 RL1 RL0 M2 M1 M0 BCD 8253的寫/讀操作及初始化編程-8253的寫操作 寫入計數(shù)器的控制字,規(guī)定其工作方式及相應(yīng)功能;寫入計數(shù)初值。例如,選擇0#計數(shù)器,工作于方式3,計數(shù)初值為1234H,BCD計數(shù)方式;2#計數(shù)器,工作方式2,計數(shù)初值為61H,采用二進制計數(shù)方式,設(shè)8253的端口地址為4043H。其初始化編程如下:MOVAL,00110111B;對0#計數(shù)器送工作方式字OUT43H,ALMOVAX,1234H;送計數(shù)初值OUT40H,AL;

5、先送低8位MOVAL,AH;再送高8位OUT40H, ALMOVAL,10010100B;對2#計數(shù)器送工作方式字OUT43H,ALMOVAL,61H;送計數(shù)初值OUT42H,AL 8253的寫/讀操作及初始化編程-8253的讀操作 直接讀操作 鎖存后讀計數(shù)值 例如,要求讀出并檢查2#計數(shù)器的計數(shù)值是否為“55AAH”若非“55AAH”則等待再讀,當(dāng)為“55AAH”后程序可繼續(xù)執(zhí)行,則程序片斷如下:COUNT EQV 040H;設(shè)0#計數(shù)器的符號地址為040H LPCN:MOVAL,10000100B;對2#計數(shù)器送鎖存命令,僅使RL1,RL0=00 OUTCOUNT+3,AL INAL,CO

6、UNT+2;讀2#計數(shù)器當(dāng)前計數(shù)值 MOVAH,AL;低8位暫存AH中 IN AL,COUNT+2;讀高8位 XCHG AH,AL;16位計數(shù)值存AX中 CMPAX,55AAH;計數(shù)值寫55AAH相比較 JNELPCN;若不相等則繼續(xù)等待3. 8253的工作方式和時序軟件啟動硬件啟動GATE端為高電平寫入計數(shù)初值后的第2個CLK脈沖的下降沿GATE端有一個上升沿對應(yīng)CLK脈沖的下降沿計數(shù)啟動方式輸出波形:用途單次計數(shù)自動重復(fù)計數(shù)方式0計數(shù)結(jié)束產(chǎn)生中斷方式 8253方式0的波形 (設(shè)計數(shù)初值為3)寫計數(shù)值寫CWCLKGATE(允許計數(shù)高電平)OUT012322231OUT0WRGATE禁止計數(shù)軟

7、件啟動單次計數(shù)產(chǎn)生一個上跳沿(寫入方式控制字后輸出端變低電平,計數(shù)結(jié)束輸出高電平),用作觸發(fā)中斷請求例:設(shè)8253計數(shù)器通道0工作于方式0,用8位二進制計數(shù),其計數(shù)值為50,二十進制,則它的初始化程序段如下:MOVAL,11H ;設(shè)置控制字OUT 43H,AL ;寫入控制字寄存器MOV AL,50 ;設(shè)置計數(shù)初值OUT 40H,AL ;寫入計數(shù)初值寄存器方式1外觸發(fā)的單穩(wěn)脈沖方式方式1的波形 CLKWRGATEOUTGATEOUT開始計數(shù)3 2 1 3 2 1 03 2 1 0重新開始計數(shù)不停計數(shù)CWLSB硬件啟動單次計數(shù)產(chǎn)生單穩(wěn)負脈沖(寫入方式控制字后輸出端變高電平,計數(shù)開始輸出低電平,結(jié)束

8、后又變高),用作請求或控制信號例:設(shè)計數(shù)器通道1工作于方式1,按二進制計數(shù),計數(shù)初值為40H,它的初始化程序段為:MOVAL,52H ;工作方式控制字OUT 43H,ALMOVAL,40H;送計數(shù)初值OUT 41H,AL方式2計數(shù)分頻工作方式 方式2的工作波形 3213高電平1CWLSB自動重復(fù)計數(shù)321禁止計數(shù)321重新開始計數(shù)CLKGATEOUTGATEOUTWR33軟件啟動重復(fù)計數(shù)產(chǎn)生連續(xù)分頻脈沖(寫入方式控制字后輸出端變高電平,計數(shù)到最后一個脈沖時輸出低電平)例:設(shè)8253計數(shù)器0工作于方式2,按二進制計數(shù),計數(shù)初值為0304H。MOVAL,00110100B;設(shè)控制字,通道0,先讀/

9、寫低8位;再讀寫高8位,方式2,二進制。OUT43H,ALMOV AL,04H ;送計數(shù)值低字節(jié)OUT 40H,AL MOV AL,03HOUT 40H,AL ;送計數(shù)值高字節(jié)方式3方波發(fā)生器工作方式 方式3的工作波形 CLKWRGATEOUT(N=奇數(shù))OUT(N=偶數(shù))高電平1543自動重復(fù)計數(shù)21543CWLSB43214321軟啟動重復(fù)計數(shù)產(chǎn)生連續(xù)方波(寫入方式控制字后輸出端變高電平,輸出對稱方波)例:設(shè)8253計數(shù)器2工作在方式3,按二十進制計數(shù),計數(shù)初值為4,則它的初始化程序段如下:MOV AL,10010111B;計數(shù)器2,只讀/寫低8位,工作方式3,二十進制OUT 43H,AL

10、;控制字送控制字寄存器MOV AL,4;送計數(shù)初值OUT 42H,AL方式4軟件觸發(fā)選通方式 方式4的工作波形 高電平1CWLSB3210禁止計數(shù)33210重新開始計數(shù)33CLKGATEOUTGATEOUTWR軟件啟動單次計數(shù)。產(chǎn)生一個低電平選通信號(寫入方式控制字后輸出端變高電平,計數(shù)結(jié)束輸出一個CLK寬度的低電平)例:設(shè)8253計數(shù)器1工作于方式4,按二進制計數(shù),計數(shù)初值為3,則初始化程序段為:MOVAL,058H;設(shè)置控制字寄存器OUT43H,AL;送控制字MOVAL,3;置計數(shù)初值OUT41H,AL;送計數(shù)初值方式5硬件觸發(fā)選通方式 方式5的工作波形 CLKGATEOUTGATEOUT

11、WR3213210重新開始計數(shù)CWLSB3210 開始計數(shù)不停計數(shù)硬件啟動單次計數(shù)產(chǎn)生一個低電平選通信號(寫入方式控制字后輸出端變高電平,計數(shù)結(jié)束輸出一個CLK寬度的低電平)例:設(shè)8253的通道1工作于方式5,按二進制計數(shù),計數(shù)初值為4000H,則它的初始化程序段為:MOV AL,01101010B;通道1,只讀寫高字節(jié),方式5,二進制計數(shù)。OUT 43H,ALMOV AL,40HOUT 41H,AL ;送計數(shù)初值開始計數(shù)5允許計數(shù)禁止計數(shù)4允許計數(shù)(1)禁止計數(shù)(2)輸出立即為高電平3允許計數(shù)(1)禁止計數(shù)(2)輸出立即為高電平2(1)開始計數(shù)(2)下一個時鐘后,輸出為低電平1允許計數(shù)禁止計

12、數(shù)0高電平上升沿低電平或高電平變?yōu)榈碗娖紾ATE信號狀態(tài)及影響工作方式4. 8254與8253的區(qū)別 允許計數(shù)脈沖(CLK)頻率范圍不同 內(nèi)部結(jié)構(gòu)有所不同,8254增加了一個狀態(tài)寄存器8254提供了同時鎖存三個計數(shù)器的當(dāng)前計數(shù)值和狀態(tài)信息的操作 5. 8253的應(yīng)用與系統(tǒng)的連接芯片初始化置計數(shù)初值編程與系統(tǒng)的連接示意CLKGATEOUTD0D7WRRDA1A0CSDBIOWIORA1A0譯碼器高位地址外設(shè)8253初始化程序流程寫控制字寫計數(shù)值低8位寫計數(shù)值高8位寫入順序:可以計數(shù)器為單位,也可先寫所有計數(shù)器控制字,再寫入初值8253應(yīng)用例采用8253作定時/計數(shù)器,其接口地址為0120H012

13、3H。要求計數(shù)器0每10ms輸出一個CLK脈沖寬的負脈沖;用計數(shù)器1產(chǎn)生10KHz的連續(xù)方波信號,計數(shù)器2在定時5ms后產(chǎn)生輸出高電平。輸入8253的時鐘頻率為2MH。畫線路連接圖,并編寫初始化程序。 8253應(yīng)用例計算計數(shù)初值: CNT0:10ms/0.5us=20000 CNT1:2 MHz/10KHz=200 CNT2: 5ms/0.5us=10000確定控制字: CNT0:方式2,16位計數(shù)值 CNT1:方式3,低8位計數(shù)值 CNT2:方式0, 16位計數(shù)值8253應(yīng)用例CLK0GATE0OUT1D0D7WRRDA1A0CSDBIOWIORA1A0譯碼器8253CLK2GATE1GAT

14、E2+5VCLK12MHzOUT0OUT28253應(yīng)用例 初始化程序CNT0:MOV DX,0123HMOV AL,34HOUT DX,ALMOV DX,0120HMOV AX,20000OUT DX,ALMOV AL,AHOUT DX,ALCNT1: CNT2: 6. 8253的讀操作(1)讀之前先停止計數(shù)(2)讀之前先送計數(shù)值鎖存命令7. PC/XT機中8253的應(yīng)用(1)計數(shù)器0:用于產(chǎn)生實時時鐘信號(2)計數(shù)器1:用于產(chǎn)生動態(tài)存儲器刷新的地址更新信號(3)計數(shù)器2:產(chǎn)生揚生器的發(fā)音驅(qū)動信號 在IMB PC/XT機中采用8088CPU,系統(tǒng)板上使用了一片8253計數(shù)/定時器。8253的片

15、選信號是由系統(tǒng)板上I/O譯碼電路LS74138中產(chǎn)生,與片內(nèi)地址線A1,A0相配合。8253四個端口的地址范圍為040H05FH。編程時采用40H43H作為四個端口(0#、1#、2#計數(shù)器及控制寄存器)的地址。其中1#計數(shù)器(CNT1)用于DRAM的定時刷新之用,不能再作它用。0#計數(shù)器用于為系統(tǒng)的電子鐘提供時間基準,它的輸出端作為中斷源,接至8259的IR0中斷申請端。2#計數(shù)器(CNT2)主要用來作為機內(nèi)揚聲器的音頻信號源,可輸出不同頻率的方波信號。三個計數(shù)器的輸入時鐘脈沖頻率均為1.19MHz。下面介紹三個計數(shù)器與系統(tǒng)的關(guān)系及其初始化程序。 10#計數(shù)器(CNT0) 用作系統(tǒng)時鐘,端口地

16、址40HGATE0端接+5V,處于常啟狀態(tài)。該計數(shù)器向系統(tǒng)日時鐘提供定時中斷。計數(shù)初值預(yù)置為0,以方式3工作。這樣一來,OUT0以1.1931815MHz/65536=18.2Hz的頻率輸出一方波序列。它直接連到系統(tǒng)的中斷控制器8259A的中斷請求端IRQ0。換言之,0級中斷每次間隔55ms或每秒中斷18.2次,此中斷請求用于維護系統(tǒng)的日歷時鐘。系統(tǒng)上電時,BIOS中對0#計數(shù)器產(chǎn)生55ms方波定時中斷的初始化程序如下:MOV AL,00110110B;選0#計數(shù)器,方式3,寫高低字節(jié)二進制計數(shù)OUT 43H,AL MOV AL,0;預(yù)置計數(shù)初值=65536OUT 40H,AL;寫低字節(jié)OUT

17、 40H,AL;寫高字節(jié)21#計數(shù)器用于對動態(tài)RAM的刷新控制,端口地址為41H。GATE1端始終接+5V,處于常啟狀態(tài)。該計數(shù)器向DMA控制器定時提出動態(tài)存儲器刷新請求。它選用方式2工作。計數(shù)初值預(yù)置為18。這樣,OUT1以(1.1931816MHz/18=66.2878kHz)的頻率輸出一負脈沖序列,即OUT1每隔15.0857s向DMA提出一次DMA請求DRQ0,由DMA的通道0完成存儲器一行的刷新。系統(tǒng)上電時,BIOS對1#計數(shù)器產(chǎn)生15s DMA請求信號的初始化程序為:MOV AL,01010100B;選1#計數(shù)器,方式2,寫低字節(jié),二進制OUT 43H,AL;寫控制字MOV AL,

18、18;預(yù)置計數(shù)初值=18=12HOUT 41H,AL;寫低字節(jié)32#計數(shù)器2#計數(shù)器端口地址為42H,該計數(shù)器用于控制發(fā)聲。其輸出OUT2通過與門和與非驅(qū)動器連接到揚聲器。揚聲器主要用于提示診斷機器錯誤和用戶操作失誤。但由于8253的可編程性以及發(fā)聲的可控制性,利用這些特性可以編程控制PC揚聲器唱出美妙的音樂。發(fā)聲系統(tǒng)受8255A的端口B的PB1和PB0控制,PB0控制2#計數(shù)器GATE端,高電平允許減1計數(shù)工作,PB1與OUT2共同接到與門的輸入端,與門輸出接到與非驅(qū)動器控制驅(qū)動揚聲器,這樣就可以用PB1、PB0(即端口61H的D1、D0)控制發(fā)聲系統(tǒng)。現(xiàn)利用2#計數(shù)器產(chǎn)生1kHz方波,并驅(qū)動揚聲器發(fā)聲,程序編制如下: BEEP:PROCNEARMOVAL,10110110B;2#計數(shù)器、方式3、16位二進制計數(shù);OUT43,ALMOVAX,1190;產(chǎn)生1kHz方波的初值;OUT42H,AL;寫入低位字節(jié)MOVAL,AHOUT42H,AL

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論