中南大學 微機原理第五章2_第1頁
中南大學 微機原理第五章2_第2頁
中南大學 微機原理第五章2_第3頁
中南大學 微機原理第五章2_第4頁
中南大學 微機原理第五章2_第5頁
已閱讀5頁,還剩33頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、5.2 定時定時/計數器控制接口計數器控制接口技術技術定時控制在微機系統中極為重要定時器由數字電路中的計數電路構成,通過記錄高精度晶振脈沖信號的個數,輸出準確的時間間隔計數電路如果記錄外設提供的具有一定隨機性的脈沖信號時,它主要反映脈沖的個數(進而獲知外設的某種狀態),常又稱為計數器定時功能的實現方法在微機應用系統中,經常會有這樣的應用要求:一種是要求有一些外部實時時鐘,以實現延時控制或定時;另一種是要求能對外部事件計數的計數器。在微機系統中,常采用一下三種方法實現:軟件定時,不可編程硬件定時和可編程硬件定時。軟件延時利用微處理器執行一個延時程序段實現不可編程的硬件定時采用分頻器、單穩電路或簡

2、易定時電路控制定時時間可編程的硬件定時軟件硬件相結合、用可編程定時器芯片構成一個方便靈活的定時電路5.2.1 8253/8254定時計定時計數器數器3個獨立的16位計數器通道每個計數器有6種工作方式按二進制或十進制(BCD碼)計數8254是是8253的改進型的改進型1. 8253/8254的內部結構和引腳D7D0計數器0控制字寄存器計數器1計數器2內部數據總線數據總線緩沖器讀寫控制邏輯RDWRA0A1CSCLK0GATE0OUT0CLK1GATE1OUT1CLK2GATE2OUT2計數器結構示意圖預置寄存器預置寄存器GATECLKOUT減減1計數器計數器輸出鎖存器輸出鎖存器計數初值存于計數初值

3、存于預置寄存器預置寄存器;在計數過程中,在計數過程中,減法計數器減法計數器的值不斷遞減,的值不斷遞減,而預置寄存器中的預置不變。而預置寄存器中的預置不變。輸出鎖存器輸出鎖存器用于寫入鎖存命令時,用于寫入鎖存命令時,鎖定當前計數值鎖定當前計數值計數器的3個引腳CLK時鐘輸入信號在計數過程中,此引腳上每輸入一個時鐘信號(下降沿),計數器的計數值減1GATE門控輸入信號控制計數器工作,可分成電平控制和上升沿控制兩種類型OUT計數器輸出信號當一次計數過程結束(計數值減為0),OUT引腳上將產生一個輸出信號2. 與處理器接口D0 D7數據線A0 A1地址線RD*讀信號WR*寫信號CS*片選信號CS* A

4、1 A0I/O地址地址讀操作讀操作RD*寫操作寫操作WR*0 0 00 0 10 1 00 1 140H41H42H43H讀計數器讀計數器0讀計數器讀計數器1讀計數器讀計數器2無操作無操作寫計數器寫計數器0寫計數器寫計數器1寫計數器寫計數器2寫控制字寫控制字5.2.2 8253/8254的工作的工作方式方式8253有6種工作方式,由方式控制字確定熟悉每種工作方式的特點才能根據實際應用問題,選擇正確的工作方式每種工作方式的過程類似: 設定工作方式 設定計數初值 硬件啟動 計數初值進入減1計數器 每輸入一個時鐘計數器減1的計數過程 計數過程結束方式0 計數結束產生中斷GATEOUTCLK 0312

5、44方式方式0WR設設定定工工作作方方式式設設定定計計數數初初值值計計數數值值送送入入計計數數器器計計數數過過程程計計數數結結束束方式1可編程單穩態觸發器設設定定工工作作方方式式設設定定計計數數初初值值硬硬件件啟啟動動計計數數值值送送入入計計數數器器計計數數過過程程計計數數結結束束GATEOUTCLK 031244方式方式1WR方式2 頻率發生器(分頻器)03124GATEOUTCLK 4方式方式2031240312403124WR方式3 方波發生器03124GATEOUTCLK 4方式方式3031240312403124WR方式4 軟件觸發選通脈沖GATEOUTCLK031244方式方式42

