Die 8254 Programmable Interval Timer wurde zum ersten Mal in der IBM PC 1981 verwendet nach Gary Barr bei Concept Engineering . In IBM - Stil Computer, betrieben sie als die Systemuhr. Mit Verbesserungen in der elektronischen Komponenten haben die Funktionen des Chipsatzes in ein oder zwei LSI ( Large Scale Integrated )-Chips kombiniert. Obwohl die 8254 Programmable Interval Timer ursprünglich entwickelt und verteilt den ersten IBM PC, ist es heute noch erhältlich als Stand -alone integrierten Schaltung. Teilen Sie ein Eingangssignal mit 64536 und auch 36
Die folgenden Code-Programme die 8254 PIT (Programmable Interval Timer ) , um ein Eingangssignal von 64536 Herstellung einer Einschaltdauer von 50 Prozent Rechtecksignal teilen. Außerdem teilt das gleiche Eingangssignal um 36 Herstellung einer Einschaltdauer von 50 Prozent Rechtecksignal
PIT_C0_M3 .... .... equ 36h ; . PIT 8253 Timerkanal 0 Modus 3
PIT_C1_M3 equ 77h .... .... ; 8253 PIT Timer Kanal 1 Modus 3
TIMER0 .... .... equ 40h ...; 8254 Kanal /Zähler Null (0) Port-Adresse
TIMER1 .... .... equ 41h ...; 8254 Kanal /Zähler ein (1) Port-Adresse
TIMER2 .... equ 42h .... ... ; 8254 Kanal /Zähler zwei (2) Port-Adresse ( n /a)
timer_mode .... .... equ 43h ...; 8254 PIT control_port für Mode
TICS . equ ... .... 36H ....; 8254 für Zähler 1 - BCD-Wert von 36 Dezimalstellen
mov al ... , PIT_C0_M3 ....; Last time0 Modus Wert
out ... timer_mode , al ...; senden Sie es an 8254 -Modus reg. - Port 43H
xor ... al , al ...; Null aus al , dh der Zählerstand von 00
out ... TIMER0 , al ..; senden LSB div . zählen, dann
mov al ... , TICS ...; laden den Zählerstand (36 Dezimalstellen in BCD -Format)
out ... TIMER1 , al ....; senden LSB Zählerstand
xor ... al , al ....; Null MSB
ou ... TIMER1 , al ...; senden Zähler 1 MSB Wert
< p > ; Fertig ! -
initialisieren der Wert des Zählers 0 bis 30d
MOV DX, counter0
MOV AL, 30
OUT DX, AL
initialisieren der Wert des Zählers 0 bis 256d
MOV DX, counter0
MOV AL, 0
OUT DX, AL initialisieren
der Wert des Zählers 0 bis 1010D
MOV DX, counter0
MOV AX , 1010
OUT DX, AL ; LSB
MOV AL, AH
OUT DX, AL ; MSB
initialisieren 8254
Set counter0 das niederwertige Byte nur erkennen . Stellen Sie die 8254 um eine quadratische Welle zu erzeugen und das Zählwerk auf binary (16 Bit)
MOV DX, TCW
MOV AL, 00010110B ; . Steuerwort
OUT DX , AL
;
MOV DX, counter0
MOV AL, 4H; LSB
OUT DX, AL