天天看點

實驗5 8254定時/計數器應用實驗【微機原理】【實驗】

實驗5 8254定時/計數器應用實驗【微機原理】【實驗】

  • ​​前言​​
  • ​​推薦​​
  • ​​3.1 8254定時/計數器應用實驗​​
  • ​​3.1.1實驗目的​​
  • ​​3.1.2實驗内容​​
  • ​​3.1.3實驗原理​​
  • ​​3.1.4實驗說明及步驟​​
  • ​​3.1.5實驗提示​​
  • ​​最後​​

前言

以下内容源自微機原理實驗指導書

僅供學習交流使用

3.1 8254定時/計數器應用實驗

3.1.1實驗目的

1、掌報8254的工作方式及應用程式設計;

2、掌據8254的典型應用電路接法;

3、學習8254在PC系統中的典型應用方法。

3.1.2實驗内容

1、通讨定驗簡擔很的單次脈沖單元,按動微動開關向計數器依次發出單脈沖,觀察每來一個脈沖時計新目前計數值的變化情況。

2、定時應用定驗。編寫程式,應用8254的定時功能,産生一個1s的方波,并用本裝置的示波器功能觀察。

3.1.3實驗原理

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是輸出波形的頻率。

圖3-1-1是8254的内部結構框圖和引腳圖,它是由與CPU的接口、内部控制電路和三個計數器組成。8255的工作方式如下述:

(1)方式0:計數到0結束輸出正躍變信号方式

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

(3)方式2:頻率發生器方式,

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

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

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

實驗5 8254定時/計數器應用實驗【微機原理】【實驗】

圖3-1-18254的内部接口和引腳

8254的控制字有兩個:一個用來設定計數器的工作方式,稱為方式控制字;另一個用來設定讀回指令,稱為讀回控制字。這兩個控制字共用一個位址,由辨別位來區分。方式控制字格式如表3-1-1所示。讀回控制字格式如表3-1-2所示。當讀回控制字的D4位為0時,由該讀回控制字D1-D2位指定的計數器的狀态寄存器内容将鎖存到狀态寄存器中。狀态字格式如表3-1-3所示。

實驗5 8254定時/計數器應用實驗【微機原理】【實驗】

8254實驗電路原理圖如下圖所示。

實驗5 8254定時/計數器應用實驗【微機原理】【實驗】

3.1.4實驗說明及步驟

1、計數應用實驗

圖3-1-2為參考連線圖。OUT0可以連接配接到一個LED,以觀察其輸出的高低電平值。将計數器0設定為方式0,計數初值N可自行決定,按動單次脈沖單形(位于實驗台底都中間)的微動開關産生單次脈沖送CLK。編寫程式在螢幕上顯示計數器0的目前計數值。

實驗步驟如下所述:

(1)按實驗内容編寫程式,實作8254對KK1+按鍵次數的響應

-------------理論知識------------

1、确認端口位址

IO基位址0600H
XR1---A0
XR2---A1
位址範圍600H~603H
0#計數器端口位址:0600H
1#計數器端口位址:0602H
2#計數器端口位址:0604H
控制寄存器端口位址:0606H      

2、确定工作方式與計數初值

計數器0工作于方式0,計數結束産生中斷方式
讀
寫
      

3、确定控制字

寫
00 11 000 0
讀
00 00 000 0      

4、初始化程式

A EQU 0600H
B EQU 0602H
C EQU 0604H
S EQU 0606H
;N=9;計數初值
CODE SEGMENT
  ASSUME CS:CODE
START:
;初始化計數器0程式
  MOV  AL,00110000B
  MOV DX,S
  OUT  DX,AL             ;送控制字
  MOV DX,A          
  MOV  AL,09H           ;9 =0000 1001
  OUT  DX,AL             ;送低8位      
  MOV  AL,00H           ;9 =0000 0000
  OUT  DX,AL             ;送高8位
;讀取計數器0目前的計數值到CX中
  MOV  AL,00000000B
  MOV DX,S
  OUT  DX,AL             ;送控制字
  MOV DX,A        
  IN  AL,DX             ;讀低8位     
  MOV  CL,AL              
  IN  AL,DX             ;送高8位
  MOV CH,AL
CODE ENDS
  END START      

-------------理論知識------------

-------------具體實踐------------

​​8254定時/計數器應用實驗​​

;IOY0           EQU   0A000H        ;片選IOY0對應的端口始位址
IOY0           EQU   0600H        ;片選IOY0對應的端口始位址      
;T8254-1.asm
 
