8254 能用於多種應用場合,例如外部事件計數器、可編程方波頻率發生器、分頻器、實時時鐘以及程控單脈衝發生器等。
本接口卡的功能組成非常靈活,通過跨接插座的不同連接方式,可以使8254的時鐘輸入端 CLK 與被測現場信號相連,或者與卡上基準時鐘相連,也可以將二至三級計數器串連使用。對於8254 的啓停控制端 GATE,同樣可以通過跨接插座的選擇,使其或者受程序的控制或者設置爲外部控制。
8254的全部功能是由CPU編程設定的。CPU通過輸出指令給8254裝入控制字,從而設定其功能。
例題:
例1:端口地址爲60H~63H,選擇1#,工作方式2,計數初值爲5533H,BCD碼制。其初始化程序段爲:
MOV AL,01110101B ;寫入控制命令字【因爲是先寫入低位字節,再寫入高字節,注意對照上面的表2可知道RL1,RL0應該都是1】
OUT 63H,AL
MOV AL,33H ;寫入計數初值低字節
OUT 61H,AL
MOV AL,55H ;寫入計數初值高字節
OUT 61H,AL
例2:端口地址爲60H~63H,讀出1#當前計數值。
【這裏使用的是82C54的鎖存命令 ,只需要讀到1#這個端口的數據,後面的就不用管,所以後面的基本爲0。MOV AL,01000000B】
MOV AL,01000000B ;寫入控制命令字,鎖存操作
OUT 63H,AL
IN AL,61H ;讀出 1#當前計數值
複習
1.8253有__3__個計數器,每個計數器是__16__位的。
2.8253有__6___種工作方式。
3.欲使8253的一個計數器產生最大的定時時間, 寫入計數器的計數初值爲____0____。
4.8253的引腳CS、RD、WR、A1、A0爲___B___時,表示對計數器1設置計數初值。 A.01000 B.01001 C.00101 D.10101
82C54的三個計數器按照各工作方式寄存器中控制字的設置進行工作。
可以選擇的工作方式只有六種【注意是隻有六種】。
這六種方式分別是:
方式0:計數結束時中斷。編程後自動啓動,計數器減1計數,計數到終點(減至0 )後輸出高電平,可用於中斷請求信號,GATE爲低電平時停止計數,回到高電平後繼續往下計數。再次啓動要重新裝入計數值或重新編程。
方式1:可編程單脈衝輸出。GATE上升沿進行初始化並開始計數。輸出低電平的寬度等於計數時間。單脈衝輸出可用 GATE 上升沿多次觸發。
方式2:比率發生器。編程後重復地循環計數。計數到終點時輸出一個時鐘週期寬度的低電平脈衝,自動初始化後繼續計數。用GATE的上升沿初始化,並開始計數。GATE爲低電平時停止計數。
方式3:方波發生器。這種方式是在編程後重復地循環計數,輸出波形爲方波。如果初始計數值爲偶數,每個時鐘輸入脈衝使計數器減2,達到計數終點時輸出電平改變。如果初始計數值爲奇數,則輸出高電平 時第一個時鐘輸入脈衝使計數器減1,隨後每個輸入脈衝使計數器減2;輸出爲低電平時第一個時鐘輸入脈衝使計數器減3,隨後每個輸入脈衝使計數器減2,到達計數終點時輸出電平改變,計數器自動初始化後繼續計數。用GATE的上升沿初始化並開始計數,GATE爲低電平時停止計數。
方式4:軟件啓動選通脈衝輸出。編程後自動啓動,計數到終點後輸出一個時鐘週期的低電平脈衝。用GATE的上升沿初始化並開始計數,GATE爲低電平時停止計數。
方式5:硬件啓動選通脈衝輸出。編程後,等待 GATE 上升沿進行初始化並開始計數,計數到終點後輸出一個時鐘週期的低電平脈衝,計數器開始計數後不受 GATE 信號電平的影響,這種選通脈衝的輸出可用GATE的上升沿多次觸發。在工作方式控制字中,如果設置計數器鎖存操作,則該控制字中工作方式選擇位M1、M0 和計數方式選擇位BCD 無效。即設置鎖存操作時不影響計數器的工作方式,計數器鎖存操作,是在計數器計數過程中,在不影響正在進行的計數操作的條件下,把當前的計數值鎖存到寄存器,供 CPU 讀取,這時在工作方式控制字中,SC1、SC0指定要鎖存的計數器,RL1、RL0=00表示鎖存操作,其餘4位無效,計數器按原來設定的方式工作。