8253(定時器IC)與8085微處理器的介面
Intel 8253是可程式設計間隔定時器(PTI),專為微處理器設計,使用三個16位暫存器執行計時和計數功能。每個計數器有兩個輸入引腳,即時鐘和門,還有一個“OUT”輸出引腳。要操作計數器,需要在其暫存器中載入一個16位計數。根據指令,它開始遞減計數,直到計數器達到0,然後產生一個脈衝,該脈衝可用於中斷CPU。
8253 的特性
它具有三個獨立的16位向下計數器。
它可以處理從直流到10MHz的輸入。
這三個計數器可以程式設計為二進位制或BCD計數。
它幾乎相容所有微處理器。
8254有一個強大的命令,稱為讀回命令,允許使用者檢查計數值、程式設計模式、當前模式和計數器的當前狀態。
8253的框圖

8253與8085的介面
現在讓我們看看如何將這個8253定時器晶片與Intel 8085微處理器介面。從下圖可以看出,8085的資料匯流排D7-0連線到8253的資料引腳D7到D0。因此,高階地址匯流排用作解碼器輸入以選擇晶片,而8085的A8和A9分別連線到引腳A1和A0以選擇計數器。

在下圖中,我們可以得到8253的片選邏輯。在該圖中,我們可以很容易地發現,當A3-2和A7-5為邏輯0,A4為邏輯1時,只有8253的片選CS引腳才會被使能。

此表顯示瞭如何使用8253的A1和A0引腳選擇計數器。
| 片選 (CS) | 十六進位制地址 | 計數器選擇 | |||||||
|---|---|---|---|---|---|---|---|---|---|
| A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0 | ||
| 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 10H | 計數器0 |
| 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 11H | 計數器1 |
| 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 12H | 計數器2 |
| 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 13H | 控制字暫存器 |
可以使用IN和OUT指令來完成計數器選擇和控制字暫存器(CWR)設定。如果累加器儲存要載入CWR的內容,則使用OUT 13H設定CWR。類似地,使用IN指令可以獲取計數器的值,例如IN 11H將從計數器1獲取值,依此類推。
因此,計數器操作需要以下四個步驟:
初始化8253晶片
使用控制字值載入控制字暫存器
載入低位計數值
載入高位計數值
讓我們看一個程式,以模式0在模式1下將計數器2載入為500010計數值。並且在執行時讀取計數值。
首先,要初始化8253,控制字將為B2H
| 計數器2 | 先載入低位位元組,再載入高位位元組 | 模式1選擇 | 0表示二進位制 | ||||
|---|---|---|---|---|---|---|---|
| 1 | 0 | 1 | 1 | 0 | 0 | 1 | 0 |
現在,用於對計數器2進行鎖存操作的控制字為80H。
| 計數器2 | 鎖存選項 | 無關緊要 | |||||
|---|---|---|---|---|---|---|---|
| 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
我們將500010載入到計數器中。500010的十六進位制等效值為1388H。
MVI A, B2H ;Load B2H as initialization byte for counter OUT 13H ;Write Acc content CWR MVI A, 88H ;Load LS byte of count value OUT 12H ;Send to Counter 2 MVI A, 13H ;Load MS byte of count value OUT 12H ;Send to Counter 2 MVI D, 00H ;clear the register D L1: MVI A, 80H ;Set a with control word 80H of counter 2 OUT 13H ;Write Acc content CWR IN 12H ;Read LS value of counter value MOV B, A ;store LS value to B IN 12H ;Read MS value of counter value ORA B ;OR LS and MS to set Z flag JNZ L1 ;If Z flag is not set, jump to Loop HLT ;Halt the program
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP