可變程計數(shù)器8253及其應(yīng)用.ppt_第1頁
可變程計數(shù)器8253及其應(yīng)用.ppt_第2頁
可變程計數(shù)器8253及其應(yīng)用.ppt_第3頁
可變程計數(shù)器8253及其應(yīng)用.ppt_第4頁
可變程計數(shù)器8253及其應(yīng)用.ppt_第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第8章 可編程計數(shù)器/定時器8253及其應(yīng)用,2、可編程計數(shù)器/定時器(1). 計數(shù)器: (2). 定時器,1、微機定時方法 (1). 軟件定時延遲子程序,占用CPU時間 (2). 硬件定時用計數(shù)器/定時器8253,一、微機定時方法 1. 軟件定時延遲子程序 2. 硬件定時用計數(shù)器/定時器8253 二、可編程計數(shù)器/定時器的工作原理 功能:一是為計數(shù);一是為定時。 8253的用處:1)在多任務(wù)的分時系統(tǒng)中用來作為中斷信號實 現(xiàn)程序的切換;2)可以往I/O設(shè)備輸出精確的定時信號;3)作為一個可編程的波特率發(fā)生器;4)實現(xiàn)時間延時。,第8章 可編程計數(shù)器/定時器8253及其應(yīng)用,計數(shù)器/定時器82

2、53特點 三個通道,可單獨使用 片內(nèi)尋址 A1 A0= 00、01、10、11 對應(yīng):通道0、1、2和控制口地址 工作方式:6種,8-1 8253的工作原理,一、8253的內(nèi)部結(jié)構(gòu)和引腳信號,1.數(shù)據(jù)總線緩沖器 往計數(shù)器設(shè)置計數(shù)初值; 從計數(shù)器讀取計數(shù)值; 往控制寄存器設(shè)置控制字。 2.讀/寫邏輯電路 A1 A0:端口選擇 0 0:通道0(0號計數(shù)器) 0 1:通道1(1號計數(shù)器) 1 0:通道2(2號計數(shù)器) 1 1:控制字寄存器,3.通道0、通道1、通道2 計數(shù)器0: CLK0計數(shù)器0的時鐘輸入。 GATE0計數(shù)器0的門脈沖控制輸入。OUT0計數(shù)器0的輸出。 計數(shù)器1:CLK1,GATE1

3、,OUT1 計數(shù)器2: CLK2,GATE2,OUT2,8253 編程結(jié)構(gòu),4. 控制寄存器 8253控制寄存器的格式,SC1 SC0 RW1 RW0 M2 M1 M0 BCD,1-計數(shù)值為BCD碼格式 0-計數(shù)值為二進制格式,M2 M1 M0 模式選擇 0 0 0 模式0 0 0 1 模式1 x 1 0 模式2 x 1 1 模式3 1 0 0 模式4 1 0 1 模式5,0 0-對計數(shù)器進行鎖存 0 1-只讀/寫低8位字節(jié) 1 0-只讀/寫高8位字節(jié) 1 1-先讀/寫低8位字節(jié), 再讀/寫高8位字節(jié).,0 0-選計數(shù)器0 0 1-選計數(shù)器1 1 0-選計數(shù)器2 1 1-無意義,8253內(nèi)部包

4、含3個完全相同的計數(shù)器定時器通道,對3個通道的操作完全是獨立的。 每個通道都包含一個8位的控制字寄存器、一個16位的計數(shù)初值寄存器、一個計數(shù)器執(zhí)行部件(實際的計數(shù)器)和一個16位的輸出鎖存器。 執(zhí)行部件實際上是一個16位的減法計數(shù)器,不能直接對其進行讀寫操作。,對計數(shù)器02的寫入操作實際是寫各自的計數(shù)初值寄存器。 對計數(shù)器02的讀出操作實際是讀各自的計數(shù)輸出鎖存器,計數(shù)輸出鎖存器的值常跟隨計數(shù)執(zhí)行部件變化。 計數(shù)初值寄存器和輸出鎖存器都是16位寄存器,它們均可被分成高8位和低8位兩個部分來讀寫。 執(zhí)行部件自身能夠從初值寄存器獲得計數(shù)初始值,并能把當(dāng)前的計數(shù)值鎖存到輸出鎖存器中,必要時CPU可對