6、23331 0WR方式5 硬件觸發選通脈沖GATEOUTCLK031244方式方式52233311 0WR工作方式GATE引腳輸入狀態所起的作用OUT引腳輸出狀態低電平下降沿上升沿高電平方式0禁止計數暫停計數置入初值后WR上升沿開始計數,由GATE的上升沿繼續計數 (軟觸發 單次)允許計數計數過程中輸出低電平。計數至0輸出高電平方式1不影響不影響置入初值后,GATE的上升沿開始計數,或重新開始計數。 (硬觸發 單次)不影響計數輸出寬度為n個CLK的低電平(單次)方式2禁止計數停 止 計數置入初值后,WR上升沿開始計數,由GATE的上升沿重新開始計數(軟觸發 循環)允許計數輸出寬度為n個CLK寬

7、度為1個CLK的負脈沖方式3禁止計數停 止 計數置入初值后,WR上升沿開始計數,由GATE的上升沿重新開始計數(軟觸發循環)允許計數輸出寬度為n個CLK的方波(重復波形)方式4禁止計數停 止 計數置入初值后,WR上升沿開始計數,由GATE的上升沿重新開始計數(軟觸發 單次)允許計數計數至0,輸出寬度為1個CLK的負脈沖(單次)方式5不影響不影響置入初值后,GATE的上升沿開始計數,或重新開始計數。 (硬觸發 單次)不影響計數計數至0,輸出寬度為1個CLK的負脈沖(單次)各種工作方式的輸出波形方式方式 0方式方式 1方式方式 2方式方式 3方式方式 4方式方式 50N0N0N0/N110NN/2

8、 N/2 0/N0N0 1N0 1N0 1討論:討論:計數開始的時刻計數開始的時刻計數開始的時刻需要注意:處理器寫入8253的計數初值只是寫入了預置寄存器,之后到來的第一個CLK輸入脈沖(需先由低電平變高,再由高變低)才將預置寄存器的初值送到減1計數器。從第二個CLK信號的下降沿,計數器才真正開始減1計數。5.1.3 8253/8254的編程的編程8253加電后的工作方式不確定8253必須初始化編程,才能正常工作寫入控制字寫入計數初值讀取計數值8254新增讀回命令D7D6D5D4D3D2D1D01 寫入方式控制字計數器計數器讀寫格式讀寫格式工作方式工作方式數制數制D7D6D5D4D3D2D1D

