microprocessor & microcontroller 8086,8051 notes
TRANSCRIPT
Presented byC.GOKUL,AP/EEE
Velalar College of Engg & Tech, ErodeEmail: [email protected]
EC6504Microprocessor & Microcontroller
DEPARTMENTS: ECE {semester 05}CSE,IT {semester 04}
Regulation : 2013 ANNA UNIVERSITY Syllabus
syllabus
2
3
BOOK ReferencesMain Book: 1. Microprocessors and Interfacing, Programming and Hardware by
Doughlas V.HallOther Authors:
2. Microcomputer Systems: The 8086 / 8088 Family -Architecture, Programming and Design by Yu-Cheng Liu, Glenn A.Gibson
3. INTEL Microprocessors 8086/8088, 80186/80188, 80286, 80386, 80486, Pentium, Prentium ProProcessor, Pentium II, III, 4 by Barry B. Bery
4. Advanced microprocessor and peripherals by A K RAY
LOCAL AUTHOR: 8086 Microprocessor by Nagoor Kani => Unit 1,2,3
8051 Microcontroller by V Udayashankara => Unit 4,5
4
NPTEL Lecture Materials References
• Microprocessor and Peripheral Devices by Dr. Pramod Agarwal , IIT Roorkee
Link: http://nptel.ac.in/courses/108107029/
• Microprocessors and Microcontrollers by Prof. Krishna Kumar IISc Bangalore
Link: http://nptel.ac.in/courses/106108100/
5
Microprocessor Basics
• Microprocessor (µP) is the “brain” of a computer that has been implemented on one semiconductor chip.
• The word comes from the combination micro and processor.
• Processor means a device that processes whatever(binary numbers, 0’s and 1’s)
To process means to manipulate. It describes all manipulation.
Micro - > extremely small
6
Definition of a Microprocessor.
The microprocessor is a programmable device that takes in numbers, performs on them arithmetic or logical operations according to the program stored in memory and then produces other numbers as a result.
7
Microprocessor ?
A microprocessor is multi programmable clock driven
register based semiconductor device that is used to fetch ,
process & execute a data within fraction of seconds.
8
Applications
• Calculators• Accounting system• Games machine• Instrumentation• Traffic light Control• Multi user, multi-function environments• Military applications• Communication systems
9
MICROPROCESSOR HISTORY
10
DIFFERENT PROCESSORS AVAILABLE
Socket
Processor
Pinless Processor
Slot Processor
ProcessorSlot
11
Development of Intel Microprocessors
• 8086 - 1979• 286 - 1982• 386 - 1985• 486 - 1989• Pentium - 1993• Pentium Pro - 1995• Pentium MMX -1997• Pentium II - 1997• Pentium II Celeron - 1998• Pentium II Zeon - 1998• Pentium III - 1999• Pentium III Zeon - 1999• Pentium IV - 2000• Pentium IV Zeon - 2001
12
GENERATION OF PROCESSORS
Processor Bits Speed
8080 8 2 MHz
8086 16 4.5 – 10 MHz
8088 16 4.5 – 10 MHz
80286 16 10 – 20 MHz
80386 32 20 – 40 MHz
80486 32 40 – 133 MHz
13
GENERATION OF PROCESSORS
Processor Bits Speed
Pentium 32 60 – 233 MHz
Pentium Pro
32 150 – 200 MHz
Pentium II, Celeron ,
Xeon
32 233 – 450 MHz
Pentium III, Celeron
, Xeon
32 450 MHz –1.4 GHz
Pentium IV, Celeron ,
Xeon
32 1.3 GHz –3.8 GHz
Itanium 64 800 MHz –3.0 GHz
14
Intel 4004 Introduced in 1971.
It was the first microprocessor by Intel.
It was a 4-bit µP.
Its clock speed was 740KHz.
It had 2,300 transistors.
It could execute around 60,000 instructions per second.
15
Intel 4040
Introduced in 1971.
It was also 4-bit µP.
16
8-bit Microprocessors
17
Intel 8008
Introduced in 1972.
It was first 8-bit µP.
Its clock speed was 500 KHz.
Could execute 50,000 instructions per second.
18
Intel 8080
Introduced in 1974.
It was also 8-bit µP.
Its clock speed was 2 MHz.
It had 6,000 transistors.
19
Intel 8085 Introduced in 1976.
It was also 8-bit µP.
Its clock speed was 3 MHz.
Its data bus is 8-bit and address bus is 16-bit.
It had 6,500 transistors.
Could execute 7,69,230 instructions per second.
It could access 64 KB of memory.
It had 246 instructions.
20
16-bit Microprocessors
21
INTEL 8086 Introduced in 1978.
It was first 16-bit µP.
Its clock speed is 4.77 MHz, 8 MHz and 10 MHz, depending on the version.
Its data bus is 16-bit and address bus is 20-bit.
It had 29,000 transistors.
Could execute 2.5 million instructions per second.
It could access 1 MB of memory.
It had 22,000 instructions.
It had Multiply and Divideinstructions.
22
INTEL 8088 Introduced in 1979.
It was also 16-bit µP.
It was created as a cheaper version of Intel’s 8086.
It was a 16-bit processor with an 8-bit external bus.
23
INTEL 80186 & 80188 Introduced in 1982.
They were 16-bit µPs.
Clock speed was 6 MHz.
80188 was a cheaper version of 80186 with an 8-bit external data bus.
24
INTEL 80286 Introduced in 1982.
It was 16-bit µP.
Its clock speed was 8 MHz.
Its data bus is 16-bit and address bus is 24-bit.
It could address 16 MB of memory.
It had 1,34,000 transistors.
25
32-BIT MICROPROCESSORS
26
INTEL 80386 Introduced in 1986.
It was first 32-bit µP.
Its data bus is 32-bit and address bus is 32-bit.
It could address 4 GB of memory.
It had 2,75,000 transistors.
Its clock speed varied from 16 MHz to 33 MHz depending upon the various versions. 27
INTEL 80486 Introduced in 1989.
It was also 32-bit µP.
It had 1.2 million transistors.
Its clock speed varied from 16 MHz to 100 MHz depending upon the various versions.
8 KB of cache memory was introduced.
28
INTEL PENTIUM Introduced in 1993.
It was also 32-bit µP.
It was originally named 80586.
Its clock speed was 66 MHz.
Its data bus is 32-bit and address bus is 32-bit.
29
INTEL PENTIUM PRO
Introduced in 1995.
It was also 32-bit µP.
It had 21 million transistors.
Cache memory:
8 KB for instructions.
8 KB for data.
30
INTEL PENTIUM II Introduced in 1997.
It was also 32-bit µP.
Its clock speed was 233 MHz to 500 MHz.
Could execute 333 million instructions per second.
31
INTEL PENTIUM II XEON
Introduced in 1998.
It was also 32-bit µP.
It was designed for servers.
Its clock speed was 400 MHz to 450 MHz.
32
INTEL PENTIUM III Introduced in 1999.
It was also 32-bit µP.
Its clock speed varied from 500 MHz to 1.4 GHz.
It had 9.5 million transistors.
33
INTEL PENTIUM IV Introduced in 2000.
It was also 32-bit µP.
Its clock speed was from 1.3 GHz to 3.8 GHz.
It had 42 million transistors.
34
INTEL DUAL CORE Introduced in 2006.
It is 32-bit or 64-bit µP.
35
36
64-BIT MICROPROCESSORS
37
Intel Core 2 Intel Core i3
38
INTEL CORE I5 INTEL CORE I7
39
Basic Terms• Bit: A digit of the binary number { 0 or 1 }• Nibble: 4 bit Byte: 8 bit word: 16 bit• Double word: 32 bit • Data: binary number/code operated by an
instruction• Address: Identification number for memory
locations• Clock: square wave used to synchronize various
devices in µP• Memory Capacity = 2^n ,
n->no. of address lines
40
BUS CONCEPT• BUS: Group of conducting lines that carries data ,
address & control signals.CLASSIFICATION OF BUSES:1.DATA BUS: group of conducting lines that carries
data.2. ADDRESS BUS: group of conducting lines that
carries address.3.CONTROL BUS: group of conducting lines that
carries control signals {RD, WR etc}CPU BUS: group of conducting lines that directly
connected to µPSYSTEM BUS: group of conducting lines that carries
data , address & control signals in a µP system41
TRISTATE LOGIC3 logic levels are:• High State (logic 1) • Low state (logic 0)• High Impedance state
High Impedance: output is not being driven to any defined logic level by the output circuit.
42
Basic Microprocessors System
InputDevices
Processing Data into
InformationOutput Devices
Control Unit
Secondary Storage Devices
Arithmetic-Logic Unit
Primary Storage Unit
Central Processing Unit
Keyboard,Mouseetc
MonitorPrinter
Disks, Tapes, Optical Disks
43
THE 8086 MICROPROCESSOR
UNIT
1
44
UNIT 1 Syllabus• Introduction to 8086 • Microprocessor architecture • Addressing modes• Instruction set • Assembler directives• Assembly language programming • Modular Programming
1.Linking and Relocation 2.Stacks , Procedures , Macros
• Interrupts and interrupt service routines• Byte & String Manipulation. 45
8086 Microprocessor-introduction
INTEL launched 8086 in 19788086 is a 16-bit microprocessor with
• 16-bit Data Bus {D0-D15}• 20-bit Address Bus {A0-A19} [can access upto
2^20= 1 MB memory locations] .It has multiplexed address and data bus
AD0-AD15 and A16–A19.It can support upto 64K I/O ports
46
8086 Microprocessor It provides 14, 16-bit registers.8086 requires one phase clock with a 33%
duty cycle to provide optimized internal timing.
– Range of clock:• 5 MHz for 8086• 8Mhz for 8086-2• 10Mhz for 8086-1
47
8086 Internal Architecture 8086 employs parallel processing 8086 CPU has two parts which operate at the
same time• Bus Interface Unit• Execution Unit
CPU functions1. Fetch
2. Decode3. Execute
8086 CPU
Bus Interface Unit (BIU)
Execution Unit(EU)
48
Bus Interface Unit
Sends out addresses for memory locationsFetches Instructions from memoryReads/Writes data to memorySends out addresses for I/O portsReads/Writes data to Input/Output ports
49
Execution Unit
Tells BIU (addresses) where to fetch instructions or dataDecodes & Executes instructions
Dividing the work between BIU & EU speeds up processing
50
Architecture Diagram of 8086
51
AH AL
BH BL
CH CL
DH DL
STACK POINTER (SP)
BASE POINTER (BP)
SOURCE INDEX (SI)
DESTINATION INDEX (DI)
EXTRA SEGMENT (ES)
CODE SEGMENT (CS)
STACK SEGMENT (SS)
DATA SEGMENT (DS)
INSTRUCTION POINTER (IP)
6 5 4 3 2 1
CONTROL SYSTEM
ARITHMETICLOGIC UNIT
FLAGS
Instruction Queue
OPERANDS
∑ MemoryInterface
EU
BIU
InstructionDecoder
52
Execution Unit
Main components are• Instruction Decoder• Control System• Arithmetic Logic Unit• General Purpose Registers• Flag Register• Pointer & Index registers
53
Instruction DecoderTranslates instructions fetched from memory
into a series of actions which EU carries out
Control SystemGenerates timing and control signals to
perform the internal operations of the microprocessor
Arithmetic Logic UnitEU has a 16-bit ALU which can ADD,
SUBTRACT, AND, OR, increment, decrement, complement or shift binary numbers
54
General Purpose Registers EU has 8 general
purpose registers Can be individually
used for storing 8-bit data
AL register is also called Accumulator
Two registers can also be combined to form 16-bit registers
The valid register pairs are – AX, BX, CX, DX
AH AL
BH BL
CH CLDH DL
AH AL AX
BH BL BX
CH CL CX
DH DL DX55
Flag Register
8086 has a 16-bit flag registerContains 9 active flagsThere are two types of flags in 8086
• Conditional flags – six flags, set or reset by EU on the basis of results of some arithmetic operations
• Control flags – three flags, used to control certain operations of the processor
56
U U U U OF DF IF TF SF ZF U AF U PF U CF
Flag Register
1. CF CARRY FLAG Conditional Flags(Compatible with 8085, except OF)
2. PF PARITY FLAG
3. AF AUXILIARY CARRY
4. ZF ZERO FLAG
5. SF SIGN FLAG
6. OF OVERFLOW FLAG
7. TF TRAP FLAG Control Flags8. IF INTERRUPT FLAG
9. DF DIRECTION FLAG57
Flag Register
58
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
OF DF IF TF SF ZF AF PF CF
Carry Flag
This flag is set, when there isa carry out of MSB in case ofaddition or a borrow in caseof subtraction.
Parity Flag
This flag is set to 1, if the lowerbyte of the result contains evennumber of 1’s ; for odd numberof 1’s set to zero.
Auxiliary Carry Flag
This is set, if there is a carry from thelowest nibble, i.e, bit three duringaddition, or borrow for the lowestnibble, i.e, bit three, duringsubtraction.
Zero Flag
This flag is set, if the result ofthe computation or comparisonperformed by an instruction iszero
Sign Flag
This flag is set, when the result of any computation
is negative
Tarp FlagIf this flag is set, the processorenters the single step executionmode by generating internalinterrupts after the execution ofeach instruction
Interrupt Flag
Causes the 8086 to recognize external mask interrupts; clearing IF
disables these interrupts.
Direction FlagThis is used by string manipulation instructions. If this flag bitis ‘0’, the string is processed beginning from the lowestaddress to the highest address, i.e., auto incrementing mode.Otherwise, the string is processed from the highest addresstowards the lowest address, i.e., auto incrementing mode.
Over flow FlagThis flag is set, if an overflow occurs, i.e, if the result of a signed
operation is large enough to accommodate in a destination register. The result is of more than 7-bits in size in case of 8-bit signed operation and more than 15-bits in size in case of 16-bit
sign operations, then the overflow will be set.
59
Registers, Flag
Sl.No. Type Register width Name of register
1 General purpose register
16 bit AX, BX, CX, DX
8 bit AL, AH, BL, BH, CL, CH, DL, DH
2 Pointer register 16 bit SP, BP
3 Index register 16 bit SI, DI
4 Instruction Pointer 16 bit IP
5 Segment register 16 bit CS, DS, SS, ES
6 Flag (PSW) 16 bit Flag register
8086 registers categorized
into 4 groups 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
OF DF IF TF SF ZF AF PF CF
60
Register Name of the Register Special Function
AX 16-bit Accumulator Stores the 16-bit results of arithmetic and logic operations
AL 8-bit Accumulator Stores the 8-bit results of arithmetic and logic operations
BX Base register Used to hold base value in base addressing mode to access memory data
CX Count Register Used to hold the count value in SHIFT, ROTATE and LOOP instructions
DX Data Register Used to hold data for multiplication and division operations
SP Stack Pointer Used to hold the offset address of top stack memory
BP Base Pointer Used to hold the base value in base addressing using SS register to access data from stack memory
SI Source Index Used to hold index value of source operand (data) for string instructions
DI Data Index Used to hold the index value of destination operand (data) for string operations
Registers and Special Functions
Bus Interface Unit
Main Components are• Instruction Queue• Segment Registers• Instruction Pointer
61
Instruction Queue 8086 employs parallel processingWhen EU is busy decoding or executing
current instruction, the buses of 8086 may not be in use.
At that time, BIU can use buses to fetch upto six instruction bytes for the following instructions
BIU stores these pre-fetched bytes in a FIFOregister called Instruction Queue
When EU is ready for its next instruction, it simply reads the instruction from the queue in BIU
62
Pipelining
EU of 8086 does not have to wait in between for BIU to fetch next instruction byte from memorySo the presence of a queue in 8086
speeds up the processingFetching the next instruction while the
current instruction executes is called pipelining
63
Memory Segmentation 8086 has a 20-bit address busSo it can address a maximum of 1MB of
memory 8086 can work with only four 64KB segments
at a time within this 1MB rangeThese four memory segments are called
• Code segment• Stack segment• Data segment• Extra segment
64
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Memory
00000H
FFFFFH
1MB Address Range
64KB Memory Segment
Only 4 such segments can be addressed at a time
4
5
6
7
65
Code SegmentThat part of memory from where BIU is
currently fetching instruction code bytes
Stack SegmentA section of memory set aside to store
addresses and data while a subprogram executes
Data & Extra SegmentsUsed for storing data values to be used in
the program
66
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Memory
00000H
FFFFFH
1MB Address Range
Code Segment
Stack Segment
Data & Extra Segments
67
Segment Registers
hold the upper 16-bits of the starting address for each of the segmentsThe four segment registers are
• CS (Code Segment register)• DS (Data Segment register)• SS (Stack Segment register)• ES (Extra Segment register)
68
1
Code Segment3
4
Data SegmentExtra Segment
7
8
9
10
11
12
13
14
15
Stack Segment
Memory00000H
FFFFFH
1MB Address Range
Star
ting
Add
ress
es
of S
egm
ents
1000 0H
4000 0H5000 0H
F000 0H
CS
DSES
SS69
Address of a segment is of 20-bitsA segment register stores only upper 16-
bitsBIU always inserts zeros for the lowest 4-
bits of the 20-bit starting address.E.g. if CS = 348AH, then the code
segment will start at 348A0HA 64-KB segment can be located
anywhere in the memory, but will start at an address with zeros in the lowest 4-bits
70
Instruction Pointer (IP) Register
a 16-bit registerHolds 16-bit offset, of the next instruction
byte in the code segment BIU uses IP and CS registers to generate
the 20-bit address of the instruction to be fetched from memory
71
1Data
Segment3
4
Code Segment
Extra Segment
7
8
9
10
11
12
13
14
15
Stack Segment
Memory00000H
FFFFFH
1MB Address Range
348A H4214 H
38AB4 H
CS
IPPhysical Address
Start of Code Segment
348A0H
Code Byte MOV AL, BL38AB4H
IP = 4214H
+
0
Physical Address Calculation
72
Stack Segment (SS) Register Stack Pointer (SP) Register
Upper 16-bits of the starting address of stack segment is stored in SS registerIt is located in BIUSP register holds a 16-bit offset from the
start of stack segment to the top of the stackIt is located in EU
73
Other Pointer & Index Registers
Base Pointer (BP) registerSource Index (SI) registerDestination Index (DI) registerCan be used for temporary storage of dataMain use is to hold a 16-bit offset of a data
word in one of the segments
74
ADDRESSING MODES OF
808675
Various Addressing Modes1. Immediate Addressing Mode2. Register Addressing Mode3. Direct Addressing Mode4. Register Indirect Addressing Mode5. Index Addressing Mode6. Based Addressing Mode7. Based & Indexed Addressing Mode8. Based & Indexed with displacement Addressing
Mode9. Strings Addressing Mode
76Presented by C.GOKUL,AP/EEE , Velalar College of Engg & Tech, Erode
1. IMMEDIATE ADDRESSING MODE• The instruction will specify the name
of the register which holds the data to be operated by the instruction.
• Source data is within the instruction
• Ex: MOV AX,10ABH
AL=ABH, AH=10H
77
2.REGISTER ADDRESSING MODE
• In immediate addressing mode, an 8-bit or 16-bit data is specified as part of the instruction
• Ex: MOV AX,BLH
MOV AX,BLH
78
3. DIRECT ADDRESSING MODE
• Memory address is supplied with in the instruction
• Mnemonic: MOV AH,[MEMBDS]AH [1000H]
• But the memory address is notindex or pointer register
79
4. REGISTER INDIRECT ADDRESSING MODE
• Memory address is supplied in an index or pointer register
• EX:
MOV AX,[SI] ; AL [SI] ; AH [SI+1]JMP [DI] ; IP [DI+1: DI]INC BYTE PTR [BP] ; [BP] [BP]+1DEC WORD PTR [BX] ;
[BX+1:BX] [BX+1:BX]-1
80
5.Indexed Addressing Mode
• Memory address is the sum of index register plus displacement
MOV AX,[SI+2] AL [SI+2]; AH [SI+3]JMP [DI+2] IP [BX+3:BX+2]
81
6. Based Addressing Mode
• Memory address is the sum of the BX or BP base register plus a displacement within instruction
• Ex: MOV AX,[BP+2] AL [BP+2]; AH [BP+3]JMP [BX+2] IP [BX+3:BX+2]
82
7.BASED & INDEX ADDRESSING MODES
• Memory address is the sum of the index register & base register
Ex:MOV AX,[BX+SI] ; AL [BX+SI] ; AH [BX+SI+1]JMP [BX+DI] ; IP [BX+DI+1 : BX+DI]INC BYTE PTR [BP+SI] ; [BP] [BP]+1DEC WORD PTR [BP+DI] ;
[BX+1:BX] [BX+1:BX]-1
83
8. BASED & INDEXED WITH DISPLACEMENT ADDRESSING MODE
• Memory address is the sum of an index register , base register and displacement within instruction
MOV AX,[BX+SI+6] ; AL [BX+SI+6] ; AH [BX+SI+7]JMP [BX+DI+6] ; IP [BX+DI+7 : BX+DI+6]INC BYTE PTR [BP+SI+5] ; DEC WORD PTR [BP+DI+5] ;
84Presented by C.GOKUL,AP/EEE , Velalar College of Engg & Tech, Erode
9. Strings Addressing Mode
• The memory source address is a register SI in the data segment, and the memory destination address is register DI in the extra segment
• Ex: MOVSB [ES:DI] [DS:SI]
• If DF=0 SI SI+1 , DI DI+1DF=1 SI SI-1 , DI DI-1
85
INSTRUCTION SET of 8086
86
• Instruction:- An instruction is a binary pattern designed inside a microprocessor to perform a specific function.
• Opcode:- It stands for operational code. It specifies the type of operation to be performed by CPU. It is the first field in the machine language instruction format.
• E.g. 08 is the opcode for instruction “MOV X,Y”.
• Operand:- We can also say it as data on which operation should act. operands may be register values or memory values. The CPU executes the instructions using information present in this field. It may be 8-bit data or 16-bit data.
Instruction set basics
87
• Assembler:- it converts the instruction into sequence of binary bits, so that this bits can be read by the processor.
• Mnemonics:- these are the symbolic codes for either instructions or commands to perform a particular function.
• E.g. MOV, ADD, SUB etc.
Instruction set basics
88
Types of instruction set of 8086 microprocessor
(1). Data Copy/Transfer instructions.
(2). Arithmetic & Logical instructions.
(3). Branch instructions.
(4). Loop instructions.
(5). Machine Control instructions.
(6). Flag Manipulation instructions.
(7). Shift & Rotate instructions.
(8). String instructions.89
(1). Data copy/transfer instructions.(1). MOV Destination, Source
There will be transfer of data from source to destination. Source can be register, memory location or immediate
data. Destination can be register or memory operand. Both Source and Destination cannot be memory location
or segment registers at the same time. E.g. (1). MOV CX, 037A H; (2). MOV AL, BL; (3). MOV BX, [0301 H];
90
BX 2000HAX 2000H
BEFORE EXECUTION
AFTER EXECUTION
MOV BX,AX
AH
AL
BH
BL
CH
CL
DH
DL
AH
AL
BH
BL
CH
CL 40
DH
DL
MOV CL,M
40 40
BEFORE EXECUTION
AFTER EXECUTION
91
Stack Pointer It is a 16-bit register, contains the address of the data
item currently on top of the stack.
Stack operation includes pushing (providing) data on to the stack and popping (taking)data from the stack.
Pushing operation decrements stack pointer and Popping operation increments stack pointer. i.e. there is a last in first out (LIFO) operation.
92
(2). Push Source Source can be register, segment register or
memory. This instruction pushes the contents of specified
source on to the stack. In this stack pointer is decremented by 2. The higher byte data is pushed first (SP-1). Then lower byte data is pushed (SP-2).
E.g.: (1). PUSH AX; (2). PUSH DS; (3). PUSH [5000H];
93
INITIAL POSITION
DECREMENTS SP & STORES HIGHER BYTE
HIGHER BYTE
DECREMENTS SP & STORES LOWER BYTE
LOWER BYTE
HIGHER BYTE
(1) STACK POINTER
(2) STACK POINTER
(3) STACK POINTER
94
BH BL
CH 10 CL 50
DH DL
BH BL
CH 10 CL 50
DH DL
50
10
SP 2002H
SP 2000H
BEFORE EXECUTION
AFTER EXECUTION
2000H
2001H
2002H
2000H
2001H
2002H
PUSH CX
95
(3) POP Destination Destination can be register, segment register or
memory. This instruction pops (takes) the contents of
specified destination. In this stack pointer is incremented by 2. The lower byte data is popped first (SP+1). Then higher byte data is popped (SP+2).
E.g. (1). POP AX; (2). POP DS; (3). POP [5000H];
96
INITIAL POSITION AND READS LOWER BYTE
LOWER BYTE
INCREMENTS SP & READS HIGHER BYTE
LOWER BYTE
HIGHER BYTE
INCREMENTS SP
LOWER BYTE
HIGHER BYTE
(1) STACK POINTER
(2) STACK POINTER
(3) STACK POINTER
97
BH BL
BH 50
BL 30
SP 2000H
SP 2002H
3050
3050
BEFORE EXECUTION
AFTER EXECUTION
POP BX
2000H
2001H
2002H
2000H2001H
2002H
98
(4). XCHG Destination, source;
• This instruction exchanges contents of Source with destination.
• It cannot exchange two memory locations directly.
•The contents of AL are exchanged with BL.
•The contents of AH are exchanged with BH.
•E.g.(1). XCHG BX, AX;(2). XCHG [5000H],AX;
99
AH 20 AL 40
BH 70 BL 80
AH 70 AL 80
BH 20 BL 40
BEFORE EXECUTION AFTER EXECUTION
XCHG AX,BX100
(5)IN AL/AX, 8-bit/16-bit port address
It reads from the specified port address. It copies data to accumulator from a port with 8-
bit or 16-bit address. DX is the only register is allowed to carry port
address. E.g.(1). IN AL, 80H;(2). IN AX,DX; //DX contains address of 16-bit
port.101
10 AL
10 AL 10
BEFORE EXECUTION
AFTER EXECUTION
IN AL,80H
PORT 80H
PORT 80H
102
OUT 8-bit/16-bit port address, AL/AX
It writes to the specified port address. It copies contents of accumulator to the port
with 8-bit or 16-bit address. DX is the only register is allowed to carry port
address. E.g.(1). OUT 80H,AL;(2). OUT DX,AX; //DX contains address of 16-bit
port.103
10 AL 40
40 AL 40
BEFORE EXECUTION
AFTER EXECUTION
OUT 50H,AL
PORT 50H
PORT 50H
104
(7) XLAT
Also known as translate instruction. It is used to find out codes in case of code conversion. i.e. it translates code of the key pressed to the
corresponding 7-segment code. After execution this instruction contents of AL register
always gets replaced. E.g. XLAT;
105
8.LEA 16-bit register (source), address (dest.)
LEA Also known as Load Effective Address (LEA).
It loads effective address formed by the destination into the source register.
E.g.(1). LEA BX,Address;(2). LEA SI,Address[BX];
106
(9). LDS 16-bit register (source), address (dest.);(10). LES 16-bit register (source), address (dest.);
LDS Also known as Load Data Segment (LDS). LES Also known as Load Extra Segment (LES). It loads the contents of DS (Data Segment) or ES
(Extra Segment) & contents of the destination to the contents of source register.
E.g.(1). LDS BX,5000H;(2). LES BX,5000H;
107
10
20
30
40
5000H
5001H
5002H
5003H
20 10
40 30
(1). LDS BX,5000H;(2). LES BX,5000H;
BX
DS/ES
07015
108
(11). LAHF:- This instruction loads the AH register from the contents of lower byte of the flag register.
This command is used to observe the status of the all conditional flags of flag register.
E.g. LAHF;
(12). SAHF:- This instruction sets or resets all conditional flags of flag register with respect to the corresponding bit positions.
If bit position in AH is 1 then related flag is set otherwise flag will be reset.
E.g. SAHF;
109
PUSH & POP
(13). PUSH F:- This instruction decrements the stack pointer by 2.
It copies contents of flag register to the memory location pointed by stack pointer.
E.g. PUSH F;
(14). POP F:- This instruction increments the stack pointer by 2.
It copies contents of memory location pointed by stack pointer to the flag register.
E.g. POP F;110
(2). Arithmetic Instructions
These instructions perform the operations like:
Addition, Subtraction, Increment, Decrement.
111
(2). Arithmetic Instructions(1). ADD destination, source;
This instruction adds the contents of source operand with the contents of destination operand.
The source may be immediate data, memory location or register.
The destination may be memory location or register. The result is stored in destination operand. AX is the default destination register.
E.g. (1). ADD AX,2020H;(2). ADD AX,BX;
112
AH 10 AL 10
AFTER EXECUTIONBEFORE EXECUTION
AH 10 AL 10
BH 20 BL 20
AFTER EXECUTIONBEFORE EXECUTION
ADD AX,2020H
ADD AX,BX
AH 30 AL 30
1010+20203030
AH 30 AL 30
BH 20 BL 20
113
ADC destination, source This instruction adds the contents of source
operand with the contents of destination operand with carry flag bit.
The source may be immediate data, memory location or register.
The destination may be memory location or register.
The result is stored in destination operand. AX is the default destination register.
E.g. (1). ADC AX,2020H;(2). ADC AX,BX;
114
(3) INC source This instruction increases the contents of source
operand by 1. The source may be memory location or register. The source can not be immediate data. The result is stored in the same place.
E.g. (1). INC AX;(2). INC [5000H];
115
AFTER EXECUTION
5000H
AFTER EXECUTIONBEFORE EXECUTION
INC [5000H]
BEFORE EXECUTION
INC AXAH 10 AL 11 AH 10 AL 12
1011 5000H 1012
116
4. DEC source This instruction decreases the contents of
source operand by 1. The source may be memory location or register. The source can not be immediate data. The result is stored in the same place.
E.g. (1). DEC AX;(2). DEC [5000H];
117
AFTER EXECUTION
5000H
AFTER EXECUTIONBEFORE EXECUTION
DEC [5000H]
BEFORE EXECUTION
DEC AXAH 10 AL 11 AH 10 AL 10
1051 5000H 1050
118
(5) SUB destination, source; This instruction subtracts the contents of source
operand from contents of destination. The source may be immediate data, memory
location or register. The destination may be memory location or
register. The result is stored in the destination place.
E.g. (1). SUB AX,1000H;(2). SUB AX,BX;
119
AFTER EXECUTIONBEFORE EXECUTION
SUB AX,1000H
AFTER EXECUTIONBEFORE EXECUTION
SUB AX,BX
AH 20 AL 00 AH 10 AL 00
2000-1000=1000
AH 20 AL 00BH 10 BL 00
AH 10 AL 00
BH 10 BL 00
120
(6). SBB destination, source; Also known as Subtract with Borrow. This instruction subtracts the contents of source
operand & borrow from contents of destination operand.
The source may be immediate data, memory location or register.
The destination may be memory location or register.
The result is stored in the destination place.
E.g. (1). SBB AX,1000H;(2). SBB AX,BX;
121
AH 20 AL 20
AFTER EXECUTIONBEFORE EXECUTION
AH 20 AL 20
BH 10 BL 10
AFTER EXECUTIONBEFORE EXECUTION
SBB AX,1000H
SBB AX,BX
2050
AH 10 AL 192020
- 10001020-
1=1019
AH 10 AL 19
BH 10 BL 10
B 1
B 1
122
(7). CMP destination, source Also known as Compare. This instruction compares the contents of source
operand with the contents of destination operands. The source may be immediate data, memory
location or register. The destination may be memory location or
register. Then resulting carry & zero flag will be set or reset.
E.g. (1). CMP AX,1000H;(2). CMP AX,BX;
123
AFTER EXECUTION
CMP AX,BX
BEFORE EXECUTION
CY 0 Z 1
AFTER EXECUTIONBEFORE EXECUTION
D=S: CY=0,Z=1D>S: CY=0,Z=0D<S: CY=1,Z=0
AH 10 AL 00BH 10 BL 00
CMP AX,BX CY 0 Z 0AH 10 AL 00BH 00 BL 10
AFTER EXECUTIONBEFORE EXECUTION
CMP AX,BX CY 1 Z 0AH 10 AL 00BH 20 BL 00
124
AAA (ASCII Adjust after Addition): The data entered from the terminal is in ASCII format.
In ASCII, 0 – 9 are represented by 30H – 39H.
This instruction allows us to add the ASCII codes.
This instruction does not have any operand.
Other ASCII Instructions: AAS (ASCII Adjust after Subtraction)
AAM (ASCII Adjust after Multiplication)
AAD (ASCII Adjust Before Division)
125
DAA (Decimal Adjust after Addition)
It is used to make sure that the result of adding two BCD numbers is adjusted to be a correct BCD number.
It only works on AL register.
DAS (Decimal Adjust after Subtraction)
It is used to make sure that the result of subtracting two BCD numbers is adjusted to be a correct BCD number.
It only works on AL register.
126
MUL operand Unsigned Multiplication. Operand contents are positively signed. Operand may be general purpose register or memory
location. If operand is of 8-bit then multiply it with contents of AL. If operand is of 16-bit then multiply it with contents of AX. Result is stored in accumulator (AX).
E.g. (1). MUL BH // AX= AL*BH; // (+3) * (+4) = +12.
(2). MUL CX // AX=AX*CX;
127
IMUL operand Signed Multiplication. Operand contents are negatively signed. Operand may be general purpose register, memory location
or index register. If operand is of 8-bit then multiply it with contents of AL. If operand is of 16-bit then multiply it with contents of AX. Result is stored in accumulator (AX).
E.g. (1). IMUL BH // AX= AL*BH; // (-3) * (-4) = 12.
(2). IMUL CX // AX=AX*CX;
128
DIV operand Unsigned Division. Operand may be register or memory. Operand contents are positively signed. Operand may be general purpose register or
memory location. AL=AX/Operand (8-bit/16-bit) & AH=Remainder.
E.g. MOV AX, 0203 // AX=0203 MOV BL, 04 // BL=04 IDIV BL // AL=0203/04=50 (i.e. AL=50 & AH=03)
129
IDIV operand Signed Division. Operand may be register or memory. Operand contents are negatively signed. Operand may be general purpose register or
memory location. AL=AX/Operand (8-bit/16-bit) & AH=Remainder.
E.g. MOV AX, -0203 // AX=-0203 MOV BL, 04 // BL=04 DIV BL // AL=-0203/04=-50 (i.e. AL=-50 &
AH=03)
130
Multiplication and Division Examples
131
AH 00 AL 05
BH 00 BL 03CH CL
132
BEFORE EXECUTION
AFTER EXECUTION
MUL BX AX=lower 16 bit {000F}DX=Higher 16 bit {0000}
AH 00 AL 0F
BH BLCH CLDH 00 DL 00
0005*0003 = 0000 000F
AH 00 AL 0F
BH 00 BL 02
CH CL
133
BEFORE EXECUTION
AFTER EXECUTION
DIV BX
AH 00 AL 07
BH BLCH CLDH 00 DL 01
AX=Quotient {0007}DX=Reminder {0001}
000F = 7 1
0002 2
134
135
136
LOGICAL (or) Bit Manipulation Instructions
These instructions are used at the bit level.
These instructions can be used for:
Testing a zero bit
Set or reset a bit
Shift bits across registers
137
Bit Manipulation Instructions(LOGICAL Instructions)
• AND– Especially used in clearing certain bits (masking)
xxxx xxxx AND 0000 1111 = 0000 xxxx (clear the first four bits)
– Examples: AND BL, 0FH
• OR– Used in setting certain bits
xxxx xxxx OR 0000 1111 = xxxx 1111(Set the upper four bits)
138
XOR– Used in Inverting bits
xxxx xxxx XOR 0000 1111 = xxxxx’x’x’x’
-Example: Clear bits 0 and 1, set bits 6 and 7, invertbit 5 of register CL:
AND CL, FCH ; 1111 1100B
OR CL, C0H ; 1100 0000B
XOR CL, 20H ; 0010 0000B
139
140
AFTER EXECUTIONBEFORE EXECUTION
AND AX,BXH
AH 11 AL 11
BH 11 BL 11
AH FF AL FF
BH 11 BL 11
AX = FFFFH = 1111 1111 1111 1111BX = 1111H = 0001 0001 0001 0001 AND (&)
AND 0001 0001 0001 0001 = 1111H
141
AFTER EXECUTIONBEFORE EXECUTION
OR AX,BXH
AH FF AL FF
BH 11 BL 11
AH FF AL FF
BH 11 BL 11
AX = FFFFH = 1111 1111 1111 1111BX = 1111H = 0001 0001 0001 0001 OR
OR 1111 1111 1111 1111 = FFFFH
142
AFTER EXECUTIONBEFORE EXECUTION
XOR AX,BXH
AH EE AL EE
BH 11 BL 11
AH FF AL FF
BH 11 BL 11
AX = FFFFH = 1111 1111 1111 1111BX = 1111H = 0001 0001 0001 0001
XOR 1110 1110 1110 1110 = EEEEH
143
AFTER EXECUTIONBEFORE EXECUTION
NOT AXH
AH 00 AL 00AH FF AL FF
AX = FFFFH = 1111 1111 1111 1111
NOT 0000 0000 0000 0000 = 0000H
SHL Instruction
The SHL (shift left) instruction performs a logical left shift on the destination operand, filling the lowest bit with 0.
CF
0
mov dl,5d
shl dl,1
144
SHR Instruction
The SHR (shift right) instruction performs a logical right shift on the destination operand. The highest bit position is filled with a zero.
CF
0
MOV DL,80dSHR DL,1 ; DL = 40SHR DL,2 ; DL = 10
145
SAR Instruction
SAR (shift arithmetic right) performs a right arithmetic shift on the destination operand.
CF
An arithmetic shift preserves the number's sign.
MOV DL,-80SAR DL,1 ; DL = -40SAR DL,2 ; DL = -10
146
mov dl,5
shl dl,1
Shifting left n bits multiplies the operand by 2n
For example, 5 * 22 = 20
Shifting right n bits divides the operand by 2n
For example, 80 / 23 = 10
0 0 0 0 1 0 1 0
0 0 0 0 0 1 0 1 = 5
= 10
Before:
After:
147
ROL Instruction
ROL (rotate) shifts each bit to the left The highest bit is copied into both the Carry flag
and into the lowest bit No bits are lost
CF
MOV Al,11110000bROL Al,1 ; AL = 11100001b
MOV Dl,3FhROL Dl,4 ; DL = F3h
148
ROR Instruction ROR (rotate right) shifts each bit to the right The lowest bit is copied into both the Carry flag and
into the highest bit No bits are lost
CF
MOV AL,11110000bROR AL,1 ; AL = 01111000b
MOV DL,3FhROR DL,4 ; DL = F3h
149
RCL Instruction RCL (rotate carry left) shifts each bit to the left Copies the Carry flag to the least significant bit Copies the most significant bit to the Carry flag
CF
CLC ; CF = 0MOV BL,88H ; CF,BL = 0 10001000bRCL BL,1 ; CF,BL = 1 00010000bRCL BL,1 ; CF,BL = 0 00100001b
150
RCR Instruction RCR (rotate carry right) shifts each bit to the right Copies the Carry flag to the most significant bit Copies the least significant bit to the Carry flag
STC ; CF = 1MOV AH,10H ; CF,AH = 00010000 1RCR AH,1 ; CF,AH = 10001000 0
CF
151
SHL Instruction
The SHL (shift left) instruction performs a logical left shift on the destination operand, filling the lowest bit with 0.
CF
0
152
0 0 0 0 0 1 0 1 =05H
0 0 0 0 1 0 1 0CF
0
BEFORE EXECUTION
AFTER EXECUTION
=0AH
SHR Instruction
153
0 0 0 0 0 1 0 1 =05H
0 0 0 0 0 0 1 0CF
1
CF
0
=02H
BEFORE EXECUTION
AFTEREXECUTION
ROL Instruction
CF
154
0 0 0 0 0 1 0 1 =05H
0 0 0 0 1 0 1 0CF
0 =0AH
BEFORE EXECUTION
AFTER EXECUTION
ROR Instruction
CF
155
0 0 0 0 0 1 0 1 =05H
1 0 0 0 0 0 1 0CF
1 =82H
BEFORE EXECUTION
AFTER EXECUTION
Branching Instructions (or)Program Execution Transfer
Instructions
These instructions cause change in the sequence of the execution of instruction.
This change can be through a condition or sometimes unconditional.
The conditions are represented by flags.
156
CALL Des:
This instruction is used to call a subroutine or function or procedure.
The address of next instruction after CALL is saved onto stack.
RET:
It returns the control from procedure to calling program.
Every CALL instruction should have a RET.
157
SUBROUTINE & SUBROUTINE HANDILING INSTRUCTIONS
Call subroutine A
Next instruction
Call subroutine A
Next instruction
Main program
Subroutine A
First Instruction
Return
158
JMP Des:
This instruction is used for unconditional jump from one place to another.
Jxx Des (Conditional Jump):
All the conditional jumps follow some conditional statements or any instruction that affects the flag.
159
Conditional Jump TableMnemonic Meaning
JA Jump if Above
JAE Jump if Above or Equal
JB Jump if Below
JBE Jump if Below or Equal
JC Jump if Carry
JE Jump if Equal
JNC Jump if Not Carry
JNE Jump if Not Equal
JNZ Jump if Not Zero
JPE Jump if Parity Even
JPO Jump if Parity Odd
JZ Jump if Zero160
Loop Des:
This is a looping instruction.
The number of times looping is required is placed in the CX register.
With each iteration, the contents of CX are decremented.
ZF is checked whether to loop again or not.
161
String Instructions String in assembly language is just a sequentially stored bytes or
words.
There are very strong set of string instructions in 8086.
By using these string instructions, the size of the program is considerably reduced.
162
CMPS Des, Src:
It compares the string bytes or words.
SCAS String:
It scans a string.
It compares the String with byte in AL or with word in AX.
163
MOVS / MOVSB / MOVSW:
It causes moving of byte or word from one string to another.
In this instruction, the source string is in Data Segment and destination string is in Extra Segment.
SI and DI store the offset values for source and destination index.
164
1. Copying a string (MOV SB)MOV CX,0003 copy 3 memory locationsMOV SI,1000MOV DI,2000
L1 CLDMOV SBDEC CX decrement CXJNZ L1HLT
165
2. Find & Replace
166
REP (Repeat):
This is an instruction prefix.
It causes the repetition of the instruction until CX becomes zero.
E.g.: REP MOVSB STR1, STR2
It copies byte by byte contents.
REP repeats the operation MOVSB until CX becomes zero.
167
Processor Control Instructions These instructions control the processor itself.
8086 allows to control certain control flags that:
causes the processing in a certain direction
processor synchronization if more than one microprocessor attached.
168
STC
It sets the carry flag to 1.
CLC
It clears the carry flag to 0.
CMC
It complements the carry flag.
169
STD: It sets the direction flag to 1.
If it is set, string bytes are accessed from higher memory address to lower memory address.
CLD: It clears the direction flag to 0.
If it is reset, the string bytes are accessed from lower memory address to higher memory address.
170
HLT instruction – HALT processing
The HLT instruction will cause the 8086 to stop fetching andexecuting instructions.
NOP instructionthis instruction simply takes up three clock cycles and does no
processing.
LOCK instructionthis is a prefix to an instruction. This prefix makes sure that during
execution of the instruction, control of system bus is not taken by othermicroprocessor.
WAIT instructionthis instruction takes 8086 to an idle condition. The CPU
will not do any processing during this.171
INSTRUCTION SET-summary1.DATA TRANSFER INSTRUCTIONS
Mnemonic Meaning Format Operation
MOV Move Mov D,S (S) (D)
XCHG Exchange XCHG D,S (S) (D)
LEA Load Effective Address LEA Reg16,EA EA (Reg16)
PUSH pushes the operand into top of stack.
PUSH BX sp=sp-2Copy 16 bit value to top
of stack
POP pops the operand from top of stack to Des.
POP BX Copy top of stack to 16 bit reg
sp=sp+2
IN transfers the operand from specified port to accumulator register.
IN AL,28
OUT transfers the operand from accumulator to specified port.
OUT 28,AL
172
2. ARITHMETIC INSTRUCTIONSMnemonic Meaning Format Operation
SUB Subtract SUB D,S (D) - (S) (D)
Borrow (CF)
SBB Subtract with borrow
SBB D,S (D) - (S) - (CF) (D)
DEC Decrement by one DEC D (D) - 1 (D)
NEG Negate NEG D
DAS Decimal adjust for subtraction
DAS Convert the result in AL to packed decimal format
AAS ASCII adjust for subtraction
AAS (AL) difference (AH) dec by 1 if borrow
ADD Addition ADD D,S (S)+(D) (D) carry (CF)
ADC Add with carry ADC D,S (S)+(D)+(CF) (D) carry (CF)
INC Increment by one INC D (D)+1 (D)
AAA ASCII adjust for addition
AAA If the sum is >9, AH
is incremented by 1DAA Decimal adjust for
addition DAA Adjust AL for decimal Packed BCD173
Mnemonic Meaning Format Operation
AND
OR
XOR
NOT
Logical AND
Logical Inclusive OR
Logical Exclusive OR
LOGICAL NOT
AND D,S
OR D,S
XOR D,S
NOT D
(S) · (D) → (D)
(S)+(D) → (D)
(S) (D)→(D)
(D) → (D)
+
3. Bit Manipulation Instructions(Logical Instructions)
174Presented by C.GOKUL,AP/EEE , Velalar College of Engg & Tech, Erode
Shift & Rotate Instructions
Mnemonic Meaning Format
ROL Rotate Left ROL D,Count
ROR Rotate Right ROR D,Count
RCL Rotate Left through Carry RCL D,Count
RCR Rotate right through Carry RCR D,Count
Mnemonic Meaning FormatSAL/SHL
SHR
SAR
Shift arithmetic Left/Shift Logical left
Shift logical right
Shift arithmeticright
SAL/SHL D, Count
SHR D, Count
SAR D, Count
175
4. Branching or PROGRAM EXECUTION TRANSFER INSTRUCTIONS• CALL - call a subroutine• RET - returns the control from procedure to calling
program
• JMP Des – Unconditional Jump• Jxx Des – conditional Jump (ex: JC 8000)• Loop Des
176
5. STRING INSTRUCTIONS
• CMPS Des, Src - compares the string bytes• SCAS String - scans a string• MOVS / MOVSB / MOVSW - moving of byte or
word• REP (Repeat) - repetition of the instruction
177
6. PROCESSOR CONTROL INSTRUCTIONS• STC – set the carry flag (CF=1)• CLC – clear the carry flag (CF=0)• STD – set the direction flag (DF=1)• CLD – clear the direction flag (DF=0)• HLT – stop fetching & execution• NOP – no operation(no processing)• LOCK - control of system bus is not taken by other µP
• WAIT - CPU will not do any processing• ESC - µP does NOP or access a data from memory for coprocessor
178
Assembler Directives
179
ASSUME,END,ENDP,EQU,EVEN,DD – 8 mark
Directives Expansion
180
• ASSUME Directive - The ASSUME directive is used to tell the assembler that the name of the logical segment should be used for a specified segment.
• DB(define byte) - DB directive is used to declare a byte type variable or to store a byte in memory location.
• DW(define word) - The DW directive is used to define a variable of type word or to reserve storage location of type word in memory.
181Presented by C.GOKUL,AP/EEE , Velalar College of Engg & Tech, Erode
• DD(define double word) :This directive is used to declare a variable of type double word or restore memory locations which can be accessed as type double word.
• DQ (define quadword) :This directive is used to tell the assembler to declare a variable 4 words in length or to reserve 4 words of storage in memory .
• DT (define ten bytes):It is used to inform the assembler to define a variable which is 10bytes in length or to reserve 10 bytes of storage in memory.
182
• END- End program .This directive indicates the assembler that this is the end of the program module. The assembler ignores any statements after an END directive.
• ENDP- End procedure: It indicates the end of the procedure (subroutine) to the assembler.
• ENDS-End Segment: This directive is used with the name of the segment to indicate the end of that logical segment.
• EQU - This EQU directive is used to give a name to some value or to a symbol.
183
• PROC - The PROC directive is used to identify the start of a procedure.
• PTR -This PTR operator is used to assign a specific type of a variable or to a label.
• ORG -Originate : The ORG statement changes the starting offset address of the data.
184
Directives examples
• ASSUME CS:CODE cs=> code segment• ORG 3000• NAME DB ‘THOMAS’• POINTER DD 12341234H
• FACTOR EQU 03H
185
Assembly Language Programming(ALP)
8086
186
Program 1: Increment an 8-bit number
• MOV AL, 05H Move 8-bit data to AL.• INC AL Increment AL.
Program 2: Increment an 16-bit number
• MOV AX, 0005H Move 16-bit data to AX.• INC AX Increment AX.
187Presented by C.GOKUL,AP/EEE , Velalar College of Engg & Tech, Erode
After Execution AL = 06H
After Execution AX = 0006H
Program 3: Decrement an 8-bit number
• MOV AL, 05H Move 8-bit data to AL.• DEC AL Decrement AL.
Program 4: Decrement an 16-bit number
• MOV AX, 0005H Move 16-bit data to AX.• DEC AX Decrement AX.
188
After Execution AL = 04H
After Execution AX = 0004H
Program 5: 1’s complement of an 8-bit number.
• MOV AL, 05H Move 8-bit data to AL.• NOT AL Complement AL.
Program 6: 1’s complement of a 16-bit number.
• MOV AX, 0005H Move 16-bit data to AX.• NOT AX Complement AX.
189
After Execution AL = FAH
After Execution AX = FFFAH
Program 7: 2’s complement of an 8-bit number.• MOV AL, 05H Move 8-bit data to AL.• NOT AL Complement AL.• INC AL Increment AL
Program 8: 2’s complement of a 16-bit number.
• MOV AX, 0005H Move 16-bit data to AX.• NOT AX Complement AX.• INC AX Increment AX
190
After Execution AX = FAH + 1 = FB
After Execution AX = FFFAH + 1 = FFFB
Program 9: Add two 8-bit numbers
MOV AL, 05H Move 1st 8-bit number to AL.MOV BL, 03H Move 2nd 8-bit number to BL.ADD AL, BL Add BL with AL.
Program 10: Add two 16-bit numbers
MOV AX, 0005H Move 1st 16-bit number to AX.MOV BX, 0003H Move 2nd 16-bit number to BX.ADD AX, BX Add BX with AX.
191
After Execution AL = 08H
After Execution AX = 0008H
Program 11: subtract two 8-bit numbers
MOV AL, 05H Move 1st 8-bit number to AL.MOV BL, 03H Move 2nd 8-bit number to BL.SUB AL, BL subtract BL from AL.
Program 12: subtract two 16-bit numbers
MOV AX, 0005H Move 1st 16-bit number to AX.MOV BX, 0003H Move 2nd 16-bit number to BX.SUB AX, BX subtract BX from AX.
192
After Execution AL = 02H
After Execution AX = 0002H
Program 13: Multiply two 8-bit unsigned numbers.
MOV AL, 04H Move 1st 8-bit number to AL.MOV BL, 02H Move 2nd 8-bit number to BL.MUL BL Multiply BL with AL and the result will
be in AX.
Program 14: Multiply two 8-bit signed numbers.
MOV AL, 04H Move 1st 8-bit number to AL.MOV BL, 02H Move 2nd 8-bit number to BL.IMUL BL Multiply BL with AL and the result will
be in AX.
193
Program 15: Multiply two 16-bit unsigned numbers.
MOV AX, 0004H Move 1st 16-bit number to AL.MOV BX, 0002H Move 2nd 16-bit number to BL.MUL BX Multiply BX with AX and the result will
be in DX:AX {4*2=0008=> 08=> AX , 00=> DX}
Program 16: Divide two 16-bit unsigned numbers.
MOV AX, 0004H Move 1st 16-bit number to AL.MOV BX, 0002H Move 2nd 16-bit number to BL.DIV BX Divide BX from AX and the result will be in AX & DX
{4/2=0002=> 02=> AX ,00=>DX} (ie: Quotient => AX , Reminder => DX )
194Presented by C.GOKUL,AP/EEE , Velalar College of Engg & Tech, Erode
Detailed coding16 BIT ADDITION
195
Detailed coding16 BIT SUBTRACTION
196
16 BIT MULTIPLICATION
197
16 BIT DIVISION
198
SUM of N numbersMOV AX,0000MOV SI,1100MOV DI,1200MOV CX,0005 5 NUMBERS TO BE TAKEN SUMMOV DX,0000
L1: ADD AX,[SI]INC SIINC DXCMP CX,DXJNZ L1MOV [1200],AXHLT 199
Average of N numbersMOV AX,0000MOV SI,1100MOV DI,1200MOV CX,0005 5 NUMBERS TO BE TAKEN AVERAGEMOV DX,0000
L1: ADD AX,[SI]INC SIINC DXCMP CX,DXJNZ L1DIV CX AX=AX/5(AVERAGE OF 5 NUMBERS)MOV [1200],AXHLT 200Presented by C.GOKUL,AP/EEE , Velalar College of Engg & Tech, Erode
FACTORIAL of NMOV CX,0005 5 Factorial=5*4*3*2*1=120MOV DX,0000MOV AX,0001
L1: MUL CXDEC DXCMP CX,DXJNZ L1MOV [1200],AXHLT
201
ASCENDING ORDER
202
203
DECENDING ORDER
Note: change the coding JNB L1 into JB L1 in the LINE 10204
LARGEST, smallest NUMBER IN AN ARRAY
205
LARGEST NUMBER
206
SMALLEST NUMBER
207
Modular Programming
208
• Generally , industry-programming projects consist of thousands of lines of instructions or operation code.
• The size of the modules are reduced to a humanly comprehensible and manageable level.
• Program is composed from several smaller modules. Modules could be developed by separate teams concurrently.OBJ modules (Object modules).
• The .OBJ modules so produced are combined using a LINK program.
• Modular programming techniques simplify the software development process
209
CHARACTERISTICS of module:1. Each module is independent of other modules.2. Each module has one input and one output.3. A module is small in size.4. Programming a single function per module is a goalAdvantages of Modular Programming:• It is easy to write, test and debug a module.• Code can be reused.• The programmer can divide tasks.• Re-usable Modules can be re-used within a programDRAWBACKS:Modular programming requires extra time and memory
210
MODULAR PROGRAMMING:1.LINKING & RELOCATION2.STACKS3.Procedures4.Interrupts & Interrupt Routines5.Macros
211
LINKING & RELOCATION
212
LINKER• A linker is a program used to join together several
object files into one large object file. • The linker produces a link file which contains the
binary codes for all the combined modules.
The linker program is invoked using the following options. C> LINK
or C>LINK MS.OBJ
213
• The loader is a part of the operating system and places codes into the memory after reading the ‘.exe’ file
• A program called locator reallocates the linked file and creates a file for permanent location of codes in a standard format.
214
Creation and execution of a program
215
Loader->Loader is a utility program which takes object code as
input prepares it for execution and loads the executable code into the memory .
->Loader is actually responsible for initializing the process of execution.
Functions of loaders:1.It allocates the space for program in the memory(Allocation)2.It resolves the code between the object modules(Linking)3. some address dependent locations in the program, address constants
must be adjusted according to allocated space(Relocation)4. It also places all the machine instructions and data of corresponding
programs and subroutines into the memory .(Loading)
216
Relocating loader (BSS Loader)• When a single subroutine is changed then all
the subroutine needs to be reassembled.• The binary symbolic subroutine (BSS) loader
used in IBM 7094 machine is relocating loader.• In BSS loader there are many procedure
segments• The assembler reads one sourced program
and assembles each procedure segment independently
217
• The output of the relocating loader is the object program• The assembler takes the source program as input; this source
program may call some external routines.SEGMENT COMBINATION:
ASM-86 assembler regulating the way segments with the same name are concatenated & sometimes they are overlaid.
Form of segment directive:Segment name SEGEMENT Combine-type
Possible combine-type are:• PUBLIC• COMMON• STACK• AT• MEMORY
218
Procedures219
CALL & RET instruction
• Procedure is a part of code that can be called from your program in order to make some specific task. Procedures make program more structural and easier to understand.
• syntax for procedure declaration:name PROC
…………. ; here goes the code…………. ; of the procedure ...
RET
name ENDP
here PROC is the procedure name.(used in top & bottom)RET - used to return from OS. CALL-call a procedure PROC & ENDP – complier directivesCALL & RET - instructions 220
EXAMPLE 1 (call a procedure)ORG 100hCALL m1MOV AX, 2RET ; return to operating system.
m1 PROCMOV BX, 5RET ; return to caller.m1 ENDPEND
• The above example calls procedure m1, does MOV BX, 5 & returns to the next instruction after CALL: MOV AX, 2.
221Presented by C.GOKUL,AP/EEE , Velalar College of Engg & Tech, Erode
Example 2 : several ways to pass parameters to procedure
ORG 100hMOV AL, 1MOV BL, 2CALL m2CALL m2CALL m2CALL m2
RET ; return to operating system.
m2 PROCMUL BL ; AX = AL * BL.RET ; return to caller.m2 ENDPEND
value of AL register is update every time theprocedure is called.final result in AX register is 16 (or 10h)
223
PUSH & POP instruction
• Stack is an area of memory for keeping temporary data.
• STACK is used by CALL & RET instructions.PUSH -stores 16 bit value in the stack.POP -gets 16 bit value from the stack.
• PUSH and POP instruction are especially useful because we don't have too much registers to operate
1. Store original value of the register in stack (using PUSH).
2. Use the register for any purpose.3. Restore the original value of the register from stack
(using POP).
224
Example-1 (store value in STACK using PUSH & POP)
ORG 100hMOV AX, 1234hPUSH AX ; store value of AX in stack.MOV AX, 5678h ; modify the AX value.POP AX ; restore the original value of AX.RETEND
225
Example 2: use of the stack is for exchanging the values
ORG 100hMOV AX, 1212h ; store 1212h in AX.MOV BX, 3434h ; store 3434h in BXPUSH AX ; store value of AX in stack.PUSH BX ; store value of BX in stack.POP AX ; set AX to original value of BX.POP BX ; set BX to original value of AX.RETEND
push 1212h and then 3434h, on pop we will first get 3434h and only after it 1212h 226
MACROS227
How to pass parameters using macros-6/8 Mark
• Macros are just like procedures, but not really.• Macros exist only until your code is compiled• After compilation all macros are replaced with
real instructions• several macros to make coding easier(Reduce
large & complex programs)Example (Macro definition)
name MACRO [parameters,...]<instructions>ENDM
228
Example1 : Macro DefinitionsSAVE MACRO definition of MACRO name SAVE
PUSH AXPUSH BXPUSH CXENDM
RETREIVE MACRO Another definition of MACRO name RETREIVE
POP CXPOP BXPOP AXENDM
229
230
MACROS with Parameters
Example:COPY MACRO x, y ; macro named COPY with
2 parameters{x, y}
PUSH AXMOV AX, xMOV y, AXPOP AXENDM
231
INTERRUPTS &
INTERRUPT SERVICE ROUTINE(ISR)
232
INTERRUPT & ISR ?
• ‘Interrupts’ is to break the sequence of operation.
• While the CPU is executing a program, on ‘interrupt’ breaks the normal sequence of execution of instructions, diverts its execution to some other program called Interrupt Service Routine (ISR)
233
234
235
236
• Maskable Interrupt: An Interrupt that can be disabled or ignored by the instructions of CPU are called as Maskable Interrupt.
• Non- Maskable Interrupt: An interrupt that cannot be disabled or ignored by the instructions of CPU are called as Non- Maskable Interrupt.
• Software interrupts are machine instructions that amount to a call to the designated interrupt subroutine, usually identified by interrupt number. Ex: INT0 - INT255
237
238
239
240
241
242
INTERRUPT VECTOR TABLE
256 INTERRUPTS OF 8086 ARE DIVIDED IN TO 3 GROUPS
1. TYPE 0 TO TYPE 4 INTERRUPTS-These are used for fixed operations and hence are called
dedicated interrupts
2. TYPE 5 TO TYPE 31 INTERRUPTSNot Used By 8086,reserved For Higher Processors Like 8028680386 Etc
3. TYPE 32 TO 255 INTERRUPTSAvailable For User, called User Defined Interrupts These Can
Be H/W Interrupts And Activated Through Intr Line Or Can BeS/W Interrupts. 243
Type – 0 Divide Error Interrupt
Quotient is too large cant be fit in AL/AX or Divide By Zero {AX/0=∞}
Type –1 Single Step Interruptused for executing the program in single step mode by setting Trap Flag
To Set Trap Flag PUSHF MOV BP,SPOR [BP+0],0100H;SET BIT8POPF
Type – 2 Non Maskable InterruptThis Interrupt is used for executing ISR of NMI Pin (Positive Egde Signal). NMI cant be masked by S/W
Type – 3 Break Point Interruptused for providing BREAK POINTS in the program
Type – 4 Over Flow Interruptused to handle any Overflow Error after signed arithmetic
244
PRIORITY OF INTERRUPTS
Interrupt Type Priority
INT0, INT3-INT 255, Highest
NMI(INT2)
INTR
SINGLE STEP Lowest
245
Byte &String
Manipulation246
Refer String Instructions in Instruction SetSlide No: 160-163
Move, compare, store, load, scan
247
Byte ManipulationExample 1:
MOV AX,[1000]MOV BX,[1002]AND AX,BXMOV [2000],AXHLT
Example 2:MOV AX,[1000]MOV BX,[1002]OR AX,BXMOV [2000],AXHLT
Example 3:MOV AX,[1000]MOV BX,[1002]XOR AX,BXMOV [2000],AXHLT
Example 4:MOV AX,[1000]NOT AXMOV [2000],AXHLT
248Presented by C.GOKUL,AP/EEE , Velalar College of Engg & Tech, Erode
STRING MANIPULATION1. Copying a string (MOV SB)
MOV CX,0003 copy 3 memory locationsMOV SI,1000MOV DI,2000
L1 CLDMOV SBDEC CX decrement CXJNZ L1HLT
249
2. Find & Replace
250
UNIT-28086 SYSTEM BUS
STRUCTURE
251
Presented byC.GOKUL,AP/EEE
Velalar College of Engg & Tech , Erode
DEPARTMENTS: CSE,IT {semester 04}ECE {semester 05}
Regulation : 2013
UNIT 2 Syllabus
252
8086 signals or
Pin Diagram
253
INTEL 8086-Pin Diagram/Signal Description
254
INTEL 8086 - Pin Details
Ground
ClockDuty cycle: 33%
Power Supply5V ± 10%
ResetRegisters, seg
regs, flags
CS: FFFFH, IP: 0000H
If high for minimum 4
clks
255
INTEL 8086 - Pin Details
Address/Data Bus:
Contains address bits A15-A0 when ALE is 1 & data bits D15 –
D0 when ALE is 0.
Address Latch Enable:
When high, multiplexed
address/data bus contains address
information.
256
INTEL 8086 - Pin Details
INTERRUPT
Non - maskable interrupt
Interrupt request
Interrupt acknowledge
257
INTEL 8086 - Pin Details
Direct Memory Access
Hold acknowledge
Hold
258
INTEL 8086 - Pin Details
Address/Status Bus
Address bits A19 –A16 & Status bits S6
– S3
259
INTEL 8086 - Pin Details
Bus High Enable/S7
Enables most significant data bits D15 – D8 during read or write operation.
S7: Always 1.
BHE#, A0:
0,0: Whole word (16-bits)
0,1: High byte to/from odd address
1,0: Low byte to/from even address
1,1: No selection
260
INTEL 8086 - Pin Details
Min/Max modeMinimum Mode: +5VMaximum Mode: 0V
Minimum Mode Pins
Maximum Mode Pins
261
Minimum Mode- Pin Details
Read Signal
Write Signal
Memory or I/0
Data Bus Enable
Data Transmit/Receive
262
Maximum Mode - Pin Details
Status Signal
Inputs to 8288 to generate eliminated signals due to max
mode.
S2 S1 S0
000: INTA001: read I/O port010: write I/O port011: halt100: code access101: read memory110: write memory111: none -passive
263
Maximum Mode - Pin Details
DMA Request/Grant
Lock Output
Lock OutputUsed to lock peripheralsoff the system
Activated by using theLOCK: prefix on anyinstruction
264
Maximum Mode - Pin Details
Queue StatusUsed by numeric
coprocessor (8087)
QS1 QS000: Queue is idle
01: First byte of opcode
10: Queue is empty
11: Subsequent byte of opcode
265
GNDAD14AD13AD12AD11AD10
AD9AD8AD7AD6AD5AD4AD3AD2AD1AD0NMIINTR
CLKGND
VccAD15A16/S3A17/S4A18/S5A19/S6___BHE/S7 (HIGH)___MN/MX___RD ___ ____HOLD (RQ/GT0)___ ____HLDA (RQ/GT1)___ ______WR (LOCK)__ __IO/M (S2)__ __DT/R (S1)____ __DEN (S0)ALE (QS0)_____INTA (QS1)_____TESTREADYRESET
1 40
INTEL8086
20 21
Minmode operation signals (MN/MX=1)
Maxmode operation signals (MN/MX=0)
Time-multiplexed Address / Data Bus
(bidirectional)
Hardware interrupt
requests (inputs)
2...5MHz, 1/3 duty cycle
(input)
0V=“0”, reference
for all voltages
5V±10%
Time-multiplexed Address Bus
/Status signals(outputs)
Status signals
(outputs)
Operation Mode, (input):
1 = minmode (8088 generates all the needed control signals for a small
system),
0 = maxmode (8288 Bus
Controller expands the status signals to generate more
control signals)
Interrupt acknowledge
(output)
Control Bus
(in,out)
266
Timing Diagram
Basicsonly for understanding
System Timing DiagramsT-State:
— One clock period is referred to as a T-State
T-State
CPU Bus Cycle:— A bus cycle consists of 4 T-States
T1 T2 T3 T4
269
Signal Transition occurs when the clock signal is HIGH
Signal Transition occurs when the clock signal is LOW
Signal Transition occurs from HIGH to LOW on RISING EDGE
AD0-AD15
SYSTEM BUS TIMING
276
Memory Read Timing Diagrams
• Dump address on address bus.• Issue a read ( RD ) and set M/ IO to 1.• Wait for memory access cycle.
277
• Dump address on address bus.• Dump data on data bus.• Issue a write ( WR ) and set M/ IO to 1.
Memory Write Timing Diagrams
278
Bus TimingDuring T 1 :• The address is placed on the Address/Data bus.• Control signals M/ IO , ALE and DT/ R specify memory or I/O, latch the address
onto the address bus and set the direction of data transfer on data bus.During T 2 :• 8086 issues the RD or WR signal, DEN , and, for a write, the data.
• DEN enables the memory or I/O device to receive the data for writes and the 8086 to receive the data for reads.
During T 3 :• This cycle is provided to allow memory to access data.• READY is sampled at the end of T 2 .
• If low, T 3 becomes a wait state.• Otherwise, the data bus is sampled at the end of T 3 .
During T 4 :• All bus signals are deactivated, in preparation for next bus cycle.• Data is sampled for reads, writes occur for writes.
279
Setup & Hold Time
Setup time – The time before the rising edge of the clock, while the data must be valid and constantHold time – The time after the rising edge of the clock during which the data must remain valid and constant
280
WAIT State
• A wait state (Tw) is an extra clocking period, insertedbetween T2 and T3, to lengthen the bus cycle, allowingslower memory and I/O components to respond.
• The READY input is sampled at the end of T2, and again,if necessary in the middle of Tw. If READY is ‘0’ then aTw is inserted.
1 2 3 4 Clock
READY
Tw
281
Basic configurations
282
BASIC CONFIGURATIONS-1.Minimum Mode 2.Maximum Mode– Minimum mode(MN/MX=Vcc)
• Pin #33 (MN/MX) connect to +5V• Pin 24-31 are used as memory and I/O control signal • The control signals are generated internally by the 8086/88 • More cost-efficient
– Maximum mode(MN/MX=GND)• Pin #33 (MN/MX) connect to Ground• Some control signals are generated externally by the 8288
bus controller chip• Max mode is used when math processor is used.
283
1.Minimum Mode
configuration
Minimum Mode 8086 System• 8086 is operated in minimum mode by
MN/MX pin to logic 1 ( Vcc ).• In this mode, all the control signals are given
out by the microprocessor chip itself.
285NOTE: Explain Minimum mode signals also {refer pin diagram}
286
MINIMUM MODE SIGNALS
287
288
Memory READ in Minimum Mode
Memory WRITE in Minimum Mode
2.Maximum Mode
configurationNOTE: Explain Maximum mode signals also {refer pin diagram}
MAXIMUM MODE SIGNALS
292
8288 – BUS CONTROLLER
293
MAXIMUM MODE
294
295
296
MULTIPROCESSOR CONFIGURATIONS
297
Multiprocessor configuration
Coprocessor 8087
298
Multiprocessor configuration• Multiprocessor Systems refer to the use of multiple
processors that executes instructions simultaneouslyand communicate with each other using mail boxes andSemaphores.
• Maximum mode of 8086 is designed to implement 3basic multiprocessor configurations:
1. Coprocessor (8087)2. Closely coupled (8089)3. Loosely coupled (Multibus)
299
• Coprocessors and Closely coupled configurations aresimilar in that both the 8086 and the external processorshares the:
- Memory- I/O system- Bus & bus control logic- Clock generator
300
Co-processor – Intel 8087
8087 instructions are inserted in the 8086 program
8086 and 8087 reads instruction bytes and puts them in the respective queues
NOP
8087 instructions have 11011 as the MSB of their first code byte
301
Coprocessor / Closely Coupled Configuration
302
TEST pin of 8086• Used in conjunction with the WAIT instruction in
multiprocessing environments.
• This is input from the 8087 coprocessor.
• During execution of a wait instruction, the CPU checks thissignal.
• If it is low, execution of the signal will continue; if not, itwill stop executing.
303
1.Coprocessor Execution ExampleCoprocessor cannot take control of the bus, it does everything through the CPU
304
2.Closely Coupled Execution Example
• Closely Coupled processor may take control of the bus independently.
• Two 8086’s cannot be closely coupled.
305
3.Loosely Coupled Configuration
• has shared system bus, system memory, and systemI/O.
• each processor has its own clock as well as its ownmemory (in addition to access to the system resources).
• Used for medium to large multiprocessor systems.
• Each module is capable of being the bus master.
• Any module could be a processor capable of being a busmaster, a coprocessor configuration or a closely coupledconfiguration.
306
307
Loosely Coupled Configuration• No direct connections between the modules.
• Each share the system bus and communicate throughshared resources.
• Processor in their separate modules can simultaneouslyaccess their private subsystems through their localbusses, and perform their local data references andinstruction fetches independently. This results inimproved degree of concurrent processing.
• Excellent for real time applications, as separate modulescan be assigned specialized tasks
308
BUS ALLOCATION SCHEMES:Three bus allocation schemes:1. Daisy Chaining2. Pooling3. Independent
1. Daisy Chaining:- Need a bus controller to monitor bus busy and bus request
signals- Sends a bus grant to a Master >> each Master either keeps the
service or passes it on- Controller synchronizes the clocks- Master releases the Bus Busy signal when finished
Daisy Chaining:
Independent
Advantages of Multiprocessor Configuration
1. High system throughput can be achieved by having more thanone CPU.
2. The system can be expanded in modular form.Each bus master module is an independent unit and normally resides ona separate PC board. One can be added or removed without affecting theothers in the system.
3. A failure in one module normally does not affect the breakdownof the entire system and the faulty module can be easilydetected and replaced
4. Each bus master has its own local bus to access dedicatedmemory or IO devices. So a greater degree of parallel processingcan be achieved.
313
INTRODUCTION TO ADVANCED PROCESSORS
314
Intel family of microprocessor, bus and memory sizes
Microprocessor
Data bus width
Address bus width
Memory size
80186 16 20 1M
80286 16 24 16M
80386 DX 32 32 4G80486 32 32 4G
Pentium 4 & core 2
64 40 1T
315Presented by C.GOKUL,AP/EEE , Velalar College of Engg & Tech, Erode
80186
316
80286
317
80386
318
UNIT-3I/O
INTERFACING
319
Presented byC.GOKUL,AP/EEE
Velalar College of Engg & Tech , Erode
DEPARTMENTS: CSE,IT {semester 04}ECE {semester 05}
Regulation : 2013
UNIT 3 Syllabus• Memory Interfacing & I/O interfacing• Parallel communication interface {8255 PPI}• Serial communication interface {8251 USART}• D/A and A/D Interface {ADC 0800/0809,DAC 0800}• Timer {or counter} – {8253/8254 Timer}• Keyboard /display controller {8279}• Interrupt controller {8259}• DMA controller {8237/8257}• Programming and applications Case studies
1.Traffic Light control 2.LED display 3.LCD display 4.Keyboard display interface 5.Alarm Controller
320
Data Transfers Synchronous ----- Usually occur when
peripherals are located within the same computer as the CPU. Close proximity allows all state bits change at same time on a common clock.
Asynchronous ----- Do not require that the source and destination use the same system clock.
321
MEMORY DEVICES I/O DEVICESPresented by C.GOKUL,AP/EEE , Velalar College of Engg & Tech, Erode
322
interface memory (RAM, ROM, EPROM'...) or I/O devices to 8086 microprocessor. Several memory chips or I/O devices can connected to a microprocessor. An address decoding circuit is used to select the required I/O device or a memory chip.
323
IO mapped IO V/s Memory Mapped IO
Memory Mapped IO
IO is treated as memory. 16-bit addressing. More Decoder Hardware. Can address 216=64k
locations. Less memory is available.
IO Mapped IO
IO is treated IO. 8- bit addressing. Less Decoder
Hardware. Can address 28=256
locations. Whole memory address
space is available.
324
Memory Mapped IO
• Memory Instructions are used.
• Memory control signals are used.
• Arithmetic and logic operations can be performed on data.
• Data transfer b/w register and IO.
IO Mapped IO
• Special Instructions are used like IN, OUT.
• Special control signals are used.
• Arithmetic and logic operations can not be performed on data.
• Data transfer b/w accumulator and IO.
325
Parallel communication interface
INTEL 8255
Presented by C.GOKUL,AP/EEE , Velalar College of Engg & Tech, Erode
326
8255 PPI• The 8255 chip is also called as Programmable
Peripheral Interface. • The Intel’s 8255 is designed for use with Intel’s
8-bit, 16-bit and higher capability microprocessors
• The 8255 is a 40 pin integrated circuit (IC), designed to perform a variety of interface functions in a computer environment.
• It is flexible and economical.
327
PIN DIAGRAM OF 8255328
Signals of 8085329
8255 PIO/PPI It has 24 input/output lines which may be
individually programmed. 2 groups of I/O pins are named as
Group A (Port-A & Port C Upper)Group B (Port-B & Port C Lower)
3 ports(each port has 8 bit)Port A lines are identified by symbols PA0-PA7
Port B lines are identified by symbols PB0-PB7
Port C lines are identified by PC0-PC7 , PC3-PC0ie: PORT C UPPER(PC7-PC4) , PORT C LOWER(PC3-PC0)
330
D0 - D7: data input/output lines for the device. All information read from and written to the 8255 occurs via these 8 data lines.
CS (Chip Select). If this line is a logical 0, the microprocessor can read and write to the 8255.
RESET : The 8255 is placed into its reset state if this input line is a logical 1
331
• RD : This is the input line driven by the microprocessor and should be low to indicate read operation to 8255.
• WR : This is an input line driven by the microprocessor. A low on this line indicates write operation.
• A1-A0 : These are the address input lines and are driven by the microprocessor.
332
Control Logic CS signal is the master Chip Select A0 and A1 specify one of the two I/O Ports
CS A1 A0 Selected0 0 0 Port A0 0 1 Port B0 1 0 Port C0 1 1 Control
Register1 X X 8255 is not
selected
333
Block Diagram of 8255A 334
Block Diagram of 8255 (Architecture)
It has a 40 pins of 4 parts.1. Data bus buffer2. Read/Write control logic3. Group A and Group B controls4. Port A, B and C
335
1. Data bus buffer This is a tristate bidirectional buffer used
to interface the 8255 to system data bus. Data is transmitted or received by the buffer on execution of input or output instruction by the CPU.
336
2. Read/Write control logic This unit accepts control signals ( RD, WR ) and
also inputs from address bus and issues commands to individual group of control blocks ( Group A, Group B).
It has the following pins.
CS , RD , WR , RESET , A1 , A0
337
3. Group A and Group B controls• These block receive control from the CPU
and issues commands to their respective ports.Group A - PA and PCU ( PC7 –PC4)Group B – PB and PCL ( PC3 –PC0)
a) Port A: This has an 8 bit latched/buffered O/P and 8 bit input latch. It can be programmed in 3 modes – mode 0, mode 1, mode 2.
338
b) Port B: It can be programmed in mode 0, mode1
c) Port C : It can be programmed in mode 0
339
340
Modes of Operation of 8255
Bit Set/Reset(BSR) Mode Set/Reset bits in Port C
I/O Mode Mode 0 (Simple input/output) Mode 1 (Handshake mode) Mode 2 (Bidirectional Data Transfer)
341
1. BSR Mode342
B3 B2 B1 Bit/pin of port C selected
0 0 0 PC0
0 0 1 PC1
0 1 0 PC2
0 1 1 PC3
1 0 0 PC4
1 0 1 PC5
1 1 0 PC6
1 1 1 PC7
Concerned only with the 8-bits of Port C.Set or Reset by control wordPorts A and B are not affected
343
a) Mode 0 (Simple Input or Output):
• Ports A and B are used as Simple I/O Ports
• Port C as two 4-bit ports
• Features– Outputs are latched– Inputs are not latched– Ports do not have handshake or
interrupt capability
2. I/O MODE 344
345
b) Mode 1: (Input or Output with Handshake)
• Handshake signals are exchanged between MPU & Peripherals
• Features– Ports A and B are used as Simple I/O Ports– Each port uses 3 lines from Port C as
handshake signals– Input & Output data are latched– interrupt logic supported
346
c) Mode 2: Bidirectional Data Transfer
• Used primarily in applications such as data transfer between two computers
• Features– Ports A can be configured as the bidirectional
Port– Port B in Mode 0 or Mode 1.– Port A uses 5 Signals from Port C as handshake
signals for data transfer– Remaining 3 Signals from Port C Used as –
Simple I/O or handshake for Port B
347
Find control word(1) Port A: output with handshake (2) Port B: input with handshake (3) Port CL: output (4)Port CU: input
Solution:
1 0 1 0 1 1 1 0 = AEH
348
Port A: Output, Port B: Output, Port CU: Output, Port CL: Output
Solution:
1 0 0 0 0 0 0 0 = 80H
The control word register for the above ports of Intel 8255 is 80H.
349
Port A: Input, Port B: Input, Port CU: Input, Port CL: Input
Solution:
1 0 0 1 1 0 1 1 = 9BH
The control word register for the above ports of intel 8255 is 9BH.
350
Basics of serial communication1. Transmitter:- A parallel-in, serial-out shift register
2. Receiver:- A serial-in, parallel-out shift register.
-351
Parallel Transfer
TRANSMITTER
Receiver
352
Serial communicationinterface
INTEL 8251 USART
353
UNIVERSAL SYNCHRONOUS ASYNCHRONOUS RECEIVER
TRANSMITTER (USART) Programmable chip designed for
synchronous and asynchronous serial data transmission
28 pin DIP Coverts the parallel data into a serial stream
of bits suitable for serial transmission. Receives a serial stream of bits and convert
it into parallel data bytes to be read by a microprocessor.
354
355
BLOCK DIAGRAM 356
Five Sections– Read/Write Control Logic
• Interfaces the chip with MPU• Determine the functions according to the control word • Monitors data flow
– Transmitter• Converts parallel word received from MPU into serial bits• Transmits serial bits over TXD line to a peripheral.
– Receiver• Receives serial bits from peripheral• Converts serial bits into parallel word• Transfers the parallel word to the MPU
– Data Bus Buffer- 8 bit Bidirectional bus.– Modem Controller
• Used to establish data communication modems over telephone line
357
Input Signals
CS – Chip Select When this signal goes low, 8251 is selected by
MPU for communication C/D – Control/Data
When this signal is high, the control registeror status register is addressed
When it is low, the data buffer is addressed Control and Status register is differentiated by
WR and RD signals, respectively
358
• WR – Write– writes in the control register or sends outputs to the
data buffer.– This connected to IOW or MEMW
• RD – Read– Either reads a status from status register or accepts
data from the data buffer– This is connected to either IOR or MEMR
• RESET - Reset• CLK - Clock
– Connected to system clock– Necessary for communication with microprocessor.
359
CS C/D RD WR Function0 1 1 0 MPU writes instruction in the
control register0 1 0 1 MPU reads status from the status
register 0 0 1 0 MPU outputs the data to the Data
Buffer0 0 0 1 MPU accepts data from the Data
Buffer1 X X X USART is not Selected
360
• Control Register– 16-bit register– This register can be accessed an output port
when the C/D pin is high
• Status Register– Checks ready status of a peripheral
• Data Buffer
361
Transmitter Section
Accepts parallel data and converts it into serial data
Two registers Buffer Register
To hold eight bits
Output Register Converts eight bits into a stream of serial bits
Transmits data on TxD pin with appropriate framing bits(Start and Stop)
362
Signals Associated with Transmitter Section
• TxD – Transmit Data– Serial bits are transmitted on this line
• TxC – Transmitter Clock– Controls the rate at which bits are transmitted
• TxRDY – Transmitter Ready– Can be used either to interrupt the MPU or
indicate the status• TxE – Transmitter Empty
– Logic 1 on this line indicate that the output register is empty
363
Receiver Section
Accepts serial data from peripheral and converts it into parallel data
The section has two registers Input Register Buffer Register
364
Signals Associated with Receiver Section
RxD – Receive Data Bits are received serially on this line and
converted into parallel byte in the receiver input
RxC – Receiver Clock RxRDY – Receiver Ready
It goes high when the USART has a character in the buffer register and is ready to transfer it to the MPU
365
Signals Associated with Modem Control
• DSR- Data Set Ready– Normally used to check if the Data Set is ready when
communicating with a modem• DTR – Data Terminal Ready
– device is ready to accept data when the 8251 is communicating with a modem.
• RTS – Request to send Data– the receiver is ready to receive a data byte from
modem• CTS – Clear to Send
366
Control words367
368
369
370
371
Interfacing of 8255(PPI) with 8085 processor: 372
373
11-374
Programming 8251 8251 mode register
7 6 5 4 3 2 1 0 Mode register
Number of Stop bits
00: invalid01: 1 bit10: 1.5 bits11: 2 bits
Parity0: odd1: even
Parity enable0: disable1: enable
Character length00: 5 bits01: 6 bits10: 7 bits11: 8 bits
Baud Rate00: Syn. Mode01: x1 clock10: x16 clock11: x64 clock
11-375
8251 command register
EH IR RTS ER SBRK RxE DTR TxE command register
TxE: transmit enableDTR: data terminal ready, DTR pin will be lowRxE: receiver enableSBPRK: send break character, TxD pin will be lowER: error resetRTS: request to send, CTS pin will be lowIR: internal resetEH: enter hunt mode (1=enable search for SYN character)
11-376
8251 status register
DSR SYNDET FE OE PE TxEMPTY RxRDY TxRDY status register
TxRDY: transmit readyRxRDY: receiver readyTxEMPTY: transmitter emptyPE: parity errorOE: overrun errorFE: framing errorSYNDET: sync. character detectedDSR: data set ready
377
The analog to digital converter chips 0808and 0809 are 8-bit CMOS,successive approximation converters.
Successive approximation technique is one of the fast techniques for analog to digital conversion. The conversion delay is 100 µsat a clock frequency of 640 kHz.
378
379
380
381
382
383
The digital to analog converters convert binary numbers into their analog equivalent voltages or currents. Techniques are employed for digital to analog conversion.
i. Weighted resistor network ii. R-2R ladder network iii. Current output D/A converter
384
The DAC find applications in areas like digitally controlled gains, motor speed control, programmable gain amplifiers, digital voltmeters, panel meters, etc.
In a compact disk audio player for example a 14 or16-bit D/A converter is used to convert the binary data read off the disk by a laser to an analog audio signal.
Characteristics :1. Resolution: It is a change in analog output for one LSB change in digital input.It is given by(1/2^n )*Vref. If n=8 (i.e.8-bit DAC)
1/256*5V=39.06mV2. Settling time: It is the time required for the DAC to settle for a full scale code change.
385
DAC 0800 8-bit Digital to Analog converter
Features: i. DAC0800 is a monolithic 8-bit DAC manufactured by
National semiconductor. ii. It has settling time around 100ms iii. It can operate on a range of power supply voltage i.e.
from 4.5V to +18V. Usually the supply V+ is 5V or +12V. The V- pin can be kept at a minimum of -12V.
iv. Resolution of the DAC is 39.06mV
386
387
388
TIMER/COUNTER
389
390
RD: read signal WR: write signal CS: chip select signal A0, A1: address lines Clock :This is the clock input for the counter.
The counter is 16 bits. Out :This single output line is the signal that
is the final programmed output of the device. Gate :This input can act as a gate for the
clock input line, or it can act as a start pulse,
391
392
393
8254 Programming
11-394
8254 ModesGate is low the count will be paused
Gate is highWill continuecounting
Mode 0: An events counter enabled with G.
Mode 1: One-shot mode. s
Gate isHigh outputwill be high
Counter will be reloadedAfter gate high.
395
Mode 2: Counter generates a series of pulses 1 clock pulse wide
Mode 3: Generates a continuous square-wave with G set to 1
cycle is repeated untilreprogrammed or G pin set to 0
If count is even, 50% duty cycleotherwise OUT is high 1 cycle longer
396
Mode 4: Software triggered one-shot.
Mode 5: Hardware triggered one-shot. G controls similar to Mode 1.
In the last countingWill be stop(not repeated)
In the last countOut will be low
397
Keyboard/Display Controller
INTEL 8279
398
The INTEL 8279 is specially developed for interfacing keyboard and display devices to 8085/8086 microprocessor based system
399
Simultaneous keyboard and display operations
Scanned keyboard mode Scanned sensor mode 8-character keyboard FIFO 1 6-character display
400
401
Keyboard section Display section Scan section CPU interface section
402
403
404
The keyboard section consists of 8 return lines RL0 - RL7 that can be used to form the columns of a keyboard matrix.
It has two additional input : shift and control/strobe. The keys are automatically debounced.
The two operating modes of keyboard section are 2-key lockout and N-key rollover.
405
In the 2-key lockout mode, if two keys are pressed simultaneously, only the first key is recognized.
In the N-key rollover mode simultaneous keys are recognized and their codes are stored in FIFO.
The keyboard section also have an 8 x 8 FIFO (First In First Out) RAM.
The FIFO can store eight key codes in the scan keyboard mode. The status of the shift key and control key are also stored along with key code. The 8279 generate an interrupt signal (IRQ)when there is an entry in FIFO.
406
The display section has eight output lines divided into two groups A0-A3 and B0-B3.
The output lines can be used either as a single group of eight lines or as two groups of four lines, in conjunction with the scan lines for a multiplexed display.
The output lines are connected to the anodes through driver transistor in case of common cathode 7-segment LEDs.
407
The cathodes are connected to scan lines through driver transistors.
The display can be blanked by BD (low) line.
The display section consists of 16 x 8 display RAM. The CPU can read from or write into any location of the display RAM.
408
The scan section has a scan counter and four scan lines, SL0 to SL3.
In decoded scan mode, the output of scan lines will be similar to a 2-to-4 decoder.
In encoded scan mode, the output of scan lines will be binary count, and so an external decoder should be used to convert the binary count to decoded output.
The scan lines are common for keyboard and display.
409
The CPU interface section takes care of data transfer between 8279 and the processor.
This section has eight bidirectional data lines DB0 to DB7 for data transfer between 8279 and CPU.
It requires two internal address A =0 for selecting data buffer and A = 1 for selecting control register of8279.
410
The control signals WR (low), RD (low), CS (low) and A0 are used for read/write to 8279.
It has an interrupt request line IRQ, for interrupt driven data transfer with processor.
The 8279 require an internal clock frequency of 100 kHz. This can be obtained by dividing the input clock by an internal prescaler.
411
All the command words or status words are written orread with A0 = 1 and CS = 0 to or from 8279.
a) Keyboard Display Mode Set : The format of the command word to select different modes of operation of 8279 is given below with its bit definitions.
D7 D6 D5 D4 D3 D2 D1 D0
0 0 0 D D K K K
412
SENSOR MATRIX
SENSOR MATRIX
413
B) Programmable clock :
The clock for operation of 8279 is obtained by dividing the external clock input signal by a programmable constant called prescaler. PPPPP is a 5-bit binary constant. The input frequency is divided by a decimal constant ranging from 2 to 31, decided by the bits of an internal prescaler, PPPPP.
D7 D6 D5 D4 D3 D2 D1 D0
0 0 1 P P P P P
414
c) Read FIFO / Sensor RAM : The format of this command is given below.
AI – Auto Increment FlagAAA – Address pointer to 8 bit FIFO RAM
X- Don’t careThis word is written to set up 8279 for reading FIFO/ sensor RAM. In scanned keyboard mode, AI and AAA bits are of no use. The 8279 will automatically drive data bus for each subsequent read, in the same sequence, in which the data was entered.In sensor matrix mode, the bits AAA select one of the 8 rows of RAM. If AI flag is set, each successive read will be from the subsequent RAM location.
D7 D6 D5 D4 D3 D2 D1 D0
0 1 0 AI X A A A
415
d) Read Display RAM : This command enables a programmer to read the display RAM data.
The CPU writes this command word to 8279 to prepare it for display RAM read operation. AI is auto increment flag and AAAA, the 4-bit address points to the 16-byte display RAM that is to be read.If AI=1, the address will be automatically, incremented after each read or write to the Display RAM. The same address counter is used for reading and writing.
D7 D6 D5 D4 D3 D2 D1 D0
0 1 1 AI A A A A
416
d) Write Display RAM : This command enables a programmer to write the display RAM data.
AI – Auto increment Flag.AAAA – 4 bit address for 16-bit display RAM to be
written.e) Display Write Inhibit/Blanking :
D7 D6 D5 D4 D3 D2 D1 D0
1 0 0 AI A A A A
D7 D6 D5 D4 D3 D2 D1 D0
1 0 1 X IW IW BL BL
IW - inhibit write flag BL - blank display bit flags
417
g) Clear Display RAM :
ENABLES CLEAR DISPLAY WHEN CD2=1
• CD2 must be 1 for enabling the clear display command.• If CD2 = 0, the clear display command is invoked by setting CA(CLEAR ALL) =1 and maintaining CD1, CD0 bits exactly same as above. • If CF(CLEAR FIFO RAM STATUS) =1, FIFO status is cleared and IRQ line is pulled down and the sensor RAM pointer is set to row 0. •If CA=1, this combines the effect of CD and CF bits.
D7 D6 D5 D4 D3 D2 D1 D0
1 1 0 CD2 CD1 CD0 CF CA
CD2 CD1 CD0
0X - All zeros ( x don’t care ) AB=0010 - A3-A0 =2 (0010) and B3-B0=00 (0000)11 - All ones (AB =FF), i.e. clear RAM
418
h) End Interrupt / Error mode Set :
E- Error modeX- don’t care
For the sensor matrix mode, this command lowers the IRQ line and enables further writing into the RAM. Otherwise, if a change in sensor value is detected, IRQ goes high that inhibits writing in the sensor RAM. For N-Key roll over mode, if the E bit is programmed to be ‘1’, the 8279 operates in special Error mode
D7 D6 D5 D4 D3 D2 D1 D0
1 1 1 E X X X 1
419
INTERRUPT CONTROLLER
420
1. This IC is designed to simplify the implementation of the interrupt interface in the 8088
and 8086 based microcomputer systems.
2. This device is known as a ‘Programmable Interrupt Controller’ or PIC.3. It is manufactured using the NMOS technology and It is available in 28-pin DIP.4. The operation of the PIC is programmable under software control (Programmable)and it
can be configured for a wide variety of applications.
5. 8259A is treated as peripheral in a microcomputer system.
6. 8259A PIC adds eight vectored priority encoded interrupts to the microprocessor.
7. This controller can be expanded without additional hardware to accept up to 64
interrupt request inputs. This expansion required a master 8259A and eight 8259A
slaves.
8. Some of its programmable features are:
· The ability to accept level-triggered or edge-triggered inputs.
· The ability to be easily cascaded to expand from 8 to 64 interrupt-inputs.
· Its ability to be configured to implement a wide variety of priority schemes.
8259 Programmable Interrupt Controller (PIC)
8259A PIC- PIN DIGRAM
8259
ASSINGMENT OF SIGNALS FOR 8259: 1. D7- D0 is connected to microprocessor data bus D7-D0 (AD7-AD0).2. IR7- IR0, Interrupt Request inputs are used to request an interrupt and to connect to a slave
in a system with multiple 8259As.3. WR - the write input connects to write strobe signal of microprocessor.4. RD - the read input connects to the IORC signal.5. INT - the interrupt output connects to the INTR pin on the microprocessor from the master,
and is connected to a master IR pin on a slave.6. INTA - the interrupt acknowledge is an input that connects to the INTA signal on the system.
In a system with a master and slaves, only the master INTA signal is connected.7. A0 - this address input selects different command words within the 8259A.8. CS - chip select enables the 8259A for programming and control.9. SP/EN - Slave Program/Enable Buffer is a dual-function pin.
When the 8259A is in buffered mode, this pin is anoutput that controls the data bus transceivers in alarge microprocessor-based system.
When the 8259A is not in buffered mode, this pinprograms the device as a master (1) or a slave (0).
CAS2-CAS0, the cascade lines are used as outputs fromthe master to the slaves for cascading multiple8259As in a system.
8259A PIC- BLOCK DIAGRAM
The 82C59A accepts two types of command words generated by theCPU:1. Initialization Command Words (ICWs):
Before normal operation can begin, each 82C59A in thesystem must be brought to a starting point - by a sequence of 2 to4 bytes timed by WR pulses.
2. Operational Command Words (OCWs):These are the command words which command the 82C59A
to operate in various interrupt modes. Among these modes are:a. Fully nested mode.b. Rotating priority mode.c. Special mask mode.d. Polled mode.
The OCWs can be written into the 82C59A anytime afterinitialization.
Programming the 8259A: -
To program this ICW for 8086 we place a logic 1 in bit IC4.
Bits D7, D6 , D5and D2 are don’t care for microprocessor operation and only
apply to the 8259A when used with an 8-bit 8085 microprocessor.
This ICW selects single or cascade operation by programming the SNGL bit. If
cascade operation is selected, we must also program ICW3.
The LTIM bit determines whether the interrupt request inputs are positive edge
triggered or level-triggered.
ICW1:
Selects the vector number used with the interrupt request inputs.
For example, if we decide to program the 8259A so that it functions at vector
locations 08H-0FH, we place a 08H into this command word.
Likewise, if we decide to program the 8259A for vectors 70H-77H, we place a
70H in this ICW.
ICW2:
Is used only when ICW1 indicates that the system is operated in cascade mode.
This ICW indicates where the slave is connected to the master.
For example, if we connected a slave to IR2, then to program ICW3 for this
connection, in both master and slave, we place a 04H in ICW3.
Suppose we have two slaves connected to a master using IR0 and IR1. The
master is programmed with an ICW3 of 03H; one slave is programmed with an
ICW3 of 01H and the other with an ICW3 of 02H.
ICW3:
Is programmed for use with the 8088/8086. This ICWis not programmed in a system that functions with the8085 microprocessors.
The rightmost bit must be logic 1 to select operationwith the 8086 microprocessor, and the remaining bitsare programmed as follows:
ICW4:
Is used to set and read the interrupt mask register.
When a mask bit is set, it will turn off (mask) the corresponding
interrupt input. The mask register is read when OCW1 is read.
Because the state of the mask bits is known when the 8259A is
first initialized, OCW1 must be programmed after programming
the ICW upon initialization.
Operation Command Words
OCW1:
Is programmed only when the AEOI mod is not selected for the 8259A.
In this case, this OCW selects how the 8259A responds to an interrupt.
The modes are listed as follows in next slide:
OCW2:
Selects the register to be read, the operation of the special mask register, and
the poll command.
If polling is selected, the P-bit must be set and then output to the 8259A. The
next read operation would read the poll word. The rightmost three bits of the
poll word indicate the active interrupt request with the highest priority.
The leftmost bit indicates whether there is an interrupt, and must be checked
to determine whether the rightmost three bits contain valid information.
OCW3:
8237DMA CONTROLLER
453
Introduction: Direct Memory Access (DMA) is a method of allowing data
to be moved from one location to another in a computerwithout intervention from the central processor (CPU).
It is also a fast way of transferring data within (andsometimes between) computer.
The DMA I/O technique provides direct access to thememory while the microprocessor is temporarily disabled.
The DMA controller temporarily borrows the address bus,data bus and control bus from the microprocessor andtransfers the data directly from the external devices to aseries of memory locations (and vice versa).
454
The 8237 DMA controller• Supplies memory and I/O with control signals and addresses during DMA
transfer• 4-channels (expandable)
– 0: DRAM refresh– 1: Free– 2: Floppy disk controller– 3: Free
• 1.6MByte/sec transfer rate• 64 KByte section of memory address capability with single programming• “fly-by” controller (data does not pass through the DMA-only memory to I/O
transfer capability)• Initialization involves writing into each channel:
• i) The address of the first byte of the block of data that must be transferred (called the base address).
• ii) The number of bytes to be transferred (called the word count).
455
8237 pins• CLK: System clock• CS΄: Chip select (decoder output)• RESET: Clears registers, sets mask register• READY: 0 for inserting wait states• HLDA: Signals that the μp has relinquished buses• DREQ3 – DREQ0: DMA request input for each channel• DB7-DB0: Data bus pins• IOR΄: Bidirectional pin used during programming and during a DMA write cycle• IOW΄: Bidirectional pin used during programming and during a DMA read cycle• EOP΄: End of process is a bidirectional signal used as input to terminate a DMA process or
as output to signal the end of the DMA transfer• A3-A0: Address pins for selecting internal registers• A7-A4: Outputs that provide part of the DMA transfer address• HRQ: DMA request output• DACK3-DACK0: DMA acknowledge for each channel.• AEN: Address enable signal• ADSTB: Address strobe• MEMR΄: Memory read output used in DMA read cycle• MEMW΄: Memory write output used in DMA write cycle
456
8237 block diagram
457
Block Diagram Description
It containing Five main Blocks.1. Data bus buffer2. Read/Control logic3. Control logic block4. Priority resolver5. DMA channels.
458
DATA BUS BUFFER: It contain tristate ,8 bit bi-directional buffer. Slave mode ,it transfer data between
microprocessor and internal data bus. Master mode ,the outputs A8-A15 bits of
memory address on data lines (Unidirectional).
READ/CONTROL LOGIC: It control all internal Read/Write operation. Slave mode ,it accepts address bits and control
signal from microprocessor. Master mode ,it generate address bits and control
signal.459
Control logic block It contains ,1. Control logic2. Mode set register and 3. Status Register.
CONTROL LOGIC: Master mode ,It control the sequence of DMA
operation during all DMA cycles. It generates address and control signals. It increments 16 bit address and decrement 14 bit
counter registers. It activate a HRQ signal on DMA channel Request. Slave ,mode it is disabled.
460
DMA controller details
461
Programming and applications Case
studies1.Traffic Light control
2.LED display 3.LCD display
4.Keyboard display interface 5.Alarm Controller462
1. TRAFFIC LIGHT
CONTROL463
Traffic lights, which may also be known as stoplights, traffic lamps, traffic signals, signal lights, robots or semaphore, are signaling devices positioned at road intersections, pedestrian crossings and other locations to control competing flows of traffic.
INTERFACING TRAFFIC LIGHT WITH 8086The Traffic light controller section consists of 12 Nos.
point led’s arranged by 4Lanes in Traffic light interface card. Each lane has Go(Green), Listen(Yellow) and Stop(Red) LED is being placed.
464
LAN Direction 8086 LINES MODULES
465
CIRCUIT DIAGRAM TO INTERFACE TRAFFIC LIGHT WITH 8086
466
8086 ALP:1100: START: MOV BX, 1200H
MOV CX, 0008HMOV AL,[BX]MOV DX, CONTROL PORTOUT DX, ALINC BX
NEXT: MOV AL,[BX]MOV DX, PORT AOUT DX,ALCALL DELAYINC BXLOOP NEXTJMP START
DELAY: PUSH CXMOV CX,0005H
REPEAT: MOV DX,0FFFFHLOOP2: DEC DX
JNZ LOOP2LOOP REPEATPOP CXRET
467
Lookup Table 1200 80H
1201 21H,09H,10H,00H (SOUTH WAY) 1205 0CH,09H,80H,00H (EAST WAY) 1209 64H,08H,00H,04H (NOURTH WAY) 120D 24H,03H,02H,00H (WEST WAY) 1211 END
468
2. LED DISPLAY
469
Light Emitting Diodes (LED) is the most commonly used components, usually for displaying pins digital states. Typical uses of LEDs include alarm devices, timers and confirmation of user input such as a mouse click or keystroke.
INTERFACING LEDAnode is connected through a resistor to GND & the
Cathode is connected to the Microprocessor pin. So when the Port Pin is HIGH the LED is OFF & when the Port Pin is LOW the LED is turned ON.
470
PIN ASSIGNMENT WITH 8086
471
INTERFACE LED WITH 8255
472
8086 ALP LED interface1100: START: MOV AL, 80
MOV DX, FF36 OUT DX, AL
BEGIN: MOV AL, 00MOV DX, FF30OUT DX, ALCALL DELAYMOV AL, FFOUT DX, ALCALL DELAYJMP BEGIN
DELAY: MOV CX, FFFFPO: DEC CX
JNE PORET
473
3. LCD DISPLAY
474
475
HARDWARE CONFIGURATION OF LCD WITH 8051/8086/8085
476
LCD INTERFACING WITH 8086 TRAINER KIT
GPIO- I (8255) J1 Connector PORTS ADDRESS
Control port FF26PORT A FF20PORT B FF22PORT C FF24
GPIO- I (8255) J4 Connector PORTS ADDRESS
Control port FF36PORT A FF30PORT B FF32PORT C FF34
477
478
LCD INTERFACING WITH 8051 TRAINER KIT GPIO- I (8255) J1 Connector
PORTS ADDRESSControl port 4003PORT A 4000PORT B 4001PORT C 4002
Used in UNIT 5 also
479
480
4. Keyboard display interface
481
HARDWARE DESCRIPTION OF 8279 INTERFACE CARDKeyboard and display is configured in the encoded mode.
In the encoded mode, a binary count sequence is put on the scan lines SL0-SL3.These lines must be externally decoded to provide the scan lines for keyboard and display. A 3 to 8 decoder 74LS138 is provided for this purpose. The S0-S1 output lines of this decoder are connected to the two rows of the keyboard. And QA0 to QA7 is connected to 7 Segment Display
482
PIN DIAGRAM OF 8279 PIN DIAGRAMOF 74LS138
Presented by C.GOKUL,AP/EEE , Velalar College of Engg & Tech, Erode
483
484
485
MVI A, 00H Initialize keyboard/display in encodedOUT 81H scan keyboard 2 key lockout modeMVI A, 34H
OUT 81H Initialize prescaler countMVI A, 0BH Load mask pattern to enable RST 7.5SIM mask other interruptsEI Enable Interrupt
HERE: JMP HERE Wait for the interruptInterrupt service routine
MVI A, 40H Initialize 8279 in read FIFO RAM modeOUT 81H
IN 80H Get keycodeMVI H, 62H Initialize memory pointer to pointMOV L, A 7-Segment codeMVI A, 80H : Initialize 8279 in write display RAM modeOUT 81H
MOV A, M : Get the 7 segment codeOUT 80H : Write 7-segment code in display RAMEI : Enable interruptRET : Return to main program
486
5. ALARM CONTROLLER
Relevant MaterialNot exact
487
488
GPIO- I J1 Connecter PORTS ADDRESS
Control port FF26PORT A FF20PORT B FF22PORT C FF24
GPIO- II J1 Connecter PORTS ADDRESS
Control port FF36PORT A FF30PORT B FF32PORT C FF34
489
BasicsMicroprocessor &Microcontroller
490
What is Microcontroller?
Micro Controller
491
Very Small A mechanism that controls the operation of a machine
CPU for Computers No RAM, ROM, I/O on CPU chip itself Example: Intel's x86, Motorola’s 680x0
492
A smaller computer On-chip RAM, ROM, I/O ports... Example: Motorola’s 6811, Intel’s 8051, Zilog’s
Z8 and PIC
493
494
Microprocessor
CPU is stand-alone, RAM, ROM, I/O, timer are separate
Designer can decide on the amount of ROM, RAM and I/O ports.
Expansive
General-purpose
Microcontroller
CPU, RAM, ROM, I/O and timer are all on a single chip
Fix amount of on-chip ROM, RAM, I/O ports
For applications in which cost, power and space are critical
Not Expansive
Single-purpose
495
Home Appliances, intercom, telephones, security systems, garage door
openers, answering machines, fax machines, home computers,TVs, cable TV tuner, VCR, camcorder, remote controls, videogames, cellular phones, musical instruments, sewing machines,lighting control, paging, camera, pinball machines, toys, exerciseequipment etc.
Office Telephones, computers, security systems, fax machines,
microwave, copier, laser printer, color printer, paging etc.
Auto Trip computer, engine control, air bag, ABS, instrumentation,
security system, transmission control, entertainment, climatecontrol, cellular phone, keyless entry
496
497
498
Presented byC.GOKUL,AP/EEE
Velalar College of Engg & Tech , Erode
DEPARTMENTS: CSE,IT {semester 04}ECE {semester 05}
Regulation : 2013
UNIT 4 Syllabus
• Architecture of 8051• Special Function Registers(SFRs)• I/O Pins Ports and Circuits {Pin Diagram}• Instruction set• Addressing modes • Assembly language programming
499
The 8051 is a subset of the 8052 The 8031 is a ROM-less 8051
Add external ROM to it You lose two ports, and leave only 2 ports for I/O
operations
500
501
Intel introduced 8051, developed in the year1981.
The 8051 is an 8-bit controller. D0-D7 DATA LINES A0-A15 ADDRESS LINES
502
InterruptControl
8bitCPU
4KROM
256 BRAM
OSCBus
Control 4 I/O Ports SerialPort
Timer 1
Timer 0
General Block Diagram of 8051
TXD RXDP0 P1 P2 P3
503
External Interrupts
CounterInputs
8 bit CPU On-chip clock oscillator 4K bytes of on-chip Program Memory-ROM 128 bytes of on-chip Data RAM 64KB Program Memory address space 64KB Data Memory address space 32 bidirectional I/0 lines (Port 0,1,2,3)
Port 0 { P0.0-P0.7 } – 8 pinsPort 1 { P1.0-P1.7 } – 8 pinsPort 2 { P2.0-P2.7 } – 8 pinsPort 3 { P3.0-P3.7 } – 8 pins
504
Two 16-bit timer/counters(Timer 1,Timer 0) One serial port
UART(Universal Asynchronous Receiver Transmitter) 6-source interrupt structure
1. External interrupt INT02. Timer interrupt T03. External interrupt INT14. Timer interrupt T15. Serial communication interrupt6. Timer Interrupt T2
4 Register Banks (Bank 0, Bank 1, Bank 2, Bank 3) each bank has R0-R7 registers
505
Pin Description of the 8051
orIO Port structure
506
507
EA/VPP
• EA, “external access’’
• EA = 0, 8051 microcontroller access fromexternal program memory (ROM) only.
• EA = 1, then it access internal and externalprogram memories (ROMS).
508
I/O Port Pins
• The four 8-bit I/O ports
Port 0 { P0.0-P0.7 } – 8 pinsPort 1 { P1.0-P1.7 } – 8 pinsPort 2 { P2.0-P2.7 } – 8 pinsPort 3 { P3.0-P3.7 } – 8 pins
509
Port 3
• Port 3 can be used as input or output.
• Port 3 has the additional function ofproviding some extremely importantsignals
510
Pin Description SummaryPIN TYPE NAME AND FUNCTION
Vss I Ground: 0 V reference.
Vcc I Power Supply + 5V.
P0.0 - P0.7I/O Port 0: Port 0 is also the multiplexed low-order address and
data bus during accesses to external program and datamemory.
P1.0 - P1.7I/O Port 1: Port 1 is an 8-bit bi-directional simple I/O port.
P2.0 - P2.7
I/O Port 2: Port 2 is an 8-bit bidirectional I/O. Port 2 emits thehigh order address byte
P3.0 - P3.7I/O Port 3: Port 3 is an 8 bit bidirectional I/O port. Port 3 also
serves special features as explained.511
Pin Description SummaryPIN TYPE NAME AND FUNCTION
RST I Reset: resets the device.
ALE O Address Latch Enable:When ALE=0, it provides data D0-D7When ALE=1, it has address A0-A7
PSEN* O Program Store Enable:For External Code Memory, PSEN = 0For External Data Memory, PSEN = 1
EA*/VPP I External Access Enable/Programming Supply Voltage:EA = 0, 8051 microcontroller access from externalprogram memory (ROM) only.
EA = 1, then it access internal and external programmemories (ROMS).
512
Architecture of 8051
microcontroller
513
514
515
Program Counter(PC) : The program counter always points to the address of the next instruction to be executed.Stack Pointer Register (SP) : It is an 8-bit register which stores the address of the stack top.ALU: perform arithmetic & logical operations
Flags : Carry(C),Auxiliary Carry(AC), Overflow(O) & Parity(P)
516
Timing & Control: Timing and control unit synchronises all microcontroller operations with clock & generates control signals.
DPTR: (Data Pointer) - 16 bit DPH-Data Pointer High – 8 bit DPL-Data Pointer Low – 8 bit
DPTR Register is usually used for storing data and intermediate results.
517
8051 Program Memory,
Data Memory structure
518
8051 Memory Structure
Exte
rnal
EXT INT 128
SFR
Exte
rnal
Program Memory Data Memory
64K 64K
EA = 0 EA = 1
4K
60K
519
Special Function
Registers [SFR]520
• A Register (Accumulator)• B Register• Program Status Word (PSW) Register• Data Pointer Register (DPTR)
– DPH (Data Pointer High) , DPL(Data Pointer Low)• Stack Pointer (SP) Register• P0, P1, P2, P3 - Input/output port Registers• Timer T0 - TH0 & TL0• Timer T1 – TH1 & TL1• Timer Control (TCON) Register• Serial Port Control (SCON) Register• Serial Buffer Control (SBUF) Register• IP Register (Interrupt Priority)• IE Register (Interrupt Enable)
521
8051 Register Bank Structure4 MEMORY BANKS
Bank 0
R0 R1 R2 R3 R4 R5 R6 R7Bank 3
R0 R1 R2 R3 R4 R5 R6 R7Bank 2
R0 R1 R2 R3 R4 R5 R6 R7Bank 1
R0 R1 R2 R3 R4 R5 R6 R7
522
Program Status Word [PSW]
C AC F0 RS1 RS0 OV F1 P
Register Bank Select
Carry
Auxiliary Carry
User Flag 0
Parity
User Flag 1
Overflow
523
00-Bank 001-Bank 110-Bank 211-Bank 3
Data Pointer Register (DPTR)It consists of two separate registers: DPH (Data Pointer High) &DPL (Data Pointer Low).
524
Stack Pointer (SP) Register
525
P0, P1, P2, P3 – Input / Output Registers
8 bit
8 bit
8 bit
8 bit
8 bit
INSTRUCTION SET OF 8051
526
8051 Instruction Set• The instructions are grouped into 5 groups
– Arithmetic– Logic– Data Transfer– Boolean– Branching
527
1. Arithmetic Instructions• ADD A, source
A ← A + <operand>.
• ADDC A, sourceA ← A + <operand> + CY.
• SUBB A, sourceA ← A - <operand> - CY{borrow}.
528
• INC– Increment the operand by one. Ex: INC DPTR
• DEC– Decrement the operand by one. Ex: DEC B
• MUL AB
• DIV AB
529
Multiplication A*B Result
8 byte * 8 byte A=low byte,B=high byte
Division
A/BQuotient Remainder
8 byte /8 byte A B
Multiplication of NumbersMUL AB ; A × B, place 16-bit result in B and A
A=07 , B=02 MUL AB ;07 * 02 = 000E where B = 00 and A = 0E
530
Division of NumbersDIV AB ; A / B , 8-bit Quotient result in A &
8-bit Remainder result in BA=07 , B=02 DIV AB ;07 / 02 = Quotient 03(A) Remainder 01 (B)
2. Logical instructions
531
532
•ANL D,S-Performs logical AND of destination & source
- Eg: ANL A,#0FH ANL A,R5•ORL D,S
-Performs logical OR of destination & source- Eg: ORL A,#28H ORL A,@R0
•XRL D,S-Performs logical XOR of destination & source- Eg: XRL A,#28H XRL A,@R0
533
• CPL A-Compliment accumulator-gives 1’s compliment of accumulator data
• RL A-Rotate data of accumulator towards left without carry
• RLC A- Rotate data of accumulator towards left with carry
• RR A-Rotate data of accumulator towards right without carry
• RRC A- Rotate data of accumulator towards right with carry
3. Data Transfer Instructions
534
MOV Instruction• MOV destination, source ; copy source to destination.
• MOV A,#55H ;load value 55H into reg. AMOV R0,A ;copy contents of A into R0
;(now A=R0=55H)MOV R1,A ;copy contents of A into R1
;(now A=R0=R1=55H)MOV R2,A ;copy contents of A into R2
;(now A=R0=R1=R2=55H)MOV R3,#95H ;load value 95H into R3
;(now R3=95H)MOV A,R3 ;copy contents of R3 into A
;now A=R3=95H
535
•MOVX– Data transfer between the accumulator and
a byte from external data memory.•MOVX A, @DPTR•MOVX @DPTR, A
536
•PUSH / POP– Push and Pop a data byte onto the stack.
•PUSH DPL•POP 40H
537
• XCH– Exchange accumulator and a byte variable
•XCH A, Rn•XCH A, direct•XCH A, @Ri
538
4.Boolean variable instructions
539
CLR:• The operation clears the specified bit indicated in
the instruction• Ex: CLR C clear the carry
SETB:• The operation sets the specified bit to 1.
CPL:• The operation complements the specified bit
indicated in the instruction
540
541
•ANL C,<Source-bit>
-Performs AND bit addressed with the carry bit.- Eg: ANL C,P2.7 AND carry flag with bit 7 of P2
•ORL C,<Source-bit>
-Performs OR bit addressed with the carry bit.- Eg: ORL C,P2.1 OR carry flag with bit 1 of P2
• XORL C,<Source-bit>
-Performs XOR bit addressed with the carry bit.- Eg: XOL C,P2.1 OR carry flag with bit 1 of P2
•MOV P2.3,C•MOV C,P3.3•MOV P2.0,C
542
5. Branching instructions
543
Jump Instructions• LJMP (long jump):
– Original 8051 has only 4KB on-chip ROM
• SJMP (short jump):– 1-byte relative address: -128 to +127
544
Call Instructions• LCALL (long call):
– Target address within 64K-byte range
• ACALL (absolute call): – Target address within 2K-byte range
545
• 2 forms for the return instruction:– Return from subroutine – RET– Return from ISR – RETI
546
547
8051 Addressing
Modes
8051 Addressing Modes
• The CPU can access data in various ways, which are called addressing modes
1. Immediate2. Register3. Direct4. Indirect5. Relative6. Absolute7. Long8. Indexed
549
1. Immediate Addressing Mode• The immediate data sign, “#”• Data is provided as a part of instruction.
550
2. Register Addressing Mode• In the Register Addressing mode, the instruction involves
transfer of information between registers.
551
3. Direct Addressing Mode
• This mode allows you to specify the operand by giving its actual memory address
552
4. Indirect Addressing Mode
• A register is used as a pointer to the data.• Only register R0 and R1 are used for this purpose.• R2 – R7 cannot be used to hold the address of an
operand located in RAM.• When R0 and R1 hold the addresses of RAM locations,
they must be preceded by the “@” sign.
553
MOVX A,@DPTR
5. Relative Addressing
• This mode of addressing is used with some type of jump instructions, like SJMP (short jump) and conditional jumps like JNZ
Loop : DEC A ;Decrement AJNZ Loop ;If A is not zero, Loop
554
6. Absolute Addressing
• In Absolute Addressing mode, the absoluteaddress, to which the control is transferred, isspecified by a label.
• Two instructions associated with this modeof addressing are ACALL and AJMPinstructions.
• These are 2-byte instructions
555
7. Long Addressing
• This mode of addressing is used with the LCALL and LJMP instructions.
• It is a 3-byte instruction• It allows use of the full 64K code space.
556
8. Indexed Addressing
• The Indexed addressing is useful when there is a need to retrieve data from a look-up table (LUT).
557
8051 Assembly Language
Programming(ALP)
558
ADDITION OF TWO 8 bit Numbers
ADDRESS LABEL MNEMONICS
9100: MOV A,#05
MOV B,#03
ADD A,B
MOV DPTR,#9200
MOVX @DPTR,AHERE SJMP HERE
559After execution: A=08
SUBTRACTION OF TWO 8 bit Numbers
560
ADDRESS LABEL MNEMONICS
9100: CLR C
MOV A,#05
MOV B,#03
SUBB A,B
MOV DPTR,#9200
MOVX @DPTR,AHERE SJMP HERE
After execution: A=02
MULTIPLICATION OF TWO 8 bit Numbers
Address Label Mnemonics
9000 START MOV A,#05
MOV B,#03
MUL AB
MOV DPTR,#9200
MOVX @ DPTR,A
INC DPTR
MOV A,B
MOVX @DPTR,A
HERE SJMP HERE
Address Label Mnemonics
9000 START MOV A,#05
MOV B,#03
DIV AB
MOV DPTR,#9200
MOVX @ DPTR,A
INC DPTR
MOV A,B
MOVX @DPTR,A
HERE SJMP HERE
DIVISION OF TWO 8 bit Numbers
After execution: A=0F , B=00 After execution: A=01 , B=02
MOV 40H, #02H store 1st number in location 40HMOV 41H, #04H
MOV 42H, #06H
MOV 43H, #08H
MOV 44H, #01H
MOV R0, #40H store 1 st number address 40H in R0MOV R5, #05H store the count {N=05} in R5MOV B,R5 store the count {N=05} in BCLR A Clear Acc
LOOP: ADD A,@R0INC R0DJNZ R5,LOOPDIV ABMOV 55H,A Save the quotient in location 55H
HERE SJMP HERE
Average of N (N=5) 8 bit Numbers
Answer: 02+04+06+08+01 = 21(decimal) = 15 (Hexa)
SUM = 15 H Average = 21(decimal) / 5 = 04 (remainder) , 01 (quotient) quotient55
563
Presented byC.GOKUL,AP/EEE
Velalar College of Engg & Tech , Erode
DEPARTMENTS: CSE,IT {semester 04}ECE {semester 05}
Regulation : 2013
UNIT 5 Syllabus
• Programming 8051 Timers • Serial Port Programming • Interrupts Programming • LCD & Keyboard Interfacing • ADC, DAC & Sensor Interfacing • External Memory Interface• Stepper Motor
564
8051 TIMERS
565
8051 Timer Modes
Timer 0
Mode 3
Mode 2
Mode 1
Mode 0
Mode 2
Mode 1
Mode 0
Timer 1
8051 TIMERS
566
TMOD Register
GATE:When set, timer/counter x is enabled, if INTx pin is high and TRx is set. When cleared, timer/counter x is enabled, if TRx bit set.
C/T*:When set(1), counter operation (input from Tx input pin).When clear(0), timer operation (input from internal clock).
567
TMOD Register
The TMOD byte is not bit addressable.
568
00- MODE 001- MODE 110- MODE 211- MODE 3
TCON Register
569
TF 1-Timer 1 overflow flagTF0-TR1- Timer 1 Run control bitTR0-IE1- Interrupt 1IE0-IT1- Timer 1 interruptIT0-
8051 Timer/Counter
OSC ÷12
TLx(8 Bit)
/ 0C T =
/ 1C T =
INT PIN
Gate
TR
T PIN
THx(8 Bit)
TFx(1 Bit)
INTERRUPT
570
OSC ÷12
TL0/ 0C T =
/ 1C T =
0INT PIN
Gate
0TR0T PIN
TH0
INTERRUPT
TIMER 0
TF0
571
TL0(5 Bit)
INTERRUPT
TIMER 0 – Mode 0
OSC ÷12/ 0C T =
/ 1C T =
0INT PIN
Gate
0TR0T PIN
TH0(8 Bit) TF0
13 Bit Timer / Counter
Maximum Count = 1FFFh (0001111111111111)
572
TL0(8 Bit)
INTERRUPT
TIMER 0 – Mode 1
OSC ÷12/ 0C T =
/ 1C T =
0INT PIN
Gate
0TR0T PIN
TH0(8 Bit) TF0
16 Bit Timer / Counter
Maximum Count = FFFFh (1111111111111111)
573
TH0(8 Bit)
Reload
TIMER 0 – Mode 2
8 Bit Timer / Counter with AUTORELOAD
TL0(8 Bit)
OSC ÷12/ 0C T =
/ 1C T =
0INT PIN
Gate
0TR0T PIN
TH0(8 Bit) TF0 INTERRUPT
Maximum Count = FFh (11111111)574
TL0(8 Bit)
INTERRUPT
TIMER 0 – Mode 3
OSC ÷12/ 0C T =
/ 1C T =
0INT PIN
Gate
0TR0T PIN
TF0
Two - 8 Bit Timer / Counter
OSC ÷12
1TR
TH0(8 Bit)
INTERRUPTTF1
575
OSC ÷12
TL1/ 0C T =
/ 1C T =
Gate
TH1
INTERRUPT
TIMER 1
TF1
1INT PIN
1TR
1T PIN
576
TL1(5 Bit)
INTERRUPT
TIMER 1 – Mode 0
OSC ÷12/ 0C T =
/ 1C T =
Gate
TH1(8 Bit) TF1
13 Bit Timer / Counter
Maximum Count = 1FFFh (0001111111111111)
1INT PIN
1TR
1T PIN
577
TL1(8 Bit)
INTERRUPT
TIMER 1 – Mode 1
OSC ÷12/ 0C T =
/ 1C T =
Gate
TH1(8 Bit) TF1
16 Bit Timer / Counter
Maximum Count = FFFFh (1111111111111111)
1INT PIN
1TR
1T PIN
578
TH1(8 Bit)
Reload
TIMER 1 – Mode 2
8 Bit Timer / Counter with AUTORELOAD
TL1(8 Bit)
OSC ÷12/ 0C T =
/ 1C T =
Gate
TH1(8 Bit) TF1 INTERRUPT
Maximum Count = FFh (11111111)
1INT PIN
1TR
1T PIN
579
Timer modes
TCON Register (1/2)• Timer control register: TMOD
– Upper nibble for timer/counter, lower nibble for interrupts
• TR (run control bit)– TR0 for Timer/counter 0; TR1 for Timer/counter 1.– TR is set by programmer to turn timer/counter on/off.
• TR=0: off (stop) TR=1: on (start)
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0Timer 1 Timer0 for Interrupt
(MSB) (LSB)
TCON Register (2/2)
• TF (timer flag, control flag) – TF0 for timer/counter 0; TF1 for timer/counter 1.– TF is like a carry. Originally, TF=0. When TH-TL roll
over to 0000 from FFFFH, the TF is set to 1.• TF=0 : not reach • TF=1: reach • If we enable interrupt, TF=1 will trigger ISR.
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0Timer 1 Timer0 for Interrupt
(MSB) (LSB)
Equivalent Instructions for the Timer Control Register
For timer 0SETB TR0 = SETB TCON.4CLR TR0 = CLR TCON.4
SETB TF0 = SETB TCON.5CLR TF0 = CLR TCON.5
For timer 1SETB TR1 = SETB TCON.6CLR TR1 = CLR TCON.6
SETB TF1 = SETB TCON.7CLR TF1 = CLR TCON.7
TF1 IT0IE0IT1IE1TR0TF0TR1
TCON: Timer/Counter Control Register
Programs in 8051 TIMERS
Timer Mode 1• In following, we all use timer 0 as an example.
• 16-bit timer (TH0 and TL0)
• TH0-TL0 is incremented continuously when TR0 is set to 1. And the 8051 stops to increment TH0-TL0 when TR0 is cleared.
• The timer works with the internal system clock. In other words, the timer counts up each machine cycle.
• When the timer (TH0-TL0) reaches its maximum of FFFFH, it rolls over to 0000, and TF0 is raised.
• Programmer should check TF0 and stop the timer 0.
Steps of Mode 1 (1/3)
1. Choose mode 1 timer 0– MOV TMOD,#01H
2. Set the original value to TH0 and TL0.– MOV TH0,#FFH– MOV TL0,#FCH
3. You had better to clear the flag to monitor: TF0=0.– CLR TF0
4. Start the timer.– SETB TR0
Steps of Mode 1 (2/3)5.The 8051 starts to count up by incrementing the
TH0-TL0.– TH0-TL0=
FFFCH,FFFDH,FFFEH,FFFFH,0000H
FFFC FFFD FFFE FFFF 0000
TF = 0 TF = 0 TF = 0 TF = 0 TF = 1
TH0 TL0Start timer Stop timer
Monitor TF until TF=1
TR0=1 TR0=0
TF
Steps of Mode 1 (3/3)6. When TH0-TL0 rolls over from FFFFH to
0000, the 8051 set TF0=1. TH0-TL0= FFFEH, FFFFH, 0000H (Now TF0=1)
7. Keep monitoring the timer flag (TF) to see if it is raised.AGAIN: JNB TF0, AGAIN
8. Clear TR0 to stop the process.CLR TR0
9. Clear the TF flag for the next round.CLR TF0
Mode 1 Programming
XTALoscillator ÷ 12
TR
TH TL TF
Timeroverflow
flag
C/T = 0
TF goes high when FFFF 0
Timer Delay Calculation for XTAL = 11.0592 MHz
(a) in hex• (FFFF – YYXX + 1) × 1.085 µs• where YYXX are TH, TL initial values respectively. • Notice that values YYXX are in hex.
(b) in decimal• Convert YYXX values of the TH, TL register to
decimal to get a NNNNN decimal number• then (65536 – NNNNN) × 1.085 µs
Example 1 (1/3)• square wave of 50% duty on P1.5 • Timer 0 is used
;each loop is a half clockMOV TMOD,#01 ;Timer 0,mode 1(16-bit)
HERE: MOV TL0,#0F2H ;Timer value = FFF2HMOV TH0,#0FFH CPL P1.5 ACALL DELAY SJMP HERE
50% 50%
whole clock
P1.5
Example 1 (2/3);generate delay using timer 0DELAY:
SETB TR0 ;start the timer 0AGAIN:JNB TF0,AGAIN
CLR TR0 ;stop timer 0CLR TF0 ;clear timer 0 flagRET
FFF2 FFF3 FFF4 FFFF 0000
TF0 = 0 TF0 = 0 TF0 = 0 TF0 = 0 TF0 = 1
Example 1 (3/3)Solution:In the above program notice the following steps.1. TMOD = 0000 0001 is loaded.2. FFF2H is loaded into TH0 – TL0.3. P1.5 is toggled for the high and low portions of the pulse.4. The DELAY subroutine using the timer is called.5. In the DELAY subroutine, timer 0 is started by the “SETB TR0”
instruction.6. Timer 0 counts up with the passing of each clock, which is provided by the
crystal oscillator. As the timer counts up, it goes through the states of FFF3, FFF4, FFF5, FFF6,
FFF7, FFF8, FFF9, FFFA, FFFB, FFFC, FFFFD, FFFE, FFFFH. One more clock rolls it to 0, raising the timer flag (TF0 = 1). At that point, the JNB instruction falls through.
7. Timer 0 is stopped by the instruction “CLR TR0”. The DELAY subroutine ends, and the process is repeated.
Notice that to repeat the process, we must reload the TL and TH registers, and start the timer again (in the main program).
Example 2 (1/2)• This program generates a square wave on pin P1.5 Using timer 1 • Find the frequency.(dont include the overhead of instruction delay)• XTAL = 11.0592 MHz
MOV TMOD,#10H ;timer 1, mode 1AGAIN:MOV TL1,#34H ;timer value=3476H
MOV TH1,#76H SETB TR1 ;start
BACK: JNB TF1,BACK CLR TR1 ;stopCPL P1.5 ;next half clockCLR TF1 ;clear timer flag 1SJMP AGAIN ;reload timer1
Example 2 (2/2)
Solution:FFFFH – 7634H + 1 = 89CCH = 35276 clock
count Half period = 35276 × 1.085 µs = 38.274 ms Whole period = 2 × 38.274 ms = 76.548 msFrequency = 1/ 76.548 ms = 13.064 Hz.
NoteMode 1 is not auto reload then the program must reload the TH1, TL1 register every timer overflow if we want to have a continuous wave.
Find Timer Values
• Assume that XTAL = 11.0592 MHz .• And we know desired delay• how to find the values for the TH,TL ?
1. Divide the delay by 1.085 µs and get n.2. Perform 65536 –n3. Convert the result of Step 2 to hex (yyxx )4. Set TH = yy and TL = xx.
Example 3 (1/2)• Assuming XTAL = 11.0592 MHz, • write a program to generate a square wave of 50 Hz
frequency on pin P2.3.
Solution:1. The period of the square wave = 1 / 50 Hz = 20 ms.2. The high or low portion of the square wave = 10 ms.3. 10 ms / 1.085 µs = 92164. 65536 – 9216 = 56320 in decimal = DC00H in hex.5. TL1 = 00H and TH1 = DCH.
Example 3 (2/2)
MOV TMOD,#10H ;timer 1, mode 1AGAIN: MOV TL1,#00 ;Timer value = DC00H
MOV TH1,#0DCH SETB TR1 ;start
BACK: JNB TF1,BACK CLR TR1 ;stopCPL P2.3 CLR TF1 ;clear timer flag 1SJMP AGAIN ;reload timer since
;mode 1 is not;auto-reload
Programs in 8051 TIMERS
Another Explanation
MODE 1 Programming{16 bit mode}
MODE 2 Programming{8 bit mode}
Auto Reload Mode
8051 Serial Port
611
612
Basics of Serial Communication
• Serial data communication uses two methods– Synchronous method transfers a block of data at a time
– Asynchronous method transfers a single byte at a time
• There are special IC’s made by many manufacturers for serial communications.– UART (universal asynchronous Receiver transmitter)
– USART (universal synchronous-asynchronous Receiver-transmitter)
613
614
615
Asynchronous – Start & Stop Bit
• Asynchronous serial data communication is widely used for character-oriented transmissions
• The start bit is always a 0 (low) and the stop bit(s) is 1 (high)
616
Asynchronous – Start & Stop Bit
617
Data Transfer Rate• The rate of data transfer in serial data communication is
stated in bps (bits per second).
• Another widely used terminology for bps is baud rate.– It is modem terminology and is defined as the number of
signal changes per second
618
8051 Serial Port
• Synchronous and Asynchronous• SCON Register is used to Control• Data Transfer through TXd & RXd pins• Some time - Clock through TXd Pin• Four Modes of Operation:
Mode 0 :Synchronous Serial CommunicationMode 1 :8-Bit UART with Timer Data RateMode 2 :9-Bit UART with Set Data RateMode 3 :9-Bit UART with Timer Data Rate
619
Registers related to Serial Communication
1. SBUF Register
2. SCON Register
3. PCON Register
620
SBUF Register
• SBUF is an 8-bit register used solely for serial communication.
• For a byte data to be transferred via the TxD line, it must beplaced in the SBUF register.
• SBUF holds the byte of data when it is received by 8051 RxDline.
621
SBUF Register
• Sample Program:
622
SCON Register
SM0 SM1 SM2 REN TB8 RB8 TI RI
Enable MultiprocessorCommunication Mode
Set to EnableSerial Data reception
9th Data Bit Transmittedin Mode 2,3
9th Data Bit Received in Mode 2,3
Set when Stop bit Txed
Set when a Cha-ractor received
623
8051 Serial Port – Mode 0
The Serial Port in Mode-0 has the following features:
1. Serial data enters and exits through RXD
2. TXD outputs the clock
3. 8 bits are transmitted / received
4. The baud rate is fixed at (1/12) of the oscillator frequency
624
8051 Serial Port – Mode 1
The Serial Port in Mode-1 has the following features:
1. Serial data enters through RXD
2. Serial data exits through TXD
3. On receive, the stop bit goes into RB8 in SCON
4. 10 bits are transmitted / received1. Start bit (0)
2. Data bits (8)
3. Stop Bit (1)
5. Baud rate is determined by the Timer 1 over flow rate.
625
8051 Serial Port – Mode 2
The Serial Port in Mode-2 has the following features:
1. Serial data enters through RXD2. Serial data exits through TXD3. 9th data bit (TB8) can be assign value 0 or 14. On receive, the 9th data bit goes into RB8 in SCON5. 11 bits are transmitted / received
1.Start bit (0)2.Data bits (9)3.Stop Bit (1)
6. Baud rate is programmable
626
8051 Serial Port – Mode 3
The Serial Port in Mode-3 has the following features:
1. Serial data enters through RXD2. Serial data exits through TXD3. 9th data bit (TB8) can be assign value 0 or 14. On receive, the 9th data bit goes into RB8 in SCON5. 11 bits are transmitted / received
1.Start bit (0)2.Data bits (9)3.Stop Bit (1)
6. Baud rate is determined by Timer 1 overflow rate.
627
Programs in 8051 serial port
TIMER 1 MODE 2 {AUTO RELOAD}
MOV TMOD, #20H ; Timer 1, mode 2MOV TH1,#-06 TH1 is loaded to set the baud rate. MOV SCON, #50HSETB TR1 ; Run Timer 1
L2 : MOV SBUF, # ’A’ Loop: JNB TI, Loop ; Monitor RI
MOV A, SBUFCLR TISJMP L2
Write a program for the 8051 to transfer letter ‘A’ serially at 4800 baud rate, continuously.
MOV TMOD, #20H ; Timer 1, mode 2MOV TH1,#-06 TH1 is loaded to set the baud rate. MOV SCON, #50HSETB TR1 ; Run Timer 1
Loop: JNB RI, Loop ; Monitor RIMOV A, SBUFCLR RISJMP Loop
Program the 8051 to receive bytes of data serially, and put them in P1. Set the baud rate at 4800.
Write a program to transfer the message “YES” serially at 9600 baud, 8 -bit data, 1 stop bit. Do this continuously.
8051 Interrupts
635
INTERRUPTS
• An interrupt is an external or internal event thatinterrupts the microcontroller to inform it that a deviceneeds its service
• A single microcontroller can serve several devices by twoways:
1. Interrupt2. Polling
636
Interrupt
– Upon receiving an interrupt signal, themicrocontroller interrupts whatever it is doingand serves the device.
– The program which is associated with theinterrupt is called the interrupt service routine(ISR) .
637
Interrupt Vs Polling
1. InterruptsWhenever any device needs its service, the device notifies the
microcontroller by sending it an interrupt signal.Upon receiving an interrupt signal, the microcontroller interrupts
whatever it is doing and serves the device.The program which is associated with the interrupt is called the
interrupt service routine (ISR) or interrupt handler.
2. PollingThe microcontroller continuously monitors the status of a given
device.When the conditions met, it performs the service.After that, it moves on to monitor the next device until every one
is serviced.
Steps in Executing an Interrupt1. It finishes the instruction it is executing and saves the address of
the next instruction (PC) on the stack.
2. It also saves the current status of all the interrupts internally (i.e:not on the stack).
3. It jumps to a fixed location in memory, called the interruptvector table, that holds the address of the ISR.
4. The microcontroller gets the address of the ISR from theinterrupt vector table and jumps to it.
5. It starts to execute the interrupt service subroutine until itreaches the last instruction of the subroutine which is RETI(return from interrupt).
6. Upon executing the RETI instruction, the microcontroller returnsto the place where it was interrupted.
639
Steps in executing an interrupt• Finish current instruction and saves the PC on stack.
• Jumps to a fixed location in memory depend on type of interrupt
• Starts to execute the interrupt service routine until RETI (return from interrupt)
• Upon executing the RETI the microcontroller returns to the place where it was interrupted. Get pop PC from stack
Interrupt Sources• Original 8051 has 6 sources of interrupts
– Reset (RST)– Timer 0 overflow (TF0)– Timer 1 overflow (TF1)– External Interrupt 0 (INT0)– External Interrupt 1 (INT1)– Serial Port events (RI+TI)
{Reception/Transmission of Serial Character}
8051 Interrupt Vectors
642
8051 Interrupt related Registers• The various registers associated with the use of
interrupts are:
– TCON - Edge and Type bits for External Interrupts 0/1
– SCON - RI and TI interrupt flags for RS232 {SERIALCOMMUNICATION}
– IE - interrupt Enable
– IP - Interrupts priority
643
Enabling and Disabling an Interrupt
• The register called IE (interrupt enable) that isresponsible for enabling (unmasking) and disabling(masking) the interrupts.
644
Interrupt Enable (IE) Register
• EA : Global enable/disable.
• --- : Reserved for additional interrupt hardware.
• ES : Enable Serial port interrupt.
• ET1 : Enable Timer 1 control bit.
• EX1 : Enable External 1 interrupt.
• ET0 : Enable Timer 0 control bit.
• EX0 : Enable External 0 interrupt.
MOV IE,#08hor
SETB ET1
--
645
Interrupt Priority
646
Interrupt Priority (IP) Register
PS PT1 PX1 PT0 PX0Reserved
Serial Port
Timer 1 Pin
INT 1 Pin Timer 0 Pin
INT 0 Pin
Priority bit=1 assigns high priorityPriority bit=0 assigns low priority
647
648
KEYBOARD INTERFACING
649
KEYBOARD INTERFACING • Keyboards are organized in a matrix of rows
and columnsThe CPU accesses both rows and columns
through ports .• �Therefore, with two 8-bit ports, an 8 x 8
matrix of keys can be connected to a microprocessor
When a key is pressed, a row and a column make a contact
650
•Otherwise, there is no connection between rows and columns
•�A 4x4 matrix connected to two portsThe rows are connected to an
output port and the columns are connected to an input port
651
4x4 matrix
652
653
Connection with keyboard matrix
Final Circuit
Stepper Motor Interfacing
656
Stepper Motor Interfacing
• Stepper motor is used in applications such as; dot matrix printer, robotics etc
• It has a permanent magnet rotor called the shaft which is surrounded by a stator. Commonly used stepper motors have 4 stator windings
• Such motors are called as four-phase or unipolar stepper motor.
657
658
659
Full step
660
Step angle:
• Step angle is defined as the minimum degree of rotation with a single step.
• No of steps per revolution = 360° / step angle• Steps per second = (rpm x steps per revolution) / 60• Example: step angle = 2°• No of steps per revolution = 180
661
A switch is connected to pin P2.7. Write an ALP to monitor the status of the SW. If SW = 0, motor moves clockwise and If SW = 1, motor moves anticlockwise
SETB P2.7MOV A, #66HMOV P1,A
TURN: JNB P2.7, CWRL AACALL DELAYMOV P1,ASJMP TURN
CW: RR AACALL DELAYMOV P1,ASJMP TURN662
DELAY: MOV R1,#20L2: MOV R2,#50L1:DJNZ R2,L2
DJNZ R2,L1RET
LCD Interfacing using 8051
{before discussed in Unit 3 LCD interfacing using 8086}
663
664
Pin Connections of LCD:
665
666
A/D Interfacing using 8051
{before discussed in Unit 3 A/D interfacing using 8086}
667
Refer book Mohammad Ali Explanation is not sufficient
Interfacing ADC to 8051ADC0804 is an 8 bit successive approximation analogue to digital
converter from National semiconductors. The features of ADC0804 are differential analogue voltage inputs, 0-5V input voltage range, no zero adjustment, built in clock generator, reference voltage can be externally adjusted to convert smaller analogue voltage span to 8 bit resolution etc.
668
ADC Interfacing:
669
D/A Interfacing using 8051
{before discussed in Unit 3 D/A interfacing using 8086}
670
Refer book Mohammad Ali Explanation is not sufficient
8051 Connection to DAC808
671
program to send data to the DAC to generate a stair-step ramp
672
SENSOR INTERFACING
take temperature sensor for example
673
Refer book Mohammad Ali Explanation is not sufficient
674
675
Shunt voltage diodes
potentiometer
EXTERNAL MEMORY
INTERFACING676
Refer book Mohammad Ali Explanation is not sufficient
Access to External Memory• Port 0 acts as a multiplexed address/data bus. Sending
the low byte of the program counter (PCL) as an address.
• Port 2 sends the program counter high byte (PCH) directly to the external memory.
• The signal ALE operates as in the 8051 to allow an external latch to store the PCL byte while the multiplexed bus is made ready to receive the code byte from the external memory.
• Port 0 then switches function and becomes the data bus receiving the byte from memory.
677
Presented by C.GOKUL,AP/EEE , Velalar College of Engg & Tech, Erode
678
Documents References• 8086 SYSTEM BUS STRUCTURE by Prof.L.PETER STANLEY
BEBINGTON ( PROFESSOR AND DEAN(ACADEMIC),VCET,Erode)
• I/O Interfacing by Prof.P.JAYACHANDAR , ASSOCIATE PROFESSOR and DEAN(SA),VCET,Erode
• 8086 Microprocessor by Dr. M. Gopikrishna ,Assistant Professor of Physics,Maharajas College ,Ernakulam
• 8086 architecture By Er. Swapnil Kaware• 8086 presentations by Gursharan Singh Tatla (Eazynotes.com)• Microprocessor - Ramesh Gaonkar• 8086 micro processor prasadpawaskar• 8086 class notes-Y.N.M by MURTHY Y.N• Introduction to 8086 Microprocessor by Rajvir Singh• 8086 micro processor by Poojith Chowdhary• 8086 ASSEMBLY LANGUAGE PROGRAMMING Cutajar & Cutajar• Intel microprocessor history by Ramzi_Alqrainy
679
Website References• http://80864beginner.com/• www.eazynotes.com• www.slideshare.net• www.scribd.com• www.docstoc.com• www.slideworld.com• www.nptel.ac.in• http://opencourses.emu.edu.tr/• http://engineeringppt.blogspot.in/• http://www.pptsearchengine.net/• www.4shared.com• http://8085projects.info/
680