8254 PIT eksempelprogrammer

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