Yshopnoosa.com

8254 GROP exempelprogram

8254 GROP exempelprogram

8254 programmerbara intervalltimern användes först i IBM PC 1981 enligt Gary Barr på Concept Engineering. I IBM-stil datorer drivs det som systemklockan. Med förbättringar i elektroniska komponenter, har funktioner i chipset kombinerats till en eller två LSI (stor skala integrerade) chips. Även om 8254 programmerbara intervalltimern ritades ursprungligen och distribueras för den första IBM-PC, finns det fortfarande idag som en fristående integrerad krets.

Dela upp en ingångssignal av 64536 och också 36

Följande kod program 8254 GROPEN (programmerbara Intervalltimer) att dela upp en ingångssignal av 64536 producerar en 50 procent duty cycle fyrkantsvåg. Det delar också samma insignalen av 36 producerar en 50 procent duty cycle fyrkantsvåg.

PIT_C0_M3... equ... 36h; 8253 GROP kanal 0 timerläge 3

PIT_C1_M3... equ... 77h; 8253 GROP kanal 1 timerläge 3

TIMER0... equ... 40h...; 8254 kanal/counter zero(0) portadress

TIMER1... equ... 41h...; 8254 kanal/counter portadress som en (1)

TIMER2... equ... 42h...; 8254 kanal/counter två (2) portadress (n/a)

TIMER_MODE... equ... 43h...; 8254 GROP control_port för läge

TICS... equ... 36H...; 8254 värde för räknare 1 - BCD värde av 36 decimal.

MOV... al, PIT_C0_M3...; Ladda time0 läge värde

out... TIMER_MODE, al...; Skicka den till 8254 läge reg. - port 43H

XOR... al, al...; noll ut al; dvs. räknarvärdet 00

out... TIMER0, al..; Skicka LSB av div. räknas, sedan

MOV... al, TICS...; Ladda counter värde (36 decimal i BCD-format)

out... TIMER1, al...; Skicka LSB räknarvärdet

XOR... al, al...; noll MSB

ou... TIMER1, al...; Skicka räknarvärdet 1 MSB

Gjort! -

Initiera Counter värde 0 till 30d

MOV DX, COUNTER0

MOV AL, 30

REDA PÅ DX, AL

Initiera Counter värde 0 till 256d

MOV DX, COUNTER0

MOV AL, 0

REDA PÅ DX, AL

Initiera Counter värde 0 till 1010d

MOV DX, COUNTER0

MOV AX, 1010

REDA PÅ DX, AL; LSB

MOV AL, AH

REDA PÅ DX, AL; MSB

Initiera 8254

Ställa in Counter0 att känna igen den minst signifikanta byten endast. Ställ in 8254 att producera en fyrkantsvåg och ange binär (16 bitar).

MOV DX, TCW

MOV AL, 00010110B; Kontroll Word

REDA PÅ DX, AL

;

MOV DX, COUNTER0

MOV AL, 4 TIM. LSB

REDA PÅ DX, AL