Peripheral Interface Device �(8255 modes and examples)
Dr A Sahu
Dept of Computer Science & Engineering
IIT Guwahati
Hierarchy of I/O Control Devices
8155
I/O + Timer
8255
I/O
8253/54
Timer
2 Port (A,B),
No Bidirectional
HS mode (C)
4 mode timer
2 Port (A,B)
A is Bidirectional
HS mode (C)
Extra controls
6 mode timer
8259
Interrupt controller
8237
DMA controller
8251
Serial I/O USART controller
Outline
Block Diagram of 8255
Group A
Control
Group B
Control
Read
Write
Control Logic
Data
Bus
Buffer
Gr A
Port A
(8)
Gr A
Port C
(H 4)
Gr B
Port C
(L 4)
Gr B
Port B
(8)
I/O
PA7-PA0
I/O
PC7-PC4
I/O
PC3-PC0
I/O
PB7-PB0
8 bit Internal Data Bus
Bi directional
Data Bus
D7-D0
RDb
WRb
A1
A0
RESET
CSb
CSb | A1 | A0 | Sel |
0 | 0 | 0 | Port A |
0 | 0 | 1 | Port B |
0 | 1 | 0 | Port C |
0 | 1 | 1 | CRW |
Ports & Modes in 8255
Port C
D7 D6 D5 D4 D3 D2 D1 D
BSR Mode
Bit Set/Reset
8255
Port B
CU
CL
Port A
I/O Mode
Mode 0
Simple I/O for Ports
A, B & C
Mode 1
HS mode
for Ports
A and/or B
Port C bits are used for
HS
Mode 2
Bidirectional
Data mode for Port
A
B can in mode 0/1
Port C bits are used for HS
BSR Mode
Bit Set/Reset
For Port C
No Effect on
I/O Mode
0/1
Ports & Modes in 8255 : Control register
D7 D6 D5 D4 D3 D2 D1 D0
7 6 5 4 3 2 1 0
Port A – 1 Input 0 output
Mode select: 00 mode 0;
01 mode 1; 1x mode 2
1 – mode select
0 – bit set/reset
Port C(U) – 1 Input 0 output
Mode select: 0 mode 0; 1 mode 1
Port B – 1 Input 0 output
Port C(L) – 1 Input 0 output
Group A
Group B
I/O port Addressing
8255
CSb
A1
A0
RDb
WRb
A7
A6
A5
A4
A3
A2
A1
A0
IORb
IOWb
Reset
Reset
Port A=80H
Port C=82H
Port B=81H
CSb | A1 A0 | HEX Address | Port |
A7 A6 A5 A4 A3 A2 1 0 0 0 0 0 | A1 A0 0 0 |
= 80H | A |
| 0 1 | =81H | B |
|
| =82H | C |
|
| =83H | Control Register |
CRW
83H
Ports
Group B
Group A
Port A
Upper C
Port B
Lower C
Operation modes
- Mode 0: basic input-output
- Mode 1: Strobbed input-output
- Mode 2: Strobbed bi-directinal bus I/O
- Two 8-bit ports and two 4-bit ports
- Any port can be input or output
- Outputs are latched, inputs are not latched
Operation modes
-Three ports are divided into two groups
-Each group contains one 8-bit port and one 4-bit control/data port
- 8-bit port can be either input or output and both latched
- 4-bit port used for control and status of 8-bit data port
- Only port A is used
- Port A becomes an 8-bit bidiectional bus
- Port C acts as control port (only pins PC3-PC7 are used)
BSR (Bit Set or Reset Mode)
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
0 BSR Mode | Not used, So (000) | Bit Select | S/R (1/0) | ||||
BSR Mode example
Generate Activation pulse of Delay D on PC7&PC3
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
0 BSR Mode | Not used, So (000) | Bit Select | S/R (1/0) | ||||
MVI A,0FH ; Load ACC to set PC7
OUT 83H ; set PC7=1
MVI A,07H ; Load ACC to set PC3
OUT 83H ; set PC3=1
CALL DELAYD;
MVI A,06H ; Load ACC to Reset PC3
OUT 83H ; set PC3=1
MVI A,0EH ; Load ACC to Reset PC7
OUT 83H ; set PC7=1
8255: Mode 0
8255: Mode 0, Example 1
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
I/O function | Port A in Mode 0 | Port A as O/P | Port CU As O/P | Port B in Mode 0 | Port B As I/P | Port CL As I/P | |
83H
Interface Circuit
8255
CSb
A1
A0
RDb
WRb
A7
A6
A5
A4
A3
A2
A1
A0
IORb
IOWb
Reset
Reset
Buffer
Buffer
+5V
+5V
PA7
PA0
PC7
PC4
PC3
PC0
PB7
PB0
80H
82H
82H
81H
CRW
83H
Interface Program
MVI A,83H ; Load acc with Control word
OUT 83H ; Load control register with 83 at port address 83
IN 81H ; Read DIP from port B
OUT 80H ; Write to LEDs
IN 82H ; Read DIP from port C
ANI 0FH ; Mask upper part of
port C are not i/p
RLC RLC RLC RLC; Rotate 4 time
OUT 82H ; Display data at port CU
HLT
8255: Mode 0, Example 2
8255: Mode 0, Example 2
Interface Circuit
8255
CSb
A1
A0
RDb
WRb
A7
A6
A5
A4
A3
A2
A1
A0
IORb
IOWb
Reset
Reset
PA7
PA0
PC0
PC4
PC7
PC5
PC6
CRW
83H
data
ADC
INTRb
WRb
RDb
LM135 Temp Sensor
+5V
Relay
Relay
Cooler
Heater
+ -
230V
Interface control
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
1 | 0 | 0 | 1 | 0 | 0 | 0 | 1 |
I/O function | Port A in Mode 0 | Port A as I/P | Port CU As O/P | Port B Is Not used | Port CL As I/P | ||
91H
Interface Program to do Temp. Control
MVI A, 91H ; mode 0 control word
OUT 83H ; Set A& CL as I/P & CU as
O/P
MVI A,0FH ;Set PC7 High
OUT 83H ; Disable RDb
MVI A,08H ; Set PC4 WRb low
OUT 83H ; Start conversion
MVI A, 09H ; Set PC4 WRb high
OUT 83H ; Ser WRb high
RD: IN 82H ; Read Port C to Chck PC0
RAR ; Place PC0 in Carry Flag
JC RD ;if PC0=1, read Again
MVI A,0EH ; Set PC7 RDb low
OUT 83H ; Assert RDb signal
IN 80H ; Read A/D conv. Port A
MOV B,A ; get temp in B
MVI A 0FH; ; Set PC7 (RDb) high
OUT 83 ; Disable RDb
MOV A,B;
CPI 30D;
CNC COOLEROFF; PC5 off 0AH
CC COOLERON; PC5 on 0BH
CPI 10D;
MOV A,B;
CNC HEATERON; PC6on: 0CH
CC HEATEROFF; PC6off: 0DH
RET
COOLEROFF:
MVI A, 0AH ; Reset PC5 to turn off Cooler
OUT 83H
RET
8255: Mode 1
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
1 | 0 | 1 | 0 | 0/1 | 1 | 1 | X=0 |
I/O function | Port A in Mode 1 | Port A as O/P | Port CU As O/P | Port B in Mode 1 | Port B As I/P | Port CL As I/P | |
AEH
PC6, PC7 in
In/Out mode
8255: Mode 1: Input Control signal
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
OBFbA | INTEA | 1/0 | 1/0 | INTRA | INTEB | OBFbB | INTRB |
Mask with 02H
8255: Mode 1, Example
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
1 | 0 | 1 | 1 | 0 | 1 | 0 | 0 |
I/O function | Port A in Mode 1 | Port A as I/P | PC6,7 as X | Port B in Mode 1 | Port B As O/P | Don’t care | |
B4H
Interface Circuit
8255
CSb
A1
A0
RDb
WRb
A1
A0
IORb
IOWb
Reset
PA7
PA0
PC4
PC5
PC3
PC1
PC2
PB7
PB0
CRW
83H
data
KBD
Printer
STBb
IBF
INTRA
OBFb to PTR
ACKb
80A
81H
To
RST 6.5
A7
A6
A5
A4
A3
A2
Interface Program
Initialization Program
MVI A, B4H ; initialize port A as IP and B
as O/P
OUT 83H
MVI A,09H ; Set INTEA , that is PC4
EI ;Enable interrupt
CALL PRINT ; Continue other Task
ISR at 0034 at RST6.5 vector location
0034: JMP READPORTA
READ PORTA:
DI
IN 80H
MOV M, A
INX H
EI
RET
PRINT: LXI H MEM
MVI B COUNT
MOV A,M
MOV C,A
STATUS: IN 82H ; from port C for
Status OBFb
ANI 02H
JNZ STATUS
MOV A,C
OUT 81H; Send to port B
printer
INX H
DCR B
JNZ NEXT
RET
8255: Mode 2: Bi-directional Data transfer
Bi-directional Data transfer between two MPU
Master
MPU
Slave
MPU
8255
OBFb
ACKb
IBF
STBb
Decode
Logic
CSb
RDb
WRb
PC7
PC6
PC5
PC4
PC3
Data Transfer From Mater to Slave
Data Transfer From Slave to master
Interface Circuit
Slave
MPU
8255
CSb
A1
A0
RDb
WRb
A1
A0
IORb
IOWb
Reset
PA7
PA0
PC7
PC5
PC6
PC4
CRW
83H
data
ACKb
A7
A6
A5
A4
A3
A2
data
Latch
TriState
STBb
IORb
Master
MPU
IORb
IOWb
3to8 Decoder
07
05
00
D7
D0
A7
A6
A5
A2
A1
A0
EN
80H=A
81H=B
82H=C
83H=CRW
85H = A
87H = C
Control word Mode 2
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
1 | 1 | X | X | X | 1/0 | 1/0 | 1/0 |
I/O function | Port A in Mode 1 | Port A as Bi | | Port B in Mode 1/0 | Port B As 1/0 | Port C | |
Port C bit 2,1,0 mode 0/1
C0H
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
OBFA | INTE1 | IBFA | INTE2 | INTRA | X | X | X |
RAL instruction to get the Status
Interface program: Master & Slaves
Master:
LXI H, MemptrM
MVI B, Byte2Trasfer
MVI A, CTRL; Control word for
Mode 2
OUT 83H; Write Control word
OBFLO:
IN 82H ; Read port C
RAL ; place OBF in CY
JNC OBFLO;
OUT 80H ; place on Port A
INX H
DCR B
JNZ OBFLO
HLT
SLAVE:
LXI H, MemptrS
MVI B, Byte2Trasfer
OBFHI:
IN 87H ; Read port C
RAL ; place OBF in CY
JC OBFHI;
IN 85H ; Read from Port A
MOV M, A
INX H
DCR B
JNZ OBFHI
HLT
Introduction to Interrupt controller�8259A
Reference
Thanks