features: - e-learnnehruelearning.in/images/414/8085.docx · web viewthe instructions which have...
TRANSCRIPT
III BSC ECS
8085 MICROPROCESSOR AND APPLICATIONSUNIT I INTRODUCTION TO 8085Pin Diagram – Architecture – Demultiplexing the bus – Generation of control signals – Fetching, decodingand execution of instruction – Instruction timing and operation status.UNIT II INSTRUCTION SET AND ADDRESSING MODESInstruction set – Addressing modes – Instruction format – Simple program – Memory Read machine cycle– Memory write machine cycle.UNIT III INTERFACING CONCEPTSPeripheral I/O instructions – device selection and data transfer – Input Interfacing – Practical Inputinterfacing using decoders – Interfacing O/P Devices: LED and 7 segment Display – Interfacing memory – Memorytime and unit states.UNIT IV PARALLEL AND SERIAL INTERFACEIntroduction to programmable Peripheral Interface 8255 – Pin Diagram – Architecture – Modes ofOperation: I/O and BSR – Architecture and operation of 8251 (USART).INTERRUPT AND TIMER LOGIC8085 interrupts - Architecture of programmable interrupt controller 8259 –– Architecture of 8254 ProgrammableInterval timer / counter – Modes of Operation of 8254 – Generating square wave using 8254.UNIT V APPLICATIONSTime delay program – Traffic Light Control System – Water Level Controller – Stepper Motor Control –Interfacing DAC – Interfacing ADC – Temperature measurement.TEXT BOOKS1. R.S.Gaonkar “Microprocessor Architecture, Program And Its Application With 8085”, New AgeInternational (P) Ltd,2. S.Malarvizhi, “Microprocessor and Its Application”, - Anuradhe Agencies Publications – I edition, March1999.
SYLLABUS : INTRODUCTION TO 8085
Pin Diagram – Architecture – Demultiplexing the bus – Generation of control signals – Fetching, decoding and execution of instruction – Instruction timing and operation status.
INSTRUCTION SET AND ADDRESSING MODES
Instruction set – Addressing modes – Instruction format – Simple program – Memory Read machine cycle – Memory write machine cycle.
Microprocessor
A microprocessor is a clock-driven semiconductor device consisting of electronic logic circuits manufactured by using either a large-scale integration (LSI) or very-large-scale integration (VLSI) technique.
The microprocessor is capable of performing various computing functions and making decisions to change the sequence of program execution.
In large computers, a CPU performs these computing functions.The Microprocessor resembles a CPU exactly.
The microprocessor is in many ways similar to the CPU, but includes all the logic circuitry including the control unit, on one chip.
The microprocessor can be divided into three segments for the sake of clarity. – They are: arithmetic/logic unit (ALU), register array, and control unit.
A comparison between a microprocessor, and a computer is shown below:
Arithmetic/Logic Unit: This is the area of the microprocessor where various computing functions are performed on data. The ALU unit performs such arithmetic operations as addition and subtraction, and such logic operations as AND, OR, and exclusive OR.
Register Array: This area of the microprocessor consists of various registers identified by letters such as B, C, D, E, H, and L. These registers are primarily used to store data temporarily during the execution of a program and are accessible to the user through instructions.
Control Unit: The control unit provides the necessary timing and control signals to all the operations in the microcomputer. It controls the flow of data between the microprocessor and memory and peripherals.
Memory: Memory stores such binary information as instructions and data, and provides that information to the microprocessor whenever necessary. To execute programs, the microprocessor reads instructions and data from memory and performs the computing operations in its ALU section. Results are either transferred to the output section for display or stored in memory for later use. Read-Only memory (ROM) and Read/Write memory (R/WM), popularly known as Random- Access memory (RAM).
1. The ROM is used to store programs that do not need alterations. The monitor program of a single-board microcomputer is generally stored in the ROM. This program interprets the information entered through a keyboard and provides equivalent binary digits to the microprocessor. Programs stored in the ROM can only be read; they cannot be altered.
2. The Read/Write memory (RIWM) is also known as user memory It is used to store user programs and data. In single-board microcomputers, the monitor program monitors the Hex keys and stores those instructions and data in the R/W memory. The information stored in this memory can be easily read and altered.
I/O (Input/Output): It communicates with the outside world. I/O includes two types of devices: input and output; these I/O devices are also known as peripherals.
System Bus: The system bus is a communication path between the microprocessor and peripherals: it is nothing but a group of wires to carry bits.
Applications of microprocessors:
Microprocessor is a multi-use device which finds applications in almost all the fields.Here is some sample applications given in variety of fields.
Electronics:
Digital clocks & Watches Mobile phones Measuring Meters
Mechanical:
Automobiles Lathes All remote machines
Electrical:
Motors Lighting controls Power stations
Medical:
Patient monitoring Most of the Medical equipments Data loggers
Computer:
All computer accessories Laptops & Modems Scanners & Printers
Domestic:
Microwave Ovens Television/CD/DVD players Washing Machines
PIN DIAGRAM AND PIN DESCRIPTION OF 8085
8085 is a 40 pin IC, DIP package. The signals from the pins can be grouped as follows :
1. Power supply and clock signals
2. Address bus
3. Data bus
4. Control and status signals
5. Interrupts and externally initiated signals
6. Serial I/O ports
1. Power supply and Clock frequency signals:
Vcc + 5 volt power supply Vss Ground X1, X2 : Crystal or R/C network or LC network connections to set the frequency of
internal clock generator. The frequency is internally divided by two. Since the basic operating timing frequency is
3 MHz, a 6 MHz crystal is connected externally. CLK (output)-Clock Output is used as the system clock for peripheral and devices
interfaced with the microprocessor.
Fig (a) - Pin Diagram of 8085 & Fig(b) - logical schematic of Pin diagram.
2. Address Bus:
A8 - A15 (output; 3-state) It carries the most significant 8 bits of the memory address or the 8 bits of the I/O
address;
3. Multiplexed Address / Data Bus:
AD0 - AD7 (input/output; 3-state) These multiplexed set of lines used to carry the lower order 8 bit address as well as data
bus. During the opcode fetch operation, in the first clock cycle, the lines deliver the lower
order address A0 - A7. In the subsequent IO / memory, read / write clock cycle the lines are used as data bus. The CPU may read or write out data through these lines.
4. Control and Status signals:
ALE (output) - Address Latch Enable. This signal helps to capture the lower order address presented on the multiplexed
address / data bus. RD (output 3-state, active low) - Read memory or IO device. This indicates that the selected memory location or I/O device is to be read and that the
data bus is ready for accepting data from the memory or I/O device. WR (output 3-state, active low) - Write memory or IO device. This indicates that the data on the data bus is to be written into the selected memory
location or I/O device. IO/M (output) - Select memory or an IO device. This status signal indicates that the read / write operation relates to whether the memory
or I/O device. It goes high to indicate an I/O operation. It goes low for memory operations.
5. Status Signals:
It is used to know the type of current operation of the microprocessor.
The microprocessor is a clock-driven semiconductor device consisting of electronic logic circuits manufactured by using either a large-scale integration (LSI) or very-large-scale integration (VLSI) technique.
The microprocessor is capable of performing various computing functions and making decisions to change the sequence of program execution.
In large computers, a CPU implemented on one or more circuit boards performs these computing functions.
The microprocessor is in many ways similar to the CPU, but includes the logic circuitry, including the control unit, on one chip.
The microprocessor can be divided into three segments for the sake clarity, arithmetic/logic unit (ALU), register array, and control unit.
6. Interrupts and Externally initiated operations:
They are the signals initiated by an external device to request the microprocessor to do a particular task or work.
There are five hardware interrupts called,
On receipt of an interrupt, the microprocessor acknowledges the interrupt by the active low INTA (Interrupt Acknowledge) signal.
Reset In (input, active low)
This signal is used to reset the microprocessor.
The program counter inside the microprocessor is set to zero.
The buses are tri-stated.
Reset Out (Output)
It indicates CPU is being reset.
Used to reset all the connected devices when the microprocessor is reset.
7. Direct Memory Access (DMA):
Tri state devices:
3 output states are high & low states and additionally a high impedance state.
When enable E is high the gate is enabled and the output Q can be 1 or 0 (if A is 0, Q is 1, otherwise Q is 0). However, when E is low the gate is disabled and the output Q enters into a high impedance state.
Fig (a) - Pin Diagram of 8085 & Fig(b) - logical schematic of Pin diagram.
For both high and low states, the output Q draws a current from the input of the OR gate. When E is low, Q enters a high impedance state; high impedance means it is electrically
isolated from the OR gate's input, though it is physically connected. Therefore, it does not draw any current from the OR gate's input.
When 2 or more devices are connected to a common bus, to prevent the devices from interfering with each other, the tristate gates are used to disconnect all devices except the one that is communicating at a given instant.
The CPU controls the data transfer operation between memory and I/O device. Direct Memory Access operation is used for large volume data transfer between memory and an I/O device directly.
The CPU is disabled by tri-stating its buses and the transfer is effected directly by external control circuits.
HOLD signal is generated by the DMA controller circuit. On receipt of this signal, the microprocessor acknowledges the request by sending out HLDA signal and leaves out the control of the buses. After the HLDA signal the DMA controller starts the direct transfer of data.
READY (input)
Memory and I/O devices will have slower response compared to microprocessors. Before completing the present job such a slow peripheral may not be able to handle
further data or control signal from CPU. The processor sets the READY signal after completing the present job to access the data. The microprocessor enters into WAIT state while the READY pin is disabled.
8. Single Bit Serial I/O ports:
SID (input) - Serial input data line SOD (output) - Serial output data line These signals are used for serial communication.
Architechture of 8085 Microprocessor:
8085 Bus Structure:
Address Bus:
The address bus is a group of 16 lines generally identified as A0 to A15. The address bus is unidirectional: bits flow in one direction-from the MPU to peripheral
devices. The MPU uses the address bus to perform the first function: identifying a peripheral or a
memory location.
Data Bus:
The data bus is a group of eight lines used for data flow. These lines are bi-directional - data flow in both directions between the MPU and
memory and peripheral devices. The MPU uses the data bus to perform the second function: transferring binary
information. The eight data lines enable the MPU to manipulate 8-bit data ranging from 00 to FF (28 =
256 numbers). The largest number that can appear on the data bus is 11111111.
Control Bus:
The control bus carries synchronization signals and providing timing signals. The MPU generates specific control signals for every operation it performs. These signals
are used to identify a device type with which the MPU wants to communicate.
Registers of 8085:
The 8085 have six general-purpose registers to store 8-bit data during program execution. These registers are identified as B, C, D, E, H, and L. They can be combined as register pairs-BC, DE, and HL-to perform some 16-bit
operations.
Accumulator (A):
The accumulator is an 8-bit register that is part of the arithmetic/logic unit (ALU). This register is used to store 8-bit data and to perform arithmetic and logical operations. The result of an operation is stored in the accumulator.
Flags:
The ALU includes five flip-flops that are set or reset according to the result of an operation.
The microprocessor uses the flags for testing the data conditions. They are Zero (Z), Carry (CY), Sign (S), Parity (P), and Auxiliary Carry (AC) flags. The
most commonly used flags are Sign, Zero, and Carry.
The bit position for the flags in flag register is,
1.Sign Flag (S):
After execution of any arithmetic and logical operation, if D7 of the result is 1, the signflag is set. Otherwise it is reset. D7 is reserved for indicating the sign; the remaining is the magnitude of number.
If D7 is 1, the number will be viewed as negative number. If D7 is 0, the number will be viewed as positive number.
2.Zero Flag (z):
If the result of arithmetic and logical operation is zero, then zero flag is set otherwise it is reset.
3.Auxiliary Carry Flag (AC):
If D3 generates any carry when doing any arithmetic and logical operation, this flag is set. Otherwise it is reset.
4.Parity Flag (P):
If the result of arithmetic and logical operation contains even number of 1's then this flag will be set and if it is odd number of 1's it will be reset.
5.Carry Flag (CY):
If any arithmetic and logical operation result any carry then carry flag is set otherwise it is reset.
Arithmetic and Logic Unit (ALU):
It is used to perform the arithmetic operations like addition, subtraction, multiplication, division, increment and decrement and logical operations like AND, OR and EX-OR.
It receives the data from accumulator and registers.
According to the result it set or reset the flags.
Program Counter (PC):
This 16-bit register sequencing the execution of instructions.
It is a memory pointer. Memory locations have 16-bit addresses, and that is why this is a 16-bit register.
The function of the program counter is to point to the memory address of the next instruction to be executed.
When an opcode is being fetched, the program counter is incremented by one to point to the next memory location.
Stack Pointer (Sp):
The stack pointer is also a 16-bit register used as a memory pointer.
It points to a memory location in R/W memory, called the stack.
The beginning of the stack is defined by loading a 16-bit address in the stack pointer (register).
Timing and Control unit:
It has three control signals ALE, RD (Active low) and WR (Active low) and three status signals IO/M(Active low), S0 and S1.
ALE is used for provide control signal to synchronize the components of microprocessor and timing for instruction to perform the operation.
A15-A8
LatchAD7-AD0
D7- D0
A7- A0
8085
ALE
RD (Active low) and WR (Active low) are used to indicate whether the operation is reading the data from memory or writing the data into memory respectively.
IO/M(Active low) is used to indicate whether the operation is belongs to the memory or peripherals.
Interrupt Control Unit:
It receives hardware interrupt signals and sends an acknowledgement for receiving the interrupt signal.
Demultiplexing AD7-AD0
– From the above description, it becomes obvious that the AD7– AD0 lines are serving a dual purpose and that they need to be demultiplexed to get all the information.
– The high order bits of the address remain on the bus for three clock periods. However, the low order bits remain for only one clock period and they would be lost if they are not saved externally. Also, notice that the low order bits of the address disappear when they are needed most.
– To make sure we have the entire address for the full three clock cycles, we will use an external latch to save the value of AD7– AD0 when it is carrying the address bits. We use the ALE signal to enable this latch.
• Given that ALE operates as a pulse during T1, we will be able to latch the address. Then when ALE goes low, the address is saved and the AD7– AD0 lines can be used for their purpose as the bi-directional data lines.
Generation of control signals:
• The 8085 generates a single RD signal. However, the signal needs to be used with both memory and I/O. So, it must be combined with the IO/M signal to generate different control signals for the memory and I/O.– Keeping in mind the operation of the IO/M signal we can use the following circuitry
to generate the right set of signals:
Timing diagram:
Timing Diagram is a graphical representation. It represents the execution time taken by each instruction in a graphical format. The execution time is represented in T-states.
Instruction Cycle:
The time required to execute an instruction is called instruction cycle.
Machine Cycle:
The time required to access the memory or input/output devices is called machine cycle.
T-State:
The machine cycle and instruction cycle takes multiple clock periods. A portion of an operation carried out in one system clock period is called as T-state.
Each instruction of the 8085 processor consists of one to five machine cycles, i.e., when the 8085 processor executes an instruction, it will execute some of the machine cycles in a specific order.
The processor takes a definite time to execute the machine cycles. The time taken by the processor to execute a machine cycle is expressed in T-states.
One T-state is equal to the time period of the internal clock signal of the processor.
The T-state starts at the falling edge of a clock.
Opcode fetch machine cycle of 8085 :
Each instruction of the processor has one byte opcode. The opcodes are stored in memory. So, the processor executes the opcode fetch machine
cycle to fetch the opcode from memory. Hence, every instruction starts with opcode fetch machine cycle. The time taken by the processor to execute the opcode fetch cycle is 4T. In this time, the first, 3 T-states are used for fetching the opcode from memory and the
remaining T-states are used for internal operations by the processor.
Fig - Timing Diagram for Opcode Fetch Machine Cycle
UNIT-II
INSTRUCTION SET & ADDRESSING MODES
The 8085 instruction set can be classified into the following five functional headings.
1. DATA TRANSFER INSTRUCTIONS:
It includes the instructions that move (copies) data between registers or between memory locations and registers. In all data transfer operations the content of source register is not altered. Hence the data transfer is copying operation.
Ex: (1) Mov A,B (2) MVI C,45H
2. ARITHMETIC INSTRUCTIONS:
Includes the instructions, which performs the addition, subtraction, increment or decrement operations. The flag conditions are altered after execution of an instruction in this group.
Ex: (1) ADD A,B (2) SUI B,05H
3. LOGICAL INSTRUCTIONS:
The instructions which performs the logical operations like AND, OR, EXCLUSIVE- OR, complement, compare and rotate instructions are grouped under this heading. The flag conditions are altered after execution of an instruction in this group.
Ex: (1) ORA A (2) ANI B, 01H
4. BRANCHING INSTRUCTIONS:
The instructions that are used to transfer the program control from one memory location to another memory location are grouped under this heading.
Ex: (1) CALL (2) JMP 4100
5. MACHINE CONTROL INSTRUCTIONS:
It includes the instructions related to interrupts and the instruction used to stop the program execution.
Ex: (1) NOP (2) END
Addressing modes of 8085:
Every instruction of a program has to operate on a data. The method of specifying the data to be operated by the instruction is called Addressing. The 8085 has the following 5 different types of addressing.
1. Immediate Addressing
2. Direct Addressing
3. Register Addressing
4. Register Indirect Addressing
5. Implied Addressing
1. Immediate Addressing:
In immediate addressing mode, the data is specified in the instruction itself. The data will be a part of the program instruction.
EX. MVI B, 3EH - Move the data 3EH given in the instruction to B register; LXI SP, 2700H.
2. Direct Addressing:
In direct addressing mode, the address of the data is specified in the instruction. The data will be in memory. In this addressing mode, the program instructions and data can be stored in different memory.
EX. LDA 1050H - Load the data available in memory location 1050H in to accumulator; SHLD 3000H
3. Register Addressing:
In register addressing mode, the instruction specifies the name of the register in which the data is available.
EX. MOV A, B - Move the content of B register to A register; SPHL; ADD C.
4. Register Indirect Addressing:
In register indirect addressing mode, the instruction specifies the name of the register in which the address of the data is available. Here the data will be in memory and the address will be in the register pair.
EX. MOV A, M - The memory data addressed by H L pair is moved to A register. LDAX B.
5. Implied Addressing:
In implied addressing mode, the instruction itself specifies the data to be operated. EX. CMA - Complement the content of accumulator; RAL
DATA TRANSFER INSTRUCTIONS
Opcode OperandExplanation of
Instruction Description
MOV Rd, Rs Copy from source(Rs) to
destination(Rd)
This instruction copies the contents of the source register into the destination register; the contents of the source register are not altered. If one of the operands is
M, Rs
Rd, M
a memory location, its location is specified by the contents of the HL registers.
Example: MOV B, C or MOV B, M
MVI Rd, data
M, data
Move immediate 8-bit
The 8-bit data is stored in the destination register or memory. If the operand is a memory location, its location is specified by the contents of the HL registers.
Example: MVI B, 57H or MVI M, 57H
LDA 16-bit
addressLoad accumulator
The contents of a memory location, specified by a 16-bit address in the operand, are copied to the accumulator. The contents of the source are not altered.
Example: LDA 2034H
LDAX B/D Reg.
pairLoad accumulator
indirect
The contents of the designated register pair point to a memory location. This instruction copies the contents of that memory location into the accumulator. The contents of either the register pair or the memory location are not altered.
Example: LDAX B
LXI Reg. pair, 16-bit data
Load register pair immediate
The instruction loads 16-bit data in the register pair designated in the operand.
Example: LXI H, 2034H or LXI H, XYZ
LHLD 16-bit
addressLoad H and L registers direct
The instruction copies the contents of the memory location pointed out by the 16-bit address into register L and copies the contents of the next memory location into register H. The contents of source memory locations are not altered.
Example: LHLD 2040H
STA 16-bit
address16-bit address
The contents of the accumulator are copied into the memory location specified by the operand. This is a 3-byte instruction, the second byte specifies the low-order address and the third byte specifies the high-order address.
Example: STA 4350H STAX Reg. pair Store accumulator
indirectThe contents of the accumulator are copied into the memory location specified by the contents of the operand (register pair). The contents of the accumulator are not altered.
Example: STAX B
SHLD 16-bit
addressStore H and L registers direct
The contents of register L are stored into the memory location specified by the 16-bit address in the operand and the contents of H register are stored into the next memory location by incrementing the operand. The contents of registers HL are not altered. This is a 3-byte instruction, the second byte specifies the low-order address and the third byte specifies the high-order address.
Example: SHLD 2470H
XCHG noneExchange H and L
with D and E
The contents of register H are exchanged with the contents of register D, and the contents of register L are exchanged with the contents of register E.
Example: XCHG
SPHL none Copy H and L
registers to the stack pointer
The instruction loads the contents of the H and L registers intothe stack pointer register, the contents of the H register provide the high-order address and the contents of the L register provide the low-order address. The contents of the Hand L registers are not altered.
Example: SPHL
XTHL noneExchange H and L with top of stack
The contents of the L register are exchanged with the stack location pointed out by the contents of the stack pointer register. The contents of the H register are exchanged with the next stack location (SP+1); however, the contents of the stack pointer register are not altered.
Example: XTHL
PUSH Reg. pairPush register pair
onto stack
The contents of the register pair designated in the operand are copied onto the stack in the following sequence. The stack pointer register is decremented and the contents of the highorder register (B, D, H, A) are copied into that location. The stack pointer register is decremented again and the contents of the low-order register (C, E, L, flags) are copied to that location.
Example: PUSH B or PUSH A POP Reg. pair Pop off stack to
register pairThe contents of the memory location pointed out by the stack pointer register are copied to the low-order
register (C, E, L, status flags) of the operand. The stack pointer is incremented by 1 and the contents of that memory location are copied to the high-order register (B, D, H, A) of the operand. The stack pointer register is again incremented by 1.
Example: POP H or POP A
OUT 8-bit port
address
Output data from accumulator to a port
with 8-bit address
The contents of the accumulator are copied into the I/O port specified by the operand.
Example: OUT F8H
IN 8-bit port
address
Input data to accumulator from a
port with 8-bit address
The contents of the input port designated in the operand are read and loaded into the accumulator.
Example: IN 8CH
ARITHMETIC INSTRUCTIONS
Opcode OperandExplanation of
Instruction Description
ADD R
M
Add register or memory, to accumulator
The contents of the operand (register or memory) are added to the contents of the accumulator and the result is stored in the accumulator. If the operand is a memory location, its location is specified by the contents of the HL registers. All flags are modified to reflect the result of the addition.
Example: ADD B or ADD M
ADC R
M
Add register to accumulator with
carry
The contents of the operand (register or memory) and M the Carry flag are added to the contents of the accumulator and the result is stored in the accumulator. If the operand is a memory location, its location is specified by the contents of the HL registers. All flags are modified to reflect the result of the addition.
Example: ADC B or ADC M
ADI 8-bit dataAdd immediate to
accumulator
The 8-bit data (operand) is added to the contents of the accumulator and the result is stored in the accumulator. All flags are modified to reflect the result of the addition.
Example: ADI 45H
ACI 8-bit dataAdd immediate to accumulator with
carry
The 8-bit data (operand) and the Carry flag are added to the contents of the accumulator and the result is stored in the accumulator. All flags are modified to reflect the result of the addition.
Example: ACI 45H
LXI Reg. pair, 16-bit data
Load register pair immediate
The instruction loads 16-bit data in the register pair designated in the operand.
Example: LXI H, 2034H or LXI H, XYZ
DAD Reg. pairAdd register pair
to H and L registers
The 16-bit contents of the specified register pair are added to the contents of the HL register and the sum is stored in the HL register. The contents of the source register pair are not altered. If the result is larger than 16 bits, the CY flag is set. No other flags are affected.
Example: DAD H
SUB R
M
Subtract register or memory from
accumulator
The contents of the operand (register or memory ) are subtracted from the contents of the accumulator, and the result is stored in the accumulator. If the operand is a memory location, its location is specified by the contents of the HL registers. All flags are modified to reflect the result of the subtraction.
Example: SUB B or SUB M
SBB R
M
Subtract source and borrow from
accumulator
The contents of the operand (register or memory ) and M the Borrow flag are subtracted from the contents of the accumulator and the result is placed in the accumulator. If the operand is a memory location, its location is specified by the contents of the HL registers. All flags are modified to reflect the result of the subtraction.
Example: SBB B or SBB M
SUI 8-bit dataSubtract
immediate from accumulator
The 8-bit data (operand) is subtracted from the contents of the accumulator and the result is stored in the accumulator. All flags are modified to reflect the result of the subtraction.
Example: SUI 45H
SBI 8-bit data
Subtract immediate from
accumulator with borrow
The contents of register H are exchanged with the contents of register D, and the contents of register L are exchanged with the contents of register E.
Example: XCHG
INR R
M
Increment register or memory by 1
The contents of the designated register or memory) are incremented by 1 and the result is stored in the same place. If the operand is a memory location, its location is specified by the contents of the HL registers.
Example: INR B or INR M
INX RIncrement register
pair by 1
The contents of the designated register pair are incremented by 1 and the result is stored in the same place.
Example: INX H
DCR R
M
Decrement register or
memory by 1
The contents of the designated register or memory are M decremented by 1 and the result is stored in the same place. If the operand is a memory location, its location is specified by the contents of the HL registers.
Example: DCR B or DCR M
DCX RDecrement
register pair by 1
The contents of the designated register pair are decremented by 1 and the result is stored in the same place.
Example: DCX H
DAA noneDecimal adjust
accumulator
The contents of the accumulator are changed from a binary value to two 4-bit binary coded decimal (BCD) digits. This is the only instruction that uses the auxiliary flag to perform the binary to BCD conversion, and the conversion procedure is described below. S, Z, AC, P, CY flags are altered to reflect the results of the operation.
If the value of the low-order 4-bits in the accumulator is greater than 9 or if AC flag is set, the instruction adds 6 to the low-order four bits.
If the value of the high-order 4-bits in the accumulator is greater than 9 or if the Carry flag is set, the instruction adds 6 to the high-order four bits.
Example: DAA
BRANCHING INSTRUCTIONS
Opcode OperandExplanation of
Instruction Description
JMP 16-bit
addressJump
unconditionally
The program sequence is transferred to the memory location specified by the 16-bit address given in the operand.
Example: JMP 2034H or JMP XYZ
Opcode DescriptionFlag
Status
JC Jump on Carry CY = 1
JNCJump on no Carry
CY = 0
JP Jump on positive S = 0
JM Jump on minus S = 1
JZ Jump on zero Z = 1
JNZ Jump on no zero Z = 0
JPEJump on parity even
P = 1
JPOJump on parity odd
P = 0
16-bit address
Jump conditionally
The program sequence is transferred to the memory location specified by the 16-bit address given in the operand based on the specified flag of the PSW as described below.
Example: JZ 2034H or JZ XYZ
Opcode DescriptionFlag
Status
CC Call on Carry CY = 1
CNCCall on no Carry
CY = 0
CP Call on positive S = 0
16-bit address
Unconditional subroutine call
The program sequence is transferred to the memory location specified by the 16-bit address given in the operand. Before the transfer, the address of the next instruction after CALL (the contents of the program counter) is pushed onto the stack.
Example: CALL 2034H or CALL XYZ
CM Call on minus S = 1
CZ Call on zero Z = 1
CNZ Call on no zero Z = 0
CPECall on parity even
P = 1
CPOCall on parity odd
P = 0
RET noneReturn from subroutine
unconditionally
The program sequence is transferred from the subroutine to the calling program. The two bytes from the top of the stack are copied into the program counter,and program execution begins at the new address.
Example: RET
Opcode DescriptionFlag
Status
RC Return on Carry CY = 1
RNCReturn on no Carry
CY = 0
RPReturn on positive
S = 0
RM Return on minus S = 1
RZ Return on zero Z = 1
RNZReturn on no zero
Z = 0
RPEReturn on parity even
P = 1
none Return from subroutine
conditionally
The program sequence is transferred from the subroutine to the calling program based on the specified flag of the PSW as described below. The two bytes from the top of the stack are copied into the program counter, and program execution begins at the new address.
Example: RZ
RPOReturn on parity odd
P = 0
PCHL noneLoad program
counter with HL contents
The contents of registers H and L are copied into the program counter. The contents of H are placed as the high-order byte and the contents of L as the low-order byte.
Example: PCHL
RST0-7 Restart
The RST instruction is equivalent to a 1-byte call instruction to one of eight memory locations depending upon the number. The instructions are generally used in conjunction with interrupts and inserted using external hardware. However these can be used as software instructions in a program to transfer program execution to one of the eight locations. The addresses are:
Instruction
Restart Addres
s
RST 0 0000H
RST1 0008H
RST 2 0010H
RST 3 0018H
RST 4 0020H
RST 5 0028H
RST 6 0030H
RST 7 0038H
The 8085 has four additional interrupts and these interrupts
generate RST instructions internally and thus do not require any external hardware. These instructions and their Restart addresses are:
InterruptRestart Address
TRAP 0024H
RST 5.5 002CH
RST 6.5 0034H
RST 7.5 003CH
LOGICAL INSTRUCTIONS
Opcode OperandExplanation of
Instruction Description
CMP R
M
Compare register or memory with
accumulator
The contents of the operand (register or memory) are M compared with the contents of the accumulator. Both contents are preserved . The result of the comparison is shown by setting the flags of the PSW as follows:
if (A) < (reg/mem): carry flag is setif (A) = (reg/mem): zero flag is setif (A) > (reg/mem): carry and zero flags are reset
Example: CMP B or CMP MCPI 8-bit data Compare
immediate with accumulator
The second byte (8-bit data) is compared with the contents of the accumulator. The values being compared remain unchanged. The result of the comparison is shown by setting the flags of the PSW as follows:
if (A) < data: carry flag is setif (A) = data: zero flag is setif (A) > data: carry and zero flags are reset
Example: CPI 89H
ANAR
M
Logical AND register or
memory with accumulator
The contents of the accumulator are logically ANDed with M the contents of the operand (register or memory), and the result is placed in the accumulator. If the operand is a memory location, its address is specified by the contents of HL registers. S, Z, P are modified to reflect the result of the operation. CY is reset. AC is set.
Example: ANA B or ANA M
ANI 8-bit data
Logical AND immediate with
accumulator
The contents of the accumulator are logically ANDed with the8-bit data (operand) and the result is placed in theaccumulator. S, Z, P are modified to reflect the result of theoperation. CY is reset. AC is set.
Example: ANI 86H
XRAR
M
Exclusive OR register or
memory with accumulator
The contents of the accumulator are Exclusive ORed with M the contents of the operand (register or memory), and the result is placed in the accumulator. If the operand is a memory location, its address is specified by the contents of HL registers. S, Z, P are modified to reflect the result of the operation. CY and AC are reset.
Example: XRA B or XRA M
XRI 8-bit data
Exclusive OR immediate with
accumulator
The contents of the accumulator are Exclusive ORed with the 8-bit data (operand) and the result is placed in the accumulator. S, Z, P are modified to reflect the result of the operation. CY and AC are reset.
Example: XRI 86H
ORAR
M
Logical OR register or
memory with accumulator
The contents of the accumulator are logically ORed with M the contents of the operand (register or memory), and the result is placed in the accumulator. If the operand is a memory location, its address is specified by the contents of HL registers. S, Z, P are modified to reflect the result of the operation. CY and AC are reset.
Example: ORA B or ORA M
ORI 8-bit data
Logical OR immediate with
accumulator
The contents of the accumulator are logically ORed with the 8-bit data (operand) and the result is placed in the accumulator. S, Z, P are modified to reflect the result of the operation. CY and AC are reset.
Example: ORI 86H
RLC noneRotate
accumulator left
Each binary bit of the accumulator is rotated left by one position. Bit D7 is placed in the position of D0 as well as in the Carry flag. CY is modified according to bit D7. S, Z, P, AC are not affected.
Example: RLC
RRC none Rotate
accumulator right
Each binary bit of the accumulator is rotated right by one position. Bit D0 is placed in the position of D7 as well as in the Carry flag. CY is modified according to bit D0. S, Z, P, AC are not affected.
Example: RRC
RAL noneRotate
accumulator left through carry
Each binary bit of the accumulator is rotated left by one position through the Carry flag. Bit D7 is placed in the Carry flag, and the Carry flag is placed in the least significant position D0. CY is modified according to bit D7. S, Z, P, AC are not affected.
Example: RAL
RAR noneRotate
accumulator right through carry
Each binary bit of the accumulator is rotated right by one position through the Carry flag. Bit D0 is placed in the Carry flag, and the Carry flag is placed in the most significant position D7. CY is modified according to bit D0. S, Z, P, AC are not affected.
Example: RAR
CMA noneComplement accumulator
The contents of the accumulator are complemented. No flags are affected.
Example: CMA
CMC none Complement carryThe Carry flag is complemented. No other flags are affected.
Example: CMC
STC none Set CarrySet Carry
Example: STC
CONTROL INSTRUCTIONS
Opcode Opera
nd
Explanation of
Instruction Description
NOP none No operationNo operation is performed. The instruction is fetched and decoded. However no operation is executed.
Example: NOPHLT none Halt and
enter wait state
The CPU finishes executing the current instruction and halts any further execution. An interrupt or reset is necessary to exit from the halt state.
Example: HLT
DI noneDisable
interrupts
T the interrupt enable flip-flop is reset and all the in teinterrupts except the TRAP are disabled. No flags are afaffected.
Example: DI
EI noneEnable
interrupts
The interrupt enable flip-flop is set and all interrupts are enabled. No flags are affected. After a system reset or the acknowledgement of an interrupt, the interrupt enable flipflop is reset, thus disabling the interrupts. This instruction isnecessary to reenable the interrupts (except TRAP).
Example: EI RIM none Read
interrupt masThis is a multipurpose instruction used to read the status of interrupts 7.5, 6.5, 5.5 and read serial data input bit. The
instruction loads eight bits in the accumulator with the following interpretations.
Example: RIM
SIM noneSet interrupt
mask
This is a multipurpose instruction and used to implement the 8085 interrupts 7.5, 6.5, 5.5, and serial data output. The instruction interprets the accumulator contents as follows.
Example: SIM
Memory Read Machine Cycle of 8085:
The memory read machine cycle is executed by the processor to read a data byte from memory.
The processor takes 3T states to execute this cycle. The instructions which have more than one byte word size will use the machine cycle
after the opcode fetch machine cycle.
Fig- Timing Diagram for Memory Read Machine Cycle
Memory Write Machine Cycle of 8085:
The memory write machine cycle is executed by the processor to write a data byte in a memory location.
The processor takes, 3T states to execute this machine cycle.
Fig - Timing Diagram for Memory Write Machine Cycle
Programs
Addition of two 8-bit numbers program
LXI H 4000H : HL points 4000H
MOV A, M : Get first operand
INX H : HL points 4001H
ADD M : Add second operand
INX H : HL points 4002H
MOV M, A : Store result at 4002H
HLT : Terminate program execution
Flowchart:
Subtraction of two 8-bit numbers program
LXI H 4000H : HL points 4000H
MOV A, M : Get first operand
INX H : HL points 4001H
SUB M : Subtract second operand
INX H : HL points 4002H
MOV M, A : Store result at 4002H
HLT : Terminate program execution
SYLLABUS : INTERFACING CONCEPTS
Peripheral I/O instructions – device selection and data transfer – Input Interfacing – Practical Input interfacing using decoders – Interfacing O/P Devices: LED and 7 segment Display – Interfacing memory – Memorytime and unit states.
8085 I/O INTERFACING
I/O STRUCTURE OF A TYPICAL MICROCOMPUTER:
There are three major types of data transfer between the microcomputer and art I/O device. They are,
Programmed I/O : In programmed I/O the data transfer is accomplished through an I/O port and controlled by software.
Interrupt driven I/O : In interrupt driven I/O, the I/O device will interrupt the processor, and initiate data transfer.
Direct memory access (DMA) : In DMA, the data transfer between memory and I/O can be performed by bypassing the microprocessor.
INTERFACING I/O AND PERIPHERAL DEVICES:
1. For data transfer from input device to processor the following operations are performed.
The input device will load the data to the port. When the port receives a data, it sends message to the processor to read the data. The processor will read the data from the port. After a data have been read by the processor the input device will load the next data into
the port.
2. For data transfer from processor to output device the following operations are performed.
The processor will load the data to the port. The port will send a message to the output device to read the data. The output device will read the data from the port. After the data have been read by the output device the processor can load the next data to
the port. The various INTEL 110 port devices are 8212, 8155/8156, 8255, 8355 and 8755. 8212 The 8212 is a 24 pin IC. It consists of eight number of D-type latches. It has 8-input lines DI1 to DI8 and 8-output lines DO1 to DO8 The 8212 can be used as an input or output device It has two selecting device DS1 (low) and DS2.
Fig - Internal address of 8155
8155:
It has two numbers of 8-bit parallel I/O port (port-A and B) One number of 6-bit parallel I/O port (port-C). It has 14 bit timer (operating in 4 modes). It has six internal addresses. It has one chip select pin CS (low).
8156:
It has two numbers of 8-bit parallel I/O port (port-A and B) One number of 6-bit parallel 1 port (port-C). It has 14 bit timer (operating in 4 modes). It has six internal addresses. It has one chip select pin CS (low).
Fig - Internal address of 81568255:
It has 3 numbers of 8-bit parallel I/O ports (port A, B and C). Port-A can be programmed in mode-0 mode-1 or mode-2 as input or output port. Port-B can be programmed in mode-1 and mode-2 as 1/Oport. When ports A and B are in mode-0, the port-C can be used as I/O port. One logic low chip select (CS) pin. It requires four internal addresses
8355:
It has 2KB ROM. It has two number of 8 bit port (A,B). It has one CS(low). It has four internal addresses.
8755:
It has 2Kb EPROM. It has two number of 8 bit port (A,B). It has one CS(low). It has four internal addresses.
Fig - Internal address of 8255
Fig - Internal address of 8355
Fig - Internal address of 8755
Fig - Internal address of 8255Fig - Memory and I/O Port Interfacing with 8085
7 SEGMENT LED INTERFACING
Statement: Interface an 8-digit 7 segment LED display using 8255 to the 8085 microprocessor system and write an 8085 assembly language routine to display message on the display.
HARDWARE FOR EIGHT DIGIT SEVEN SEGMENT DISPLAY INTERFACE
Fig. shows the multiplexed eight 7-segment display connected in the 8085 system using 8255. In this circuit port A and port B are used as simple latched output ports. Port A provides the segment data inputs to the display and port B provides a means of selecting a display position at a time for multiplexing the displays. A0-A7 lines are used to decode the addresses for 8255. For this circuit different addresses are:
PA = 00H PB = 01H
PC = 02H CR = 03H.
The register values are chosen in Fig. such that the segment current is 80 mA. This current is required to produce an average of 10 mA per segment as the displays are multiplexed. In this type of display system, only one of the eight display position is 'ON' at any given instant. Only one digit is selected at a time by giving low signal on the corresponding control line. Maximum anode current is 560 mA (7-segments x 80 mA = 560 mA), but the average anode current is 70 mA.
INTERFACING SCHEME
SOFTWARE FOR EIGHT DIGIT SEVEN SEGMENT DISPLAY
For 8255, Port A and B are used as output ports. The control word format of 8255 according to hardware connections is:
Source program:
SOFTWARE TO INITIALIZE 8255: MVI A, 80H : Load control word in AL OUT CR : Load control word in CR
SUBROUTINE TO DISPLAY MESSAGE ON MULTIPLEXED LED DISPLAY:
SET UP REGISTERS FOR DISPLAY:
MVI B, 08H : load count MVI C, 7FH : load select pattern LXI H, 6000B : starting address of message
DISPLAY MESSAGE:
DISP 1: MOV A, C : select digit OUT PB MOV A, M : get data OUT PA : display data CALL DELAY : wait for some time DISP 1: MOV A, C RRC MOV C, A : adjust selection pattern INX H DCR B : Decrement count JNZ DISP 1 : repeat 8 times RET
Note: This "display message subroutine" must be called continuously to display the 7-segment coded message stored in the memory from address 6000H.
Delay Subroutine:
Delay: LXI D, Count Back: DCX D
MOV A, D ORA E JNZ Back RET
MEMORY INTERFACING WITH 8085
TYPICAL EPROM AND STATIC RAM:
A typical semiconductor memory IC will have n address pins, m data pins (or
output pins).
Having two power supply pins (one for connecting required supply voltage (V and
the other for connecting ground).
The control signals needed for static RAM are chip select (chip enable), read control
(output enable) and write control (write enable).
The control signals needed for read operation in EPROM are chip select (chip
enable) and read control (output enable).
DECODER:
It is used to select the memory chip of processor during the execution of a program. No of
IC's used for decoder is,
2-4 decoder (74LS139)
3-8 decoder (74LS138)
Table - Number of Address Pins and Data Pins in Memory ICs
Examples of Memory Interfacing..(Contd) - Page2
Fig - Block diagram and Truth table of 2-4 decoder
Fig - Block diagram and Truth table of 3-8 decoder
SYLLABUS :
PARALLEL AND SERIAL INTERFACE
Introduction to programmable Peripheral Interface 8255 – Pin Diagram – Architecture – Modes of Operation: I/O and BSR – Architecture and operation of 8251 (USART).
INTERRUPT AND TIMER LOGIC
8085 interrupts - Architecture of programmable interrupt controller 8259 –– Architecture of 8254 Programmable Interval timer / counter – Modes of Operation of 8254 – Generating square wave using 8254.
APPLICATIONS
Time delay program – Traffic Light Control System – Water Level Controller – Stepper Motor Control –Interfacing DAC – Interfacing ADC – Temperature measurement.
Programmable Peripheral Interface (PPI)
Data Bus BuffeThis three-state bi-directional 8-bit buffer is used to interface the 8255 to the
system data bus. Data is transmitted or received by the buffer upon execution of input or output
instructions by the CPU. Control words and status informa-tion are also transferred through the
data bus buffer.
Read/Write and Control Logic
The function of this block is to manage all of the internal and external transfers of both Data and
Control or Status words. It accepts inputs from the CPU Address and Control busses and in turn,
issues commands to both of the Control Groups.
(CS) Chip Select. A "low" on this input pin enables the communcation between the 8255 and the
CPU.
(RD) Read. A "low" on this input pin enables 8255 to send the data or status information to the
CPU on the data bus. In essence, it allows the CPU to "read from" the 8255.
(WR) Write. A "low" on this input pin enables the CPU to write data or control words into the
8255.
(A0 and A1) Port Select 0 and Port Select 1. These input signals, in conjunction with the RD and
WR inputs, control the selection of one of the three ports or the control word register. They are
normally connected to the least significant bits of the address bus (A0 and A1).
(RESET) Reset. A "high" on this input initializes the control register to 9Bh and all ports (A, B,
C) are set to the input mode.
A1 A0 SELECTION
0 0 PORT A
0 1 PORT B
1 0 PORT C
1 1 CONTROL
Group A and Group B Controls
The functional configuration of each port is programmed by the systems software. In essence, the
CPU "outputs" a control word to the 8255. The control word contains information such as
"mode", "bit set", "bit reset", etc., that initializes the functional configuration of the 8255. Each
of the Control blocks (Group A and Group B) accepts "commands" from the Read/Write Control
logic, receives "control words" from the internal data bus and issues the proper commands to its
associated ports.
Ports A, B, and C
The 8255 contains three 8-bit ports (A, B, and C). All can be configured to a wide variety of
functional characteristics by the system software but each has its own special features or
"personality" to further enhance the power and flexibility of the 8255.
Port A One 8-bit data output latch/buffer and one 8-bit data input latch. Both "pull-up" and
"pull-down" bus-hold devices are present on Port A.
Port B One 8-bit data input/output latch/buffer and one 8-bit data input buffer.
Port C One 8-bit data output latch/buffer and one 8-bit data input buffer (no latch for input).
This port can be divided into two 4-bit ports under the mode control. Each 4-bit port contains a
4-bit latch and it can be used for the control signal output and status signal inputs in conjunction
with ports A and B.
Block Diagram of the 8255 Programmable Peripheral Interface (PPI)
Mode Definition Format
Features:
3 8-bit IO ports PA, PB, PC
PA can be set for Modes 0, 1, 2. PB for 0,1 and PC for mode 0 and for BSR. Modes 1 and
2 are interrupt driven.
PC has 2 4-bit parts: PC upper (PCU) and PC lower (PCL), each can be set independently
for I or O. Each PC bit can be set/reset individually in BSR mode.
PA and PCU are Group A (GA) and PB and PCL are Group B (GB)
Address/data bus must be externally demux'd.
TTL compatible.
Improved dc driving capability
Pinout
A1 A0 Select
0 0 PA
0 1 PB
1 0 PC
1 1 Control reg.
Block diagram
BSR mode
Bit set/reset, applicable to PC only. One bit is S/R at a time. Control word:
D7 D6 D5 D4 D3 D2 D1 D0
0 (0=BSR) X X X B2 B1 B0 S/R (1=S,0=R)
Bit select: (Taking Don't care's as 0)
B2 B1 B0 PC bit Control word (Set) Control word (reset)
0 0 0 0 0000 0001 = 01h 0000 0000 = 00h
0 0 1 1 0000 0011 = 03h 0000 0010 = 02h
0 1 0 2 0000 0101 = 05h 0000 0100 = 04h
0 1 1 3 0000 0111 = 07h 0000 0110 = 06h
1 0 0 4 0000 1001 = 09h 0000 1000 = 08h
1 0 1 5 0000 1011 = 0Bh 0000 1010 = 0Ah
1 1 0 6 0000 1101 = 0Dh 0000 1100 = 0Ch
1 1 1 7 0000 1111 = 0Fh 0000 1110 = 0Eh
I/O mode
D7 D6 D5 D4 D3 D2 D1 D0
1 (1=I/O) GA mode select PA PCU GB mode select PB PCL
D6, D5: GA mode select:
o 00 = mode0
o 01 = mode1
o 1X = mode2
D4(PA), D3(PCU): 1=input 0=output
D2: GB mode select: 0=mode0, 1=mode1
D1(PB), D0(PCL): 1=input 0=output
Mode 0: No interrupts. Plain I/O. Two 8 bit ports PA, PB. Two 4 bit ports PCU and PCL.
Outputs latched, inputs buffered.
Mode 1
(Input and output data are latched)
PC bits in input mode:
D7 D6 D5 D4 D3 D2 D1 D0
PC7 PC6IBF-
A
INTE-A / STB-
A-bar
INTR-
A
INTE-B / STB-
B-barIBF-B
INTR-
B
PC bits in output mode:
D7 D6 D5 D4 D3 D2 D1 D0
OBF-A-
bar
INTE-A / ACK-
A-barPC5 PC4
INTR-
A
INTE-B / ACK-
B-bar
OBF-B-
bar
INTR-
B
Input mode:
D4, D2: Set/Reset INTE using BSR. STB-bar input is connected to external peripheral's
strobe output (i.e. PC2, PC4 pin to external strobe).
INTE is internal connection. STB-bar is external connection.
Output mode:
D6, D2: Set/Reset INTE using BSR. ACK-bar input is connected to external peripheral's
acknowledge output (i.e. PC2, PC6 pin to external ack).
INTE is internal connection. ACK-bar is external connection.
Mode 2
Only for PA
Status:
D7 D6 D5 D4 D3 D2 D1 D0
OBF-A-barINTE1(O/P) /
ACK-A-BARIBF-A
INTE2(I/P) /
STB-A-bARINTR-A X X X
INTERFACING WITH INTEL 8251A (USART)
The 8251A is a programmable serial communication interface chip designed for synchronous and asynchronous serial data communication.
It supports the serial transmission of data.
It is packed in a 28 pin DIP.
Read/Write control logic:
The Read/Write Control logic interfaces the 8251A with CPU, determines the
functions of the 8251A according to the control word written into its control
register.
It monitors the data flow.
This section has three registers and they are control register, status register and
data buffer.
The active low signals RD, WR, CS and C/D(Low) are used for read/write
operations with these three registers.
When C/D(low) is high, the control register is selected for writing control word or
reading status word.
When C/D(low) is low, the data buffer is selected for read/write operation.
When the reset is high, it forces 8251A into the idle mode.
The clock input is necessary for 8251A for communication with CPU and this clock
does not control either the serial transmission or the reception rate.
Transmitter section:
The transmitter section accepts parallel data from CPU and converts them into
serial data.
The transmitter section is double buffered, i.e., it has a buffer register to hold an 8-
bit parallel data and another register called output register to convert the parallel
data into serial bits.
hen output register is empty, the data is transferred from buffer to output register.
Now the processor can again load another data in buffer register.
If buffer register is empty, then TxRDY is goes to high.
If output register is empty then TxEMPTY goes to high.
The clock signal, TxC (low) controls the rate at which the bits are transmitted by the
USART.
The clock frequency can be 1,16 or 64 times the baud rate.
Receiver Section:
The receiver section accepts serial data and convert them into parallel data
The receiver section is double buffered, i.e., it has an input register to receive serial
data and convert to parallel, and a buffer register to hold the parallel data.
When the RxD line goes low, the control logic assumes it as a START bit, waits for
half a bit time and samples the line again.
If the line is still low, then the input register accepts the following bits, forms a
character and loads it into the buffer register.
The CPU reads the parallel data from the buffer register.
When the input register loads a parallel data to buffer register, the RxRDY line goes
high.
The clock signal RxC (low) controls the rate at which bits are received by the
USART.
During asynchronous mode, the signal SYNDET/BRKDET will indicate the break
in the data transmission.
During synchronous mode, the signal SYNDET/BRKDET will indicate the reception
of synchronous character.
MODEM Control:
The MODEM control unit allows to interface a MODEM to 8251A and to establish
data communication through MODEM over telephone lines.
This unit takes care of handshake signals for MODEM interface.
Block Diagram:
The functional block diagram of 825 1A consists five sections. They are:
Read/Write control logic
Transmitter
Receiver
Data bus buffer
Modem control.
The functional block diagram is shown in fig:
Functional block diagram of 8251A-USART
8085 INTERRUPTS
Interrupt is signals send by an external device to the processor, to request the processor to perform a particular task or work.
• Mainly in the microprocessor based system the interrupts are used for data transfer between the peripheral and the microprocessor.
• The processor will check the interrupts always at the 2nd T-state of last machine cycle.
• If there is any interrupt it accept the interrupt and send the INTA (active low) signal to the peripheral.
• The vectored address of particular interrupt is stored in program counter.
• The processor executes an interrupt service routine (ISR) addressed in program counter.
• It returned to main program by RET instruction.
Types of Interrupts:
It supports two types of interrupts.
• Hardware
• Software
Software interrupts:
• The software interrupts are program instructions. These instructions are inserted at desired locations in a program.
• The 8085 has eight software interrupts from RST 0 to RST 7. The vector address for these interrupts can be calculated as follows.
• Interrupt number * 8 = vector address
• For RST 5,5 * 8 = 40 = 28H
• Vector address for interrupt RST 5 is 0028H
The Table shows the vector addresses of all interrupts.
Hardware interrupts:
An external device initiates the hardware interrupts and placing an appropriate signal at the interrupt pin of the processor.
If the interrupt is accepted then the processor executes an interrupt service routine.
The 8085 has five hardware interrupts
(1) TRAP (2) RST 7.5 (3) RST 6.5 (4) RST 5.5 (5) INTR
TRAP:
This interrupt is a non-maskable interrupt. It is unaffected by any mask or interrupt enable.
TRAP bas the highest priority and vectored interrupt.
TRAP interrupt is edge and level triggered. This means hat the TRAP must go high and remain high until it is acknowledged.
In sudden power failure, it executes a ISR and send the data from main memory to backup memory.
The signal, which overrides the TRAP, is HOLD signal. (i.e., If the processor receives HOLD and TRAP at the same time then HOLD is recognized first and then TRAP is recognized).
There are two ways to clear TRAP interrupt.
1.By resetting microprocessor (External signal) 2.By giving a high TRAP ACKNOWLEDGE (Internal signal)
RST 7.5:
The RST 7.5 interrupt is a maskable interrupt.
It has the second highest priority.
It is edge sensitive. ie. Input goes to high and no need to maintain high state until it recognized.
Maskable interrupt. It is disabled by,
1.DI instruction 2.System or processor reset. 3.After reorganization of interrupt.
Enabled by EI instruction.
RST 6.5 and 5.5:
The RST 6.5 and RST 5.5 both are level triggered. . ie. Input goes to high and stay high until it recognized.
Maskable interrupt. It is disabled by,
1.DI, SIM instruction 2.System or processor reset. 3.After reorganization of interrupt.
Enabled by EI instruction.
The RST 6.5 has the third priority whereas RST 5.5 has the fourth priority.
INTR:
INTR is a maskable interrupt. It is disabled by,
1.DI, SIM instruction 2.System or processor reset. 3.After reorganization of interrupt.
Enabled by EI instruction.
Non- vectored interrupt. After receiving INTA (active low) signal, it has to supply the address of ISR.
It has lowest priority.
It is a level sensitive interrupts. ie. Input goes to high and it is necessary to maintain high state until it recognized.
The following sequence of events occurs when INTR signal goes high.
1. The 8085 checks the status of INTR signal during execution of each instruction.
2. If INTR signal is high, then 8085 complete its current instruction and sends active low interrupt acknowledge signal, if the interrupt is enabled.
3. In response to the acknowledge signal, external logic places an instruction OPCODE on the data bus. In the case of multibyte instruction, additional interrupt acknowledge machine cycles are generated by the 8085 to transfer the additional bytes into the microprocessor.
4. On receiving the instruction, the 8085 save the address of next instruction on stack and
execute received instruction.
8254 Programmable Interval Timer/Counter
Status read-back command
Counter latch command
Read/write least significant bit (LSB) only, most significant bit (MSB) only, or LSB first
then MSB
Six programmable counter modes
o Interrupt on terminal count
o Hardware retriggerable one-shot
o Rate generator
o Square wave mode
o Software-triggered strobe
o Hardware-triggered strobe (retriggerable)
Binary or binary coded decimal strobe
Developed in VHDL and synthesizes to approximately 5,000 gates
Functionally based on the Intel 82C54 device
Block Diagram
Figure 1 shows the block diagram for the 8254 programmable interval timer/counter
megafunction.
Figure 1. Block Diagram
Description
The 8254 programmable interval time/counter megafunction is a high-performance function that
is designed to solve the common timing control problems in microcomputer system design. It
provides three independent 16-bit counters, and each counter may operate in a different mode.
All modes are software programmable. The 8254 megafunction solves one of the most common
problems in any microcomputer system: the generation of accurate time delays under software
control. Instead of setting up timing loops in software, the 8254 megafunction can be
programmed to match requirements by programming one of the counters for the desired delay.
History
In modern times, this PIT is not included as a separate chip in an x86 PC. Rather, its
functionality is included as part of the motherboard's southbridge chipset. In some modern
chipsets, this change may show up as measurable timing differences in accessing a PIT using the
x86 I/O address space. Reads and writes to such a PIT's registers in the I/O address space may
complete much faster.
Newer x86 PITs include a counter through the Advanced Configuration and Power Interface
(ACPI), a counter on the Local Advanced Programmable Interrupt Controller (Local APIC), and
a Time Stamp Counter (TSC) introduced on the Pentium.
Features
The timer has three counters, called channels. Each channel can be programmed to operate in
one of six modes. Once programmed, the channels can perform their tasks independently. The
timer is usually assigned to IRQ-0 (highest priority hardware interrupt) because of the critical
function it performs and because so many devices depend on it.
Typical Components
Counters
There are 3 counters (or timers), which are labeled as Counter 0, Counter 1 and Counter 2.
Each counter has 2 input pins - CLK (clock input) and GATE - and 1-pin, OUT, for data output.
The 3 counters are 16-bit down counters independent of each other, and can be easily read by the
CPU.
The first counter (selected by setting A1=A0=0, see Control Word Register below) helps
generate a clock interrupt. The second counter (A1=0, A0=1) assists in generating timing, which
will be used to refresh the DRAM memory. The last counter (A1=1, A0=0) generates tones for
the PC speaker.
Besides the counters, a typical Intel 8253 microchip also contains the following components:
Data/Bus Buffer
This block contains the logic to buffer the data bus to / from the microprocessor, and to the
internal registers. It has 8 input pins, usually labelled as D7..D0, where D7 is the MSB.
Read/Write Logic
The Read/Write Logic block has 5 pins, which are listed below. Notice that /X denotes an active
low signal.
/RD: read signal
/WR: write signal
/CS: chip select signal
A0, A1: address lines
Operation mode of the PIT is changed by setting the above hardware signals. For example, to
write to the Control Word Register, one needs to set /CS=0, /RD=1, /WR=0, A1=A0=1.
Control Word Register
Port 43h R/W
Port 53h R/W - second chip ...
This register contains the programmed information which will be sent (by the microprocessor) to
the device. It defines how the PIT logically works. Each access to these ports takes about 1 µs.
To initialize the counters, the microprocessor must write a control word (CW) in this register.
This can be done by setting proper values for the pins of the Read/Write Logic block and then
by sending the control word to the Data/Bus Buffer block.
The control word register contains 8 bits, labeled D7..D0 (D7 is the MSB).
Bit# D7 D6 D5 D4 D3 D2 D1 D0 Short Description
Name SC1 SC0 RW1 RW0 M2 M1 M0 BCD
0 0 x x x x x x Counter 0 at port 40h R/W
0 1 x x x x x x Counter 1 at port 41h R/W
1 0 x x x x x x Counter 2 at port 42h R/W
X x 0 0 x x x x
Counter Latch, value can be read out in the
way RW1, RW0 was set before. The value is
held until it is read out or overwritten.
X x 0 1 x x x x Read/Write bits 0..7 of counter value
X x 1 0 x x x x Read/Write bits 8..15 of counter value
X x 1 1 x x x x2xRead/2xWrite bits 0..7 then 8..15 of
counter value
X x x x 0 0 0 x Mode 0: Interrupt on Terminal Count
X x x x 0 0 1 x Mode 1: Hardware Retriggerable One-Shot
X x x x 0 1 0 x Mode 2: Rate Generator
X x x x 0 1 1 x Mode 3: Square Wave
X x x x 1 0 0 x Mode 4: Software Triggered Strobe
X x x x 1 0 1 xMode 5: Hardware Triggered Strobe
(Retriggerable)
X x x x x x x 0Counter is a 16 bit binary
counter(0..65535,FFFFh)
X x x x x x x 1Counter is a 16 bit decimal counter 4 x 4bit
decades(0..9999)
Name 1 1_____
count
_____
status
C2 C1 C0 0
1 1 0 1 x x x 0 Couter(C0..C2) value(s) can be read out.
1 1 1 0 x x x 0Couter's(C0..C2) state(s) can be read out.
see below Status Byte
1 1 0 0 x x x 0 error !
When setting the PIT, the microprocessor first sends a control message, then a count message to
the PIT. The counting process will start after the PIT has received these messages, and, in some
cases, if it detects the rising edge from the GATE input signal.
On PCs the address for timer0 (chip) ist at port 40h..43h like described and the second timer1
(chip) is at 50h..53h. Nowadays[when?] there are used HPET chips instead of 8253 timer chips.
Operation Modes
The D3, D2, and D1 bits of the Control Word set the operating mode of the timer. There are 6
modes in total; for modes 2 and 3, the D3 bit is ignored, so the missing modes 6 and 7 are aliases
for modes 2 and 3. Notice that, for modes 0, 2, 3 and 4, GATE must be set to HIGH to enable
counting. For mode 5, the rising edge of GATE starts the count. For details on each mode, see
the reference links.
Mode 0 (000): Interrupt on Terminal Count
In this mode, the counter will start counting from the initial COUNT value loaded into it, down
to 0. Counting rate is equal to the input clock frequency.
The OUT pin is set low after the Control Word is written, and counting starts one clock cycle
after the COUNT programmed. OUT remains low until the counter reaches 0, at which point
OUT will be set high until the counter is reloaded or the Control Word is written.The Gate
signal should remain active high for normal counting.If Gate goes low counting get terminated
and current count is latched till Gate pulse goes high again.
Mode 1 (001): Hardware-Triggered One Shot
In this mode 8253 can be used as monostable multivibrator. GATE input is used as trigger input.
OUT will be initially high. OUT will go low on the CLK pulse following a trigger to begin the
one-shot pulse, and will remain low until the Counter reaches zero. OUT will then go high and
remain high until the CLK pulse after the next trigger.
After writing the Control Word and initial count, the Counter is armed. A trigger results in
loading the Counter and setting OUT low on the next CLK pulse, thus starting the one-shot
pulse. An initial count of N will result in a one-shot pulse N CLK cycles in duration.
The one-shot is retriggerable, hence OUT will remain low for N CLK pulses after any trigger.
The one-shot pulse can be repeated without rewriting the same count into the counter. GATE has
no effect on OUT. If a new count is written to the Counter during a oneshot pulse, the current
one-shot is not affected unless the counter is retriggered. In that case, the Counter is loaded with
the new count and the oneshot pulse continues until the new count expires.
Mode 2 (X10): Rate Generator
In this mode, the device acts as a divide-by-n counter, which is commonly used to generate a
real-time clock interrupt.
Like other modes, counting process will start the next clock cycle after COUNT is sent. OUT
will then remain high until the counter reaches 1, and will go low for one clock pulse. OUT will
then go high again, and the whole process repeats itself.
The time between the high pulses depends on the preset count in the counter's register, and is
calculated using the following formula:
Value to be loaded into counter =
Note that the values in the COUNT register range from n to 1; the register never reaches zero.
Mode 3 (X11): Square Wave Generator
This mode is similar to mode 2. However, the duration of the high and low clock pulses of the
output will be different from mode 2.
Suppose n is the number loaded into the counter (the COUNT message), the output will be
high for counts, and low for counts, if n is even.
high for counts, and low for counts, if n is odd.
Mode 4 (100): Software Triggered Strobe
After Control Word and COUNT is loaded, the output will remain high until the counter
reaches zero. The counter will then generate a low pulse for 1 clock cycle (a strobe) - after that
the output will become high again.
Mode 5 (101): Hardware Triggered Strobe
This mode is similar to mode 4. However, the counting process is triggered by the GATE input.
After receiving the Control Word and COUNT, the output will be set high. Once the device
detects a rising edge on the GATE input, it will start counting. When the counter reaches 0, the
output will go low for one clock cycle - after that it will become high again, to repeat the cycle
on the next rising edge of GATE.
Status Byte
8 bit
The Status Byte is read like a 8 bit counter value (port 40h..42h R).
Bit# D7 D6 D5 D4 D3 D2 D1 D0
Name output null RW1 RW0 M2 M1 M0 BCD
count
-------------------------------------------
0 x x x x x x x Out Pin is 0
1 x x x x x x x Out Pin is 1
-------------------------------------------
x 0 x x x x x x The value of the latch is loaded into the counter.
A new value can be written to the latch.
x 1 x x x x x x Counter value is 0.
-------------------------------------------
x x = = = = = = like defined in the Control Word Register
Programming Considerations
On x86 PCs, many video card BIOS and system BIOS will reprogram the second counter for
their own use. Reprogramming typically happens during video mode changes, when the video
BIOS may be executed, and during system management mode and power saving state changes,
when the system BIOS may be executed. This prevents any serious alternative uses of the timer's
second counter on many x86 systems.
The timer that is used by the system on x86 PCs is Channel 0, and its clock ticks at a theoretical
value of 1193181.8181... Hz, i.e. one third of the NTSC color subcarrier frequency. This is a
holdover of the very first CGA PCs - they derived all necessary frequencies from a single quartz
crystal, and to make TV output possible, this quartz had to run at a multiple of the NTSC color
subcarrier frequency.
As stated above, Channel 0 is implemented as a counter. Typically, the initial value of the
counter is set by sending bytes to the Control, then Data I/O Port registers (the value 36h sent to
port 43h, then the low byte to port 40h, and port 40h again for the high byte). The counter counts
down to zero, then sends a hardware interrupt (IRQ 0, INT 8) to the CPU. The counter then
resets to its initial value and begins to count down again. The fastest possible interrupt frequency
is a little over a megahertz. The slowest possible frequency, which is also the one normally used
by computers running MS-DOS or compatible operating systems, is about 18.2 Hz. Under these
real mode operating systems, the BIOS accumulates the number of INT 0 calls that it receives in
real mode address 0040:006c, which can be read by a program.
As a timer counts down, its value can also be read directly by reading its I/O port twice, first for
the low byte, and then for the high byte. The first read latches the value, so that both bytes read
will belong to one and the same value.
8259 Programmable Interrupt Controller
Features:
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.
Pinout
D0-D7Bi-directional, tristated, buffered data lines. Connected to
data bus directly or through buffers
RD-bar Active low read control
WR-bar Active low write control
A0 Address input line, used to select control register
CS-bar Active low chip select
CAS0-2
Bi-directional, 3 bit cascade lines. In master mode, PIC
places slave ID no. on these lines. In slave mode, the PIC
reads slave ID no. from master on these lines. It may be
regarded as slave-select.
SP-bar /
EN-bar
Slave program / enable. In non-buffered mode, it is SP-bar
input, used to distinguish master/slave PIC. In buffered
mode, it is output line used to enable buffers
INT Interrupt line, connected to INTR of microprocessor
INTA-
barInterrupt ack, received active low from microprocessor
IR0-7 Asynchronous IRQ input lines, generated by peripherals.
Block diagram
ICW1 (Initialisation Command Word One)
A0
0
D7 D6 D5 D4 D3 D2 D1 D0
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)
IRQ A7 A6 A5 A4 A3 A2 A1 A0
IR0 A7 A6 A5 0 0 0 0 0
IR1 A7 A6 A5 0 0 1 0 0
IR2 A7 A6 A5 0 1 0 0 0
IR3 A7 A6 A5 0 1 1 0 0
IR4 A7 A6 A5 1 0 0 0 0
IR5 A7 A6 A5 1 0 1 0 0
IR6 A7 A6 A5 1 1 1 0 0
IR7 A7 A6 A5 1 1 1 0 0
ADI=0 (spacing 8 bytes)
IRQ A7 A6 A5 A4 A3 A2 A1 A0
IR0 A7 A6 0 0 0 0 0 0
IR1 A7 A6 0 0 1 0 0 0
IR2 A7 A6 0 1 0 0 0 0
IR3 A7 A6 0 1 1 0 0 0
IR4 A7 A6 1 0 0 0 0 0
IR5 A7 A6 1 0 1 0 0 0
IR6 A7 A6 1 1 0 0 0 0
IR7 A7 A6 1 1 1 0 0 0
ICW2 (Initialisation Command Word Two)
Higher byte of ISR address (8085), or 8 bit vector address (8086).
A0
1
D7 D6 D5 D4 D3 D2 D1 D0
A15 A14 A13 A12 A11 A10 A9 A8
ICW3 (Initialisation Command Word Three)
A0 D7 D6 D5 D4 D3 D2 D1 D0
1Master S7 S6 S5 S4 S3 S2 S1 S0
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)
ICW4 (Initialisation Command Word Four)
A0
1
D7 D6 D5 D4 D3 D2 D1 D0
0 0 0 SFNM BUF M/S AEOI Mode
SFNM: 1=Special Fully Nested Mode, 0=FNM
M/S: 1=Master, 0=Slave
AEOI: 1=Auto End of Interrupt, 0=Normal
Mode: 0=8085, 1=8086
OCW1 (Operational Command Word One)
A0
1
D7 D6 D5 D4 D3 D2 D1 D0
M7 M6 M5 M4 M3 M2 M1 M0
IRn is masked by setting Mn to 1; mask cleared by setting Mn to 0 (n=0..7)
OCW2 (Operational Command Word Two)
A0
1
D7 D6 D5 D4 D3 D2 D1 D0
R SL EOI 0 0 L3 L2 L1
R SL EOI Action
EOI
0 0 1 Non specific EOI (L3L2L1=000)
0 1 1Specific EOI command (Interrupt to clear
given by L3L2L1)
Auto rotation of priorities
(L3L2L1=000)
1 0 1 Rotate priorities on non-specific EOI
1 0 0 Rotate priorities in auto EOI mode set
0 0 0 Rotate priorities in auto EOI mode clear
Specific rotation of priorities (Lowest
priority ISR=L3L2L1)
1 1 1Rotate priority on specific EOI command
(resets current ISR bit)
1 1 0 Set priority (does not reset current ISR bit)
0 1 0 No operation
OCW3 (Operational Command Word Three)
A0
1
D7 D6 D5 D4 D3 D2 D1 D0
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
Interrupt sequence (single PIC)
1. One or more of the IR lines goes high.
2. Corresponding IRR bit is set.
3. 8259 evaluates the request and sends INT to CPU.
4. CPU sends INTA-bar.
5. Highest priority ISR is set. IRR is reset.
6. 8259 releases CALL instruction on data bus.
7. CALL causes CPU to initiate two more INTA-bar's.
8. 8259 releases the subroutine address, first lowbyte then highbyte.
9. ISR bit is reset depending on mode. 8254 Programmable Interval Timer/Counter
UNIT V
APPLICATIONS
DELAY PROGRAM:
DELAY: LXI D, Count : Load count to give 0.5 sec delay
BACK: DCX D : Decrement counter
MOV A, D
ORA E : Check whether count is 0
JNZ BACK : If not zero, repeat
DCR C : Check if multiplier zero, otherwise repeat
JNZ DELAY
RET : Return to main program
HARDWARE FOR TRAFFIC LIGHT CONTROL
Fig. shows the interfacing diagram to control 12 electric bulbs. Port A is used to control
lights on N-S road and Port B is used to control lights on W-E road. Actual pin connections
are listed in Table 1 below.
The electric bulbs are controlled by relays. The 8255 pins are used to control relay on-off
action with the help of relay driver circuits. The driver circuit includes 12 transistors to
drive 12 relays. Fig. also shows the interfacing of 8255 to the system.
INTERFACING DIAGRAM
SOFTWARE FOR TRAFFIC LIGHT CONTROL
Source Program 1:
MVI A, 80H : Initialize 8255, port A and port B
OUT 83H (CR) : in output mode
START: MVI A, 09H
OUT 80H (PA) : Send data on PA to glow R1 and R2
MVI A, 24H
OUT 81H (PB) : Send data on PB to glow G3 and G4
MVI C, 28H : Load multiplier count (40ıο) for delay
CALL DELAY : Call delay subroutine
MVI A, 12H
OUT (81H) PA : Send data on Port A to glow Y1 and Y2
OUT (81H) PB : Send data on port B to glow Y3 and Y4
MVI C, 0AH : Load multiplier count (10ıο) for delay
CALL: DELAY : Call delay subroutine
MVI A, 24H
OUT (80H) PA : Send data on port A to glow G1 and G2
MVI A, 09H
OUT (81H) PB : Send data on port B to glow R3 and R4
MVI C, 28H : Load multiplier count (40ıο) for delay
CALL DELAY : Call delay subroutine
MVI A, 12H
OUT PA : Send data on port A to glow Y1 and Y2
OUT PB : Send data on port B to glow Y3 and Y4
MVI C, 0AH : Load multiplier count (10ıο) for delay
CALL DELAY : Call delay subroutine
JMP START
Delay Subroutine:
DELAY: LXI D, Count : Load count to give 0.5 sec delay
BACK: DCX D : Decrement counter
MOV A, D
ORA E : Check whether count is 0
JNZ BACK : If not zero, repeat
DCR C : Check if multiplier zero, otherwise repeat
JNZ DELAY
RET : Return to main program
Stepper Motor Control
Statement: Interface a Stepper Motor to the 8085 microprocessor system and write an 8085
assembly language program to control the Stepper Motor.
HARDWARE FOR STEPPER MOTOR CONTROL
A stepper motor is a digital motor. It can be driven by digital signal. Fig. shows the typical
2 phase motor rated 12V /0.67 A/ph interfaced with the 8085 microprocessor system using
8255. Motor shown in the circuit has two phases, with center-tap winding. The center taps
of these windings are connected to the 12V supply. Due to this, motor can be excited by
grounding four terminals of the two windings. Motor can be rotated in steps by giving
proper excitation sequence to these windings. The lower nibble of port A of the 8255 is used
to generate excitation signals in the proper sequence. These excitation signals are buffered
using driver transistors. The transistors are selected such that they can source rated
current for the windings. Motor is rotated by 1.80 per excitation.
Fig. shows the interfacing diagram to control 12 electric bulbs. Port A is used to control
lights on N-S road and Port B is used to control lights on W-E road. Actual pin connections
are listed in Table 1 below.
SOFTWARE FOR STEPPER MOTOR CONTROL
As port A is used as an output port, control word for 8255 is 80H.
Stepper Motor Control Program:
6000H Excite code DB 03H, 06H, 09H, OCH : This is the code sequence for clockwise rotation
Subroutine to rotate a stepper motor clockwise by 360° - Set the counts:
MVI C, 32H : Set repetition count to 50ıο
START: MVI B, 04H : Counts excitation sequence
LXI H, 6000H : Initialize pointer
BACK1: MOV A, M : Get the Excite code
OUT PORTA : Send Excite code
CALL DELAY : Wait
INX H : Increment pointer
DCR B : Repeat 4 times
JNZ BACK l
Delay Subroutine:
Delay: LXI D, Count
Back: DCX D
MOV A, D
ORA E
JNZ Back
RET
INTERFACING OF DAC0-800 WITH 8085
The DAC0800 can be interfaced to 8085 system bus by using an 8-bit latch and the latch
can be enabled by using one of the chip select signal generated for I/O devices. A simple
schematic for interfacing DAC0800 with 8085 is,
In this schematic the DAC0800 is interfaced using an 8-bit latch 74LS273 to the
system bus.
The 3-to-8 decoder 74LS 138 is used to generate chip select signals for I/O devices.
The address lines A4, A5 and A6 are used as input to decoder.
The address line A7 and the control signal IO/M (low) are used as enable for
decoder.
The decoder will generate eight chip select signals and in this the signal IOCS-7 is
used as enable for latch of DAC.
The I/O address of the DAC is shown in table.
In order to convert a digital data to analog value, the processor has to load the data
to latch.
The latch will hold the previous data until next data is loaded.
The DAC will take definite time to convert the data. The software should take care
of loading successive data only after the conversion time.
The DAC 0800 produces a current output, which is converted to voltage output
using Ito V converter.
INTERFACING OF DAC0-800 WITH 8085
The DAC0800 can be interfaced to 8085 system bus by using an 8-bit latch and the latch
can be enabled by using one of the chip select signal generated for I/O devices. A simple
schematic for interfacing DAC0800 with 8085 is,
In this schematic the DAC0800 is interfaced using an 8-bit latch 74LS273 to the
system bus.
The 3-to-8 decoder 74LS 138 is used to generate chip select signals for I/O devices.
The address lines A4, A5 and A6 are used as input to decoder.
The address line A7 and the control signal IO/M (low) are used as enable for
decoder.
The decoder will generate eight chip select signals and in this the signal IOCS-7 is
used as enable for latch of DAC.
The I/O address of the DAC is shown in table.
In order to convert a digital data to analog value, the processor has to load the data
to latch.
The latch will hold the previous data until next data is loaded.
The DAC will take definite time to convert the data. The software should take care
of loading successive data only after the conversion time.
The DAC 0800 produces a current output, which is converted to voltage output
using Ito V converter.
THE INTERNAL BLOCK DIAGRAM OF ADC0809/ADC0808 :
The various functional blocks of ADC are 8-channel multiplexer, comparator, 256R
resistor ladder, switch tree, successive approximation register, output buffer, address latch
and decoder.
The 8-channel multiplexer can accept eight analog inputs in the range of 0 to 5V and
allow one by one for conversion depending on the 3-bit address input. The channel
selection logic is,
The successive approximation register (SAR) performs eight iterations to determine
the digital code for input value. The SAR is reset on the positive edge of START
pulse and start the conversion process on the falling edge of START pulse.
A conversion process will be interrupted on receipt of new START pulse.
The End-Of-Conversion (EOC) will go low between 0 and 8 clock pulses after the positive
edge of START pulse.
The ADC can be used in continuous conversion mode by tying the EOC output to START
input. In this mode an external START pulse should be applied whenever power is
switched ON.
The 256'R resistor network and the switch tree is shown in fig.
The 256R ladder network has been provided instead of conventional R/2R ladder
because of its inherent monotonic, which guarantees no missing digital codes.
Also the 256R resistor network does not cause load variations on the reference
voltage.
The comparator in ADC0809/ADC0808 is a chopper- stabilized comparator. It
converts the DC input signal into an AC signal, and amplifies the AC sign using
high gain AC amplifier. Then it converts AC signal to DC signal. This technique
limits the drift component of the amplifier, because the drift is a DC component and
it is not amplified/passed by the AC amp1ifier. This makes the ADC extremely
insensitive to temperature, long term drift and input offset errors.
In ADC conversion process the input analog value is quantized and each quantized
analog value will have a unique binary equivalent.
The quantization step in ADC0809/ADC0808 is given by,
The various functional blocks of ADC are 8-channel multiplexer, comparator, 256R
resistor ladder, switch tree, successive approximation register, output buffer, address latch
and decoder.
The 8-channel multiplexer can accept eight analog inputs in the range of 0 to 5V and
allow one by one for conversion depending on the 3-bit address input. The channel
selection logic is,
The successive approximation register (SAR) performs eight iterations to determine
the digital code for input value. The SAR is reset on the positive edge of START
pulse and start the conversion process on the falling edge of START pulse.
A conversion process will be interrupted on receipt of new START pulse.
The End-Of-Conversion (EOC) will go low between 0 and 8 clock pulses after the positive
edge of START pulse.
The ADC can be used in continuous conversion mode by tying the EOC output to START
input. In this mode an external START pulse should be applied whenever power is
switched ON.
The 256'R resistor network and the switch tree is shown in fig.
The 256R ladder network has been provided instead of conventional R/2R ladder
because of its inherent monotonic, which guarantees no missing digital codes.
Also the 256R resistor network does not cause load variations on the reference
voltage.
The comparator in ADC0809/ADC0808 is a chopper- stabilized comparator. It
converts the DC input signal into an AC signal, and amplifies the AC sign using
high gain AC amplifier. Then it converts AC signal to DC signal. This technique
limits the drift component of the amplifier, because the drift is a DC component and
it is not amplified/passed by the AC amp1ifier. This makes the ADC extremely
insensitive to temperature, long term drift and input offset errors.
In ADC conversion process the input analog value is quantized and each quantized
analog value will have a unique binary equivalent.
The quantization step in ADC0809/ADC0808 is given by,