9、000 計數器計數器001 計數器計數器110 計數器計數器211 非法非法00 計數器鎖存命計數器鎖存命令令 01 只讀寫低字節只讀寫低字節10 只讀寫高字節只讀寫高字節11 先讀寫低字節先讀寫低字節 后讀寫高字節后讀寫高字節000 方式方式0001 方式方式1010 方式方式2011 方式方式3100 方式方式4101 方式方式50 二進制二進制1 十進制十進制控制字寫入控制字控制字寫入控制字I/O地址(地址(A1A011)示例示例2 寫入計數值選擇二進制時計數值范圍:0000HFFFFH0000H是最大值,代表65536選擇十進制(BCD碼)計數值范圍:000099990000代表最大值

10、10000計數值寫入計數器各自的計數值寫入計數器各自的I/O地址地址示例示例3 讀取計數值對8位數據線,讀取16位計數值需分兩次計數在不斷進行,應該將當前計數值先行鎖存,然后讀取:向控制字I/O地址:給8253寫入鎖存命令從計數器I/O地址:讀取鎖存的計數值讀取計數值,要注意讀寫格式和計數數制讀取計數值,要注意讀寫格式和計數數制4. 8253應用舉例在PC系列機中,使用了1片8253/8254,其內部3個計數器分別用于:日歷時鐘,包括年月日、時分秒,精確到0.01s;動態存儲器刷新;聲音,根據不同的音頻產生不同的頻率信號,驅動揚聲器。其連接如圖所示。4. 8253應用舉例 續8253/8254

11、的I/O地址范圍是040H05FH,計數器0、計數器1、計數器2的計數器端口地址分別為40H、41H和42H,控制字的端口地址為43H。3個計數器的時鐘信號CLK0CLK2由系統時鐘分頻后得到1.19318MHz提供。(1) 計數器0計數器0是一個產生實時時鐘信號的系統計時器。利用它系統可以完成日歷時鐘計數、寫操作后的電動機的自動延遲停機以及為用戶提供定時中斷調用。用戶可以使用這個中斷調用運行自己的中斷處理程序。以下為系統ROM-BIOS對計數器0的初始化編程:MOV AL, 36h ;計數器0為方式3,采用二進制計數,先低后高寫入計數值OUT 43H, AL ;寫入方式控制字MOV AX,

12、0 ;計數初值0OUT 40H, AL ;寫入低字節計數初值MOV AL, AH OUT 40H, AL ;寫入高字節計數初值(2) 計數器1計數器1專門用作DRAM定時刷新請求。PC/XT機要求在2ms內進行128此刷新操作,PC/AT機要求在4ms內進行256次刷新操作,由此可知,每隔2ms/128 = 15.6s必須進行一次刷新。這樣計數器1的GATE1接+5V,CLK1輸入為1.19318MHz方波,采用工作方式2,減“1”計數器CE的預置計數初值為18,因此在OUT2端輸出一負脈沖,周期為18/1.19318 = 15.084s,該信號作為D觸發器的觸發時鐘信號,使每隔15.084s

13、產生一個正脈沖,周期性地對DRAM進行刷新,滿足刷新要求,初始化程序如下:MOV AL, 54H ;計數器1采用工作方式2,二進制計數,寫入低8位OUT 43H, AL MOV AL, 18 ;計數初值為48OUT 41H, AL(3) 計數器2PC系列機利用計數器2的輸出控制揚聲器的發聲,作為機器的報警信號或伴音信號。計數器2的時鐘輸入CLK2輸入為1.19318MHz方波,采用工作方式3,系統中初值寄存器的內容預置為0533H(十進制1331),當GATE2為高電平時,OUT2輸出頻率為1.19318MHz/1331 = 900Hz的方波,該方波信號經放大和濾波后可以推動揚聲器發聲。實現揚

14、聲器發聲的程序如下:SpeakerPROCPUSH AXMOV AL, 0B6H ;計數器2采用工作方式3,先低后高寫入16為計數初值OUT 43H, ALPOP AXOUT 42H, AL ;寫入計數初值MOV AL, aHOUT 42, ALRETSpeakerENDP(3) 計數器2 續;揚聲器打開子程序SpeakerOnPROCPUSH AXIN AL, 61H ;讀取61H端口的控制信息OR AL, 03H ;D1D0 = PB1PB0 = 11BOUT 61H, AL ;控制打開發聲POP AXRETSpeakerOnENDP;揚聲器關閉子程序SpeakerOffPROCPUSH

15、AXIN AL, 61HAND AL, 0FCH ;D1D0 = PB1PB0 = 00BOUT 61H, AL ;控制關閉發聲POP AXRETSpeakerOffENDP(4) 軟件延時BIOS的15H號中斷調用的86號子功能,該中斷調用可以使用戶很好的實現較短時間的延時。中斷調用命令:INT 15H,子功能號:AH = 86H;入口參數:CX.DX = 延時時間的微秒值(CX是高16位、DX是低16位),出口參數:標志位CF = 0,表示成功,執行了延時,CF = 1,表示不成功,未執行延時。雖然以微妙為單位,但因為實時時鐘的最小單位是976.5625s(1/1024Hz),所以,實際上

16、該功能調用的實際延時是976s的整數倍。例如要延時 1s,可以用以下程序:MOV AH, 86H MOV CX, 15 ;1000000 微秒的高 16位 MOV DX, 16960 ;1000000微秒的低 16 位 INT 15H4. 8253應用舉例 續例:用8254作為某數據采集系統的定時器,每隔10ms用中斷方式采集一次數據,已知輸入時鐘頻率為10kHz,8259端口地址為2021H,中斷類型號為13H,8254端口地址為4043H,請為8259和8254編制初始化程序。程序源代碼:INT0 EQU 20HINT1 EQU 21HD8254 EQU 43HD8254A EQU 40H

17、 STACK SEGMENT STACK STA DW 50 DUP(?) TOP EQU LENGTH STASTACK ENDS ;初始化8254 MOV AL, 00110001B;82540號計數器,工作方式0,16位數,10進制 OUT D8254, AL MOV AX, 100 ;為計數器0送計數初值,先送低8位 OUT D8254A, AL MOV AL, AH OUT D8254A, AL ;為計數器0送計數初值高8位4. 8253應用舉例 續 CODE SEGMENT ORG 1000H ASSUME CS:CODE,DS:CODE,SS:STACKSTART: ;初始化 ;

18、設置中斷的入口地址 XOR BX,BX PUSH BX POP DS ;將DS清零 CLI ;關中斷;如果設置8259的起始中斷向量號為10;以下6個中斷向量分別分配給IRQ0、IRQ1、IRQ2、IRQ3. LEA AX,IRQ0_INTERRUPT ;中斷向量10H MOV DS:WORD PTR64,AX MOV DS:WORD PTR66,CS NOPn LEA AX,IRQ1_INTERRUPT n ;中斷向量中斷向量11Hn MOV DS:WORD PTR68,AXn MOV DS:WORD PTR70,CSn NOPn LEA AX,IRQ2_INTERRUPT n ;中斷向量中

19、斷向量12Hn MOV DS:WORD PTR72,AXn MOV DS:WORD PTR74,CSn NOPn LEA AX,IRQ3_INTERRUPT n ;中斷向量中斷向量13Hn MOV DS:WORD PTR76,AXn MOV DS:WORD PTR78,CSn NOPn PUSH CS n ;將將CS中的內容傳到中的內容傳到DSn POP DS4. 8253應用舉例 續;初始化8259 CLI ;關中斷 ;ICW1: 特征 A0 = 0 , D4 = 1 ;邊沿觸發要求上升沿后保持高電平, MOV AL, 00010011B ;邊沿觸發,單片使用,需要ICW4 OUT INT0

20、, AL JMP $+2 ;延時 ;ICW2: 特征 A0 = 1 按順序判斷 MOV AL, 00010000B ;中斷矢量從10H號開始 OUT INT1, AL JMP $+2 ;ICW4: 特征 A0 = 1 按順序判斷,ICW1設置要ICW4 ;EOI,全嵌套方式,非緩沖,86/88系統 MOV AL, 00000001 ;采用全嵌套,非緩沖,非自動結束,16位微機處理 OUT INT1, AL JMP $+24. 8253應用舉例 續 ;8259操作命令;*;OCW1: 特征 A0 = 1 按順序判斷; 初始化結束后,只有OCW1要求A0=1; 其它操作命令OCW2,OCW3 都要

21、求A0=0;* MOV DX,INT1 MOV AL,0F0H ;假設只用4個可屏蔽中斷,四個中斷全部開放 OUT DX,AL MOV CX,0FFFH LOOP $4. 8253應用舉例 續;中斷服務程序IRQ0_INTERRUPT PROC NEAR PUSH AX PUSH DX STI ;開中斷;.不處理返回CLI ;關中斷 POP DX POP AX IRETIRQ0_INTERRUPT ENDPnIRQ1_INTERRUPT PROC NEARn PUSH AXn PUSH DXn STI ;開中斷開中斷n;.不處理返回不處理返回nCLI ;關中斷關中斷n POP DXn POP

22、AXn IRETnIRQ1_INTERRUPT ENDP4. 8253應用舉例 續IRQ2_INTERRUPT PROC NEAR PUSH AX PUSH DX STI ;開中斷;.不處理返回CLI ;關中斷 POP DX POP AX IRETIRQ2_INTERRUPT ENDPnIRQ3_INTERRUPT PROC NEARn PUSH AXn PUSH DXn STI ;開中斷開中斷n?n MOV DX,INT0n MOV AL,20Hn OUT DX,ALn CLI ;關中斷關中斷n POP DXn POP AXn IRETnIRQ3_INTERRUPT ENDPnCODE ENDSnEND

溫馨提示

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

評論

0/150

提交評論