You are on page 1of 41

UNIT-IV

 8255 PPI Various Modes Of Operation


 Interfacing To 8086.
 Interfacing Keyboard, Displays
 Stepper Motor
 D/A And A/D Converter Interfacing.
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
Example: Mode 1 Input
8255 keyboard
 BIT5 EQU 20H
 PORTC EQU 22H PA0
 PORTA EQU 20H PA7

 READ PROC NEAR


 Read: STB
 IN AL, PORTC ; read portc PC4 DAV
 TEST AL, BIT5 ;test IBF
 JZ Read ;if IBF=0
 IN AL, PORTA ;Read Data Fig 4.8 Interfacing of 8255 to Keyboard
 READ ENDP for input in mode1
Example: Mode 1 output

8255 Printer

PB0

PB7

ACK
PC2 ACK
PC4 DS

Fig 4.9 Interfacing of 8255 to


Printer for output in mode1
Example: Mode 1 output

BIT1 EQU 2 ;send character to printer


PORTC EQU 62H MOV AL, AH ;get data
OUT PORTB, AL ;print data
PORTB EQU 61H
; send data strobe to printer
CMD EQU 63H MOV AL, 8 ;clear DS
PRINT PROC NEAR OUT CMD, AL
; check printer ready? MOV AL, 9 ;clear DS
IN AL, PORTC ;get OBF OUT CMD, AL
TEST AL, BIT1 ;test OBF ;rising the data at the positive
JZ PRINT ;if OBF=0 buffer is edge of DS
full RET
PRINT ENDP
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


Keyboard example

Fig 4.10 Interfacing of 8255 to 4x4 matrix


Keyboard in mode1
Keyboard example

Fig 4.11 Flow chart of a keyboard scanning


procedure
Bouncing Problem

Fig 4.12 Key bouncing problem


Fig 4.13 Key bouncing problem
Software Solution

Fig 4.14 Software Key debouncing solution


ADC Interfacing
 The time taken by the ADC from the active edge of SOC
pulse till the active edge of EOC signal is called as the
conversion delay of the ADC.

 General algorithm for ADC interfacing contains the


following steps
1. Ensure the stability of analog input, applied to the
ADC
2. Issue start of conversion SOC pulse to ADC
3. Read end of conversion EOC signal to mark the end of
conversion process
4. Read digital data output of the ADC as equivalent
digital output.
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
Display interface
Interface an 8255 with 8086 at 80h as an I/O address of port-A.
interface five 7 segment displays with the 8255. write a
sequence of instructions to display 1,2,3,4 and 5 over the five
displays continuously as per their positions starting with 1 at
the least significant position. CWR address is 86h.
Number to be PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0 Code
displayed dp a b c d e f g
1 1 1 0 0 1 1 1 1 CF

2 1 0 0 1 0 0 1 0 92

3 1 0 0 0 0 1 1 0 86

4 1 1 0 0 1 1 0 0 CC

5 1 0 1 0 0 1 0 0 A4

All these codes are stored in a look up table starting at 2000:0001.


Fig 4.19 Interfacing multiplexed 7-segment display to 8086
through 8255
ALP for display interface

again: mov cl,05h ;count for displays


mov bx,2000h ;initialize the data segment for
mov ds,bx ; look-up table
mov ch,01h ;1st no. to be displayed
mov al,80h
out 86h,al ;load control word in the CWR
mov dl,01h ;enable code for least significant 7-seg
display

nxtdgt: mov bx,0000h ;set pointer to look-up table


mov al,ch ;store number to be display
xlat ;find code from table
out 80h,al
mov al,dl
out 82h,al ;enable the display
rol dl ;go for next digit display
inc ch
dec cl ;decrement counter
jnz nxtdgt ;go for next digit display
jmp again
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
Problem

Design a stepper motor controller and write an ALP to rotate


shaft of a 4-phase stepper motor:
i. In clockwise 5 rotations
ii. In anticlockwise 5 rotations.
The 8255 port A address is 0740h. The stepper motor has 200
rotor teeth.
The port A bit PA0 drives winding Wa, PA1 drives winding
Wb and so on.
The stepper motor has an internal delay of 10msec. Assume
that the routine for this delay is already available.
Solution:

ALP:
Assume cs:Code
Code segment
Start: MOV AL, 80H
OUT CWR, AL
MOV AL, 88H; Bit pattern 10001000
MOV CX, 1000
Again1: OUT Port A, AL
CALL DELAY
ROL AL, 01
DEC CX
JNZ Again1
MOV AL, 88H
MOV CX, 1000
Again2: OUT Port A, AL
CALL DELAY
ROR AL, 01
DEC CX
JNZ Again2
MOV AH, 4CH
INT 21H
Code ends
End start

You might also like