1. 程式人生 > >南郵微機介面實驗——8254定時器/計數器實驗

南郵微機介面實驗——8254定時器/計數器實驗

8254概述:

8254內部三個獨立的16位計數器,具有6種工作方式,計數初值的數值可以設定為BCD碼或者二進位制。最高頻率10MHZ。

控制字以及初值寫入:

程式通過巨集定義,定義了控制口地址213,以及三個計數器的地址210、211、212(連線與此地址要一致)。

首先將控制口地址傳輸到DX暫存器,將計數器0控制值寫入到AL,通過DX間址定址的方式將計數器0的控制字寫入控制值暫存器;

然後,將計數器0的地址傳輸到DX,將計數器0的初值傳輸到AL,通過DX間址定址將計數器0初值寫入,計數器0開始工作。

計數器1和2控制值和初值寫入方式類似。

控制字分析:

計數器0控制字:00010110B。

表示:選擇0號計數器,寫入初值時,只寫入低8位,高8位置0,工作在方式3,計數初值為2進位制。

計數器1和計數器2的控制字與上述類似,只是計數器選擇不同。

頻率計算:

燈0的頻率: 100KHZ/65536=1.5HZ

燈1的頻率:10KHZ/250=40HZ

燈2的頻率:1KHZ/100=10HZ

程式碼:
.MODEL SMALL
.486
CODE  SEGMENT USE16
		ASSUME CS:CODE
BEG:		JMP START
CCONPORT    EQU	    213H
CCONBT1	    EQU		00010110B
CCONBIT2	EQU		01010110B
CCONBIT3	EQU		10010110B
CDPORT1	    EQU		210H
CDPORT2   	EQU		211H
CDPORT3 	EQU		212H
CHDBIT1     EQU		00H
CHDBIT2	    EQU		250
CHDBIT3	    EQU		100

START:  NOP
        MOV      DX,CCONPORT
		MOV      AL,CCONBT1
		OUT      DX,AL
		MOV      DX,CDPORT1
		MOV      AL,CHDBIT1
		OUT      DX,AL
		
		MOV      DX,CCONPORT
		MOV      AL,CCONBIT2
		OUT      DX,AL
		MOV      DX,CDPORT2
		MOV      AL,CHDBIT2
		OUT      DX,AL
		MOV      DX,CCONPORT
		MOV      AL,CCONBIT3
		OUT      DX,AL
		MOV      DX,CDPORT3
		MOV      AL,CHDBIT3
		OUT      DX,AL
WT:		NOP
        JMP      WT
CODE    ENDS
                 END   BEG