Features:: ICW1 (Initialisation Command Word One)
Features:: ICW1 (Initialisation Command Word One)
Features:: ICW1 (Initialisation Command Word One)
8 levels of interrupts.
Can be cascaded in master-slave configuration to handle 64 levels of interrupts.
Internal priority resolver.
Fixed priority mode and rotating priority mode.
Individually maskable interrupts.
Modes and masks can be changed dynamically.
Accepts IRQ, determines priority, checks whether incoming priority > current level being
serviced, issues interrupt signal.
In 8085 mode, provides 3 byte CALL instruction. In 8086 mode, provides 8 bit vector
number.
Polled and vectored mode.
Starting address of ISR or vector number is programmable.
No clock required.
A0 D7 D6 D5 D4 D3 D2 D1 D0
0 A7 A6 A5 1 LTIM ADI SNGL IC4
D0: IC4: 0=no ICW4, 1=ICW4 required
D1: SNGL: 1=Single PIC, 0=Cascaded PIC
D2: ADI: Address interval. Used only in 8085, not 8086. 1=ISR's are 4 bytes apart (0200, 0204,
etc) 0=ISR's are 8 byte apart (0200, 0208, etc)
D3: LTIM: level triggered interrupt mode: 1=All IR lines level triggered. 0=edge triggered
D4-D7: A5-A7: 8085 only. ISR address lower byte segment. The lower byte is
A7 A6 A5 A4 A3 A2 A1 A0
of which A7, A6, A5 are provided by D7-D5 of ICW1 (if ADI=1), or A7, A6 are provided if
ADI=0. A4-A0 (or A5-A0) are set by 8259 itself:
ADI=1 (spacing 4 bytes) ADI=0 (spacing 8 bytes)
IRQ A7 A6 A5 A4 A3 A2 A1 A0 IRQ A7 A6 A5 A4 A3 A2 A1 A0
IR0 A7 A6 A5 0 0 0 0 0 IR0 A7 A6 0 0 0 0 0 0
IR1 A7 A6 A5 0 0 1 0 0 IR1 A7 A6 0 0 1 0 0 0
IR2 A7 A6 A5 0 1 0 0 0 IR2 A7 A6 0 1 0 0 0 0
IR3 A7 A6 A5 0 1 1 0 0 IR3 A7 A6 0 1 1 0 0 0
IR4 A7 A6 A5 1 0 0 0 0 IR4 A7 A6 1 0 0 0 0 0
IR5 A7 A6 A5 1 0 1 0 0 IR5 A7 A6 1 0 1 0 0 0
IR6 A7 A6 A5 1 1 1 0 0 IR6 A7 A6 1 1 0 0 0 0
IR7 A7 A6 A5 1 1 1 0 0 IR7 A7 A6 1 1 1 0 0 0
A0 D7 D6 D5 D4 D3 D2 D1 D0
1 A15 A14 A13 A12 A11 A10 A9 A8
D7 D6 D5 D4 D3 D2 D1 D0
A0
Master S7 S6 S5 S4 S3 S2 S1 S0
1
Slave 0 0 0 0 0 ID3 ID2 ID1
Master mode: 1 indicates slave is present on that interrupt, 0 indicates direct interrupt
Slave mode: ID3-ID2-ID1 is the slave ID number. Slave 4 on IR4 has ICW3=04h (0000
0100)
A0 D7 D6 D5 D4 D3 D2 D1 D0
1 M7 M6 M5 M4 M3 M2 M1 M0
A0 D7 D6 D5 D4 D3 D2 D1 D0
1 R SL EOI 0 0 L3 L2 L1
R SL EOI Action
0 0 1 Non specific EOI (L3L2L1=000)
EOI Specific EOI command (Interrupt to clear
0 1 1
given by L3L2L1)
1 0 1 Rotate priorities on non-specific EOI
Auto rotation of priorities
1 0 0 Rotate priorities in auto EOI mode set
(L3L2L1=000)
0 0 0 Rotate priorities in auto EOI mode clear
Rotate priority on specific EOI command
1 1 1
Specific rotation of priorities (Lowest (resets current ISR bit)
priority ISR=L3L2L1) 1 1 0 Set priority (does not reset current ISR bit)
0 1 0 No operation
A0 D7 D6 D5 D4 D3 D2 D1 D0
1 D7 ESMM SMM 0 1 MODE RIR RIS
ESMM SMM Effect
0 X No effect
1 0 Reset special mask
1 1 Set special mask