8085microprocessor-DEEPAK GUPTA
8085microprocessor-DEEPAK GUPTA
8085microprocessor-DEEPAK GUPTA
8085 INTRODUCTION
The features of INTEL 8085 :
• It is an 8 bit processor.
• It is a single chip N-MOS device with 40 pins.
• It has multiplexed address and data bus.(AD0-AD7).
• It works on 5 Volt dc power supply.
• The maximum clock frequency is 3 MHz while
minimum frequency is 500kHz.
• It provides 74 instructions with 5 different addressing
modes.
8085 The features Continued…
S Z X AC X P X CY
S:Sign flag is set when result of an operation is negative.
Z:Zero flag is set when result of an operation is 0.
Ac:Auxiliary carry flag is set when there is a carry out of lower
nibble or lower four bits of the operation.
CY:Carry flag is set when there is carry generated by an
operation.
P:Parity flag is set when result contains even number of 1’s.
Rest are don’t care flip flops.
Register Group
SERIAL IO CONTROL
GROUP
• It is used to accept the serial 1 bit data by
using SID and SOD signals and it can be
performed by using SIM & RIM
instructions.
INSTRUCTIONS SET OF 8085
B=40H B=30H
Flags Affected :No flags affected.
Addressing mode: Immediate.
DATA TRANSFER GROUP
HLT Stop.
ARITHMETIC GROUP
ADC R (ADD register content with Acc and carry and result in
A ).
Example:
ADC C. (ADD the content of C with A with carry).
Suppose the Data at C register is 10H and carry is 01H.
Initially After execution
. C= 10H ,A=10H A=21H,C=10H.
Flags Affected :All flags are modified.
Addressing mode: Register
ARITHMETIC GROUP
ANI Data (Logically AND immediate data with Acc and result in
A ).
Example:
ANI 10H (AND 10H with A).
Initially After execution
A=10H A=10H
Flags Affected :S,Z,P are modified Cy=reset,AC=set.
Addressing mode: Immediate.
LOGICAL GROUP
Immediate addressing:
Immediate data is transferred to address or register.
Example:
MVI A,20H. Transfer immediate data 20H to accumulator.
Number of bytes:
Either 2 or 3 bytes long.
1st byte is opcode.
2nd byte 8 bit data .
3rd byte higher byte data of 16 bytes.
ADDRESSING MODES OF 8085
Register addressing:
Data is transferred from one register to other.
Example:
MOV A, C :Transfer data from C register to accumulator.
Number of bytes:
Only 1 byte long.
One byte is opcode.
ADDRESSING MODES OF 8085
Direct addressing:
Data is transferred from direct address to other register or
vice-versa.
Example:
LDA C200H .Transfer contents from C200H to Acc.
Number of bytes:
These are 3 bytes long.
1st byte is opcode.
2nd byte lower address.
3rd byte higher address.
ADDRESSING MODES OF 8085
Indirect addressing:
Data is transferred from address pointed by the data in a
register to other register or vice-versa.
Example:
MOV A, M: Move contents from address pointed by M to
Acc.
Number of bytes:
These are 3 bytes long.
1st byte is opcode.
2nd byte lower address.
3rd byte higher address.
ADDRESSING MODES OF 8085
Implied addressing:
These doesn’t require any operand. The data is specified in
Opcode itself.
Example: RAL: Rotate left with carry.
No.of Bytes:
These are single byte instruction or Opcode only.
PROGRAM
1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 87FFH
8085 Memory Interfacing
8085
CS
A15-A8
ALE
A10- A0 2K Byte
Latch Memory
AD7-AD0 A7- A0 Chip
WR RD IO/M D7- D0
RD WR
8085 Memory Interfacing
•In this example we saw that some address lines are used for
interfacing while others are for decoding.
•It is called absolute decoding.
•We sometimes don’t requires that many address lines.So
we ignore them.But this may lead to shadowing or multiple
address.
•This type of decoding is called linear decoding or partial
decoding.
•In partial decoding wastage of address takes place but it
requires less hardware and cost is also less as compared with
absolute one.
8255 PIN DIAGRAM
A1 A0 Selected port
0 0 Port A
0 1 Port B
1 0 Port C
1 1 Control Register
8255 BLOCK DIAGRAM
A15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Port
1 0 0 0 0 X X X X X X X X X 0 0 A
1 0 0 0 0 X X X X X X X X X 0 1 B
1 0 0 0 0 X X X X X X X X X 1 0 C
1 0 0 0 0 X X X X X X X X X 1 1 CW
INTERFACING 8085 & 8255
System A System B
Transmi OR Receiver
tter/ /
Receiver Transmi
tter
Half Duplex: It is a two way communication between two ports
provided that only party can communicate at a time.
•When one party stops transmitting the other starts transmitting.
•The first party now acts as a receiver.
SERIAL COMMUNICATION
Transmi Receiver
tter/ /
OR/AND. Transmi
Receiver
tter.
Full Duplex: It is a two way communication between two ports
and both parties can communicate at same time.
Thus here efficient communication can be established.
TRANSMISSION FORMATS
Asynchronous Synchronous
Classification of Interrupts
Interrupts can be classified into two types:
Maskable Interrupts (Can be delayed or Rejected)
Non-Maskable Interrupts (Can not be delayed or
Rejected)
INTERRUPTS IN 8085
RST 5.5, RST 6.5, RST 7.5 are all automatically vectored.
RST 5.5, RST 6.5, and RST 7.5 are all mask-able.
M5.5
M7.5
M6.5
SOD
MSE
R7.5
SDE
XXX
}
RST5.5 Mask
Serial Out Data 0 - Available
RST6.5 Mask
1 - Masked
RST7.5 Mask
M7.5
M6.5
M5.5
SDO
MSE
R7.5
SDE
XXX
- Disable 6.5 bit 1 = 1
- Enable 7.5 bit 2 = 0
- Allow setting the masks bit 3 = 1 0 0 0 0 1 0 1 0
- Don’t reset the flip flop bit 4 = 0
- Bit 5 is not used bit 5 = 0
- Don’t use serial data bit 6 = 0
- Serial data is ignored bit 7 = 0
7 6 5 4 3 2 1 0
M5.5
M7.5
M6.5
P6.5
P7.5
P5.5
SDI
IE
}
RST5.5 Mask
Serial Data In 0 - Available
RST6.5 Mask
1 - Masked
RST7.5 Mask
RST5.5 Interrupt Pending
RST6.5 Interrupt Pending
RST7.5 Interrupt Pending Interrupt Enable
Value of the Interrupt Enable
Flip Flop
•Since the 8085 has five interrupt lines, interrupts may occur during an
ISR and remain pending.
•Using the RIM instruction, it is possible to can read the status of the
interrupt lines and find if there are any pending interrupts.
105
Interrupts
Interrupt is a process where an external device can
get the attention of the microprocessor.
The process starts from the I/O device
The process is asynchronous.
Classification of Interrupts
Interrupts can be classified into two types:
Maskable Interrupts (Can be delayed or Rejected)
Non-Maskable Interrupts (Can not be delayed or Rejected)
106
Interrupts
An interrupt is considered to be an emergency
signal that may be serviced.
The Microprocessor may respond to it as soon as
possible.
107
Responding to Interrupts
Responding to an interrupt may be immediate or
delayed depending on whether the interrupt is maskable
or non-maskable and whether interrupts are being
masked or not.
108
The 8085 Interrupts
When a device interrupts, it actually wants the MP
to give a service which is equivalent to asking the
MP to call a subroutine. This subroutine is called
ISR (Interrupt Service Routine)
The ‘EI’ instruction is a one byte instruction and is
used to Enable the non-maskable interrupts.
The ‘DI’ instruction is a one byte instruction and is
used to Disable the non-maskable interrupts.
The 8085 has a single Non-Maskable interrupt.
The non-maskable interrupt is not affected by the value
of the Interrupt Enable flip flop.
109
The 8085 Interrupts
The 8085 has 5 interrupt inputs.
The INTR input.
The INTR input is the only non-vectored interrupt.
INTR is maskable using the EI/DI instruction pair.
110
The 8085 Interrupts
111
8085 Interrupts
TRAP
RST7.5
RST6.5
RST 5.5 8085
INTR
INTA
112
Interrupt Vectors and the
Vector Table
An interrupt vector is a pointer to where the
ISR is stored in memory.
All interrupts (vectored or otherwise) are
mapped onto a memory area called the
Interrupt Vector Table (IVT).
The IVT is usually located in memory page 00
(0000H - 00FFH).
The purpose of the IVT is to hold the vectors
that redirect the microprocessor to the right
place when an interrupt arrives.
113
Example: Let , a device interrupts the
Microprocessor using the RST 7.5 interrupt
line.
Because the RST 7.5 interrupt is vectored,
Microprocessor knows , in which memory
location it has to go using a call instruction to get
the ISR address. RST7.5 is knows as Call 003Ch to
Microprocessor. Microprocessor goes to 003C
location and will get a JMP instruction to the
actual ISR address. The Microprocessor will then,
jump to the ISR location
114
The 8085 Non-Vectored
Interrupt Process
1. The interrupt process should be enabled using the EI
instruction.
2. The 8085 checks for an interrupt during the execution of
every instruction.
3. If INTR is high, MP completes current instruction, disables the
interrupt and sends INTA (Interrupt acknowledge) signal to
the device that interrupted
4. INTA allows the I/O device to send a RST instruction through
data bus.
5. Upon receiving the INTA signal, MP saves the memory
location of the next instruction on the stack and the program
is transferred to ‘call’ location (ISR Call) specified by the RST
instruction
115
The 8085 Non-Vectored
Interrupt Process
6. Microprocessor Performs the ISR.
7. ISR must include the ‘EI’ instruction to enable the
further interrupt within the program.
8. RET instruction at the end of the ISR allows the MP
to retrieve the return address from the stack and
the program is transferred back to where the
program was interrupted.
116
The 8085 Non-Vectored
Interrupt Process
The 8085 recognizes 8 RESTART
instructions: RST0 - RST7.
each of these would send the execution to a
predetermined hard-wired memory location:
Restart Equivalent
Instruction to
RST0 CALL 0000H
RST1 CALL 0008H
RST2 CALL 0010H
RST3 CALL 0018H
RST4 CALL 0020H
RST5 CALL 0028H
RST6 CALL 0030H
RST7 CALL 0038H
117
Restart Sequence
The restart sequence is made up of three
machine cycles
In the 1st machine cycle:
The microprocessor sends the INTA signal.
While INTA is active the microprocessor reads the
data lines expecting to receive, from the interrupting
device, the opcode for the specific RST instruction.
In the 2nd and 3rd machine cycles:
the 16-bit address of the next instruction is saved on
the stack.
Then the microprocessor jumps to the address
associated with the specified RST instruction.
118
Timing Diagram of Restart
Sequence
See the Page 380, Figure 12.2, of your Text
Book for the Timing Diagram of the RST
instruction
119
Hardware Generation of RST
Opcode
How does the external device produce the
opcode for the appropriate RST
instruction?
The opcode is simply a collection of bits.
So, the device needs to set the bits of the data
bus to the appropriate value in response to an
INTA signal.
120
Hardware Generation of RST
Opcode
The following is an example of
generating RST 5:
D D
76543210
11101111
121
Hardware Generation of RST
Opcode
During the interrupt acknowledge machine
cycle, (the 1st machine cycle of the RST
operation):
The Microprocessor activates the INTA signal.
This signal will enable the Tri-state buffers, which
will place the value EFH on the data bus.
Therefore, sending the Microprocessor the RST 5
instruction.
123
Issues in Implementing INTR
Interrupts
How long can the INTR remain high?
The INTR line must be deactivated before the EI
is executed. Otherwise, the microprocessor will
be interrupted again.
Once the microprocessor starts to respond to
an INTR interrupt, INTA becomes active (=0).
124
Issues in Implementing INTR
Interrupts
Can the microprocessor be interrupted again
before the completion of the ISR?
As soon as the 1st interrupt arrives, all maskable
interrupts are disabled.
They will only be enabled after the execution of the EI
instruction.
126
The Priority Encoder
The solution is to use a circuit called the priority
encoder (74LS148).
This circuit has 8 inputs and 3 outputs.
The inputs are assigned increasing priorities according
to the increasing index of the input.
Input 7 has highest priority and input 0 has the lowest.
The 3 outputs carry the index of the highest priority
active input.
Figure 12.4 in the book shows how this circuit can be
used with a Tri-state buffer to implement an interrupt
priority scheme.
127
Multiple Interrupts &
Priorities
Note that the opcodes for the different RST
instructions follow a set pattern.
Bit D5, D4 and D3 of the opcodes change in a binary
sequence from RST 7 down to RST 0.
The other bits are always 1.
This allows the code generated by the 74366 to be used
directly to choose the appropriate RST instruction.
The one draw back to this scheme is that the only
way to change the priority of the devices
connected to the 74366 is to reconnect the
hardware.
128
Multiple Interrupts and
Priority
129
The 8085 Maskable/Vectored
Interrupts
The 8085 has 4 Masked/Vectored interrupt inputs.
RST 5.5, RST 6.5, RST 7.5
They are all maskable.
They are automatically vectored according to the following
table:
Interrupt Vector
RST 5.5 002CH
RST 6.5 0034H
RST 7.5 003CH
The vectors for these interrupt fall in between the vectors for the
RST instructions. That’s why they have 130 names like RST 5.5 (RST
5 and a half).
Masking RST 5.5, RST 6.5
and RST 7.5
These three interrupts are masked at two
levels:
Through the Interrupt Enable flip flop and the
EI/DI instructions.
The Interrupt Enable flip flop controls the whole
maskable interrupt process.
Through individual mask flip flops that control
the availability of the individual interrupts.
These flip flops control the interrupts individually.
131
Maskable Interrupts and
vector locations
RST 7.5
RST7.5 Memory
M 7.5
RST 6.5
M 6.5
RST 5.5
M 5.5
INTR
132
The 8085 Maskable/Vectored Interrupt
Process
1. The interrupt process should be enabled using the
EI instruction.
2. The 8085 checks for an interrupt during the
execution of every instruction.
3. If there is an interrupt, and if the interrupt is
enabled using the interrupt mask, the
microprocessor will complete the executing
instruction, and reset the interrupt flip flop.
4. The microprocessor then executes a call instruction
that sends the execution to the appropriate location
in the interrupt vector table.
133
The 8085 Maskable/Vectored Interrupt
Process
5. When the microprocessor executes the call
instruction, it saves the address of the next
instruction on the stack.
6. The microprocessor jumps to the specific service
routine.
7. The service routine must include the instruction EI
to re-enable the interrupt process.
8. At the end of the service routine, the RET
instruction returns the execution to where the
program was interrupted.
134
Manipulating the Masks
The Interrupt Enable flip flop is
manipulated using the EI/DI instructions.
M5.5
M7.5
M6.5
R7.5
SDO
MSE
SDE
XXX
}
RST5.5 Mask
Serial Data Out 0 - Available
RST6.5 Mask
1 - Masked
RST7.5 Mask
136
SIM and the Interrupt Mask
Bit 0 is the mask for RST 5.5, bit 1 is the mask for RST 6.5 and bit
2 is the mask for RST 7.5.
If the mask bit is 0, the interrupt is available.
If the mask bit is 1, the interrupt is masked.
Bit 3 (Mask Set Enable - MSE) is an enable for setting the mask.
If it is set to 0 the mask is ignored and the old settings
remain.
If it is set to 1, the new setting are applied.
The SIM instruction is used for multiple purposes and
not only for setting interrupt masks.
It is also used to control functionality such as Serial Data Transmission.
Therefore, bit 3 is necessary to tell the microprocessor whether or not the
interrupt masks should be modified
137
SIM and the Interrupt Mask
The RST 7.5 interrupt is the only 8085 interrupt that has
memory.
If a signal on RST7.5 arrives while it is masked, a flip flop will
remember the signal.
When RST7.5 is unmasked, the microprocessor will be
interrupted even if the device has removed the interrupt
signal.
This flip flop will be automatically reset when the
microprocessor responds to an RST 7.5 interrupt.
M7.5
M6.5
M5.5
R7.5
SDO
MSE
SDE
XXX
- Enable 5.5 bit 0 = 0
- Disable 6.5 bit 1 = 1 0 0 0 0 1 0 1 0
- Enable 7.5 bit 2 = 0
- Allow setting the masks bit 3 = 1
Contents of accumulator are: 0AH
- Don’t reset the flip flop bit 4 = 0
- Bit 5 is not used bit 5 = 0
- Don’t use serial data bit 6 = 0
- Serial data is ignored bit 7 = 0
EI ; Enable interrupts including INTR
MVI A, 0A ; Prepare the mask to enable RST 7.5, and 5.5, disable 6.5
SIM ; Apply the settings RST masks
139
Triggering Levels
RST 7.5 is positive edge sensitive.
When a positive edge appears on the RST7.5 line, a logic 1
is stored in the flip-flop as a “pending” interrupt.
Since the value has been stored in the flip flop, the line
does not have to be high when the microprocessor checks
for the interrupt to be recognized.
The line must go to zero and back to one before a new
interrupt is recognized.
RST 6.5 and RST 5.5 are level sensitive.
The interrupting signal must remain present until the
microprocessor checks for interrupts.
140
Determining the Current
Mask Settings
RIM instruction: Read Interrupt Mask
Load the accumulator with an 8-bit pattern
showing the status of each interrupt pin and
mask.
RST7.5 Memory
RST 7.5
M 7.5
7 6 5 4 3 2 1 0
M5.5
M7.5
M6.5
P7.5
P6.5
P5.5
SDI
IE
RST 6.5
M 6.5
RST 5.5
M 5.5
Interrupt Enable
Flip Flop
141
How RIM sets the Accumulator’s
different bits
7 6 5 4 3 2 1 0
M5.5
M7.5
M6.5
P6.5
P7.5
P5.5
SDI
IE
}
RST5.5 Mask
Serial Data In 0 - Available
RST6.5 Mask
1 - Masked
RST7.5 Mask
RST5.5 Interrupt Pending
RST6.5 Interrupt Pending
RST7.5 Interrupt Pending Interrupt Enable
Value of the Interrupt Enable
Flip Flop
142
The RIM Instruction and the
Masks
Bits 0-2 show the current setting of the mask for
each of RST 7.5, RST 6.5 and RST 5.5
They return the contents of the three mask flip flops.
They can be used by a program to read the mask settings in
order to modify only the right mask.
145
TRAP
TRAP is the only non-maskable interrupt.
It does not need to be enabled because it cannot be
disabled.
It has the highest priority amongst interrupts.
It is edge and level sensitive.
It needs to be high and stay high to be recognized.
Once it is recognized, it won’t be recognized again
until it goes low, then high again.
Level
INTR Yes DI / EI No No
Sensitive
147
8253 PIT
8253 Features
Program:
MVI A,37H Initialize counter 0 mode 3
OUT 13H 16 bit count BCD
MVI A,00H Load LSB count to counter 0
OUT 10H
MVI A,10H Load MSB count to counter 0
OUT 10H.
Thus, the output will be a square wave.
DMA
8257 DMA