1. 程式人生 > >8254定時/計數器應用

8254定時/計數器應用

 8254定時/計數器應用實驗

1  實驗目的

1. 掌握8254的工作方式及應用程式設計。

2. 掌握8254典型應用電路的接法。

2  實驗裝置

PC機一臺,TD-PITE實驗裝置一套。

3  實驗內容

1. 計數應用實驗。編寫程式,應用8254的計數功能,使用單次脈衝模擬計數,使每當按動‘KK1+’5次後,產生一次計數中斷,並在螢幕上顯示一個字元‘M’。

2. 定時應用實驗。編寫程式,應用8254的定時功能,產生一個1s的方波。

4  實驗原理

8254是Intel公司生產的可程式設計間隔定時器。是8253的改進型,比8253具有更優良的效能。8254具有以下基本功能:

1)有3個獨立的16位計數器。

2)每個計數器可按二進位制或十進位制(BCD)計數。

3)每個計數器可程式設計工作於6種不同工作方式。

4)8254每個計數器允許的最高計數頻率為10MHz(8253為2MHz)。

5)8254有讀回命令(8253沒有),除了可以讀出當前計數單元的內容外,還可以讀出狀態暫存器的內容。

6)計數脈衝可以是有規律的時鐘訊號,也可以是隨機訊號。計數初值公式為:

n=fCLKi÷fOUTi、其中fCLKi是輸入時鐘脈衝的頻率,fOUTi是輸出波形的頻率。

4.27是8254的內部結構框圖和引腳圖,它是由與CPU的介面、內部控制電路和三個計數器組成。8254的工作方式如下述:

1)方式0:計數到0結束輸出正躍變訊號方式。

2)方式1:硬體可重觸發單穩方式。

3)方式2:頻率發生器方式。  

4)方式3:方波發生器。

5)方式4:軟體觸發選通方式。   

6)方式5:硬體觸發選通方式。

4.27  8254的內部介面和引腳

8254的控制字有兩個:一個用來設定計數器的工作方式,稱為方式控制字;另一個用來設定讀回命令,稱為讀回控制字。這兩個控制字共用一個地址,由標識位來區分。控制字格式如表4.3—4.5所示。

4.3  8254的方式控制字格式

D7

D6

D5

D4

D3

D2

D1

D0

計數器選擇

讀/寫格式選擇

工作方式選擇

計數碼制選擇

00-計數器0

01-計數器1

10-計數器2

11-讀出控制

字標誌

00-鎖存計數值

01-讀/寫低8位

10-讀/寫高8位

11-先讀/寫低8位

    再讀/寫高8位

000-方式0

001-方式1

010-方式2

011-方式3

100-方式4

101-方式5

0-二進位制數

1-十進位制數

4.4  8254讀出控制字格式

D7

D6

D5

D4

D3

D2

D1

D0

1

1

0-鎖存計數值

0-鎖存狀態資訊

計數器選擇(同方式控制字)

0

4.5  8254狀態字格式

D7

D6

D5

D4

D3

D2

D1

D0

OUT引腳現行狀態

1-高電平

0-低電平

計數初值是否裝入

1-無效計數

0-計數有效

計數器方式(同方式控制字)

 

8254實驗單元電路圖如下圖所示:

 

4.28  8254實驗電路原理圖

5  實驗步驟

1.  計數應用實驗

編寫程式,將8254的計數器0設定為方式3,計數值為十進位制數4,用單次脈衝KK1+作為CLK0時鐘,OUT0連線MIR7,每當KK1+按動5次後產生中斷請求,在螢幕上顯示字元“M”。

實驗步驟:

1)實驗接線如圖4.29所示。

2)編寫實驗程式,經編譯、連結無誤後裝入系統。

3)執行程式,按動KK1+產生單次脈衝,觀察實驗現象。

4)改變計數值,驗證8254的計數功能。

 

4.29  8254計數應用實驗接線圖

實驗程式清單(A82541.ASM)


A8254    EQU  06C0H   ;8254計數器0埠地址
B8254    EQU  06C2H   ;8254計數器1埠地址
C8254    EQU  06C4H   ;8254計數器2埠地址
CON8254  EQU  06C6H   ;8254 控制暫存器埠地址

SSTACK	SEGMENT STACK
		DW 32 DUP(?)
SSTACK	ENDS

CODE		SEGMENT
		ASSUME CS:CODE, SS:SSTACK
