A 8254 Programmable Interval Timer foi usado pela primeira vez no IBM PC , em 1981, de acordo com Gary Barr no Conceito Engenharia . Nos computadores de estilo IBM , é operado como o relógio do sistema . Com melhorias em componentes eletrônicos, as funções do chipset foram combinadas em um ou dois LSI ( Large Scale Integrated ) chips . Mesmo que o 8254 Programmable Interval Timer foi projetado originalmente e distribuído para os primeiros PCs da IBM , ele ainda está disponível hoje como um circuito independente integrado . Divida um sinal de entrada por 64536 e também 36
os seguintes programas de código a 8254 PIT ( Programmable Interval timer ) para dividir um sinal de entrada por 64536 produzir uma onda quadrada de 50 por cento do ciclo de trabalho . Ele também divide o mesmo sinal de entrada de 36 produzindo uma onda quadrada de 50 por cento ciclo
PIT_C0_M3 .... equ .... 36h ; . Canal temporizador 8253 PIT 0 modo 3
PIT_C1_M3 equ .... .... 77h ; canal temporizador 8253 PIT 1 Modo 3
TIMER0 .... equ .... 40h ... ; 8254 channel /contador zero (0) endereço da porta
TIMER1 .... equ .... 41h ... ; 8254 channel /contra um (1) endereço da porta
TEMP2 .... equ .... 42h ... , 8254 canal /contra dois ( 2) endereço da porta (n /a )
TIMER_MODE .... equ .... 43h ... ; 8254 control_port PIT para o modo
TICS . equ ... .... 36H ....; . 8.254 valor para o contador 1 - valor BCD de 36 decimal
mov ... al , PIT_C0_M3 ....; carga time0 valor modo < br >
fora ... TIMER_MODE , al ... ; enviá-lo para 8254 modo de registro. - Port 43H
xor ... al , al ... ; zero, fora al , ou seja, o valor do contador de 00
fora ... TIMER0 , al ..; enviar LSB de div . contar, então
mov ... al , TICS ... ; carregar o valor do contador (36 decimal em formato BCD )
fora ... TIMER1 , al ....; enviar LSB valor do contador
xor ... al , al ....; zero, MSB
ou ... TIMER1 , al ... ; enviar contador 1 valor MSB
; Feito ! -
Inicializar o valor do contador 0 a 30d
MOV DX, COUNTER0
MOV AL, 30
OUT DX, AL
Inicializar o valor do contador 0 a 256D
MOV DX, COUNTER0
MOV AL, 0
OUT DX , AL
Inicializar o valor do contador 0 a 1010D
MOV DX, COUNTER0
MOV AX , 1010
OUT DX , AL ; LSB
MOV AL , AH
OUT DX , AL ; MSB
Inicializar a 8254
Set Counter0 reconhecer apenas o byte menos significativo . Defina a 8254 para produzir uma onda quadrada e definir o contador para binários (16 bits)
MOV DX, TCW
MOV AL, 00010110B ; . Palavra de Controle
OUT DX , AL
;
MOV DX, COUNTER0
MOV AL , 4H ; LSB
OUT DX , AL