microprocessor & microcontroller 8086,8051 notes

680

Click here to load reader

Upload: velalar-college-of-engineering-and-technology

Post on 28-Jul-2015

712 views

Category:

Engineering


25 download

TRANSCRIPT

Page 1: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 2: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

syllabus

2

Page 3: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

3

Page 4: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 5: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 6: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 7: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 8: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 9: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Applications

• Calculators• Accounting system• Games machine• Instrumentation• Traffic light Control• Multi user, multi-function environments• Military applications• Communication systems

9

Page 10: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

MICROPROCESSOR HISTORY

10

Page 11: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

DIFFERENT PROCESSORS AVAILABLE

Socket

Processor

Pinless Processor

Slot Processor

ProcessorSlot

11

Page 12: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 13: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 14: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 15: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 16: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Intel 4040

Introduced in 1971.

It was also 4-bit µP.

16

Page 17: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

8-bit Microprocessors

17

Page 18: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 19: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Intel 8080

Introduced in 1974.

It was also 8-bit µP.

Its clock speed was 2 MHz.

It had 6,000 transistors.

19

Page 20: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 21: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

16-bit Microprocessors

21

Page 22: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 23: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 24: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 25: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 26: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

32-BIT MICROPROCESSORS

26

Page 27: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 28: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 29: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 30: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 31: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 32: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 33: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 34: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 35: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

INTEL DUAL CORE Introduced in 2006.

It is 32-bit or 64-bit µP.

35

Page 36: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

36

Page 37: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

64-BIT MICROPROCESSORS

37

Page 38: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Intel Core 2 Intel Core i3

38

Page 39: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

INTEL CORE I5 INTEL CORE I7

39

Page 40: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 41: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 42: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 43: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 44: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

THE 8086 MICROPROCESSOR

UNIT

1

44

Page 45: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 46: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 47: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 48: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 49: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 50: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Execution Unit

Tells BIU (addresses) where to fetch instructions or dataDecodes & Executes instructions

Dividing the work between BIU & EU speeds up processing

50

Page 51: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Architecture Diagram of 8086

51

Page 52: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 53: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Execution Unit

Main components are• Instruction Decoder• Control System• Arithmetic Logic Unit• General Purpose Registers• Flag Register• Pointer & Index registers

53

Page 54: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 55: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 56: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 57: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 58: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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.

Page 59: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 60: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 61: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Bus Interface Unit

Main Components are• Instruction Queue• Segment Registers• Instruction Pointer

61

Page 62: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 63: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 64: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 65: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 66: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 67: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 68: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 69: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 70: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 71: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 72: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 73: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 74: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 75: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

ADDRESSING MODES OF

808675

Page 76: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 77: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 78: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 79: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 80: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 81: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 82: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 83: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 84: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 85: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 86: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

INSTRUCTION SET of 8086

86

Page 87: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

• 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

Page 88: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

• 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

Page 89: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 90: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