5、它執(zhí)行讀操作,以了解某個時刻計數(shù)器的瞬時值。,每個通道工作時,都是對輸入到CLK引腳上的脈沖按二進制或十進制(BCD碼)格式進行計數(shù)。 計數(shù)采用倒計數(shù)法,先對計數(shù)器預(yù)置一個初值,再把初值裝入實際的計數(shù)器。 裝入初始值的方法有兩種:在門控信號GATE從低電平變?yōu)楦唠娖降纳仙貢r刻,會把初值寄存器的內(nèi)容送到執(zhí)行部件; 而當(dāng)GATE保持不變時,在對初值寄存器進行寫入操作后,在下一個CLK的下降沿把初值寄存器的內(nèi)容送到執(zhí)行部件。,然后,開始遞減計數(shù)。即每輸入一個時鐘脈沖,計數(shù)器的值減1,當(dāng)計數(shù)器的值減為預(yù)定的數(shù)值時,便從OUT引腳輸出一個脈沖信號。 輸出信號的波形主要由工作模式?jīng)Q定,同時還受到從外部加

6、到GATE引腳上的門控信號控制,它決定是否允許計數(shù)。,當(dāng)用8253作外部事件計數(shù)器時,在CLK腳上所加的計數(shù)脈沖是由外部事件產(chǎn)生的,這些脈沖的間隔可以是不相等的。 如果要用它作定時器,則CLK引腳上應(yīng)輸入精確的時鐘脈沖。這時,8253所能實現(xiàn)的定時時間,決定于計數(shù)脈沖的頻率和計數(shù)器的初值,即: 定時時間t 時鐘脈沖周期T 所計時鐘脈沖個數(shù) 時鐘脈沖周期T 預(yù)置的計數(shù)初值n,例如:在某系統(tǒng)中,8253所使用的計數(shù)脈沖頻率為0.5MHz,即脈沖周期T2s,如果給8253的計數(shù)器預(yù)置的初值n500,則當(dāng)計數(shù)器計到數(shù)值為0時,定時時間 t2s5001ms。,二、 初始化編程步驟和門控信號的功能,1、8

7、253的初始化編程步驟,(1)寫入控制字 用輸出指令向控制字寄存器寫入一個控制字,以選定計數(shù)器通道,規(guī)定該計數(shù)器的工作模式和計數(shù)格式。 寫入控制字還起到復(fù)位作用,使輸出端OUT變?yōu)槌跏紶顟B(tài),并使計數(shù)器清0。 三個計數(shù)通道共用同一個控制字端口地址:A1 A0=1 1,用控制字的標(biāo)志位SC1 SC0 區(qū)別不同通道。,對3個計數(shù)器通道的編程沒有先后順序的規(guī)定。 對每個計數(shù)器的編程先寫入控制字,后寫入計數(shù)初值。,(2)寫入計數(shù)初值 用輸出指令向選中的計數(shù)器端口地址中寫入一個計數(shù)初值,初值設(shè)置時要符合控制字中有關(guān)格式的規(guī)定。 初值可以寫入8位數(shù)據(jù),也可以寫入16位數(shù)據(jù)。若是8位數(shù),只要用一條輸出指令就可

8、完成初值的設(shè)置。 如果是16位數(shù),則必須用兩條輸出指令來完成,規(guī)定先送低8位數(shù)據(jù),后送高8位數(shù)據(jù)。 由于計數(shù)器是先減1,再判斷計數(shù)值是否為零,所以寫入計數(shù)初值為0,實際就等于10000H,在二進制計數(shù)時,它表示65536,BCD計數(shù)時,它表示10000。,例:在某微機系統(tǒng)中,8253的3個計數(shù)器的端口地址分別為3F0H、3F2H和3F4H,控制字寄存器的端口地址為3F6H,要求8253的通道0工作于模式3,并已知對它寫入的計數(shù)初值n1234H,則初始化程序為: MOV AL, 00110111B ;控制字;選擇通道0, 先讀寫低字節(jié),后高字節(jié) MOV DX, 3F6H ;指向控制口 OUT D

9、X, AL ;送控制字 MOV AL, 34H ;計數(shù)值低字節(jié) MOV DX, 3FDH ;指向計數(shù)器0端口 0UT DX, AL ;先寫入低字節(jié) MOV AL, 12H ;計數(shù)值高字節(jié) OUT DX, AL ;后寫入高字節(jié),三、 8253的工作模式 (1)方式0計數(shù)結(jié)束產(chǎn)生中斷 一次定時或計數(shù),重寫初值,啟動新一輪的計數(shù) (2)方式1可編程的單脈沖(單穩(wěn))觸發(fā)器 GATE邊沿觸發(fā),啟動新一輪計數(shù) (3)方式2分頻器(速度波發(fā)生器) 具有計數(shù)初值重裝能力 (4)方式3方波發(fā)生器 具有計數(shù)初值重裝能力 (5)方式4軟件觸發(fā)的選通信號發(fā)生器 一次定時,重寫初值,啟動新一輪的計數(shù) (6)方式5硬件觸

