定時計數技術_第1頁
定時計數技術_第2頁
定時計數技術_第3頁
定時計數技術_第4頁
定時計數技術_第5頁
已閱讀5頁,還剩50頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

定時計數技術第一頁,共五十五頁,2022年,8月28日(1)定時與計數定時計算機系統是通過定時器、按照一定的節奏(時間間隔)來進行工作的。如:系統的日歷時鐘、存儲器的動態刷新、應用系統的定時中斷、定時查詢與檢測等。計數生產線上產品的計數,如藥片、飲料等。

5.1定時/計數基本概念

2定時和計數實質上都是計數。定時是通過記錄高精度晶振的脈沖個數,輸出準確的時間間隔。第二頁,共五十五頁,2022年,8月28日微機系統中常需定時信號為處理器或外設提供時間基準;或對外部事件進行計數。例:分時系統的程序切換,向外設周期性發控制信號。微機中的定時分為以下2類:內部定時:是計算機本身運行的時間基準或時序關系。計算機的每個操作都嚴格按照固定的時間節拍來進行。外部定時:外設與CPU,或外設與外設之間的時間基準和時序關系,計數脈沖來自CPU外部。3重點

(2)微機系統中的定時與計數第三頁,共五十五頁,2022年,8月28日軟件定時通過軟件編程,循環執行一段程序來實現。優點:無需專用硬件,方法簡單、靈活。缺點:CPU開銷大,效率低;定時不精確。適用于定時時間不長、精度要求不高的場合。4MOVCX,0FFFFHL1:LOOPL1LOOP指令的作用:執行一次,CX-1送CX,同時檢測CX是否等于零,不等于零就轉到指定的LP去執行,否則順序執行下一條指令。

(3)微機中的定時方法第四頁,共五十五頁,2022年,8月28日不可編程的硬件定時采用分頻器、單穩電路或簡易定時電路控制定時時間。例:簡易定時炸彈、空調遙控器。優點:不占用處理器時間,電路也不復雜。缺點:缺少靈活性,電路一旦設計好,其定時時間和范圍就不能改變。5第五頁,共五十五頁,2022年,8月28日可編程的硬件定時用可編程定時器芯片構成一個定時電路,定時時間軟件可調。優點:軟、硬件相結合,克服了純軟件和純硬件定時的缺點。不占用CPU資源、定時準確、定時時間長、使用靈活。常用的可編程定時芯片:

8253-5:5MHz。8253:2MHz8254-2:10MHz。8254:8MHz6兩者在芯片功能、外形和引腳上大同小異,8254附加功能:讀當前計數單元;讀狀態寄存器內容。第六頁,共五十五頁,2022年,8月28日(1)總體結構

5.28253/8254定時/計數器

7第七頁,共五十五頁,2022年,8月28日數據總線緩沖器三態雙向8位寄存器,是系統數據總線與8253/8254的接口,與D7~D0相連,可寄存以下3種數據:CPU向8253/8254寫入的工作方式命令字;CPU向計數寄存器寫入的計數初值;從計數器讀出的當前計數值。讀/寫控制邏輯用來接收CPU發來的讀寫信號、片選信號和地址信號,選擇相應的寄存器,并確定數據傳輸的方向(寫入、讀出)。8第八頁,共五十五頁,2022年,8月28日控制字寄存器接收CPU發來的控制字。控制字只能寫入,其功能為:選擇計數器;確定計數器的工作方式;確定寫入計數初值的格式(高低8位或16位);確定計數格式:二進制或BCD格式。計數器0~23個結構完全相同、相互獨立的計數器。每個計數器包含一個16位初值寄存器、一個16位減1計數器和一個16位輸出鎖存器。9注意,它們都是減1計數器。第九頁,共五十五頁,2022年,8月28日24引腳、DIP雙列直插封裝,單一+5V供電。內含3個獨立的定時/計數器(T/C),各自具有獨立的時鐘信號CLK、門控信號GATE和輸出信號OUT。可通過編程,分別設定各定時/計數器的工作方式。10