(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

Page 91: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 92: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 93: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

(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

Page 94: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 95: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 96: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

(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

Page 97: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 98: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

BH BL

BH 50

BL 30

SP 2000H

SP 2002H

3050

3050

BEFORE EXECUTION

AFTER EXECUTION

POP BX

2000H

2001H

2002H

2000H2001H

2002H

98

Page 99: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

(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

Page 100: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

AH 20 AL 40

BH 70 BL 80

AH 70 AL 80

BH 20 BL 40

BEFORE EXECUTION AFTER EXECUTION

XCHG AX,BX100

Page 101: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

(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

Page 102: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

10 AL

10 AL 10

BEFORE EXECUTION

AFTER EXECUTION

IN AL,80H

PORT 80H

PORT 80H

102

Page 103: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 104: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

10 AL 40

40 AL 40

BEFORE EXECUTION

AFTER EXECUTION

OUT 50H,AL

PORT 50H

PORT 50H

104

Page 105: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

(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

Page 106: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 107: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

(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

Page 108: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 109: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

(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

Page 110: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 111: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

(2). Arithmetic Instructions

These instructions perform the operations like:

Addition, Subtraction, Increment, Decrement.

111

Page 112: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

(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

Page 113: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 114: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 115: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

(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

Page 116: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

AFTER EXECUTION

5000H

AFTER EXECUTIONBEFORE EXECUTION

INC [5000H]

BEFORE EXECUTION

INC AXAH 10 AL 11 AH 10 AL 12

1011 5000H 1012

116

Page 117: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 118: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

AFTER EXECUTION

5000H

AFTER EXECUTIONBEFORE EXECUTION

DEC [5000H]

BEFORE EXECUTION

DEC AXAH 10 AL 11 AH 10 AL 10

1051 5000H 1050

118

Page 119: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

(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

Page 120: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 121: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

(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

Page 122: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 123: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

(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

Page 124: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 125: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 126: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 127: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 128: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 129: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 130: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 131: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Multiplication and Division Examples

131

Page 132: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 133: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 134: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

134

Page 135: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

135

Page 136: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

136

Page 137: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 138: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 139: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 140: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 141: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 142: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 143: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 144: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 145: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 146: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 147: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 148: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 149: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 150: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 151: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 152: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 153: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 154: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 155: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 156: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 157: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 158: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

SUBROUTINE & SUBROUTINE HANDILING INSTRUCTIONS

Call subroutine A

Next instruction

Call subroutine A

Next instruction

Main program

Subroutine A

First Instruction

Return

158

Page 159: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 160: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 161: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 162: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 163: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 164: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 165: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 166: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

2. Find & Replace

166

Page 167: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 168: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 169: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

STC

It sets the carry flag to 1.

CLC

It clears the carry flag to 0.

CMC

It complements the carry flag.

169

Page 170: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 171: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 172: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 173: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 174: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 175: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 176: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 177: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 178: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 179: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Assembler Directives

179

ASSUME,END,ENDP,EQU,EVEN,DD – 8 mark

Page 180: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Directives Expansion

180

Page 181: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

• 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

Page 182: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

• 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

Page 183: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

• 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

Page 184: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

• 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

Page 185: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Directives examples

• ASSUME CS:CODE cs=> code segment• ORG 3000• NAME DB ‘THOMAS’• POINTER DD 12341234H

• FACTOR EQU 03H

185

Page 186: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Assembly Language Programming(ALP)

8086

186

Page 187: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 188: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 189: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 190: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 191: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 192: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 193: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 194: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 195: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Detailed coding16 BIT ADDITION

195

Page 196: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Detailed coding16 BIT SUBTRACTION

196

Page 197: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

16 BIT MULTIPLICATION

197

Page 198: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

16 BIT DIVISION

198

Page 199: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 200: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 201: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 202: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

ASCENDING ORDER

202

Page 203: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

203

Page 204: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

DECENDING ORDER

Note: change the coding JNB L1 into JB L1 in the LINE 10204

Page 205: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

LARGEST, smallest NUMBER IN AN ARRAY

205

Page 206: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

LARGEST NUMBER

206

Page 207: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

SMALLEST NUMBER

207

Page 208: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Modular Programming

208

Page 209: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

• 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

Page 210: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 211: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

MODULAR PROGRAMMING:1.LINKING & RELOCATION2.STACKS3.Procedures4.Interrupts & Interrupt Routines5.Macros

211

Page 212: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

LINKING & RELOCATION

212

Page 213: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 214: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

• 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

Page 215: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Creation and execution of a program

215

Page 216: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 217: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 218: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

• 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

Page 219: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Procedures219

CALL & RET instruction

Page 220: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

• 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

Page 221: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 222: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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)

Page 223: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

223

PUSH & POP instruction

Page 224: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

• 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

Page 225: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 226: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 227: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

MACROS227

How to pass parameters using macros-6/8 Mark

Page 228: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

• 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

Page 229: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 230: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

230

Page 231: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

MACROS with Parameters

Example:COPY MACRO x, y ; macro named COPY with

2 parameters{x, y}

PUSH AXMOV AX, xMOV y, AXPOP AXENDM

231

Page 232: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

INTERRUPTS &

INTERRUPT SERVICE ROUTINE(ISR)

232

Page 233: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 234: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

234

Page 235: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

235

Page 236: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

236

Page 237: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

• 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

Page 238: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

238

Page 239: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

239

Page 240: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

240

Page 241: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

241

Page 242: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

242

Page 243: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 244: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 245: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

PRIORITY OF INTERRUPTS

Interrupt Type Priority

INT0, INT3-INT 255, Highest

NMI(INT2)

INTR

SINGLE STEP Lowest

245

Page 246: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Byte &String

Manipulation246

Page 247: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Refer String Instructions in Instruction SetSlide No: 160-163

Move, compare, store, load, scan

247

Page 248: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 249: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 250: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

2. Find & Replace

250

Page 251: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 252: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

UNIT 2 Syllabus

252

Page 253: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

8086 signals or

Pin Diagram

253

Page 254: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

INTEL 8086-Pin Diagram/Signal Description

254

Page 255: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 256: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 257: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

INTEL 8086 - Pin Details

INTERRUPT

Non - maskable interrupt

Interrupt request

Interrupt acknowledge

257

Page 258: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

INTEL 8086 - Pin Details

Direct Memory Access

Hold acknowledge

Hold

258

Page 259: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

INTEL 8086 - Pin Details

Address/Status Bus

Address bits A19 –A16 & Status bits S6

– S3

259

Page 260: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 261: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

INTEL 8086 - Pin Details

Min/Max modeMinimum Mode: +5VMaximum Mode: 0V

Minimum Mode Pins

Maximum Mode Pins

261

Page 262: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Minimum Mode- Pin Details

Read Signal

Write Signal

Memory or I/0

Data Bus Enable

Data Transmit/Receive

262

Page 263: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 264: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Maximum Mode - Pin Details

DMA Request/Grant

Lock Output

Lock OutputUsed to lock peripheralsoff the system

Activated by using theLOCK: prefix on anyinstruction

264

Page 265: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 266: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 267: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Timing Diagram

Basicsonly for understanding

Page 268: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes
Page 269: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 270: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 271: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

AD0-AD15

Page 272: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes
Page 273: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes
Page 274: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes
Page 275: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes
Page 276: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

SYSTEM BUS TIMING

276

Page 277: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 278: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

• 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

Page 279: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 280: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 281: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 282: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Basic configurations

282

Page 283: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 284: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

1.Minimum Mode

configuration

Page 285: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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}

Page 286: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

286

Page 287: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

MINIMUM MODE SIGNALS

287

Page 288: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

288

Page 289: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Memory READ in Minimum Mode

Page 290: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Memory WRITE in Minimum Mode

Page 291: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

2.Maximum Mode

configurationNOTE: Explain Maximum mode signals also {refer pin diagram}

Page 292: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

MAXIMUM MODE SIGNALS

292

Page 293: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

8288 – BUS CONTROLLER

293

Page 294: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

MAXIMUM MODE

294

Page 295: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

295

Page 296: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

296

Page 297: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

MULTIPROCESSOR CONFIGURATIONS

297

Page 298: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Multiprocessor configuration

Coprocessor 8087

298

Page 299: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 300: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

• 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

Page 301: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 302: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Coprocessor / Closely Coupled Configuration

302

Page 303: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 304: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

1.Coprocessor Execution ExampleCoprocessor cannot take control of the bus, it does everything through the CPU

304

Page 305: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

2.Closely Coupled Execution Example

• Closely Coupled processor may take control of the bus independently.

• Two 8086’s cannot be closely coupled.

305

Page 306: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 307: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

307

Page 308: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 309: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 310: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Daisy Chaining:

Page 311: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes
Page 312: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Independent

Page 313: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 314: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

INTRODUCTION TO ADVANCED PROCESSORS

314

Page 315: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 316: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

80186

316

Page 317: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

80286

317

Page 318: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

80386

318

Page 319: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 320: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 321: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 322: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

MEMORY DEVICES I/O DEVICESPresented by C.GOKUL,AP/EEE , Velalar College of Engg & Tech, Erode

322

Page 323: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 324: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 325: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 326: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Parallel communication interface

INTEL 8255

Presented by C.GOKUL,AP/EEE , Velalar College of Engg & Tech, Erode

326

Page 327: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 328: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

PIN DIAGRAM OF 8255328

Page 329: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Signals of 8085329

Page 330: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 331: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 332: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

• 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

Page 333: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 334: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Block Diagram of 8255A 334

Page 335: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 336: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 337: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 338: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 339: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

b) Port B: It can be programmed in mode 0, mode1

c) Port C : It can be programmed in mode 0

339

Page 340: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

340

Page 341: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 342: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

1. BSR Mode342

Page 343: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 344: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 345: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

345

Page 346: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 347: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 348: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 349: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 350: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 351: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Basics of serial communication1. Transmitter:- A parallel-in, serial-out shift register

2. Receiver:- A serial-in, parallel-out shift register.

-351

Parallel Transfer

Page 352: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

TRANSMITTER

Receiver

352

Page 353: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Serial communicationinterface

INTEL 8251 USART

353

Page 354: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 355: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

355

Page 356: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

BLOCK DIAGRAM 356

Page 357: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 358: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 359: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

• 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

Page 360: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 361: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

• 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

Page 362: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 363: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 364: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Receiver Section

Accepts serial data from peripheral and converts it into parallel data

The section has two registers Input Register Buffer Register

364

Page 365: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 366: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 367: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Control words367

Page 368: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

368

Page 369: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

369

Page 370: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

370

Page 371: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

371

Page 372: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Interfacing of 8255(PPI) with 8085 processor: 372

Page 373: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

373

Page 374: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 375: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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)

Page 376: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 377: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

377

Page 378: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 379: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

379

Page 380: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

380

Page 381: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

381

Page 382: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

382

Page 383: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

383

Page 384: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 385: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 386: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 387: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

387

Page 388: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

388

Page 389: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

TIMER/COUNTER

389

Page 390: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

390

Page 391: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 392: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

392

Page 393: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

393

Page 394: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

8254 Programming

11-394

Page 395: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 396: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 397: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 398: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Keyboard/Display Controller

INTEL 8279

398

Page 399: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

The INTEL 8279 is specially developed for interfacing keyboard and display devices to 8085/8086 microprocessor based system

399

Page 400: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Simultaneous keyboard and display operations

Scanned keyboard mode Scanned sensor mode 8-character keyboard FIFO 1 6-character display

400

Page 401: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

401

Page 402: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Keyboard section Display section Scan section CPU interface section

402

Page 403: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

403

Page 404: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

404

Page 405: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 406: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 407: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 408: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 409: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 410: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 411: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 412: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 413: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

SENSOR MATRIX

SENSOR MATRIX

413

Page 414: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 415: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 416: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 417: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 418: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 419: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 420: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

INTERRUPT CONTROLLER

420

Page 421: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes
Page 422: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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)

Page 423: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

8259A PIC- PIN DIGRAM

8259

Page 424: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes
Page 425: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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.

Page 426: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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.

Page 427: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

8259A PIC- BLOCK DIAGRAM

Page 428: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes
Page 429: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes
Page 430: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes
Page 431: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes
Page 432: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes
Page 433: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes
Page 434: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes
Page 435: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes
Page 436: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes
Page 437: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes
Page 438: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes
Page 439: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes
Page 440: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes
Page 441: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes
Page 442: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes
Page 443: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes
Page 444: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes
Page 445: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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: -

Page 446: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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:

Page 447: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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:

Page 448: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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:

Page 449: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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:

Page 450: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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:

Page 451: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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:

Page 452: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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:

Page 453: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

8237DMA CONTROLLER

453

Page 454: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 455: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 456: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 457: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

8237 block diagram

457

Page 458: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Block Diagram Description

It containing Five main Blocks.1. Data bus buffer2. Read/Control logic3. Control logic block4. Priority resolver5. DMA channels.

458

Page 459: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 460: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 461: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

DMA controller details

461

Page 462: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Programming and applications Case

studies1.Traffic Light control

2.LED display 3.LCD display

4.Keyboard display interface 5.Alarm Controller462

Page 463: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

1. TRAFFIC LIGHT

CONTROL463

Page 464: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 465: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

LAN Direction 8086 LINES MODULES

465

Page 466: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

CIRCUIT DIAGRAM TO INTERFACE TRAFFIC LIGHT WITH 8086

466

Page 467: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 468: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 469: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

2. LED DISPLAY

469

Page 470: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 471: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

PIN ASSIGNMENT WITH 8086

471

Page 472: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

INTERFACE LED WITH 8255

472

Page 473: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 474: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

3. LCD DISPLAY

474

Page 475: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

475

Page 476: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

HARDWARE CONFIGURATION OF LCD WITH 8051/8086/8085

476

Page 477: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 478: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

478

Page 479: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 480: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

480

Page 481: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

4. Keyboard display interface

481

Page 482: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 483: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

PIN DIAGRAM OF 8279 PIN DIAGRAMOF 74LS138

Presented by C.GOKUL,AP/EEE , Velalar College of Engg & Tech, Erode

483

Page 484: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

484

Page 485: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

485

Page 486: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 487: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

5. ALARM CONTROLLER

Relevant MaterialNot exact

487

Page 488: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

488

Page 489: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 490: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

BasicsMicroprocessor &Microcontroller

490

Page 491: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

What is Microcontroller?

Micro Controller

491

Very Small A mechanism that controls the operation of a machine

Page 492: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

CPU for Computers No RAM, ROM, I/O on CPU chip itself Example: Intel's x86, Motorola’s 680x0

492

Page 493: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

A smaller computer On-chip RAM, ROM, I/O ports... Example: Motorola’s 6811, Intel’s 8051, Zilog’s

Z8 and PIC

493

Page 494: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

494

Page 495: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 496: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 497: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

497

Page 498: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

498

Presented byC.GOKUL,AP/EEE

Velalar College of Engg & Tech , Erode

DEPARTMENTS: CSE,IT {semester 04}ECE {semester 05}

Regulation : 2013

Page 499: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 500: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 501: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

501

Page 502: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Intel introduced 8051, developed in the year1981.

The 8051 is an 8-bit controller. D0-D7 DATA LINES A0-A15 ADDRESS LINES

502

Page 503: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 504: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 505: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 506: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Pin Description of the 8051

orIO Port structure

506

Page 507: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

507

Page 508: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 509: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 510: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Port 3

• Port 3 can be used as input or output.

• Port 3 has the additional function ofproviding some extremely importantsignals

510

Page 511: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 512: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 513: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Architecture of 8051

microcontroller

513

Page 514: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

514

Page 515: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

515

Page 516: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 517: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 518: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

8051 Program Memory,

Data Memory structure

518

Page 519: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

8051 Memory Structure

Exte

rnal

EXT INT 128

SFR

Exte

rnal

Program Memory Data Memory

64K 64K

EA = 0 EA = 1

4K

60K

519

Page 520: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Special Function

Registers [SFR]520

Page 521: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

• 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

Page 522: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 523: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 524: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Data Pointer Register (DPTR)It consists of two separate registers: DPH (Data Pointer High) &DPL (Data Pointer Low).

524

Page 525: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Stack Pointer (SP) Register

525

P0, P1, P2, P3 – Input / Output Registers

8 bit

8 bit

8 bit

8 bit

8 bit

Page 526: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

INSTRUCTION SET OF 8051

526

Page 527: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

8051 Instruction Set• The instructions are grouped into 5 groups

– Arithmetic– Logic– Data Transfer– Boolean– Branching

527

Page 528: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

1. Arithmetic Instructions• ADD A, source

A ← A + <operand>.

• ADDC A, sourceA ← A + <operand> + CY.

• SUBB A, sourceA ← A - <operand> - CY{borrow}.

528

Page 529: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

• 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

Page 530: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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)

Page 531: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

2. Logical instructions

531

Page 532: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 533: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 534: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

3. Data Transfer Instructions

534

Page 535: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 536: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

•MOVX– Data transfer between the accumulator and

a byte from external data memory.•MOVX A, @DPTR•MOVX @DPTR, A

536

Page 537: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

•PUSH / POP– Push and Pop a data byte onto the stack.

•PUSH DPL•POP 40H

537

Page 538: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

• XCH– Exchange accumulator and a byte variable

•XCH A, Rn•XCH A, direct•XCH A, @Ri

538

Page 539: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

4.Boolean variable instructions

539

Page 540: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 541: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 542: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

• 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

Page 543: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

5. Branching instructions

543

Page 544: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Jump Instructions• LJMP (long jump):

– Original 8051 has only 4KB on-chip ROM

• SJMP (short jump):– 1-byte relative address: -128 to +127

544

Page 545: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Call Instructions• LCALL (long call):

– Target address within 64K-byte range

• ACALL (absolute call): – Target address within 2K-byte range

545

Page 546: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

• 2 forms for the return instruction:– Return from subroutine – RET– Return from ISR – RETI

546

Page 547: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

547

Page 548: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

8051 Addressing

Modes

Page 549: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 550: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

1. Immediate Addressing Mode• The immediate data sign, “#”• Data is provided as a part of instruction.

550

Page 551: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

2. Register Addressing Mode• In the Register Addressing mode, the instruction involves

transfer of information between registers.

551

Page 552: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

3. Direct Addressing Mode

• This mode allows you to specify the operand by giving its actual memory address

552

Page 553: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 554: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 555: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 556: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 557: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

8. Indexed Addressing

• The Indexed addressing is useful when there is a need to retrieve data from a look-up table (LUT).

557

Page 558: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

8051 Assembly Language

Programming(ALP)

558

Page 559: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 560: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 561: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 562: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 563: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

563

Presented byC.GOKUL,AP/EEE

Velalar College of Engg & Tech , Erode

DEPARTMENTS: CSE,IT {semester 04}ECE {semester 05}

Regulation : 2013

Page 564: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

UNIT 5 Syllabus

• Programming 8051 Timers • Serial Port Programming • Interrupts Programming • LCD & Keyboard Interfacing • ADC, DAC & Sensor Interfacing • External Memory Interface• Stepper Motor

564

Page 565: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

8051 TIMERS

565

Page 566: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

8051 Timer Modes

Timer 0

Mode 3

Mode 2

Mode 1

Mode 0

Mode 2

Mode 1

Mode 0

Timer 1

8051 TIMERS

566

Page 567: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 568: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

TMOD Register

The TMOD byte is not bit addressable.

568

00- MODE 001- MODE 110- MODE 211- MODE 3

Page 569: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

TCON Register

569

TF 1-Timer 1 overflow flagTF0-TR1- Timer 1 Run control bitTR0-IE1- Interrupt 1IE0-IT1- Timer 1 interruptIT0-

Page 570: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 571: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

OSC ÷12

TL0/ 0C T =

/ 1C T =

0INT PIN

Gate

0TR0T PIN

TH0

INTERRUPT

TIMER 0

TF0

571

Page 572: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 573: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 574: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 575: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 576: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

OSC ÷12

TL1/ 0C T =

/ 1C T =

Gate

TH1

INTERRUPT

TIMER 1

TF1

1INT PIN

1TR

1T PIN

576

Page 577: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 578: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 579: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 580: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Timer modes

Page 581: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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)

Page 582: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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)

Page 583: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 584: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Programs in 8051 TIMERS

Page 585: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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.

Page 586: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 587: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 588: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 589: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Mode 1 Programming

XTALoscillator ÷ 12

TR

TH TL TF

Timeroverflow

flag

C/T = 0

TF goes high when FFFF 0

Page 590: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 591: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 592: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 593: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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).

Page 594: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 595: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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.

Page 596: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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.

Page 597: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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.

Page 598: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 599: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Programs in 8051 TIMERS

Another Explanation

MODE 1 Programming{16 bit mode}

Page 600: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes
Page 601: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes
Page 602: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes
Page 603: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes
Page 604: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes
Page 605: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes
Page 606: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

MODE 2 Programming{8 bit mode}

Auto Reload Mode

Page 607: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes
Page 608: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes
Page 609: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes
Page 610: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes
Page 611: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

8051 Serial Port

611

Page 612: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

612

Page 613: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 614: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

614

Page 615: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

615

Page 616: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 617: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Asynchronous – Start & Stop Bit

617

Page 618: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 619: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 620: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Registers related to Serial Communication

1. SBUF Register

2. SCON Register

3. PCON Register

620

Page 621: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 622: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

SBUF Register

• Sample Program:

622

Page 623: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 624: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 625: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 626: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 627: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 628: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Programs in 8051 serial port

TIMER 1 MODE 2 {AUTO RELOAD}

Page 629: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes
Page 630: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes
Page 631: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes
Page 632: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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.

Page 633: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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.

Page 634: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Write a program to transfer the message “YES” serially at 9600 baud, 8 -bit data, 1 stop bit. Do this continuously.

Page 635: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

8051 Interrupts

635

Page 636: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 637: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 638: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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.

Page 639: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 640: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 641: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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}

Page 642: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

8051 Interrupt Vectors

642

Page 643: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 644: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Enabling and Disabling an Interrupt

• The register called IE (interrupt enable) that isresponsible for enabling (unmasking) and disabling(masking) the interrupts.

644

Page 645: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 646: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Interrupt Priority

646

Page 647: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 648: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

648

Page 649: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

KEYBOARD INTERFACING

649

Page 650: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 651: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

•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

Page 652: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

4x4 matrix

652

Page 653: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

653

Page 654: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Connection with keyboard matrix

Page 655: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Final Circuit

Page 656: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Stepper Motor Interfacing

656

Page 657: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 658: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

658

Page 659: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

659

Page 660: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Full step

660

Page 661: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 662: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 663: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

LCD Interfacing using 8051

{before discussed in Unit 3 LCD interfacing using 8086}

663

Page 664: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

664

Page 665: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Pin Connections of LCD:

665

Page 666: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

666

Page 667: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

A/D Interfacing using 8051

{before discussed in Unit 3 A/D interfacing using 8086}

667

Refer book Mohammad Ali Explanation is not sufficient

Page 668: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 669: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

ADC Interfacing:

669

Page 670: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

D/A Interfacing using 8051

{before discussed in Unit 3 D/A interfacing using 8086}

670

Refer book Mohammad Ali Explanation is not sufficient

Page 671: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

8051 Connection to DAC808

671

Page 672: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

program to send data to the DAC to generate a stair-step ramp

672

Page 673: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

SENSOR INTERFACING

take temperature sensor for example

673

Refer book Mohammad Ali Explanation is not sufficient

Page 674: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

674

Page 675: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

675

Shunt voltage diodes

potentiometer

Page 676: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

EXTERNAL MEMORY

INTERFACING676

Refer book Mohammad Ali Explanation is not sufficient

Page 677: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 678: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

Presented by C.GOKUL,AP/EEE , Velalar College of Engg & Tech, Erode

678

Page 679: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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

Page 680: MICROPROCESSOR & MICROCONTROLLER 8086,8051 Notes

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