Nwlapcug.com


Programmi di esempio 8254 PIT

Programmi di esempio 8254 PIT


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