(2)8253/8254外部引腳定義第十頁,共五十五頁,2022年,8月28日數據總線D7~D0用于將8253/8254與系統總線相連,供CPU向8253/8254讀寫數據、命令和狀態信息。內部端口地址譯碼信號A1A0用于片內端口選擇。A1A0=00,選擇計數器0A1A0=01,選擇計數器1A1A0=10,選擇計數器2A1A0=11,選擇控制端口11第十一頁,共五十五頁,2022年,8月28日片選信號CS輸入信號,低有效,由CPU輸出的地址線譯碼產生。讀寫信號RD和WR輸入信號,低有效。分別連接系統總線的IOR和IOW。時鐘信號CLK0~CLK2各自獨立。作用:定時或計數時,每個CLK下降沿,計數減1。12第十二頁,共五十五頁,2022年,8月28日門控信號GATE0~GATE2作用:允許或禁止計數過程。計數輸出信號OUT0~OUT2計數減為0(或設置值)時,OUT端輸出一個電平或脈沖信號,指示定時或計數已到。OUT的用途:可作為外部定時、計數控制信號,控制或啟動I/O設備的某種操作。可作為定時、計數已到的狀態信號,供CPU監測。可作為中斷請求信號使用。13OUT第十三頁,共五十五頁,2022年,8月28日14━CS━RD━WRA1A0操作地址01000

向計數器0寫入“計數初值”40H01001向計數器1寫入“計數初值”41H01010

向計數器2寫入“計數初值”42H01011

向控制寄存器寫入“方式控制字”43H00100從計數器0讀出“當前計數值”40H00101從計數器1讀出“當前計數值”41H00110從計數器2讀出“當前計數值”42H00111

無操作(三態)1××××

禁止(三態)011××

無操作(三態)

(3)8253/8254讀寫操作及端口地址第十四頁,共五十五頁,2022年,8月28日8253/8254的每個計數器有6種工作方式:方式0——計數期間低電平輸出(GATE高電平時計數)方式1——計數期間低電平輸出(單穩態,GATE上升沿重新計數)方式2——周期性輸出負脈沖(不對稱分頻)分頻器方式3——周期性輸出方波(對稱分頻)方波發生器方式4——軟件觸發輸出單脈沖方式5——硬件觸發輸出單脈沖6種工作方式的區別在于:輸出波形不同。啟動計數器的觸發方式不同。計數過程中門控信號GATE對計數操作的影響不同。

5.38253/8254工作方式

15第十五頁,共五十五頁,2022年,8月28日寫方式字和初值(基本計數過程)向計數器寫入方式字0后,WR的上升沿使OUT信號變低。寫入計數初值后,WR的上升沿將初值寫入初值寄存器,在下一個CLK下降沿,才將計數初值寫入減1計數器。之后每個CLK下降沿,計數減1。減為0時,OUT變高。16

(1)方式0——計數期間輸出低電平(GATE高電平計數)第十六頁,共五十五頁,2022年,8月28日門控信號GATE為高時允許計數;為低時暫停計數,其計數值保持不變。當GATE再次變高時,計數器從暫停處繼續計數。GATE信號的變化不影響OUT信號的狀態。17第十七頁,共五十五頁,2022年,8月28日重新計數計數期間,若再次寫入計數初值,則計數器立即按新的初值重新計數。18第十八頁,共五十五頁,2022年,8月28日寫方式字和初值寫入方式字2后,WR的上升沿使OUT信號變高。寫入初值后,計數器在CLK下降沿的作用下進行減1計數。當減為1時,OUT變低并維持一個CLK周期,然后又變高,并自動裝入初值重新進行計數。19