START:	PUSH DS
		MOV AX, 0000H
		MOV DS, AX
		MOV AX, OFFSET IRQ7		;取中斷入口地址
		MOV SI, 003CH				;中斷向量地址
		MOV [SI], AX				;填IRQ7的偏移向量
		MOV AX, CS				;段地址
		MOV SI, 003EH
		MOV [SI], AX				;填IRQ7的段地址向量
		CLI                         ;中斷遮蔽clear interrupt
		POP DS

		;初始化主片8259
		MOV AL, 11H				;0001 0001 級聯,邊沿觸發,要ICW4
		OUT 20H, AL				;ICW1
		MOV AL, 08H				;0000 1000 中斷型別號從8開始
		OUT 21H, AL				;ICW2
		MOV AL, 04H				;0000 0100 
		OUT 21H, AL				;ICW3
		MOV AL, 01H				;0000 0001 非緩衝方式,8086/8088配置
		OUT 21H, AL				;ICW4
		MOV AL, 6FH				;OCW1 0110 1111 IR7,IR4引腳的中斷開放
		OUT 21H, AL

		;8254
		MOV DX, CON8254
		MOV AL, 10H				;0001 0000計數器0,方式0
		OUT DX, AL
		MOV DX, A8254
		MOV AL, 04H
		OUT DX, AL
		STI                         ;開中斷

AA1:		JMP AA1					;無限迴圈

IRQ7:	MOV DX, A8254
		MOV AL, 04H				;0000 0100
		OUT DX, AL
		MOV AH, 02H				;M 4DH
		MOV DL, 4DH
		INT 21H						
		MOV AH, 02H
		MOV DL, 20H			
		INT 21H			
		MOV AL, 20H
		OUT 20H, AL				;中斷結束命令
		IRET
CODE		ENDS
		END  START

 

2.  定時應用實驗

編寫程式,將8254的計數器0和計數器1都設定為方式3,用訊號源1MHz作為CLK0時鐘,OUT0為波形輸出1ms方波,再通過CLK1輸入,OUT1輸出1s方波。

實驗步驟:

1)接線圖如圖4.30所示。

2)根據實驗內容,編寫實驗程式,經編譯、連結無誤後裝入系統。

3)單擊按鈕,執行實驗程式,8254的OUT1會輸出1s的方波。

4)用示波器觀察波形的方法:單擊虛擬儀器選單中的按鈕或直接單擊工具欄的按鈕,在新彈出的示波器介面上單擊按鈕執行示波器,就可以觀測出OUT1輸出的波形。

實驗程式清單(A82542.ASM)

A8254    EQU  06C0H   ;8254計數器0埠地址
B8254    EQU  06C2H   ;8254計數器1埠地址
C8254    EQU  06C4H   ;8254計數器2埠地址
CON8254  EQU  06C6H   ;8254 控制暫存器埠地址

SSTACK	SEGMENT STACK
		DW 32 DUP(?)
SSTACK	ENDS
CODE		SEGMENT
		ASSUME CS:CODE
START:	MOV DX, CON8254			;8254
		MOV AL, 36H				;0011 0110計數器0,方式3
		OUT DX, AL
		MOV DX, A8254
		MOV AL, 0E8H                ;03E8H  --> 1000
		OUT DX, AL
		MOV AL, 03H
		OUT DX, AL
		MOV DX, CON8254			;8254
		MOV AL, 76H				;0111 0110計數器1,方式3
		OUT DX, AL
		MOV DX, B8254
		MOV AL, 0E8H                ;03E8H  --> 1000
		OUT DX, AL
		MOV AL, 03H
		OUT DX, AL
AA1:		JMP AA1
CODE		ENDS
		END  START

 

  4.30  8254定時應用實驗接線圖

附表  輸入/輸出介面編址

 

訊號線

編址空間

主片8259

 

20H、21H

從片8259

 

A0H、A1H

擴充套件I/O介面

IOY0

0600H~063FH

IOY1

0640H~067FH

IOY2

0680H~06BFH

IOY3

06C0H~06FFH

附表  INT 10H 使用說明

入口:AH=01H,AL=資料

功能:寫AL中的資料到屏上

入口:AH=06H,DS:BX=字串首址,且字串尾用00H填充

功能:顯示一字串,直到遇到00H為止

附表 INT 21H使用說明

入口:AH=00H或AH=4CH

功能:程式終止

入口:AH=01H

功能:讀鍵盤輸入到AL中並回顯

入口:AH=02H,DL=資料

功能:寫DL中的資料到顯示屏

入口:AH=08H

功能:讀鍵盤輸入到AL中無回顯

入口:AH=09H,DS:DX=字串首地址,字串以 '$' 結束

功能:顯示字串,直到遇到 '$' 為止

入口:AH=0AH,DS:DX=緩衝區首地址,(DS:DX)=緩衝區最大字元數,

(DS:DX+1)=實際輸入字元數,(DS:DX+2)=輸入字串起始地址

功能:讀鍵盤輸入的字串到DS:DX指定緩衝區中並以回車結束