10、發(fā)的選通信號發(fā)生器 GATE邊沿觸發(fā)新一輪計數(shù),方式0計數(shù)結(jié)束產(chǎn)生中斷,模式0 注:計數(shù)結(jié)束產(chǎn)生中斷,在GATE=1時,執(zhí)行部件獲得初值之后便開始計數(shù)。在計數(shù)過程中,如果GATE=0,則暫停計數(shù),但不影響OUT的狀態(tài); 當(dāng)GATE=01,執(zhí)行部件從剛才暫停的計數(shù)值繼續(xù)計數(shù),直到計數(shù)結(jié)束,OUT=1; 在計數(shù)過程中,如果寫入新的計數(shù)初值,則停止計數(shù),在下一個CLK脈沖下降沿后,新的初值送到計數(shù)執(zhí)行部件,此后,計數(shù)器按新的初值重新計數(shù)。 按模式0進行計數(shù)時,計數(shù)器只計一遍。當(dāng)計數(shù)器計到0時,不會自動再裝入初值重新開始計數(shù),其輸出將保持高電平。,方式1單穩(wěn)態(tài)輸出,高,在計數(shù)過程中,若GATE產(chǎn)生負跳

11、變或等于低電平,不會影響計數(shù)過程的進行。但若在計數(shù)器回零前,GATE又產(chǎn)生從低到高的正跳變,則8253又將初值N裝入計數(shù)器執(zhí)行部件,重新開始計數(shù),其結(jié)果會使輸出的單脈沖寬度加寬。 在計數(shù)過程中,寫入新的計數(shù)初值,不影響當(dāng)前計數(shù)過程,除非再來一個GATE上升沿,則就會裝入新的初值,重新開始計數(shù)。 可以通過GATE上升沿多次觸發(fā)計數(shù)過程。,模式1 注:單脈沖(單穩(wěn))觸發(fā)器,方式2分頻器,模式2 注:分頻器,在計數(shù)過程中,當(dāng)GATE變?yōu)榈碗娖綍r,將迫使OUT變?yōu)楦唠娖剑⒔褂嫈?shù);GATE從低電平變?yōu)楦唠娖?,也就是GATE端產(chǎn)生上升沿時,則在下一個時鐘脈沖時,把預(yù)置的計數(shù)初值裝入計數(shù)器,從初值開始遞

12、減計數(shù)。門控信號GATE可用來使多個計數(shù)器同步。 在操作過程中,任何時候都可由CPU重新寫入新的計數(shù)值,它不會影響當(dāng)前計數(shù)過程的進行。 模式2具有自動重裝初值功能,當(dāng)計數(shù)器計數(shù)到0的同時把初值寄存器的內(nèi)容重新裝入計數(shù)執(zhí)行部件,自動重新計數(shù)。該過程自動循環(huán),直到GATE=0或改變計數(shù)器的模式。,方式3方波發(fā)生器,模式3 注:方波發(fā)生器,在計數(shù)過程中,當(dāng)GATE變?yōu)榈碗娖綍r,將迫使OUT變?yōu)楦唠娖?,并禁止計?shù);GATE從低電平變?yōu)楦唠娖剑簿褪荊ATE端產(chǎn)生上升沿時,則在下一個時鐘脈沖時,把預(yù)置的計數(shù)初值裝入計數(shù)器,從初值開始遞減計數(shù)。門控信號GATE可用來使多個計數(shù)器同步。 在操作過程中,任何時

13、候都可由CPU重新寫入新的計數(shù)值,它不會影響當(dāng)前計數(shù)過程的進行。只有下一個計數(shù)周期才會按新寫入的初值計數(shù)。 模式3具有自動重裝初值功能,當(dāng)計數(shù)器計數(shù)到0的同時把初值寄存器的內(nèi)容重新裝入計數(shù)執(zhí)行部件,自動重新計數(shù)。該過程自動循環(huán),直到GATE=0或改變計數(shù)器的模式。,方式4軟件觸發(fā)的選通信號發(fā)生器,模式4 注:軟件觸發(fā)選通模式,在計數(shù)的過程中GATE變?yōu)榈碗娖?,則停止計數(shù),當(dāng)GATE變?yōu)楦唠娖胶螅种匦聦⒊踔笛b入計數(shù)器,從初值開始計數(shù),直至計數(shù)器的值減為0時,從OUT端輸出一個負脈沖。 在操作過程中,重新寫入新的計數(shù)初值,在下一個時鐘脈沖時,將新的計數(shù)初值裝入執(zhí)行部件,并從新的計數(shù)值開始計數(shù)。