(3)方式2——周期性輸出負脈沖該方式能連續工作,且輸出固定頻率的脈沖,因此稱之為頻率發生器或分頻器。第十九頁,共五十五頁,2022年,8月28日門控信號GATE為高,允許計數;否則,終止計數。待GATE恢復為高后,計數器將從初值重新進行計數。20第二十頁,共五十五頁,2022年,8月28日重新計數計數期間,若重新寫入計數初值,則不會影響正在進行的計數過程,必須等到計數器減到1之后,才裝入新的初值,并按照新的初值進行計數。21第二十一頁,共五十五頁,2022年,8月28日與方式2基本相同,都具有自動裝入計數初值、連續計數的功能。不同在于:方式3下OUT端連續輸出比例為1:1或近似1:1的方波,因此稱為方波發生器。相同點回顧寫入方式字后,OUT信號變高。寫入初值后,計數器進行減1計數。方式2:當減為1時,OUT輸出一個周期負脈沖后變高,重新裝入初值繼續計數。GATE同前:高時計數;低時停止計數;恢復后重新計數。重新計數同前:重裝初值后,必須等上輪計數完成后再按新的初值計數。22

(4)方式3——周期性輸出方波第二十二頁,共五十五頁,2022年,8月28日初值為偶數時寫入方式字后,OUT信號變高。寫入初值后開始減1計數;減到n/2時,OUT變低,繼續減1計數;減到0時,OUT變高,并自動裝入初值,重新計數。23OUT端連續輸出占空比為1/2的方波。占空比:脈沖序列中,正脈沖的持續時間與脈沖總周期的比值。第二十三頁,共五十五頁,2022年,8月28日初值為奇數時寫入方式字后,OUT信號變高。寫入初值后開始減1計數;減到(n-1)/2時,OUT變低,繼續減1計數;減到0時,OUT變高,并自動裝入初值,重新計數。24第二十四頁,共五十五頁,2022年,8月28日6種工作方式比較25方式功能門控情況OUT輸出波形

0計數期間低電平輸出(GATE高電平計數)高電平寫入初值后OUT變低,且開始減1計數,經過n個CLK后,OUT變高。(不連續)1計數期間低電平輸出(GATE↑重新計數)上升沿輸出寬度為n個周期的低電平。(不連續)2周期性輸出負脈沖高電平連續輸出周期為n個CLK、寬度為1個CLK的負脈沖。(自動連續)3周期性輸出方波高電平連續輸出比例為1:1或近似1:1的方波。(自動連續)4軟件觸發輸出單脈沖高電平寫入初值后OUT變高,經n個CLK后,輸出1個CLK的負脈沖。(軟件觸發才繼續)5硬件觸發輸出單脈沖上升沿寫入初值后OUT變高,有門控信號后才計數,經n個CLK后輸出1個CLK的負脈沖。(GATE上升沿才可再次觸發)6種模式中,2、3兩種是重復多次的,其它是單次的,實質都是計數,都受GATE控制,用的較多的是0、1、2、3四種。第二十五頁,共五十五頁,2022年,8月28日【5-1】如圖所示,計數器1工作在方式3,計數初值為十進制數15。請計算OUT1上的輸出波形的周期。262MH第二十六頁,共五十五頁,2022年,8月28日解:輸出波形特性

本題中計數初值n=15為奇數,故輸出波形的一個周期中,高電平的持續時間為(n+1)/2個CLK,低電平的持續時間為(n-1)/2個CLK。所以有:

Tclk1=1/2MHz=0.50μsT1=(n+1)/2×Tclk1=8×0.5≈4μsT2=(n-1)/2×Tclk1=7×0.5≈3.5μsT=T1+T2=7.5μs

故輸出波形特性為:輸出總周期為7.5μs的方波,其中一個周期中高電平的持續時間約為4μs,低電平的持續時間約為3.5μs。27第二十七頁,共五十五頁,2022年,8月28日【5-2】計數器0工作在方式0,計數初值為100,采用BCD計數。GATE0和CLK0信號的時間關系如圖所示。試計算T0的輸出端出現正跳變時的延遲時間TD。282MH第二十八頁,共五十五頁,2022年,8月28日

解:OUT0的持續時間計算正常情況下(GATE0保持高電平),OUT0持續為低的時間共為N個時鐘脈沖寬度。N為計數初值。實際計數期間,GATE0禁止計數了2個時鐘周期,故輸出端OUT0持續低電平的總寬度為:TD

