定時/計數器都有定時或對外部事件計數的功能。通常,定時/計數器歸納起來一般有3種類型: 硬件計數器 可在簡單軟件控制下計數,特點是成本低,使用方便,但是專用性強,使用不廣泛。 軟件定時/計數器 特點是幾乎沒有硬件費用,但他占用CPU的運行時間,降低了CPU的工作效率。 可編程定時/計數器 特點是工作靈活,而且不占用CPU的運行時問,缺點是成本較高。其中可編程定時/計數器8253是一種使用較為普遍的可編程定時/計數器。 可編程定時/計數器8253通過軟件設定,可以產生各種時間延遲信號,他的使用非常廣泛,通常被用于定時控制、延時、計數等場合,如定時刷新RAM、系統時鐘的計時、揚聲器的發音長短的控制。在使用的時候,需要進行嚴密的計算和精確的測試,以滿足不同的要求。 1 可編程定時/計數器8253的工作原理 可編程定時/計數器8253是NMOS工藝制成的大規模集成電路,通過簡單編程可實現不同的功能,圖1為可編程定時/計數器8253的基本原理圖。 從圖1可以看出,芯片內有3個獨立的計數器,分別為計數器0,計數器1,計數器2,每一個計數器都是16位的,可以分別對他們設定工作方式(通過控制字設定)。 圖2為封裝后的8253引腳圖。 可編程定時/計數器8253可以應用在兩種情況下:定時、計數。當用作定時器時,可以循環計數,信號來源一般為系統本身;當用作計數器時,信號來源一般為系統文件。在揚聲器驅動系統中,可編程定時/計數器8253是作定時器來使用的。 圖2中對應引腳的含義如下: CLK0,CLK1,CLK2:對應計數器的時鐘輸入。 GATE0,GATE1,GATE2:對應計數器輸出信號。 OUT0,OUT1,OUT2:對應計數器輸出信號。 RD:讀信號。低電平有效,讀出計數器的計數值送入緩沖器。 WR:寫信號。低電平有效,接收由緩沖器送來的數據。 CS:片選信號。低電平有效。只有在CS信號低電平時8253才能產生讀寫操作,否則不會讀寫。 A1~A0:對3個計數器和1個控制寄存器端口進行尋址。 D7~D0:方式控制字?删幊潭〞r/計數器能正確工作與否,與方式控制字密切相關。方式控制字格式如下: 方式控制字對應位的含義如表1所示。 VCC:+5 V電源。 GND:接地引腳。 2 可編程定時/計數器8253在揚聲器中的應用 揚聲器驅動系統的硬件組成如圖3所示。利用8253驅動揚聲器發聲是由系統插件上8255的外圍電路來發出驅動信號的。如圖3中的SPK DATA和TIM GATESPK就是接在8255的輸出端口上。其中TIM GATESPK控制8253定時器來驅動揚聲器,SPK DATA來控制揚聲器的門電路。直接由門電路驅動發出的聲音比較難聽,通過濾波器濾掉雜波之后會更動聽一些,所以最好如圖3所示加一個濾波器。 (1)首先以流程圖的方式說明使用揚聲器發聲的過程,如圖4所示。 (2)可編程定時/計數器8253在揚聲器中應用的編程。一般情況下,8255的輸出端口地址為61H,分配給8253的控制口地址為46H,3個計數器端口地址分別為40H,42H,44H,讓計數器2工作在模式3下,可使8253作為定時器驅動揚聲器發聲。 則編寫程序如下: 從程序中可以看到利用可編程定時/計數器8253可以發出各種頻率的聲音,只要在程序中稍微更改一下輸入時鐘頻率或計數初值即可實現。 |