14、模式4不具有自動重裝初值功能,當(dāng)計數(shù)器計數(shù)到0輸出負脈沖以后,該過程結(jié)束。要重新開始計數(shù),必須再次寫入初值。由于計數(shù)過程是由軟件把計數(shù)初值裝入計數(shù)寄存器來觸發(fā)的,所以模式4稱為軟件觸發(fā)選通模式。,方式5硬件觸發(fā)的選通信號發(fā)生器,模式5 注:硬件觸發(fā)選通模式,在計數(shù)過程中,GATE又產(chǎn)生從低到高的正跳變,經(jīng)過一個CLK周期,初值送入執(zhí)行部件,然后再進行減1計數(shù)直到為0,輸出負脈沖。 在計數(shù)過程中,寫入新的計數(shù)初值,沒有GATE觸發(fā)信號,不影響當(dāng)前計數(shù)過程。 模式5不具有自動重裝初值功能,當(dāng)計數(shù)器計數(shù)到0輸出負脈沖以后,該過程結(jié)束。要重新開始計數(shù),必須再次給出門控信號上升沿。由于計數(shù)過程是由GAT

15、E上升沿來觸發(fā)的,所以模式5稱為硬件觸發(fā)選通模式。,例如,設(shè)定計數(shù)器為先讀低字節(jié)、后讀高字節(jié)方式,當(dāng)前計數(shù)值為0300H,則讀到的低字節(jié)為00H,在讀低字節(jié)的過程中,又來一個脈沖,使得當(dāng)前計數(shù)值變?yōu)?2FFH,這時讀取高字節(jié)便得到02H,結(jié)果便得到當(dāng)前值為0200H,出現(xiàn)錯誤。為了防止這種情況發(fā)生,可以采用兩種方法:暫停計數(shù)或者鎖存計數(shù)器的當(dāng)前值。,暫停計數(shù)可以用外部硬件切斷計數(shù)脈沖信號,或者使門控信號變?yōu)榈碗娖?,迫?253停止計數(shù)。這種方法的缺點是需要硬件電路配合。此外,由于外部事件源被切斷或正常的計數(shù)過程被禁止,干擾了實際的計數(shù)過程,可能出現(xiàn)漏計情況。因此,這不是一種好的方法。但這種方法

16、可以實現(xiàn)多個計數(shù)器的同步比較。,8253計數(shù)值的讀取,在許多用到8253的計數(shù)功能的場合,常常需要讀取計數(shù)器的當(dāng)前計數(shù)值。 在計數(shù)初值設(shè)為N的情況下,如果當(dāng)前計數(shù)器的計數(shù)值為M,則在計數(shù)模式下(模式0),已經(jīng)完成的個數(shù)等于N+1-M。 在讀計數(shù)器當(dāng)前值時,計數(shù)過程仍在進行,而且不受CPU的控制。因此,在CPU讀取計數(shù)器的輸出值時,可能計數(shù)器的輸出正在發(fā)生改變,可能導(dǎo)致錯誤的讀數(shù)。,另一方法是在讀出數(shù)據(jù)之前,先鎖存當(dāng)前計數(shù)值。當(dāng)需要讀取計數(shù)器的現(xiàn)行值時,先向8253送一個鎖存命令,即把RL1RL0=00的控制字寫入8253的控制字端口,鎖存命令字中的SC1SC0用來確定要鎖存的是哪一個計數(shù)器,鎖

17、存命令字的低4位對鎖存命令無影響,可以將它們置為0。 8253立即把指定計數(shù)器的當(dāng)前計數(shù)值鎖存到輸出鎖存器中。,然后就可從相應(yīng)的計數(shù)器的輸出所存器中讀取當(dāng)前計數(shù)值。讀取計數(shù)值的方法由對8253進行初始化編程時所寫入的控制字中的RL1RL0位來確定,當(dāng)RL1RL001時,只讀取計數(shù)器的低字節(jié),RL1RL010時,只讀取計數(shù)器的高字節(jié),RL1RL011時,先讀寫計數(shù)器低字節(jié),后讀寫高字節(jié)。,8253初始化方法: 控制字 計數(shù)初值: 已知:CLK 的頻率fc與定時的時間t. 計數(shù)初值: n= fc t 例1: fc=1MHZ,最大計數(shù)初值: 65536 一個定時器最大定時時間: N/fc=65536

