8254定时/计数器实验
轉(zhuǎn)載的:
https://blog.csdn.net/as1072966956/article/details/80718843
8254定時/計(jì)數(shù)器應(yīng)用實(shí)驗(yàn)
1 實(shí)驗(yàn)?zāi)康?/p>
掌握8254的工作方式及應(yīng)用編程。
掌握8254典型應(yīng)用電路的接法。
2 實(shí)驗(yàn)設(shè)備
PC機(jī)一臺,TD-PITE實(shí)驗(yàn)裝置一套。
3 實(shí)驗(yàn)內(nèi)容
計(jì)數(shù)應(yīng)用實(shí)驗(yàn)。編寫程序,應(yīng)用8254的計(jì)數(shù)功能,使用單次脈沖模擬計(jì)數(shù),使每當(dāng)按動‘KK1+’5次后,產(chǎn)生一次計(jì)數(shù)中斷,并在屏幕上顯示一個字符‘M’。
定時應(yīng)用實(shí)驗(yàn)。編寫程序,應(yīng)用8254的定時功能,產(chǎn)生一個1s的方波。
4 實(shí)驗(yàn)原理
8254是Intel公司生產(chǎn)的可編程間隔定時器。是8253的改進(jìn)型,比8253具有更優(yōu)良的性能。8254具有以下基本功能:
(1)有3個獨(dú)立的16位計(jì)數(shù)器。
(2)每個計(jì)數(shù)器可按二進(jìn)制或十進(jìn)制(BCD)計(jì)數(shù)。
(3)每個計(jì)數(shù)器可編程工作于6種不同工作方式。
(4)8254每個計(jì)數(shù)器允許的最高計(jì)數(shù)頻率為10MHz(8253為2MHz)。
(5)8254有讀回命令(8253沒有),除了可以讀出當(dāng)前計(jì)數(shù)單元的內(nèi)容外,還可以讀出狀態(tài)寄存器的內(nèi)容。
(6)計(jì)數(shù)脈沖可以是有規(guī)律的時鐘信號,也可以是隨機(jī)信號。計(jì)數(shù)初值公式為:
n=fCLKi÷fOUTi、其中fCLKi是輸入時鐘脈沖的頻率,fOUTi是輸出波形的頻率。
圖4.27是8254的內(nèi)部結(jié)構(gòu)框圖和引腳圖,它是由與CPU的接口、內(nèi)部控制電路和三個計(jì)數(shù)器組成。8254的工作方式如下述:
(1)方式0:計(jì)數(shù)到0結(jié)束輸出正躍變信號方式。
(2)方式1:硬件可重觸發(fā)單穩(wěn)方式。
(3)方式2:頻率發(fā)生器方式。
(4)方式3:方波發(fā)生器。
(5)方式4:軟件觸發(fā)選通方式。
(6)方式5:硬件觸發(fā)選通方式。
圖4.27 8254的內(nèi)部接口和引腳
8254的控制字有兩個:一個用來設(shè)置計(jì)數(shù)器的工作方式,稱為方式控制字;另一個用來設(shè)置讀回命令,稱為讀回控制字。這兩個控制字共用一個地址,由標(biāo)識位來區(qū)分。控制字格式如表4.3—4.5所示。
表4.3 8254的方式控制字格式
D7
D6
D5
D4
D3
D2
D1
D0
計(jì)數(shù)器選擇
讀/寫格式選擇
工作方式選擇
計(jì)數(shù)碼制選擇
00-計(jì)數(shù)器0
01-計(jì)數(shù)器1
10-計(jì)數(shù)器2
11-讀出控制
字標(biāo)志
00-鎖存計(jì)數(shù)值
01-讀/寫低8位
10-讀/寫高8位
11-先讀/寫低8位
再讀/寫高8位
000-方式0
001-方式1
010-方式2
011-方式3
100-方式4
101-方式5
0-二進(jìn)制數(shù)
1-十進(jìn)制數(shù)
表4.4 8254讀出控制字格式
D7
D6
D5
D4
D3
D2
D1
D0
1
1
0-鎖存計(jì)數(shù)值
0-鎖存狀態(tài)信息
計(jì)數(shù)器選擇(同方式控制字)
0
表4.5 8254狀態(tài)字格式
D7
D6
D5
D4
D3
D2
D1
D0
OUT引腳現(xiàn)行狀態(tài)
1-高電平
0-低電平
計(jì)數(shù)初值是否裝入
1-無效計(jì)數(shù)
0-計(jì)數(shù)有效
計(jì)數(shù)器方式(同方式控制字)
8254實(shí)驗(yàn)單元電路圖如下圖所示:
圖4.28 8254實(shí)驗(yàn)電路原理圖
5 實(shí)驗(yàn)步驟
編寫程序,將8254的計(jì)數(shù)器0設(shè)置為方式3,計(jì)數(shù)值為十進(jìn)制數(shù)4,用單次脈沖KK1+作為CLK0時鐘,OUT0連接MIR7,每當(dāng)KK1+按動5次后產(chǎn)生中斷請求,在屏幕上顯示字符“M”。
實(shí)驗(yàn)步驟:
(1)實(shí)驗(yàn)接線如圖4.29所示。
(2)編寫實(shí)驗(yàn)程序,經(jīng)編譯、鏈接無誤后裝入系統(tǒng)。
(3)運(yùn)行程序,按動KK1+產(chǎn)生單次脈沖,觀察實(shí)驗(yàn)現(xiàn)象。
(4)改變計(jì)數(shù)值,驗(yàn)證8254的計(jì)數(shù)功能。
圖4.29 8254計(jì)數(shù)應(yīng)用實(shí)驗(yàn)接線圖
實(shí)驗(yàn)程序清單(A82541.ASM)
A8254 EQU 06C0H ;8254計(jì)數(shù)器0端口地址
B8254 EQU 06C2H ;8254計(jì)數(shù)器1端口地址
C8254 EQU 06C4H ;8254計(jì)數(shù)器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 ;填I(lǐng)RQ7的偏移矢量
MOV AX, CS ;段地址
MOV SI, 003EH
MOV [SI], AX ;填I(lǐng)RQ7的段地址矢量
CLI ;中斷屏蔽clear interrupt
POP DS
AA1: JMP AA1 ;無限循環(huán)
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 ;中斷結(jié)束命令
IRET
CODE ENDS
END START
編寫程序,將8254的計(jì)數(shù)器0和計(jì)數(shù)器1都設(shè)置為方式3,用信號源1MHz作為CLK0時鐘,OUT0為波形輸出1ms方波,再通過CLK1輸入,OUT1輸出1s方波。
實(shí)驗(yàn)步驟:
(1)接線圖如圖4.30所示。
(2)根據(jù)實(shí)驗(yàn)內(nèi)容,編寫實(shí)驗(yàn)程序,經(jīng)編譯、鏈接無誤后裝入系統(tǒng)。
(3)單擊按鈕,運(yùn)行實(shí)驗(yàn)程序,8254的OUT1會輸出1s的方波。
(4)用示波器觀察波形的方法:單擊虛擬儀器菜單中的按鈕或直接單擊工具欄的按鈕,在新彈出的示波器界面上單擊按鈕運(yùn)行示波器,就可以觀測出OUT1輸出的波形。
實(shí)驗(yàn)程序清單(A82542.ASM)
A8254 EQU 06C0H ;8254計(jì)數(shù)器0端口地址
B8254 EQU 06C2H ;8254計(jì)數(shù)器1端口地址
C8254 EQU 06C4H ;8254計(jì)數(shù)器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計(jì)數(shù)器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計(jì)數(shù)器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定時應(yīng)用實(shí)驗(yàn)接線圖
附表 輸入/輸出接口編址
信號線
編址空間
主片8259
20H、21H
從片8259
A0H、A1H
擴(kuò)展I/O接口
IOY0
0600H~063FH
IOY1
0640H~067FH
IOY2
0680H~06BFH
IOY3
06C0H~06FFH
附表 INT 10H 使用說明
入口:AH=01H,AL=數(shù)據(jù)
功能:寫AL中的數(shù)據(jù)到屏上
入口:AH=06H,DS:BX=字串首址,且字串尾用00H填充
功能:顯示一字串,直到遇到00H為止
附表 INT 21H使用說明
入口:AH=00H或AH=4CH
功能:程序終止
入口:AH=01H
功能:讀鍵盤輸入到AL中并回顯
入口:AH=02H,DL=數(shù)據(jù)
功能:寫DL中的數(shù)據(jù)到顯示屏
入口:AH=08H
功能:讀鍵盤輸入到AL中無回顯
入口:AH=09H,DS:DX=字符串首地址,字符串以 ‘′結(jié)束功能:顯示字符串,直到遇到′' 結(jié)束 功能:顯示字符串,直到遇到 '′結(jié)束功能:顯示字符串,直到遇到′’ 為止
入口:AH=0AH,DS:DX=緩沖區(qū)首地址,(DS:DX)=緩沖區(qū)最大字符數(shù),
(DS:DX+1)=實(shí)際輸入字符數(shù),(DS:DX+2)=輸入字符串起始地址
功能:讀鍵盤輸入的字符串到DS:DX指定緩沖區(qū)中并以回車結(jié)束
作者:hasp_Jason
來源:CSDN
原文:https://blog.csdn.net/as1072966956/article/details/80718843
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請附上博文鏈接!
總結(jié)
以上是生活随笔為你收集整理的8254定时/计数器实验的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 联想笔记本无法切换独显、强行切换提示核芯
- 下一篇: Android学习攻略:手把手教你循序渐