I seguenti programmi in codice del 8254 PIT ( Interval Timer programmabile ) per dividere un segnale di ingresso da 64.536 producendo un ciclo onda quadra 50 per cento. Si divide anche lo stesso segnale di ingresso da 36 producendo un ciclo onda quadra 50 per cento
PIT_C0_M3 .... .... equ 36h ; . 8253 PIT canale timer 0 Modalità 3
PIT_C1_M3 .... .... equ 77h ; 8253 PIT canale timer 1 Modalità 3
TIMER0 .... equ .... 40h ... ; 8254 canale /contatore a zero ( 0 ) indirizzo della porta
TIMER1 .... equ .... 41h ... ; 8254 canale /contro una (1) porta indirizzo
TIMER2 .... equ .... 42h ... , indirizzo di porta 8254 canale /contatore a due ( 2) ( n /a ) per
TIMER_MODE .... equ .... 43h ... ; 8254 PIT control_port per la modalità
tic. equ ... .... 36H ....; valore di 8254 per il contatore 1 - valore BCD del 36 decimale
mov ... al, PIT_C0_M3 .... ; carico time0 valore modalità < br . >
fuori ... TIMER_MODE , al ... ; inviarlo a 8254 modalità reg . - Porta 43H
xor ... Al, ... ; nulla fuori al; cioè il controvalore di 00
fuori ... TIMER0 , al ..; inviare LSB di div . contare , poi
mov ... al , tic ... ; caricare il valore del contatore ( 36 decimale nel formato BCD ) per
fuori ... TIMER1 , al .... ; inviare LSB del contatore valore
xor ... Al, .... ; pari a zero MSB
ou ... TIMER1 , al ... ; inviare il contatore 1 valore MSB
; Fatto ! -
inizializzare il valore del contatore da 0 a 30d
MOV DX , COUNTER0
MOV AL, 30
OUT DX , aL
inizializzare il valore del contatore da 0 a 256d
MOV DX , COUNTER0
MOV aL, 0
OUT DX , AL
inizializzare il valore del contatore da 0 a 1010D
MOV DX , COUNTER0
MOV AX , 1010
OUT DX , aL; LSB
MOV aL, AH
OUT DX , aL; MSB
Inizializzare il 8254
Counter0 di riconoscere solo il byte meno significativo . Impostare il 8254 di produrre un'onda quadra e impostare il contatore binario (16 bit ) per
MOV DX , TCW
MOV AL, 00010110B ; . Parola di controllo
OUT DX , AL
;
MOV DX , COUNTER0
MOV AL, 4H ; LSB
OUT DX , AL
hardware © www.354353.com