=(N+2)×Tclk0=102×(1/2MHz)=102×1/(2×106)

=51μs

29第二十九頁,共五十五頁,2022年,8月28日

5.48253編程與應用

30AB控制寄存器高8位低8位CR高8位低8位CEOL高8位低8位123地址譯碼CLK0GATE0OUT0CLK1GATE1OUT1CLK2GATE2OUT2VccGNDDBRDWRREADYM/IOA0A1CSCR:CountRegisterCE:CountExecutorOL:OutputLatchRegister第三十頁,共五十五頁,2022年,8月28日方式字的作用指定使用哪個計數器。指定某個計數器的工作方式。指定計數初值的長度、裝入順序以及計數值的碼制。指定是向計數器寫入初值,還是鎖存其當前計數值。31

(1)方式字第三十一頁,共五十五頁,2022年,8月28日8253方式命令字的格式32D7D6D5D4D3D2D1D000:計數器001:計數器110:計數器211:8253不用計數器00:鎖存當前值01:只讀寫初值低8位,高8位置010:只讀寫高8位,低8位置011:先讀寫低8位,然后高8位讀寫格式000:方式0001:方式1x10:方式2x11:方式3100:方式4101:方式5工作方式0:二進制編碼1:BCD編碼數制第三十二頁,共五十五頁,2022年,8月28日計數初值的計算8253/8254是一種減1計數器,計數初值決定了定時的長短與計數的多少。已知:定時時間Tout=計數時鐘周期TCLK×計數初值,故舉例已知8253的計數脈沖頻率為1MHz,若要定時1ms時間,則計數初值n=1M/(1/10-3)=1000。33

(2)計數初值第三十三頁,共五十五頁,2022年,8月28日寫方式字將方式字送入控制端口,其對應的A1A0

=11。寫計數初值將計數初值寫入相應的計數器端口。計數器0的初值寫入A1A0=00對應的端口。計數器1的初值寫入A1A0=01對應的端口。計數器2的初值寫入A1A0=10對應的端口。34

(3)8253初始化編程與應用第三十四頁,共五十五頁,2022年,8月28日35━CS━RD━WRA1A0操作地址01000

向計數器0寫入“計數初值”40H01001向計數器1寫入“計數初值”41H01010

向計數器2寫入“計數初值”42H01011

向控制寄存器寫入“方式控制字”43H00100從計數器0讀出“當前計數值”40H00101從計數器1讀出“當前計數值”41H00110從計數器2讀出“當前計數值”42H00111

無操作(三態)1××××

禁止(三態)011××

無操作(三態)第三十五頁,共五十五頁,2022年,8月28日【5-3】設計數器的端口地址為40H~43H。已知:選擇2號計數器,工作在方式3,計數初始值為533H,采用二進制計數。請寫出初始化程序段。36

MOVAL,10110110B;計數器2的初始化命令字OUT43H,AL;寫入命令寄存器MOVAX,533H;計數初值OUT42H,AL;先送低字節到計數器2MOVAL,AH;取高字節送入ALOUT42H,AL;后送高字節到計數器2第三十六頁,共五十五頁,2022年,8月28日【5-4】設8253計數器的端口地址為40H~43H。請編寫程序,實現讀出并檢查1號計數器的當前值是否為全1(假定計數值只有低8位)。

注:要遵循“先鎖存、后讀取當前值”的原則。37

L:MOVAL,01000000B;計數器1的鎖存命令

OUT43H,AL;寫入命令寄存器

INAL,41H;讀計數器1的當前計數值

CMPAL,0FFH;比較

JNEL;不是全“1”,再讀

HLT;是全“1”,暫停第三十七頁,共五十五頁,2022年,8月28日【5-5】設計數器的端口地址為40H~43H。計數器T2工作在方式1,進行8位二進制計數,計數初值低8位為BYTEL。請寫出初始化程序段。38MOVDX,43H;命令口

MOVAL,10010010B;方式字

OUTDX,ALMOVDX,42H;T2數據口

MOVAL,BYTEL;低8位,高8位自動補0

