Il Timer di intervallo programmabile 8254 fu usato nel PC IBM nel 1981 secondo Gary Barr al concetto di Engineering. Nei computer IBM-stile, ha operato come l'orologio di sistema. Con miglioramenti nei componenti elettronici, le funzioni del chipset sono state combinate in uno o due chip LSI (grande scala integrata). Anche se il Timer di intervallo programmabile 8254 originalmente è stato progettato e distribuito per il primo PC di IBM, è ancora oggi disponibile come un circuito integrato stand-alone.
Dividere un segnale di ingresso per 64536 e anche 36
I seguenti programmi di codice 8254 PIT (Timer di intervallo programmabile) per dividere un segnale di ingresso per 64536 producendo un'onda quadra del ciclo di dovere del 50 per cento. Divide anche lo stesso segnale di ingresso da 36 producendo un'onda quadra del ciclo di dovere del 50 per cento.
PIT_C0_M3... equ... 36h; modalità di 8253 PIT timer canale 0 3
PIT_C1_M3... equ... h 77; modalità di 8253 PIT timer canale 1 3
Timer0... equ... 40h...; Indirizzo di porta zero(0) 8254 canale/contatore
Timer1... equ... 41H...; Indirizzo di porta di un (1) canale 8254/contatore
TIMER2... equ... 42h...; canale/contatore di 8254 indirizzo di porta di due (2) (n/a)
TIMER_MODE... equ... 43h...; 8254 PIT control_port per la modalità
TIC... equ... 36H...; 8254 valore per contatore 1 - valore BCD di 36 decimale.
MOV... al., PIT_C0_M3...; caricare il valore della modalità time0
fuori... TIMER_MODE, al...; inviarlo a 8254 modalità reg. - porta H 43
XOR... al, al...; zero di fuori; cioè il valore del contatore di 00
fuori... Timer0, al..; Invia LSB del conteggio div., quindi
MOV... al, TIC...; caricare il valore del contatore (36 decimale in formato BCD)
fuori... Timer1, al...; Invia il valore del contatore LSB
XOR... al, al...; zero MSB
ou... Timer1, al...; Invia il valore del contatore 1 MSB
Fatto!! -
Inizializzare il valore del contatore 0 a 30d
MOV DX, COUNTER0
MOV AL, 30
FUORI DX, AL
Inizializzare il valore del contatore 0 a 256d
MOV DX, COUNTER0
MOV AL, 0
FUORI DX, AL
Inizializzare il valore del contatore 0 a 1010d
MOV DX, COUNTER0
MOV AX, 1010
FUORI DX, AL; LSB
MOV AL, AH
FUORI DX, AL; MSB
Inizializzare il 8254
Impostare Counter0 a riconoscere solo il byte meno significativo. Impostare il 8254 per produrre un'onda quadra e impostare il contatore su binary (16 bit).
MOV DX, TCW
MOV AL, 00010110B; Parola di controllo
FUORI DX, AL
;
MOV DX, COUNTER0
MOV AL, 4H; LSB
FUORI DX, AL