;檢視端口資源配置設定情況,記錄實驗系統I/O端口始位址
 
INTR_IVADD     EQU   003CH        ;INTR對應的中斷矢量位址
 
IOY0           EQU   0600H        ;片選IOY0對應的端口始位址
MY8254_COUNT0  EQU   IOY0+00H*2   ;8254計數器0端口位址
MY8254_COUNT1  EQU   IOY0+01H*2   ;8254計數器1端口位址
MY8254_COUNT2  EQU   IOY0+02H*2   ;8254計數器2端口位址
MY8254_MODE    EQU   IOY0+03H*2   ;8254控制寄存器端口位址
                              
STACK1 SEGMENT STACK
        DW 256 DUP(?)
STACK1 ENDS
 
DATA SEGMENT 
CS_BAK   DW  ?                    ;儲存INTR原中斷處理程式入口段位址的變量
IP_BAK   DW  ?                    ;儲存INTR原中斷處理程式入口偏移位址的變量
IM_BAK   DB  ?                    ;儲存INTR原中斷屏蔽字的變量
STR1     DB  'COUNT: $'           ;顯示的字元串
DATA ENDS
 
CODE SEGMENT
        ASSUME CS:CODE,DS:DATA
 
START: MOV AX,DATA
       MOV DS,AX
       CLI
 
       MOV AX,0000H               ;替換INTR的中斷矢量
       MOV ES,AX
       MOV DI,INTR_IVADD          
       MOV AX,ES:[DI]
       MOV IP_BAK,AX              ;儲存INTR原中斷處理程式入口偏移位址
       MOV AX,OFFSET MYISR
       MOV ES:[DI],AX             ;設定目前中斷處理程式入口偏移位址
 
       ADD DI,2
       MOV AX,ES:[DI]
       MOV CS_BAK,AX              ;儲存INTR原中斷處理程式入口段位址
       MOV AX,SEG MYISR
       MOV ES:[DI],AX             ;設定目前中斷處理程式入口段位址
 
       IN  AL,21H
       MOV IM_BAK,AL              ;儲存INTR原中斷屏蔽字
       AND AL,7FH
       OUT 21H,AL
 
       STI
       MOV DX,OFFSET STR1         ;顯示字元串
       MOV AH,9
       INT 21H
 
       MOV DX,MY8254_MODE         ;初始化8254工作方式
       MOV AL,10H                 ;計數器0,方式0  
       OUT DX,AL             
 
       MOV DX,MY8254_COUNT0       ;裝入計數初值
       MOV AL,4
       OUT DX,AL
 
WAIT1: MOV AH,1                   ;判斷是否有按鍵按下
       INT 16H
       JZ  WAIT1                  ;無按鍵則跳回繼續等待,有則退出
 
QUIT:  CLI
 
       MOV AX,0000H               ;恢複INTR原中斷矢量
       MOV ES,AX
       MOV DI,INTR_IVADD  
       MOV AX,IP_BAK              ;恢複INTR原中斷處理程式入口偏移位址
       MOV ES:[DI],AX
       ADD DI,2
       MOV AX,CS_BAK              ;恢複INTR原中斷處理程式入口段位址
       MOV ES:[DI],AX
 
       MOV AL,IM_BAK              ;恢複INTR原中斷屏蔽寄存器的屏蔽字
       OUT 21H,AL
       STI
 
       MOV AX,4C00H               ;傳回到DOS
       INT 21H
 
MYISR PROC NEAR                   ;中斷處理程式MYISR
       PUSH AX
       MOV AL,35H
       MOV AH,0EH
       INT 10H
       MOV AL,20H
       INT 10H
 
       MOV DX,MY8254_COUNT0       ;重裝計數初值
       MOV AL,4
       OUT DX,AL
 
OVER:  MOV AL,20H                 ;向PC機内部8259發送中斷結束指令
       OUT 20H,AL
       POP AX
       IRET
       
MYISR ENDP
       
CODE ENDS
     END START      

-------------具體實踐------------

(2)設計實驗線路圖,完成線路連接配接。

(3)打開實驗箱電闆,運作程式,按動KK1+微動開關,觀察開關按動後螢幕顯示的計數值和LED燈的變化

實驗5 8254定時/計數器應用實驗【微機原理】【實驗】

2、定時應用實驗