18、/ 106 =0.065536s,8-2 8253應(yīng)用舉例,例2:設(shè)定時器0、定時器1工作于方式2,外部提供一個時鐘,頻率f=2MHZ。要求定時器1每5ms產(chǎn)生一個脈沖,定時器0每5s產(chǎn)生一個脈沖。 1). 一個定時器的最大定時時間: 65536 /(2*106)=0.032768 s=32.768ms 2). 將定時器1的CLK1接2MHZ時鐘,計數(shù)初值: 3).將定時器1的OUT1端接到定時器0的CLK0端,定時器0的計數(shù)初值:,1用8253產(chǎn)生各種定時波形 在某個以8086為CPU的系統(tǒng)中使用了一塊8253芯片,通道的基地址為310H,所用的時鐘脈沖頻率為1MHz。要求3個計數(shù)通道分別完

19、成以下功能: (1)通道0工作于方式3,輸出頻率為2kHz的方波; (2)通道l產(chǎn)生寬度為480s的單脈沖; (3)通道2用硬件方式觸發(fā),輸出單脈沖,時間常數(shù)為26。,通道0工作于方式3,即構(gòu)成一個方波發(fā)生器,它的控制端GATE0須接+5V,為了輸出2kHz的連續(xù)方波,應(yīng)使時間常數(shù)N0lMHz2kHz=500。 通道1工作于方式l,即構(gòu)成一個單穩(wěn)態(tài)電路,由GATE1的正跳變觸發(fā),輸出一個寬度由時間常數(shù)決定的負脈沖。此功能一次有效,需要再形成一個脈沖時,不但GATE1腳上要有觸發(fā),通道也需重新初始化。需輸出寬度為480s的單脈沖時,應(yīng)取時間常數(shù)N1480sls =480。 通道2工作于方式5,即

20、由GATE2的正跳變觸發(fā)減1計數(shù),在計到0時形成一個寬度與時鐘周期相同的負脈沖。此后,若GATE2腳上再次出現(xiàn)正跳變,又能產(chǎn)生一個負脈沖。,;通道0初始化程序 MOV DX,316H ;控制口地址 MOV AL, 00110111B ;通道0控制宇,先讀寫低字節(jié),后高字節(jié),方式3,BCD計數(shù) OUT DX, AL ;寫人方式字 MOV DX,310H ;通道0口地址 MOV AL,00H ;低字節(jié) OUT DX,AL ;先寫入低字節(jié) MOV AL,05H ;高字節(jié) OUT DX,AL ;后寫入高字節(jié),;通道1初始化程序 MOV DX,316H MOV AL,01110011B 通道1方式字,先

21、讀寫低字節(jié),后高字節(jié),方式1,BCD計數(shù) OUT DX,AL MOV DX,312H ;通道1口地址 MOV AL,80H ;低字節(jié) OUT DX,AL MOV AL,04H ;高字節(jié) OUT DX,AL,;通道2初始化程序 MOV DX, 316H MOV AL, 10011011B ;通道2控制字,只讀寫低字節(jié),方式5,BCD計數(shù) OUT DX, AL MOV DX, 3l4H ;通道2口地址 MOV AL, 26H ;低字節(jié) OUT DX,AL ;只寫入低字節(jié),8253計數(shù)功能的應(yīng)用例子,8253計數(shù)功能的應(yīng)用例子,選擇計數(shù)器1工作于方式0,按BCD碼計數(shù),先讀寫低字節(jié),后讀寫高字節(jié),則

22、控制字為? 如要求每500個脈沖,通過通過8259A向CPU發(fā)出一次中斷請求,則選取計數(shù)韌值n? 每次中斷表示計滿了500個數(shù),在中斷服務(wù)程序中使工件總數(shù)加上500。 中斷服務(wù)程序執(zhí)行完后,返回主程序,這時需要由程序把計數(shù)韌值499再次裝入計數(shù)器1,才能繼續(xù)進行計數(shù)。,8253計數(shù)功能的應(yīng)用例子,設(shè)8253的4個端口地址分別為F0H,F(xiàn)2H,F(xiàn)4H和F6H,則初始化程序為 MOV AL, 01110001B ;控制字 OUT0F6H,AL MOVAL,() OUT0F2H,AL MOVAL, 04H OUT0F2H,AL,8253在PC/XT機中的應(yīng)用,1計數(shù)器0實時時鐘 計數(shù)器0用作定時器,為系統(tǒng)提供時間基準。 選用

溫馨提示

  • 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

提交評論