8255Programmable Peripheral Interface(PPI)
For most of the applications 8086 needs parallel input
,output data to/from the peripherals.
8255 is a device used to interface different real time
peripherals to the microprocessors which can be
initialized for different modes operations like simple
I/O, Strobed I/O and handshaking I/O.
It has three 8-bit parallel ports :port A, port B, port C
Fig 4.2 8255 pin diagram
❑ 8255 has three operation modes: mode 0, mode 1, and mode 2
Fig 4.3 Control Word Register Bit Format of 8255 for I/O
mode and BSR mode
Programming 8255
❑ Mode 0:
— Ports A, B, and C can be individually programmed as input or output ports
— Port C is divided into two 4-bit ports which are independent from each other
❑ Mode 1:
— Ports A and B are programmed as input or output ports
— Port C is used for handshaking
PA[7:0] PA[7:0]
PC4 STBA PC7 OBFA
PC5 IBFA PC6 ACKA
PC3 INTRA PC3 INTRA
8255 PB[7:0] 8255 PB[7:0]
PC2 STBB PC2 OBFB
PC1 IBFB PC1 ACKB
PC0 INTRB PC0 INTRB
PC6, 7 PC4, 5
Fig 4.4 Input and Output control signals of 8255 in mode1
Fig 4.5 Input and Output control signals of 8255 in mode1
Programming 8255
❑ Mode 2:
— Port A is programmed to be bi-directional
— Port C is for handshaking
— Port B can be either input or output in mode 0 or mode 1
PA[7:0]
PC7 OBFA
PC6 ACKA
PC4 STBA
8255 PC5 IBFA
PC3 INTRA
PC0 In Out STBB OBFB
PC0 In Out IBFB ACKB
PC0 In Out INTRB INTRB
PB[7:0]
Mode 0 Mode 1
Fig 4.6 Input and Output control signals of 8255 in mode2
Fig 4.7 Input and Output control signals of
8255 in mode2
Data bus
D[7:0]
PA[7:0]
A0
8086 A1 PB[7:0]
RD Control port
WR PC[7:0]
RESET
A7 CS
A6
A5
A4 Port
A3 A1 A0
A2 0 0 PA
IO/M
0 1 PB
1 0 PC
1 1 Control
Fig 4.1 Interfacing of 8255 PPI to 8086
ADC 0808/0809
The analog to digital converter chips 0808 and 0809 are 8-
bit CMOS, successive approximation converters. It is
fastest technique.
The conversion delay is 100 µs at a clock frequency of 640
kHz, which is quite low as compared to other converters.
Block Diagram of ADC 0808/0809
This converter internally has a 3:8 analog multiplexer, so
that at a time 8 different analog inputs can be connected to
the chips.
Out of these 8 inputs only one can be selected for
conversion by using 3 address lines A,B,C.
The CPU may drive these lines using output port lines in
case of multichannel applications.
Fig 4.15 Pin diagram of ADC 0808/0809
Table 4.1 analog input selection
•These are unipolar Analog to Digital (A to D) converters, they
are able to convert only positive analog input voltages to their
digital equivalents.
This chips do not contain any internal sample & hold circuit.
Interfacing between ADC to Microprocessor
Problem:-
Interface ADC 0808 with 8086 using 8255 ports. Use Port A
of 8255 for transferring digital data output of ADC to the
CPU & Port C for control signals. Assume that an analog
input is present at I/P2 of the ADC and a clock input of
suitable frequency is available for ADC. Draw the
schematic & timing diagram of different signals of
ADC0808.
Solution:-
•The analog input I/P2 is used & therefore address pins
A,B,C should be 0,1,0 respectively to select I/P2.
•The OE (Out put latch Enable) & ALE pins are already kept
at +5v to select the ADC and enable the outputs.
•Port C upper acts as the input port to receive the EOC
signal while Port C lower acts as the output port to send
SOC to ADC.
•Port A acts as a 8-bit input data port to receive the digital
data output from the ADC.
8255 Control Word:
D7 D6 D5 D4 D3 D2 D1 D0
1 0 0 1 1 0 0 0 = 98H
Program:
MOV AL,98H ; Initialize 8255, send AL to control word (CWR)
OUT CWR, AL
MOV AL, 02H ;Select I/P2 as analog I/P
OUT Port B, AL ;Port B as output
MOV AL, 00H ; Give start of conversion pulse to the ADC
OUT Port C, AL
MOV AL, 01H
OUT Port C, AL
MOV AL, 00H
OUT Port C, AL
WAIT: IN AL, Port C ; check for EOC by reading Port C upper & rotating
RCL ; through carry.
JNC WAIT
IN AL, Port A ; if EOC, read digital equivalent in AC
HLT ; stop.
Fig 4.16 Interfacing of ADC 0808 to 8086 through 8255
Interfacing D/A Converters
The Digital to Analog Converters (DAC) convert binary
numbers into their analog equivalent voltages.
The DAC find applications in areas like
Digitally controlled gains
Motor speed controls
Programmable gain amplifiers etc.
AD 7523 8-Bit Multiplying DAC:--
• Intersil’s AD 7523 is a 16 pin DIP, multiplying digital to
analog converter, containing R-2R ladder (R=10K) for digital
to analog conversion.
✓ Power supply +5v to +15v
✓ Vref -> -10v to +10v
✓ The maximum analog output voltage will be +10v
✓ A Zener is connected between OUT1 & OUT2 to save the
DAC from negative transients.
✓ An operational amplifier is used as a current – to – voltage
converter at the output of AD 7523.
✓ An external feedback resister acts to control the gain.
Interfacing of AD 7523 with 8086
Problem:--
Interface DAC AD7523 with the 8086 running at 8MHz & write
ALP to generate a saw tooth waveform of period 1ms with
Vmax 5v.
Solution:--
Code segment
Assume cs:code
Start: MOV AL, 80H
OUT CWR, AL
AGAIN: MOV AL, 00H
BACK: OUT Port A, AL
INC AL
CMP AL, 0F2H
JB BACK
JMP AGAIN
Code ends
End Start
Fig 4.17 Pin diagram of AD7523
Fig 4.18 Interfacing of AD7523 to 8086 through 8255
Stepper Motor Interfacing
A stepper motor is a device used to obtain an accurate position
control of rotating shafts.
It employs rotation of its shaft in terms of steps, rather than
continuous rotation as in case of AC or DC motors.
In dot-matrix printer one small stepper motor which is used to
advance the paper to the next line position & another small stepper
motor which is used to move the print head to the next character
position.
In floppy disk stepper motor is used to position the read/write head
over the desired track.
To rotate the shaft of the stepper motor, a sequence of pulses is
needed to be applied to the windings of the stepper motor, in a
proper sequence.
The no. of pulses required for one complete rotation of the shaft of
the stepper motor are equal to its number of internal teeth on its
rotor.
The stator teeth the rotor teeth lock with each other to fix a
position of the shaft .
With a pulse applied to the winding input, the rotor rotates
by one teeth position or an angle x. The angle x may be
calculated as:
x = 3600 / no. of rotor teeth
The stepper motors have been designed to work with digital
circuits. Binary level pulses of 0-5v are required at its winding
inputs to obtain the rotation of shafts.
The sequence of pulses can be decided, depending upon the
required motion of the shaft.
The count for rotating the shaft of the stepper motor
through a specified angle may be calculated from the no. of
rotor teeth
C = no. of rotor teeth / 3600 * θ0
Motion Step A B C D
Clockwise 1 1 0 0 0
2 0 1 0 0
3 0 0 1 0
4 0 0 0 1
5 1 0 0 0
Anticlockwise 1 1 0 0 0
2 0 0 0 1
3 0 0 1 0
4 0 1 0 0
5 1 0 0 0
Table 4.2 Excitation sequence for clockwise and anticlockwise rotation
of a stepper motor