《計數(shù)器定時器 》PPT課件.ppt_第1頁
《計數(shù)器定時器 》PPT課件.ppt_第2頁
《計數(shù)器定時器 》PPT課件.ppt_第3頁
《計數(shù)器定時器 》PPT課件.ppt_第4頁
《計數(shù)器定時器 》PPT課件.ppt_第5頁
已閱讀5頁,還剩31頁未讀 繼續(xù)免費閱讀

VIP免費下載

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

文檔簡介

第8章 計數(shù)器/定時器,計數(shù)器與定時器概述 可編程計數(shù)器/定時器8253 定時器/計數(shù)器8253內(nèi)部結(jié)構(gòu) 8253的引腳功能 8253的控制字 8253的工作方式 8253編程舉例 8253應(yīng)用舉例,8.1 計數(shù)器與定時器概述,1. 計數(shù)功能 對事件的個數(shù)進行計數(shù)。 正計數(shù):關(guān)心記錄事件的次數(shù)。 倒計數(shù):關(guān)心預(yù)先設(shè)定事件次數(shù)發(fā)生完的時刻。 可由硬件計數(shù)器實現(xiàn),事件作為計數(shù)器的時鐘,此時事件的出現(xiàn)頻率不一定一成不變。,2.定時功能,取得給定的時間間隔。 延時:某事件發(fā)生后間隔一定時間的時刻。 時標(biāo):給定時間間隔的連續(xù)脈沖。 可由硬件計數(shù)器來實現(xiàn),一定頻率的信號作為計數(shù)器的時鐘,如果只計數(shù)到就終止,即為延時。如果連續(xù)不斷的計數(shù)即可輸出時標(biāo)。,3. 計數(shù)器/定時器的用途,計數(shù)功能 作為計數(shù)個數(shù)到中斷信號。 記錄外部特定事件發(fā)生的個數(shù)。 定時功能 作為周期性定時中斷信號。 用于分時性操作系統(tǒng)。 用作系統(tǒng)時鐘基準(zhǔn)。 作為一個可編程波特率發(fā)生器。用于異步串行通訊。 作為I/O設(shè)備輸出定時信號。實現(xiàn)外設(shè)與CPU的同步。 節(jié)約CPU的時間延時。 作為音源。,8.2 可編程計數(shù)器/定時器8253,8.2.1 可編程計數(shù)器/定時器工作原理 1、計數(shù)功能 設(shè)置計數(shù)初值,按減1或加1計數(shù),減到0或加到溢出時輸出一個信號,標(biāo)志預(yù)置的計數(shù)值到。此時輸入的計數(shù)脈沖的間隔不一定是固定的。 計數(shù)功能關(guān)心的是計數(shù)脈沖的個數(shù),而非脈沖的時間間隔。 2、定時功能 設(shè)定時常數(shù)(計數(shù)初值),對輸入的周期性脈沖進行減1或加1計數(shù),計數(shù)為0時輸出定時到脈沖,若連續(xù)計數(shù)便可按定時常數(shù)輸出時鐘周期整數(shù)倍的定時間隔信號。 定時功能關(guān)心的是計數(shù)初值的寫入時間與脈沖輸出的時間間隔,要求輸入的脈沖具有固定的頻率。,8.2.2 定時器/計數(shù)器8253內(nèi)部結(jié)構(gòu),Intel 8253是具有三個通道的16位定時器/計數(shù)器,可由軟件設(shè)定6種工作方式。 8253內(nèi)部有三個獨立的計數(shù)器通道:計數(shù)器0、1、2,結(jié)構(gòu)完全相同。 每個通道有6種工作方式,由控制寄存器選擇。 控制寄存器為8位,計數(shù)初值計數(shù)器CR16位,計數(shù)執(zhí)行部件CE16位,計數(shù)輸出鎖存器OL16位。 計數(shù)執(zhí)行部件為16位的減法計數(shù)器,但16位寄存器都可用于8位,便于與8位數(shù)據(jù)總線相連。 每個通道可對外部輸入CLK進行二進制或十進制減1計數(shù)。計數(shù)由引腳GATE控制。 計數(shù)器歸0時由OUT引腳輸出信號。,8253的內(nèi)部結(jié)構(gòu),8253內(nèi)部每個計數(shù)器通道的結(jié)構(gòu)圖,8.2.3 8253的引腳功能,8253具有24個引腳,各引腳功能如下: D7D0 數(shù)據(jù)總線,雙向三態(tài),可直接與計算機系統(tǒng)數(shù)據(jù)總線相連。 RD 讀信號,輸入,低電平有效,若有效則CPU從8253內(nèi)部讀取數(shù)據(jù). WR 寫信號,輸入,低電平有效,若有效則CPU將數(shù)據(jù)寫入8253內(nèi)部寄存器。 CS 片選信號,輸入,低電平有效,與計算機連接時分配有效地址。 A1 A0 內(nèi)部計數(shù)器選擇信號。 8253內(nèi)部有三個計數(shù)通道,使用4個端口地址。,8253引腳功能,CLK0、CLK1、CLK2 通道0、通道1和通道2的計數(shù)時鐘輸入端,下降沿使通道減1。 GATE0、GATE1、GATE2 門控制,輸入,高電平有效或上升沿有效,有效時才允許計數(shù)器對輸入時鐘進行計數(shù)。 OUT0、OUT1、OUT2 通道輸出信號,當(dāng)計數(shù)器計數(shù)到“0”時由此引腳輸出一信號。,8.2.4 8253的控制字及工作方式,1. 8253控制字 控制字必須寫入控制口,說明如下: SC1 SC0 計數(shù)器通道選擇 0 0 通道0 0 1 通道1 1 0 通道2 1 1 非法,8253控制字,RW1 RW0 計數(shù)器讀寫選擇 0 0 計數(shù)器鎖存 0 1 只讀寫低8位 1 0 只讀寫高8位 1 1 先低8位,再高8位 M2 M1 M0 計數(shù)器工作方式選擇 0 0 0 方式0 0 0 1 方式1 x 1 0 方式2 x 1 1 方式3 1 0 0 方式4 1 0 1 方式5 BCD 計數(shù)器計數(shù)模式選擇 0 二進制計數(shù)器 1 BCD碼計數(shù)器,2. 8253 編程命令,因各計數(shù)器有自己的端口地址,所以沒有太多順序要求,但必須遵守兩條規(guī)定: 設(shè)置計數(shù)初值前必須先寫控制字 設(shè)置計數(shù)初值時要與控制字中的D5 D4位規(guī)定的讀寫指示一致。 命令字共4個: 寫控制字命令 設(shè)置計數(shù)初值(時間常數(shù))命令 讀出命令,讀出當(dāng)前計數(shù)值 鎖存命令,配合讀出命令,先鎖住,再讀出。,3. 8253工作方式,模式0 計數(shù)結(jié)束產(chǎn)生中斷 控制字寫入后OUT即變?yōu)榈碗娖剑?dāng)計數(shù)器為0時,輸出OUT變?yōu)楦唠娖剑⑼V宫F(xiàn)行操作。 計數(shù)初值寫入后在下一個CLK下降沿才送入計數(shù)器,因此OUT要在CPU寫入計數(shù)初值后經(jīng)N+1個CLK之后才變高。 當(dāng)GATE變?yōu)榈碗娖綍r計數(shù)停止,再變?yōu)楦唠娖綍r計數(shù)繼續(xù)進行。 若計數(shù)過程中重新送入初值,則按新值重新計數(shù)。,模式1 可重新觸發(fā)單穩(wěn)態(tài)觸發(fā)器,寫入控制字后OUT變?yōu)楦唠娖?,GATE上升沿后,下一個CLK的下降沿使得OUT為低電平并開始計數(shù),回零時OUT變?yōu)楦唠娖健?GATE再來一次上升沿后會再次使OUT變?yōu)榈碗娖?,計?shù)器以初值重新計數(shù)。 再次給通道寫入時間常數(shù),不影響現(xiàn)行操作過程,GATE再次觸發(fā)后才按新的時間常數(shù)操作。,模式2 分頻器,寫入控制字后OUT為高電平,輸入時間常數(shù)后,下一時鐘開始計數(shù),減到1時輸出變?yōu)榈碗娖?,?jīng)過一個CLK輸出變?yōu)楦唠娖剑嫈?shù)重新開始。 GATE=1計數(shù)進行,GATE=0計數(shù)停止,且下一個CLK下降沿計數(shù)器重新賦初值,GATE變?yōu)楦唠娖剑嫈?shù)重新開始。 計數(shù)期間送入新值,GATE若維持高電平,本周期繼續(xù)進行,下一個周期按新值計數(shù)操作。 在計數(shù)計到1之前,若寫入新值,而GATE又出現(xiàn)上升沿,則在下一個CLK下降沿,以新值重新計數(shù)。,模式3 方波發(fā)生器,寫入控制字后OUT為高電平, 輸入時間常數(shù)后,下一時鐘開始計數(shù),計到一半時輸出變?yōu)榈碗娖?,計到終值時變?yōu)楦唠娖剑㈤_始下一次計數(shù)過程。 若N為偶數(shù),高低電平持續(xù)時間相等;若為奇數(shù),則高電平持續(xù)時間為(N+1)/2,低電平持續(xù)時間為(N-1)/2。 GATE=1計數(shù)進行,GATE=0計數(shù)停止,OUT立即為高,計數(shù)器重新賦初值,GATE變高,在下一個CLK下降沿計數(shù)重新開始。 計數(shù)期間送入新值,本周期繼續(xù)進行,下一個周期按新值計數(shù)。,模式4 軟件觸發(fā)選通信號發(fā)生器,計數(shù)器主要是靠寫入初始值這個軟件操作來觸發(fā)計數(shù)器工作的,每次通過寫入新的初始值使計數(shù)器重新開始工作。 OUT平時為高電平,計數(shù)到0時,輸出OUT 變低,一個時鐘周期后又變高。即只有在計數(shù)到0時,才輸出負(fù)脈沖作為選通信號。 GATE=1允許計數(shù),GATE=0禁止計數(shù),GATE不影響OUT電平輸出。 計數(shù)期間送入新的時間常數(shù),則下一個時鐘按新值重新計數(shù)。,模式5硬件觸發(fā)選通信號發(fā)生器,寫入控制字后OUT變?yōu)楦唠娖剑斎霑r間常數(shù)后由GATE上升沿啟動計數(shù)。計數(shù)為0時輸出一個時鐘的負(fù)脈沖,并停止現(xiàn)行操作。 計數(shù)過程中,若GATE又來一個上升沿,則下一個時鐘計數(shù)器重新賦值計數(shù)。 計數(shù)過程中寫入時間常數(shù),當(dāng)前周期不受影響,只有下一個 GATE上升沿才啟動新值計數(shù)。,8.2.5 8253編程舉例,使用8253時,必須首先進行初始化編程,其步驟為: 先向控制口寫入控制字; 再向每個通道端口地址寫入計數(shù)初值:若規(guī)定只寫低8位,則高8位自動置0;若規(guī)定只寫高8位,則低8位自動置0;若規(guī)定寫16位,則先寫低8位,再寫高8位。 最大計數(shù)初值0: 二進制: 216 =65536 BCD碼: 104 =10000,例1: 8253計數(shù)器工作于模式3,計數(shù)器初值15,時鐘脈沖頻率為2MHz,確定OUT端輸出方波的特性。 解:TCLK=1/2 s =500ns 計數(shù)器初值15為奇數(shù),輸出分頻波高電平寬度: TCLK(N+1)/2=4s 輸出分頻波低電平寬度: TCLK(N-1)/2=3.5s,例2:設(shè)8253的口地址為40H 43H,如要求8253的通道1工作于方式3,按BCD碼計數(shù),計數(shù)值為十進制6000;通道2工作于方式2,按二進制計數(shù),計數(shù)初值為390,試編程初始化8253。,MOV AL,67H ;控制字01,10,011,1 通道1,只裝高8位,方式1,BCD碼 OUT 43H,AL ;送通道1控制字 MOV AL,60H ;計數(shù)初值為6000,只裝高8位,低8位自動賦0 OUT 41H,AL MOV AL,0B4H;10,11,010,0 通道2,16位,方式2,二進制 OUT 43H,AL;送通道2控制字 MOV AX, 390; OUT 42H,AL;先寫計數(shù)初值低8位 MOV AL,AH; OUT 42H,AL;后寫計數(shù)初值高8位,8253的讀操作方法及編程舉例,為了對計數(shù)器的計數(shù)值進行顯示或?qū)崟r處理,常需要讀取計數(shù)通道的當(dāng)前計數(shù)值,它是由CPU訪問每個通道的計數(shù)值鎖存器OL實現(xiàn)的。讀當(dāng)前計數(shù)值的端口地址和寫入計數(shù)初值的端口地址是相同的。讀操作必須嚴(yán)格按控制字D5 D4位確定的格式進行:如果是8位計數(shù),則 只 需 讀一次;若是16位計數(shù),則同一端口地址要讀兩次,第一次讀入低8位計數(shù)值,第二次讀入高8位計數(shù)值。 8253有以下兩種讀當(dāng)前計數(shù)值的方法,讀之前先停止計數(shù):可以在讀之前用GATE信號控制計數(shù)器暫停計數(shù),或由外部邏輯禁止所要讀入的計數(shù)通道的CLK脈沖輸入。如果不先停止計數(shù),那么,分先后兩次讀入的高低字節(jié)的值可能不屬于同一個16位計數(shù)值,所以最好先從外部禁止計數(shù),然后執(zhí)行類似如下程序讀入(設(shè)8253的端口地址為E0H E3H): IN AL,0E0H;讀入通道0的低8位 MOV BL,AL IN AL,0E0H ;讀入通道0的高8位 MOV BH,AL ;讀入的16位計數(shù)值存入BX中。,讀之前先送計數(shù)值鎖存命令:計數(shù)值鎖存命令是控制字的一種特殊形式,需寫入控制寄存器的端口地址。鎖存命令的D7 D6位的編碼決定所要鎖存的計數(shù)通道,鎖存命令的D5 D4必須為“00”(鎖存命令標(biāo)志)。鎖存命令的低4位可以是全“0”。因此,三個計數(shù)器的鎖存命令分別為:通道0是00H,通道1是40H,通道2是80H。 例如,要讀取通道2的計數(shù)值,程序如下: MOV AL,80H; 10 00 0000B向通道2 發(fā)鎖存命令 OUT 0E3H,AL;鎖存命令寫入控制寄存器(鎖住通道2的計數(shù)值) IN AL,0E2H;讀通道2的OL的低8位 MOV BL,AL IN AL,0E2H;讀通道2的OL的高8位 MOV BH,AL,8.2.6 IBM PC/XT中的8253應(yīng)用舉例,8253的接口電路,8253與8088計算機連接說明,8253三個通道的時鐘由PCLK經(jīng)D觸發(fā)器二分頻得到,頻率為:2.38636/2=1.1931816MHz,8253數(shù)據(jù)線D7D0接系統(tǒng)數(shù)據(jù)總線的低8位。 8253的A1和A0分別接系統(tǒng)的A1和A0 由74LS138,74LS30和74LS04譯碼選中8253,通道0定時OUT0接8259A的IR0,通道1刷新動態(tài)存儲器,通道2控制揚聲器發(fā)聲。,通道0:為系統(tǒng)電子鐘提供基準(zhǔn)時間和軟驅(qū)馬達定時。計數(shù)器0為模式3(方波發(fā)生器)GATE0固定高電平,OUT0作為中斷請求接8259A中斷控制器的IRQ0,OUT0輸出時鐘頻率為1.19MHz/216 =18.2Hz,即每秒產(chǎn)生18.2次輸出信號,輸出一個定時脈沖,產(chǎn)生一個中斷請求(周期約55ms),計時軟件據(jù)此計時??刂谱譃?6H。 通道1:作為DRAM刷新的定時信號。工作于模式2,計數(shù)值為12H=18(1.19MHZ/18分頻 ),每隔15.12S產(chǎn)生一次刷新請求,此信號送到DMA 8237A-5的通道0,作為DMA請求信號。由8237A-5執(zhí)行DMA操作完成DRAM一行的刷新。 通道2:輸出信號接揚聲器,工作于模式3(方波發(fā)生器),初值為533H,方波頻率為1.19MHz/1331=894Hz,BIOS對8253的初始化程序,通道0: MOV AL,36H ;控制字:00110110通道0,16位,方式3,二進制 OUT 43H,AL ;寫入控制寄存器 MOV AL, 0;初值為0000H,計數(shù)65536次(最大) OUT 40H,AL;寫入CR0的低8位計數(shù)值 OUT 40H,AL;寫入CR0的高8位計數(shù)值 計數(shù)器0工作于方波發(fā)生器方式,對CLK(1.1931816MHz)進行65536分頻。時鐘周期Tc=1/1.19103 840ns 計數(shù)器0的輸出端OUT0接8259的IR0,每次歸0產(chǎn)生一次中斷請求,中斷類型碼由BIOS設(shè)置為8。 OUT0端輸出周期為T0=840ns6553655ms,即每隔55ms定時時間發(fā)出一次中斷請求。通道0的時間間隔是計算機系統(tǒng)時鐘基礎(chǔ)。 OUT0端輸出方波頻率f0=1/T0 18.2 ,即每秒鐘來18.2次中斷。,通道1:,MOV AL,54H ;控制字01010100 通道1,低8位,方式2,二進制 OUT 43H,AL ;寫入控制寄存器 MOV AL,12H ;初值為18 OUT 41H,AL ;寫入計數(shù)值低8位,高8位自動為0, 通道1給DMA控制器提供時鐘,用于定時(約15s)向DMA請求DRAM刷新,計數(shù)初值為12H。 OUT1輸出周期為:T1=840ns1815.12s,于是,2ms內(nèi)可有132次刷新,大于IBM-PC/XT要求的DRAM刷新在2ms內(nèi)應(yīng)有128次的規(guī)定。 OUT1輸出頻率為f1=1/T1=66.1KHz的連續(xù)負(fù)脈沖。,通道2:,MOV AL,0B6H ;控制字10110110 通道2,16位,方式3,二進制計數(shù) OUT 43H,AL ;寫入控制寄存器 MOV AX,533H ;初值為533H OUT 42H,AL ;寫入計數(shù)值低8位 MOV AL,AH ; OUT 42H,AL ;寫入計數(shù)值高8位。 IN AL,62H ;讀入8255的B口數(shù)據(jù) MOV AH,AL ;保護B口原值 OR AL,03H ;置1 PB1和PB0 OUT 62H,AL ;輸出 通道2:控制字為B6H,計數(shù)初值為533H=1331 。 OUT2輸出方波周期T2840ns13311.12ms,頻率f2=1/T2=894Hz,894Hz的方波送至揚聲器,驅(qū)動揚聲器發(fā)聲。 揚聲器發(fā)聲還受8255的PB0和PB1控制。,8253應(yīng)用舉例,例:由8253的計數(shù)器0定時55ms 控制揚聲器變調(diào)發(fā)聲,響5.5秒后停止。 說明 8253計數(shù)器0的OUT0接8259A的IR0,由BIOS初始化,中斷類型碼為08H,并在完全嵌套方式下工作。 8253計數(shù)器0由BIOS設(shè)置為模式3,定時時間為55ms。 揚聲器由8253的計數(shù)器2控制發(fā)聲頻率,發(fā)聲允許由8255的PB0和PB1控制。,DOS功能調(diào)用25H號子功能為設(shè)置中斷向量。 入口參數(shù) AH=25H,AL=中斷類型碼 DS:DX 中斷服務(wù)程序入口地址 返回參數(shù):無 DOS功能調(diào)用35H號子功能為取中斷向量 入口參數(shù) AH=35H,AL=中斷類型碼 返回參數(shù) ES:BX 中斷服務(wù)程序入口地址 中斷服務(wù)程序為INT_08H 保護現(xiàn)場和恢復(fù)現(xiàn)場; 中斷返回前要開中斷并發(fā)EOI; 中斷返回IRET。 每次定時器0中斷使揚聲器的發(fā)聲頻率的分頻常數(shù)增加100,并使計數(shù)變量count增1。 主程序查詢count到100后停止揚聲器發(fā)聲,恢復(fù)中斷向量,程序退出。,8253應(yīng)用程序,data segment old_int08h dd ? count dw 0 constant dw 60 state db ? data ends st_seg segment stack db 256 dup (?) st_seg ends code segment assume cs:code,ds:data,Int_08h proc far ; 中斷服務(wù)子程序 push ax push

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論