8254 PIT eksempelprogrammer
Den 8254 programmerbare Interval Timer ble først brukt i IBM PC i 1981 i henhold til Gary Barr på Concept Engineering. I IBM-stil datamaskiner, drives det som systemklokken. Med forbedringer i elektroniske komponenter, har funksjonene i brikkesettet slått sammen til ett eller to LSI (Large Scale Integrated) chips. Selv om 8254 programmerbare Interval Timer ble opprinnelig utviklet og distribuert for de første IBM PC, er det fortsatt tilgjengelig i dag som en frittstående integrert krets.
Del et inngangssignal ved 64536 og også 36
Følgende kode programmer i 8254 PIT (programmerbar intervalltidtaker) til å dele et inngangssignal ved 64536 produsere en 50 prosent driftssyklus firkantbølge. Den deler også den samme inngangssignalet med 36 gir en 50 prosent driftssyklus firkantbølge.
PIT_C0_M3 .... utst .... 36h, 8253 PIT timer kanal 0 modus 3
PIT_C1_M3 .... utst .... 77h, 8253 PIT timer kanal en modus 3
Timer0 .... utst .... 40h ...; 8254 kanal / counter null (0) port adresse
TIMER1 .... utst .... 41h ...; 8254 kanal / counter én (1) port adresse
Timer2 .... utst .... 42h ...; 8254 kanal / counter to (2) port adresse (n / a)
TIMER_MODE .... utst .... 43H ...; 8254 PIT control_port for modus
Tics .... utst .... 36H ....; 8254 verdi for teller 1 - BCD verdi av 36 desimal.
mov ... al, PIT_C0_M3 ....; last time0 modus verdi
ut ... TIMER_MODE, al ...; send det til 8254-modus reg. - Port 43H
xor ... al, al ...; null ut al; dvs. tellerverdien av 00
ut ... Timer0, al ..; sende LSB av div. telle, så
mov ... al, tics ...; laste tellerverdien (36 desimal i BCD-format)
ut ... TIMER1, al ....; sende LSB tellerverdi
xor ... al, al ....; null MSB
ou ... TIMER1, al ...; sende disken en MSB verdi
; Ferdig !! -
Initial verdien av Counter 0 til 30d
MOV DX, COUNTER0
MOV AL, 30
OUT DX, AL
Initial verdien av Counter 0 til 256d
MOV DX, COUNTER0
MOV AL, 0
OUT DX, AL
Initial verdien av Counter 0 til 1010d
MOV DX, COUNTER0
MOV AX, 1010
OUT DX, AL, LSB
MOV AL, AH
OUT DX, AL; MSB
Initialiser 8254
Sett Counter0 å gjenkjenne minst signifikante byte bare. Still 8254 for å frembringe en firkantbølge og sette telleren til binære (16 bits).
MOV DX, TCW
MOV AL, 00010110B; kontroll Word
OUT DX, AL
;
MOV DX, COUNTER0
MOV AL, 4H; LSB
OUT DX, AL