OUTDX,AL當地址≤0FFH時,也可用間接尋址方式。第三十八頁,共五十五頁,2022年,8月28日【5-6】設計數器的端口地址為40H~43H。計數器T1工作在方式4,進行8位二進制計數,并且只裝入高8位計數初值BYTEH。請寫出初始化程序段。39MOVAL,01101000B;方式字

OUT43H,ALMOVAL,BYTEH;高8位,低8位自動補0

OUT41H,AL當地址≤0FFH時,直接尋址更明了。第三十九頁,共五十五頁,2022年,8月28日【5-7】設某微機系統8253計數器的端口地址為60H~63H。已知:計數器0:方式0,計數初值0A8H,按二進制計數;計數器1:方式1,計數初值為2000,按BCD碼計數;計數器2:方式3,初值為1B3CH,按二進制計數。

請寫出初始化程序段。40第四十頁,共五十五頁,2022年,8月28日解:寫方式字:控制端口,A1A0=11T0:方式0,初值0A8H,二進制計數。T1:方式1,初值2000,BCD碼計數;T2:方式3,初值1B3CH,二進制計數。寫計數初值:寫入對應端口T0:將初值A8H寫入端口60H;(高8位自動補0)T1:將初值20H寫入端口61H;(低8位自動補0)T2:將初值1B3CH寫入端口62H。(先低8位,后高8位)4100010000B=10H01100011B=63H10110110B=B6H第四十一頁,共五十五頁,2022年,8月28日42MOVAL,10H;寫T0控制字

OUT63H,ALMOVAL,0A8H;向T0寫低8位計數初值

OUT60H,AL

MOVAL,63H;寫T1控制字

OUT 63H,ALMOVAL,20H;向T1寫高8位計數初值

OUT61H,ALMOVAL,0B6H ;寫T2控制字

OUT63H,ALMOVAL,3CH;向T2寫低8位計數初值

OUT62H,ALMOVAL,1BH;向T2寫高8位計數初值

OUT62H,AL第四十二頁,共五十五頁,2022年,8月28日【5-8】針對下圖,按要求編寫初始化程序段。計數器0:方式0,計數初值1234H,按二進制計數;計數器1:方式2,計數初值為100,按BCD碼計數;計數器2:方式3,初值為1FFFH,按二進制計數。43RD#WR#M/IO#第四十三頁,共五十五頁,2022年,8月28日解:(1)首先確定8253的端口地址。計數器0、1、2的地址分別是40H、44H和48H;方式字的端口地址是4CH。44A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A00000000001000000000000000100010000000000010010000000000001001100第四十四頁,共五十五頁,2022年,8月28日

(2)確定8253三個計數器的工作方式T0:方式0,初值1234H,二進制計數。T1:方式2,初值100,BCD碼計數;T2:方式3,初值1FFFH,二進制計數。4500110000B=30H01100101B=65H10110110B=B3H第四十五頁,共五十五頁,2022年,8月28日

(3)編寫程序段46MOVAL,30H;寫T0的方式字OUT4CH,ALMOVAL,34H;寫T0的計數初值1234HOUT40H,ALMOVAL,12HOUT40H,AL第四十六頁,共五十五頁,2022年,8月28日47MOVAL,0B3H;寫T2的方式字OUT4CH,ALMOVAL,0FFH;寫T2的計數初值1FFFHOUT48H,ALMOVAL,1FHOUT48H,ALMOVAL,65H;寫T1的方式字OUT4CH,ALMOVAL,01H;寫T1的計數初值0100HOUT44H,AL第四十七頁,共五十五頁,2022年,8月28日【5-9】請采用8253設計一個可以重復進行的計數系統,按下開關,LED開始亮,按到100下,LED則熄滅。如此反復。解:(1)硬件電路分析與設計8253中某個計數器的CLK端接開關,每按一下產生一個CLK下降沿,用其進行計數。初值可設為100。該計數器的OUT端可用于控制LED發光二極管亮或滅。該計數器的工作方式采用方式0

溫馨提示

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

評論

0/150

提交評論