120 likes | 431 Views
Timers. The 8254 Programmable Interval Timer. 3 independent 16-bit programmable counters Counting in binary/BCD Applications Real-time clock Event counter. 8254 I/O. D7-D0: System data bus CLK0: Clock for counter 0 Gate0: Gate for counter 0 CLK1: Clock for counter 1
E N D
The 8254 Programmable Interval Timer • 3 independent 16-bit programmable counters • Counting in binary/BCD • Applications • Real-time clock • Event counter
8254 I/O • D7-D0: System data bus • CLK0: Clock for counter 0 • Gate0: Gate for counter 0 • CLK1: Clock for counter 1 • Gate1: Gate for counter 1 • CLK2: Clock for counter 2 • Gate2: Gate for counter 2 • A1-A0: Address select • 00: Counter 0 • 01: Counter 1 • 10: Counter 2 • 11: Control Register • Vcc: Power (+5V) • Ground: • RD: Read enable • WR: Write enable • CS: Chip select signal • OUT0: Output of counter0 • OUT1: Output of counter1 • OUT2: Output of counter2
Programming the 8254 • Each counter is programmed individually by writing • A control word • The initial count • Control word selects • Counter • Mode of operation • Type of operation (read/write) • Type of count (binary/BCD) • Program sequence 1: • PROGRAM CONTROL WORD 1 • PROGRAM CONTROL WORD 2 • PROGRAM LSB 1 • PROGRAM LSB 2 • PROGRAM MSB 1 • PROGRAM MSB 2 • Program sequence 2: • PROGRAM CONTROL WORD 1 • PROGRAM LSB 1 • PROGRAM MSB 1 • PROGRAM CONTROL WORD 2 • PROGRAM LSB 2 • PROGRAM MSB 2
8254 Modes of Operation • Mode 0: Events counter. • Mode 1: One shot pulse • Mode 2: Continuous pulses, one clock pulse wide • Mode 3: Continuous square-wave as long as Gate is 1 • Mode 4: Software triggered one-shot pulse • Mode 5: Hardware triggered one-shot pulse
Modes of Operation • Mode 0: Events counter (used for system time) • Mode 1: One shot pulse
Modes of Operation • Mode 2: Continuous pulses • Mode 3: Continuous square-wave
Modes of Operation • Mode 4: Software triggered one-shot pulse • Mode 5: Hardware triggered one-shot pulse
Example • Connect an 8254 in a 8088 processor system so that it occupies the address range 4CH-4FH • Program counter 0 in mode 0 with a count of ABCD12H and counter 1 in mode 3 and a count of 345678H • Program counter 0 to generate an interrupt every 10 ms using a 10MHz oscillator • Write an interrupt service routine that calls a sleep function every 1 min • Program counter 1 to produce a 1.25 MHz clock output with 50% duty cycle
Example 2 • Connect an 8254 in a 8088 processor system so that it occupies the address range 4CH-4FH through a PIC in the address range 6EH-6FH at IRQ1 • Configure the PIC for vector 43H and unmask IRQ1 masking all others • Configure the timer to use one counter to count events on Gate0 and another to count time. • Write an ISR at vector 43H that reads the values of the two timers each time there is an interrupt.