将8254的計數器0和計數器1都設定為方式3,用信号源1MHz作為CLKO時鐘,OUTO為被形輸出 1ms方波,再通過CLK1輸入,OUT1輸出1s方波。

實驗5 8254定時/計數器應用實驗【微機原理】【實驗】

實驗步驟:

(1)接線圖如圖3-1-3所示,

(2)根據實驗内容,編寫實驗程式,經編譯、連結無提後裝入系統

-------------理論知識------------

1、确認端口位址

IO基位址0600H
XR1---A0
XR2---A1
位址範圍600H~603H
0#計數器端口位址:6C0H
1#計數器端口位址:6C2H
2#計數器端口位址:6C4H
控制寄存器端口位址:6C6H      

2、确定工作方式與計數初值

計數器0工作于方式3,方波發生器
計數初值=輸入頻率/輸出頻率
   1000=1M /1000   

        
計數器1設定為方式3,方波發生器
計數初值=輸入頻率/輸出頻率
   1   =1000    /1000   
      

3、确定控制字

00 11 011 0
01 11 011 0      

4、初始化程式

A EQU 06C0H
B EQU 06C2H
C EQU 06C4H
S EQU 06C6H
CODE SEGMENT
  ASSUME CS:CODE
START:
;初始化計數器0
  MOV  AL,00110110B
  MOV DX,S
  OUT  DX,AL             ;送控制字
  MOV DX,A
  MOV  AL,03E8H           ;1000 =0000 03e8
  OUT  DX,AL             ;送低8位      
  MOV  AL,0H              ;1000 =0000 0000
  OUT  DX,AL             ;送高8位
;初始化計數器1
  MOV  AL,01110110B
  MOV DX,S
  OUT  DX,AL             ;送控制字
  MOV DX,B
  MOV  AL,03E8H           ;1000 =0000 03e8
  OUT  DX,AL             ;送低8位      
  MOV  AL,0H              ;1000 =0000 0000
  OUT  DX,AL             ;送高8位
CODE ENDS
  END START      

-------------理論知識------------

-------------具體實踐------------

​​8254定時/計數器應用實驗​​

;IOY0           EQU   0A000H        ;片選IOY0對應的端口始位址
IOY0           EQU   0600H        ;片選IOY0對應的端口始位址      
;T8254-2.asm
;8254定時應用實驗  輸出1Hz
 
;檢視端口資源配置設定情況,記錄實驗系統I/O端口始位址
 
;****************根據檢視端口資源修改下列符号值*******************
IOY0           EQU   0600H         ;片選IOY0對應的端口始位址
;*****************************************************************
MY8254_COUNT0  EQU   IOY0+00H*2   ;8254計數器0端口位址
MY8254_COUNT1  EQU   IOY0+01H*2   ;8254計數器1端口位址
MY8254_COUNT2  EQU   IOY0+02H*2   ;8254計數器2端口位址
MY8254_MODE    EQU   IOY0+03H*2   ;8254控制寄存器端口位址
                              
STACK1 SEGMENT STACK
        DW 256 DUP(?)
STACK1 ENDS
 
CODE SEGMENT
        ASSUME CS:CODE
 
START: MOV DX,MY8254_MODE         ;初始化8254工作方式
       MOV AL,76H                 ;計數器1,方式3
       OUT DX,AL
                
       MOV DX,MY8254_COUNT1       ;裝入計數初值
       MOV AL,64H                 ;100分頻
       OUT DX,AL
       MOV AL,00H
       OUT DX,AL
 
       MOV DX,MY8254_MODE         ;初始化8254工作方式
       MOV AL,36H                 ;計數器0,方式3
       OUT DX,AL
                
       MOV DX,MY8254_COUNT0       ;裝入計數初值
       MOV AL,00H                 ;18432分頻
       OUT DX,AL 
       MOV AL,48H
       OUT DX,AL
       
QUIT:  MOV AX,4C00H               ;結束程式退出
       INT 21H
       
CODE ENDS
     END START      

-------------具體實踐------------

(3)單擊【RUN】按鈕,運作實驗程式,8254的OUTI會輸出1的方波,可用軟體自帶的示被器功能進行觀察。

(4)用示波器觀察波形的方法:單擊虛拟儀器菜單中的【示波器】按鈕或直接單擊工具欄的按【】鈕,在新彈出的示波器界而上單擊【】按鈕運作示波器,就可以觀測出OUT1輸出的波形。

本實驗現象結果如圖3-1-4所示,

3.1.5實驗提示

繼續閱讀