Good Notes For Microctroller-1
Good Notes For Microctroller-1
Microprocessor
and
Microcontroller
NTA LEVEL 7 SEM 2
UNIT -1
THE 8086 MICROPROCESSORS
• A microprocessor is an electronic component that is used by a
computer to do its work. It is a central processing unit on a
single integrated circuit chip containing millions of very small
components including transistors, resistors, and diodes that
work together.
Evolution of Microprocessor
UNIT 1
THE 8086
MICROPROCESSOR
Introduction to 8086 – Microprocessor
architecture – Addressing modes - Instruction
set and assembler directives – Assembly
language programming – Modular
Programming - Linking and Relocation - Stacks
- Procedures – Macros – Interrupts and
interrupt service routines – Byte and String
Manipulation.
UNIT 1
THE 8086 MICROPROCESSOR
FEATURES OF 8086
• The 8086 is a 16 bit processor.
• The 8086 has a 16 bit Data bus.
• The 8086 has a 20 bit Address bus.
• Direct addressing capability 1 M Byte of
Memory (220)
• It provides fourteen 16-bit register.
• 24 Operand addressing modes.
• Four general-purpose 16-bit registers: AX, BX,
CX, DX
• Available in 40pin Plastic Package and Lead
Chip.
8086 MICROPROCESSOR ARCHITECTURE
the 8086 processor are partitioned logically into
two processing units
• Bus Interface Unit (BIU)
The BIU fetches instructions, reads data from
memory and ports, and writes data to memory
and I/O ports.
• Execution Unit (EU)
EU receives program instruction codes and data
from the BIU, executes these instructions and
stores the results either in the general registers or
output them through the BIU. EU has no
connections to the system buses.
The BIU contains
• Segment registers
• Instruction pointer
• Instruction queue
The EU contains
• ALU
• General purpose registers
• Index registers
• Pointers
• Flag register
General Purpose Registers
All general registers of the 8086 microprocessor can be
used for arithmetic and logic operations.
• Accumulator register (AX)
Accumulator can be used for I/O operations and string
manipulation.
• Base register (BX)
BX register usually contains a data pointer used for
based, based indexed or register indirect addressing.
• Count register (CX)
Count register can be used as a counter in string
manipulation and shift/rotate instructions.
• Data register (DX)
Data register can be used as a port number in I/O
operations.
Segment Registers:
Most of the registers contain data/instruction offsets within
64 KB memory segment. There are four different 64 KB
segments for instructions, stack, data and extra data.
• Code segment (CS)
The CS register is automatically updated during FAR
JUMP, FAR CALL and FAR RET instructions.
• Stack segment (SS)
SS register can be changed directly using POP instruction.
• Data segment (DS)
DS register can be changed directly using POP and LDS
instructions.
• Extra segment (ES)
ES register can be changed directly using POP and LES
instructions.
Pointer Registers
Stack Pointer (SP)
It is a 16-bit register pointing to program stack.
Base Pointer (BP)
It is a 16-bit register pointing to data in the stack
segment. BP register is usually used for based, based
indexed or register indirect addressing.
Index Registers
Source Index (SI)
It is a 16-bit register. SI is used for indexed, based
indexed and register indirect addressing, as well as a
source data address in string manipulation instructions.
Destination Index (DI)
It is a 16-bit register. DI is used for indexed, based
indexed and register indirect addressing, as well as a
destination data address in string manipulation
instructions.
Instruction Pointer (IP)
It is a 16-bit register. The operation is same as the
program counter. The IP register is updated by
the BIU to point to the address of the next
instruction. Programs do not have direct access
to the IP, but during execution of a program the
IP can be modified or saved and restored from the
stack.
Flag register
It is a 16-bit register containing nine 1-bit flags:
• Six status or condition flags (OF, SF, ZF, AF, PF,
CF)
• Three control flags ( TF, DF, IF)
• Overflow Flag (OF) - set if the result is too large positive number,
or is too small negative number to fit into destination operand.
• Sign Flag (SF) - set if the most significant bit of the result is
set.
• Zero Flag (ZF) - set if the result is zero.
• Auxiliary carry Flag (AF) - set if there was a carry from or
borrow
to bits 0-3 in the AL register.
• Parity Flag (PF) - set if parity (the number of “1” bits) in the
low-
order byte of the result is even.
• Carry Flag (CF) - set if there was a carry from or borrow to the
most significant bit during last result calculation.
• Trap or Single-step Flag (TF) - if set then single-step interrupt
will
occur after the next instruction.
• Direction Flag (DF) - if set then string manipulation instructions
Instruction Queue
The instruction queue is a First-In-First-out (FIFO)
group of registers where 6 bytes of instruction
code is pre-fetched from memory ahead of time.
It is being done to speed-up program execution
by overlapping instruction fetch and execution.
This mechanism is known as PIPELINING.
ALU
It is a 16 bit register. It can add, subtract,
increment, decrement, complement, shift
numbers and performs AND, OR, XOR operations.
Control unit
The control unit in the EU directs the internal
operations like RD , WR , M/IO
Instruction Set
• Data moving instructions.
• Arithmetic instructions - add, subtract, increment,
decrement, convert byte/word and compare.
• Logic instructions - AND, OR, exclusive OR,
shift/rotate and test.
• String manipulation instructions - load, store,
move, compare and scan for byte/ word.
• Control transfer instructions - conditional,
unconditional, call subroutine and return from
subroutine.
• Input/Output instructions.
• Other instructions - setting/clearing flag bits, stack
operations, software interrupts, etc.
Addressing modes
• Implied - the data value/data address is implicitly associated with the
instruction.
• Register - references the data in a register or in a register pair.
• Immediate - the data is provided in the instruction.
• Direct - the instruction operand specifies the memory address where
data is
located.
• Register indirect - instruction specifies a register containing an address,
where data is located. This addressing mode works with SI, DI, BX and BP
registers.
• Based - 8-bit or 16-bit instruction operand is added to the contents of a
base register (BX or BP), the resulting value is a pointer to location where
data resides.
• Indexed - 8-bit or 16-bit instruction operand is added to the contents of an
index register (SI or DI), the resulting value is a pointer to location where
data resides.
• Based Indexed - the contents of a base register (BX or BP) is added to the
contents of an index register (SI or DI), the resulting value is a pointer to
location where data resides.
• Based Indexed with displacement - 8-bit or 16-bit instruction operand is
added to the contents of a base register (BX or BP) and index register (SI or
DI), the resulting value is a pointer to location where data resides.
Interrupts
Hardware interrupts
Maskable and non-maskable interrupts
Software interrupts
ADDRESSING MODES
• An addressing mode is the way the 8086 identifies the operands for
the instruction. All instructions that access the data use one or more
of the addressing modes.
• The memory address of an operand consists of two components
1.Starting address of the memory segment
2.Offset
• When an operand is stored in a memory location, how for the
operand’s memory location is within a memory segment from the
starting address of the segment, is called Offset or Effective Address
(EA).
• The 8086 uses 20 bit memory address. The segment register gives
16 MSBs of the starting address of the memory segment. The BIU
generates 20 bit starting address of the memory segment by shifting
the content of the segment register left by 4 bits. In other words it
puts 4 zeros in 4 LSB positions.
• Memory Address = Starting address of the memory segment +
Offset
The 8086 has the following addressing modes:
• Register Addressing Mode
• Immediate Addressing Mode
• Direct Addressing Mode
• Register Indirect Addressing Mode
• Base Addressing Mode
• Indexed Addressing Mode
• Based Indexed Addressing Mode
• String Addressing Mode
• I/O Port Addressing Mode
• Relative Addressing Mode
• Implied Addressing Mode
Register Addressing Mode
• Both source and destination operands are
registers. The operand sizes must match. MOV
destination, source
• Examples:
• MOV AL, AH
• MOV AX, BX
Immediate Addressing Mode
• The data operand is supplied as part of the
instruction. The immediate operand can only be a
source.
• Examples:
• MOV CH, 3A H
• MOV DX, 0C1A5 H
Direct Addressing Mode
• One of the operands is a memory location, given by a
constant offset.
• In this mode the 16 bit effective address (EA) is
taken
directly from the displacement field of the instruction.
• Examples:
• MOV AX,[1234 H]
• MOV DL, [3BD2 H],
Register Indirect Addressing Mode
• One of the operands is a memory location, with the
offset given by one of the BP, BX, SI, or DI registers.
• Example:
• MOV [BX], CL
• MOV DL, [BX]
Base Addressing Mode
• In this mode EA is obtained by adding a
displacement (signed 8 bit or unsigned 16 bit)
value to the contents of BX or BP. The segment
registers used are DS and SS.
• Example:
• MOV AX, [BP + 200]
Indexed Addressing Mode
• The operand’s offset is the sum of the content of
an index register SI or DI and an 8-bit or 16-bit
displacement.
• Example:
• MOV AH, [DI]
Based Indexed Addressing Mode
• In this mode, the EA is computed by adding a base
register (BX or BP), an index register (SI or DI) and a
displacement (unsigned 16 bit or sign extended 8
bit)
• Example:
• MOV AX, [BX + SI + 1234 H]
• MOV CX, [BP][SI] + 4
String Addressing Mode
• The instruction is a string instruction, which uses
index registers implicitly to access memory.
• Example:
• MOVS B
• MOVS W
I/O Port Addressing Mode
• The destination or source of the data is an I/O port.
Either direct port addressing (including an 8-bit port
address) or indirect addressing (DX must contain the
port address) may be used.
• Examples:
• IN AX, 50H ; Direct
• OUT DX, AL ; Indirect
Relative Addressing Mode
• In this mode, the operand is specified as a signed 8
bit displacement, relative to PC(Program Counter).
• Examples:
• JMP 0200 H
• JNC START
Implied Addressing Mode
• Instructions using this mode have no operands.
• Examples:
• CLC, STC, CMC
INSTRUCTION SET
• Intel 8086 has approximately 117 instructions. These
instructions are used to transfer data between
registers, register to memory, memory to register or
register to I/O ports and other instructions are used for
data manipulation.
• But in Intel 8086 operations between memory to
memory is not permitted. These instructions are
classified in to six-groups as follows.
1.Data Transfer Instructions
2.Arithmetic Instructions
3.Bit Manipulation Instructions
4.String Instructions
5.Program Execution Transfer Instructions
6.Processor Control Instructions
Data Transfer Instructions
1.MOV
• MOV destination, source
• This (Move) instruction transfers a byte or a word
from the source operand to the destination
operand.
• (DEST) (SRC)
• DEST = Destination
• SRC = Source
• Example :
• MOV AX, BX
• MOV AX, 2150H
• MOV AL, [1135]
2.PUSH
• PUSH Source
• This instruction decrements SP (stack pointer)
by 2 and then transfers a word from the
source operand to the top of the stack now
pointed to by stack pointer.
• (SP) (SP) 2
• ((SP)+1 : (SP)) (SRC)
• Example :
• PUSH SI
• PUSH BX
3.POP
• POP destination
• This instruction transfers the word at the
current top of stack (pointed to by SP) to the
destination operand and then increments SP
by 2, pointing to the new top of the stack.
• (DEST) ((SP)+1:(SP))
• (SP) (SP) + 2
• Example :
• POP DX
• POP DS
LAHF
• Load Register AH from Flags
• This instruction copies Sign flag(S), Zero flag (Z),
Auxiliary flag (AC), Parity flag (P) and Carry flag
(C) of 8086 into bits 7, 6, 4, 2 and 0 respectively,
of register AH
SAHF
• Store Register AH into Flags
• This instruction transfers bits 7, 6, 4, 2 and 0 from
register AH into S, Z, AC, P and C flags
respectively, thereby replacing the previous
values.
XCHG
• XCHG destination, source
• This (Exchange) instruction switches the contents of the source and
destination operands.
XLAT
• XLAT table
• This (Translate) instruction replaces a byte in the AL register with a byte
from a 256-byte, user-coded translation table. XLAT is useful for
translating characters from one code to another.
• AL ((BX) + (AL))
• Example :
• XLAT ASCII_TAB
• XLAT Table_3
LEA
• LEA destination, source
• This (Load Effective Address) instruction transfers the offset of the
source operand (memory) to the destination operand (16-bit
general register).
• (REG) EA
• Example :
• LEA BX, [BP] [DI]
• LEA SI, [BX + 02AF H]
LDS
• LDS destination, source
• This (Load pointer using DS) instruction transfers a 32-bit pointer
variable from the source operand (memory operand) to the
destination operand and register DS.
• (REG) (EA)
• (DS) (EA+2)
• Example :
• LDS SI, [6AC1H]
LES
• LES destination, source
• This (Load pointer using ES) instruction transfers a 32-bit pointer variable from the
source operand (memory operand) to the destination operand and register ES.
• (REG) (EA)
• (ES) (EA+2)
• Example :
• LES DI, [BX]
IN
• IN accumulator, port
• This (Input) instruction transfers a byte or a word from an input port to the
accumulator (AL or AX).
• (DEST) (SRC)
• Example :
• IN AX, DX
• IN AL, 062H
OUT
• OUT port, accumulator
• This (Output) instruction transfers a byte or a word from the accumulator (AL or AX)
to an output port.
• (DEST) (SRC)
• Example :
• OUT DX, AL
• OUT 31, AX
Arithmetic Instructions
ADD
• ADD destination, source
• This (Add) instruction adds the two operands (byte or word) and stores
the result in destination operand.
• (DEST) (DEST) + (SRC)
• Example :
• ADD CX, DX
• ADD AX, 1257 H
• ADD BX, [CX]
ADC
• ADC destination, source
• This (Add with carry) instruction adds the two operands and adds
one if
carry flag (CF) is set and stores the result in destination operand.
• (DEST) (DEST) + (SRC) + 1
• Example :
• ADC AX, BX
• ADC AL, 8
• ADC CX, [BX]
SUB
• SUB destination, source
• This (Subtract) instruction subtracts the source operand from the
destination operand and the result is stored in destination operand.
• (DEST) (DEST) – (SRC)
• Example :
• SUB AX, 6541 H
• SUB BX, AX
• SUB SI, 5780 H
SBB
• SBB destination, source
• This (Subtract with Borrow) instruction subtracts the source from the
destination and subtracts 1 if carry flag (CF) is set. The result is stored
in destination operand.
• (DEST) (DEST) – (SRC) –1
• Example :
• SBB BX, CX
• SBB AX, 2
CMP
• CMP destination, source
• This (Compare) instruction subtracts the source from the
destination, but does not store the result.
• (DEST) – (SRC)
• Example :
• CMP AX, 18
• CMP BX, CX
INC
• INC destination
• This (Increment) instruction adds 1 to the destination
operand (byte or word).
• (DEST) (DEST) + 1
• Example :
• INC BL
• INC CX
DEC
• DEC destination
• This (Decrement) instruction subtracts 1 from the
destination operand. (DEST) (DEST) –1
• Example :
• DEC BL
• DEC AX
NEG
• NEG destination
• This (Negate) instruction subtracts the destination
operand from 0 and stores the result in destination.
This forms the 2’s complement of the number.
• (DEST) 0 – (DEST)
• Example :
• NEG AX
• NEG CL
DAA
• This (Decimal Adjust for Addition) instruction converts the
binary result of an ADD or ADC instruction in AL to packed
BCD format.
DAS
• This (Decimal Adjust for Subtraction) instruction converts
the binary result of a SUB or SBB instruction in AL to packed
BCD format.
AAA
• This (ASCII Adjust for Addition) instruction adjusts the
binary result of ADD or ADC instruction.
• If bits 0-3 of AL contain a value greater than 9, or if the
auxiliary carry flag (AF) is set, the CPU adds 06 to AL and
adds 1 to AH. The bits 4-7 of AL are set to zero.
• (AL) (AL) + 6
• (AH) (AH) + 1
• (AF) 1
AAS
• This (ASCII Adjust for Subtraction) instruction adjusts the binary
result of a SUB or SBB instruction.
• If D3–D0 of AL > 9,
• (AL) (AL) – 6
• (AH) (AH) – 1
• (AF) 1
MUL
• MUL source
• This (Multiply) instruction multiply AL or AX register by register or
memory location contents. Both operands are unsigned numbers. If
the source is a byte (8 bit), then it is multiplied by register AL and
the result is stored in AH and AL.
• If the source operand is a word (16 bit), then it is multiplied by
register AX and the result is stored in AX and DX registers.
• If 8 bit data, (AX) (AL) x (SRC)
If 16 bit data, (AX), (DX) (AX) x (SRC)
Example :
• MUL 25
• MUL CX
• IMUL
• IMUL Source
• This (Integer Multiply) instruction performs a signed
multiplication of the source operand and the accumulator.
• If 8 bit data, (AX) (AL) x (SRC)
• If 16 bit data, (AX), (DX) (AX) x (SRC)
• Example :
• IMUL 250
• IMUL BL
AAM
• This (ASCII Adjust for Multiplication) instruction adjusts
the binary result of a MUL instruction. AL is divided by
10(0AH) and quotient is stored in AH. The remainder is
stored in AL.
• (AH) (AL/0AH)
• (AL) Remainder
DIV
• DIV Source
• This (Division) instruction performs an unsigned
division of the accumulator by the source operand. It
allows a 16 bit unsigned number to be divided by an 8
bit unsigned number, or a 32 bit unsigned number to
be divided by a 16 bit unsigned number.
• For 8 bit data, AX / source
(AL) Quotient
(AH) Remainder
• For 16 bit data, AX, DX / Source
(AX) Quotient
(DX) Remainder
• Example :
• DIV CX
• DIV 321
IDIV
• IDIV source
• This (Integer Division) instruction performs a signed division of the accumulator by
the source operand.
• For 8 bit data, AX / Source
(AL) Quotient
(AH)
• Remainder
For 16 bit data, AX, DX / Source
(AX)
Quotient
• Example : (DX)
Remainder
• IDIV CL
• IDIV AX
AAD
• This (ASCII Adjust for Division) instruction adjusts the unpacked BCD dividend in
AX before a division operation. AH is multiplied by 10(0AH) and added to AL. AH is
set to zero.
• (AL) (AH x 0AH) + (AL)
• (AH) 0
CBW
• This (Convert Byte to Word) instruction converts
a byte to a word. It extends the sign of the byte in
register AL through register AH. This instruction
can be used for 16 bit IMUL or IDIV instruction.
• IF AL < 80 H, then AH = 00 H
• IF AL > 80 H, then AH = FFH
CWD :
• This (Convert Word to Double word) instruction
converts a word to a double word.
• It extends the sign of the word in register AX
through register DX.
• If AX < 8000 H, then DX = 0000 H
• If AX > 8000 H, then DX = FFFFH
Bit Manipulation Instructions
(i)Logical Instructions: AND, OR, XOR, NOT,
TEST
(ii)Shift Instructions: SHL, SAL, SHR, SAR
(iii)Rotate Instructions: ROL, ROR, RCL, RCR
AND
• AND destination, source
• This (AND) instruction performs the logical “AND” of the source
operand with the destination operand and the result is stored in
destination.
• (DEST) ¬ (DEST) “AND” (SRC)
• Example :
• AND BL, CL
• AND AL, 0011 1100 B
OR
• OR destination, source
• This (OR) instruction performs the logical “OR” of the source
operand with the destination operand and the result is stored in
destination.
• (DEST) ¬ (DEST) “OR” (SRC)
• Example :
• OR AX, BX
• OR AL, 0000 1111B
XOR
• XOR destination, source
• This (Exclusive OR) instruction performs the logical “XOR”
of the two operands and the result is stored in destination
operand.
• (DEST) ¬ (DEST) “XOR” (SRC)
• Example :
• XOR BX, AX
• XOR AL, 1111 1111B
NOT
• NOT destination
• This (NOT) instruction inverts the bits (forms the 1’s
complement) of the byte or word.
• (DEST) ¬ 1’s complement of (DEST)
• Example :
• NOT AX
TEST
• TEST destination, source
• This (TEST) instruction performs the logical “AND” of the two operands and
updates the flags but does not store the result.
• (DEST) “AND” (SRC)
• Example :
• TEST AL, 15 H
• TEST SI, DI
SHL
• SHL destination, count
• This (Shift Logical Left) instruction performs the shift operation. The number
of bits to be shifted is represented by a variable count, either 1 or the number
contained in the CL register.
• Example
• SHL AL, 1
• Before execution :
SAL
• SAL destination, count
• SAL (Shift Arithmetric Left) and SHL (Shift Logical Left) instructions perform the same
operation and are physically the same instruction.
• Example
• SAL AL, CL
• SAL AL, 1
SHR
• SHR destination, count
• This (Shift Logical Right) instruction shifts the bits in the destination operand to the
right by the number of bits specified by the count operend, either 1 or the number
contained in the CL register.
• Example
• SHR BL, 1
• SHR BL, CL
SAR
• SAR destination, count
• This (Shift Arithmetic Right) instruction shifts the bits in the
destination operand to the right by the number of bits specified in
the count operand. Bits equal to the original high-order (sign) bits are
shifted in on the left, thereby preserving the sign of the original value.
ROL
ROL destination, count
This (Rotate Left) instruction rotates the bits in the byte/word destination operand to the
left by the number of bits specified in the count operand.
ROR
• ROR destination, count
• This (Rotate Right) instruction rotates the bits in the byte/word
destination operand to the right by the number of bits specified in the
count operand.
RCL
RCL destination, count
This (Rotate through Carry Left) instruction rotates the contents left through
carry by the specified number of bits in count operand.
RCR
• RCR destination, count
• This (Rotate through Carry Right) instruction rotates the contents right
through carry by the specified number of bits in the count operand.
STRING INSTRUCTIONS
REP
• REP MOVS destination, Source
• This (Repeat) instruction converts any string primitive
instruction into a re-executing loop. It specifies a termination
condition which causes the string primitive instruction to
continue executing until the termination condition is met.
• Example :
• REP MOVS CL, AL
• The other Repeat instructions are :
• REPE - Repeat while Equal
• REPZ - Repeat while zero
• REPNE - Repeat while Not Equal
• REPNZ - Repeat while Not Zero
• The above instructions are used with the CMPS and SCAS
instructions.
MOVS
• MOVS destination - string, source-string
• This (Move String) instruction transfers a byte/word
from the source string (addressed by SI) to the
destination string (addressed by DI) and updates SI and
DI to point to the next string element.
• (DEST) (SRC)
• Example :
• MOVS Buffer 1, Buffer 2
CMPS
• CMPS destination-string, source-string
• This (Compare String) instruction subtracts the
destination byte/word (addressed by DI) from the source
byte/word (addressed by SI). It affects the flags but does
not affect the operands.
• Example :
• CMPS Buffer 1, Buffer 2
SCAS
• SCAS destination-string
• This (Scan String) instruction subtracts the destination string element (addressed by
DI) from the contents of AL or AX and updates the flags.
• Example :
• SCAS Buffer
LODS
• LODS source-string
• This (Load String) instruction transfers the byte/word string element addressed by SI
to register AL or AX and updates SI to point to the next element in the string.
• (DEST) (SRC)
• Example :
• LODSB name
• LODSW name
STOS
• STOS destination - string
• This (Store String) instruction transfers a byte/word from register AL or AX to the
string element addressed by DI and updates DI to point to the next location in the
string.
• (DEST) (SRC)
• Example :
• STOS display
Program Transfer Instructions
• (i)Unconditional instructions: CALL, RET, JMP
• (ii)Conditional instructions: JC, JZ, JA.....
• (iii)Iteration control instructions :LOOP, JCXZ
• (iv)Interrupt instructions: INT, INTO, IRET
CALL
• CALL procedure - name
• This (CALL) instruction is used to transfer execution
to a subprogram or procedure. RET (return)
instruction is used to go back to the main program.
There are two basic types of CALL : NEAR and FAR
• Example :
• CALL NEAR
• CALL AX
RET
• This (Return) instruction will return execution from a
procedure to the next instruction after the CALL
instruction in the main program.
• Example :
• RET
• RET 6
JMP
• JMP target
• This (Jump) instruction unconditionally transfers control to
the target location. The target operand may be obtained
from the instruction itself (direct JMP) or from memory or
a register referenced by the instruction (indirect JMP).
• Example :
• JMP BX
LOOP
• LOOP label
• This (Loop if CX not zero) instruction
decrements CX by 1 and transfers control to
the target operand if CX is not zero. Otherwise
the instruction following LOOP is executed.
• If CX=0, CX = CX–1
• IP = IP+displacement
• If CX=0, then the next sequential instruction is
executed.
• Example :
• LOOP again
Processor Control Instructions
HLT
• This (Halt) instruction will cause the 8086 to stop fetching
and executing instructions. The 8086 will enter a halt
state.
WAIT
• This (Wait) instruction causes the 8086 to enter the wait
state while its test line is not active.
ESC
• This (Escape) instruction provides a mechanism by which
other coprocessors may receive their instructions from
the 8086 instruction stream and make use of the 8086
addressing modes. The 8086 does a no operation (NOP)
for the ESC instruction other than to access a memory
operand and place it on the bus.
NOP
• This (No operation) instruction causes the
CPU to do nothing. NOP does not affect any
flags.
ASSEMBLER DIRECTIVES
• An assembler is a program which translates an
assembly language program into machine language
program.
• An assembler directive is a statement to give
direction to the assembler to perform the task of
assembly process.
• The assembler directives control organization of the
program and provide necessary information to the
assembler to understand assembly language
programs to generate machine codes.
• An assembler supports directives to define data, to
organize segments, to control procedures, to define
macros etc.
• An assembly language program consists of two
types of statements: Instructions and Directives.
Some assembler directives are,
• Borland Turbo Assembler (TASM)
• IBM Macro Assembler (MASM)
• Intel 8086 Macro Assembler (ASM)
• Microsoft Macro Assembler
ASSUME
• The ASSUME directive enables error-checking
for register values.
• It is used to inform the assembler the names
of the logical segments, which are to be
assigned to the different segments used in an
assembly language program
• Format:
• ASSUME segregister:name [ [, segregister:name]]...
• ASSUME dataregister:type [[, dataregister:type]]...
• ASSUME register:ERROR [[, register:ERROR]]...
• ASSUME [[register:]] NOTHING [[, register:NOTHING]]...
DB (Define Byte)
• It can be used to define data like BYTE.
• Format:
• Name of the Variable DB Initial values
• Example:
• WEIGHTS DB 18, 68, 45
DW (Define Word)
• It can be used to define data like WORD (2 bytes).
• Format:
• Name of the Variable DW Initial values
• Example:
• SUM DW 4589
DD (Define Double Word)
• It can be used to define data like DWORD (4
bytes).
• Format:
• Name of the Variable DD Initial values
• Example:
• NUMBER DD 12345678
DQ (Define Quad Word)
• It can be used to define data like QWORD (8
bytes).
• Format:
• Name of the Variable DQ Initial values
• Example:
• TABLE DQ 1234567812345678
DT (Define Ten Bytes)
• It can be used to define data like TBYTE (10 bytes).
• Format:
• Name of the Variable DT Initial values
• Example:
• AMOUNT DT 12345678123456781234
END (End of program)
• It marks the end of a program module and, optionally,
sets the program entry point to address.
• Format:
• END [ [address] ]
• Example:
• END label
ENDP (End Procedure)
• It marks the end of procedure.
• name previously begun with PROC.
• Format:
• nameENDP
• Example:
CONTROL PROC FAR
.
.
.
CONTROL ENDP
• ENDM (End Macro)
• It terminates a macro or repeat block.
• Format:
• ENDM
• Example:
CODE MACRO
.
.
.
END
M
• ENDS (End of Segment)
• It marks the end of segment, structure, or union name previously
begun with SEGMENT, STRUCT, UNION, or a simplified segment
directive.
• Format:
• name ENDS
• Example:
CODE SEGMENT
.
.
.
CODEENDS
EQU (Equate)
• It assigns numeric value of expression or text to name. The
name
cannot be redefined later.
Format: EQU expression
• •name
• name EQU <text>
• Example:
• CLEAR_CARRY EQU CLC
• EVEN (Align on Even memory Address)
• Format:
• EVEN
• Example:
• SALES DB 9
• EVEN
• DATA_ARRAY DW 100 DUP (?)
INCLUDE
• This directive inserts source code from the source file given by
filename into the current source file during assembly. The filename
must be enclosed in angle brackets if it includes a backslash,
semicolon, greater-than symbol, less-than symbol, single quotation
mark, or double quotation mark.
• Format:
• INCLUDE filename
• Example:
• INCLUDE C: \ MICRO \ ASSEM.LEV
• The above directive informs assembler to include all statements
mentioned in the file, ASSEM.LEV from the directory C: \ MICRO.
MACRO
• A sequence of instructions to which a name is
assigned is called a macro. The name of a macro
is used in assembly language programming.
Macros and subroutines are similar. Macros are
used for short sequences of instructions, where
as subroutines for longer ones. Macros execute
faster than subroutines. A subroutine requires
CALL and RET instructions whereas macros do
not.
• Format:
• name MACRO [ optional arguments ]
• statements ENDM
ASSEMBLY LANGUAGE
PROGRAMMING
Program
A computer can only do what the programmer
asks to do. To perform a particular task the
programmer prepares a sequence of instructions,
called a program.
Programming languages
• Microcomputer programming languages can
typically be divided into three main types:
1.Machine language
2.Assembly language 3.High-level language
Machine language
• A program written in the form of 0s and 1s is
called a machine language program. In the
machine language program there is a specific
binary code for each instruction.
• A microprocessor has a unique set of machine
language instructions defined by its
manufacturer.
• For example, the Intel 8085 uses the code
1000 11102 for its addition instruction while the
Motorola 6800 uses the code 1011 10012.
The machine language program has the following
demerits:
• It is very difficult to understand or debug a
program.
• Program writing is difficult.
• Programs are long.
• More errors occur in writing the program.
• Since each bit has to be entered individually
the entry of a program is very slow.
Assembly language
• Assembly language programming is writing machine
instructions in mnemonic form, using an assembler to
convert these mnemonics into actual processor
instructions and associated data.
The advantages of assembly language programming
1.The computation time is less.
2.It is faster to produce result.
The disadvantages of assembly language
programming
• many instructions are required to achieve small
tasks
• source programs tend to be large and difficult to
High-level language
• High level language programs composed of English-
language-type statements rectify all deficiencies of
machine and assembly language programming. The
high level languages are FORTRON, COBAL, BASIC, C,
C++, Pascal, Visual Basic etc.
The high level language program has the following
demerits:
• One has to learn the special rules for writing
programs in a particular high level language.
• Low speed.
• A compiler has to be provided to convert a high
level
language program into a machine language
Assembly language program
• Assembly language statements are written one
per line.
• A machine code program thus consists of a
sequence of assembly language statements,
where each statement contains a mnemonic.
• Each line of an assembly language program is split
into four fields, as below:
1.Label field
2.Mnemonic or Opcode field
3.Operand field
4.Comment field
As an example, a typical program for block transfer
of data written in 8086 assembly language is
given here.
LABEL
• The label field is optional. A label is an identifier.
• A label can be used to refer to a memory location
the value of a piece of data the address of a
program, sub-routine, code portion etc.
START: LDAA #24H
JMP START
• Here, the label START is equal to the address of the
instruction LDAA #24H. The label is used in the
program as a reference. This would result in the
processor jumping to the location (address)
associated with the label START, thus executing the
instruction LDAA #24H immediately after the JMP
instruction.
OPCODE
• Each instruction consists of an opcode
(Mnemonic) and possible one or more operands.
In the above instruction
JMP START
• The opcode is JMP and the operand is
the
address of the label START.
Mnemonics are used because they
• are more meaningful than hex or binary values
• reduce the chances of making an error
• are easier to remember than bit values
OPERAND
• The operand field consists of additional information or data that the
opcode requires. In certain types of addressing modes, the operand is
used to specify
• constants or labels
• immediate data
• data contained in another accumulator or register
• an address
Examples of operands are
• JNZ STEP1
• MOV AX, 5000 H
• MOV AX, BX
• MOV AX, [3000 H]
COMMENTS
• The comment field is optional, and is used by the programmer to
explain how the coded program works. Comments are preceded by a
semi-colon. The assembler, when generating instructions from the
source file, ignores all comments.
Assembly Language Program - Development Tools
• Editor
• Assembler
• Linker
• Locator
• Loader
• Debugger
• Emulator
Editor:
• An editor is a program which allows creating a file containing the assembly
language statements for the program.
Assembler:
• An assembler is a program which translates an assembly language program
into
machine language program.
Linker:
• A linker is a program which links smaller programs together to form a large
program. It is used to join several object files into one large object file. It also
links the subroutines with the main program.
Locator:
• A locator is a program which assigns specific memory addresses for the machine
codes of the program, which is to be loaded into the memory.
Loader:
• A loader is a program which loads object code into system memory. It can
accept programs in absolute or relocatable format.
Debugger:
• A debugger is a program which allows user to test and debug programs.
Emulator:
• An emulator is a mixture of software and hardware. It is usually used to test
and
debug the software and hardware of an external system.
MODULAR PROGRAMMING
• Modular programming is subdividing the complex
program into separate subprograms such as
functions and subroutines.
• Similar functions are grouped in the same unit of
programming code and separate functions are
developed as separate units of code so that the code
can be reused by other applications.
• For example, if a program needs initial and boundary
conditions, use subroutines to set them.
• Then if someone else wants to compute a different
solution using the program, only these subroutines
need to be changed. This is very easier than having
to read through a program line by line, trying to
figure out what each line is supposed to do and
whether it needs to be changed.
• Subprograms make the actual program shorter,
hence easier to read and understand. Further, the
arguments show exactly what information a
subprogram is using. That makes it easier to
figure out whether it needs to be changed when
modifying the program.
ALPs are developed by essentially the same
procedure as high-level language programs by,
• Exactly stating what the program is to do.
• Splitting the overall problem into tasks.
• Defining exactly what each task must do and
how
it is to communicate with the other tasks.
• Putting the tasks into assembler language
modules and connecting the modules together to
form the program.
• Debugging and testing the program.
• Documenting the program.
The benefits of using modular programming are,
• Modular programming allows many
programmers to collaborate on the same
application.
• Same code can be used in many applications.
• Code is short, simple and easy to understand.
• Code is stored across multiple files.
• A single procedure can be developed for reuse,
eliminating the need to retype the code many
times.
• Errors can easily be identified, as they are
localized to a subroutine or function.
LINKING AND RELLOCATION
The process combines the following.
• Find the object modules to be linked.
• Construct the load module by assigning the
positions of all of all the segments in all of the
object modules being linked.
• Fill in all offset that could not be determined by
the assembler.
• Fill in all segment address.
• Load the program for execution.
Segment combination
• In addition to the linker commands, the
assembler provides a means of regulating the way
segments in different object modules are
organized by the linker. Segments with same
name are joined together by using the modifiers
attached to the SEGMENT directives. SEGMENT
directive may have the form:
• Segment name SEGMENT Combination-type
PROCEDURES & MACROS
• A single instruction that expands automatically
into a set of instructions to perform a particular
task.
• A macro (which stands for "macroinstruction") is
a programmable pattern which translates a
certain sequence of input into a preset sequence
of output. Macros can be used to make tasks less
repetitive by representing a complicated
sequence of keystrokes, mouse movements,
commands, or other types of input.
Macro definition:
name MACRO [parameters,...]
statements >
ENDM
Advantages of macros
• Repeated small groups of instructions replaced by one macro
• Errors in macros are fixed only once, in the definition
• Duplication of effort is reduced
• In effect, new higher level instructions can be created
• Programming is made easier, less error prone
• Generally quicker in execution than subroutines
Disadvantages of macros
• In large programs, produce greater code size than procedures
When to use Macros
• To replace small groups of instructions not worthy of
subroutines
• To create a higher instruction set for specific applications
• To create compatibility with other computers
• To replace code portions which are repeated often
throughout
the program
Procedure (PROC)
• This directive marks the start and end of a
procedure block called label. The statements in
the block can be called with the CALL instruction.
PROC definition:
label PROC [ [near / far] ]
<Procedure instructions>
label ENDP
Overlapping Proc Nested Proc
Differences between Macros and
Procedures
INTERRUPTS AND INTERRUPT SERVICE
ROUTINES
Interrupts
• A signal to the processor
to halt its current
operation
an and immediately
interrupt transfer
service routine is control
called to
as
interrupt. Interrupts are triggered either by
hardware, as when the keyboard detects a key
press, or by software, as when a program
executes the INT instruction.
• Interrupts can be seen as a number of functions.
These functions make the programming much
easier, instead of writing a code to print a character,
simply call the interrupt and it will do everything.
• There are also interrupt functions that work with
disk drive and other hardware. They are called as
software interrupts.
• Interrupts are also triggered by different hardware,
these are called hardware interrupts.
• To make a software interrupt there is an
INT
instruction, it has very simple syntax: INT value.
• Where value can be a number between 0 to 255
(or
00 to FF H).
Interrupt Service Routines (ISRs)
• ISR is a routine that receives processor
control
when a specific interrupt occurs.
• The256
for 8086vectored
will directly call the service
interrupts without any
routine
software processing. This is in contrast to non
vectored interrupts that transfer control
directly to a single interrupt service routine,
regardless of the interrupt source.
Interrupt vector table:
When an interrupt occurs, regardless of source, the
8086 does the following:
• The CPU pushes the flags register onto the stack.
• The CPU pushes a far return address (segment:offset)
onto the stack, segment value first.
• The CPU determines the cause of the interrupt (i.e., the
interrupt number) and fetches the four byte interrupt
vector from address 0 : vector x 4 (0:0, 0:4, 0:8 etc)
• The CPU transfers control to the routine specified by the
interrupt vector table entry.
After the completion of these steps, the interrupt
service routine takes control. When the interrupt service
routine wants to return control, it must execute
an IRET (interrupt return) instruction. The interrupt
return pops the far return address and the flags off the
stack
Types of Interrupts
• Hardware Interrupt - External uses INTR and NMI
• Software Interrupt - Internal - from INT or INTO
• Processor Interrupt - Traps and 10 Software
Interrupts
• External - generated outside the CPU by other
hardware (INTR, NMI)
• Internal - generated within CPU as a result of an
instruction or operation (INT, INTO,
Divide Error and Single Step)
Dedicated Interrupts
• Divide Error Interrupt (Type 0)
This interrupt occurs automatically following the
execution of DIV or IDIV instructions when the
quotient exceeds the maximum value that the
division instructions allow.
• Single Step Interrupt (Type 1)
This interrupt occurs automatically after execution
of each instruction when the Trap Flag (TF) is set to
1. It is used to execute programs one instruction at a
time, after which an interrupt is requested.
Following the ISR, the next instruction is executed
and another single stepping interrupt request
occurs.
• Non Maskable Interrupt (Type 2)
It is the highest priority hardware interrupt that
triggers on the positive edge.
This interrupt occurs automatically when it
receives a low-to-high transition on its NMI input
pin.
This interrupt cannot be disabled or masked. It is
used to save program data or processor status in
case of system power failure.
• Breakpoint Interrupt (Type 3)
This interrupt is used to set break points in
software debugging programs.
• Overflow Interrupt (Type 4)
Software Interrupts (INT n)
• The software interrupts are non maskable
interrupts. They are higher priority than
hardware interrupts.
Hardware Interrupts
• INTR and NMI are called hardware
interrupts.
INTR is maskable and NMI is non-maskable
interrupts.
Interrupt Priority
Byte And String Manipulation
• The 8086 microprocessor is equipped
with
special instructions to handle string
operations.
• By string we mean a series of data words
orbytes that reside in consecutive memory
locations.
• The string instructions of the 8086 permit a
programmer to implement operations such as
to move data from one block of memory to a
block elsewhere in memory.
• A second type of operation that is easily
performed is to scan a string and data elements
stored in memory looking for a specific value.
• Other examples are to compare the elements
and two strings together in order to determine
whether they are the same or different.
• Move String : MOV SB, MOV SW: An element of
the string specified by the source index
register with respect to the current data
(SI)
segment (DS) register is moved to the location
specified by the destination index (DI) register
with respect to the current extra segment (ES)
register.
• The move can be performed on a byte (MOV SB)
or a word (MOV SW) of data. After the move is
complete, the contents of both SI & DI are
automatically incremented or decremented by 1
for a byte move and by 2 for a word move.
• Address pointers SI and DI increment or
decrement depends on how the direction flag DF
is set.
• Load and store strings : (LOD SB/LOD SW and STO
SB/STO SW) LOD SB: Loads a byte from a string in
memory into AL. The address in SI is used relative to
DS to determine the address of the memory location
of the string element. (AL) <= [(DS) + (SI)] (SI) <= (SI)
+1
• LOD SW : The word string element at the physical
address derived from DS and SI is to be loaded into
AX. SI is automatically incremented by 2. (AX) <=
[(DS) + (SI)] (SI) <= (SI) + 2
• STO SB : Stores a byte from AL into a string location in
memory. This time the contents of ES and DI are
used to form the address of the storage location in
memory [(ES) + (DI)] <= (AL) (DI) <=(DI) + 1
• STO SW : [(ES) + (DI)] <= (AX) (DI) <= (DI) + 2
8086 program to determine largest number in an
array of n numbers
Algorithm –
• Load data from offset 500 to register CL
and set register CH
to 00 (for count).
• Load first number(value) from next offset (i.e 501) to
register AL and decrease count by 1.
• Now compare value of register AL from data(value) at next
offset, if that data is greater than value of register AL then
update value of register AL to that data else no change, and
increase offset value for next comparison and decrease
count by 1 and continue this till count (value of register CX)
becomes 0.
• Store the result (value of register AL ) to memory address
2000 : 600.
Explanation –
• MOV SI, 500 : set the value of SI to 500
• MOV CL, [SI] : load data from offset SI to register CL
• MOV CH, 00 : set value of register CH to 00
• INC SI : increase value of SI by 1.
• MOV AL, [SI] : load value from offset SI to register AL
• DEC CL : decrease value of register CL by 1
• INC SI : increase value of SI by 1
• CMP AL, [SI] : compares value of register AL and [SI] (AL-[SI])
• JNC 413 : jump to address 413 if carry not generated
• MOV AL, [SI] : transfer data at offset SI to register AL
• INC SI : increase value of SI by 1
• LOOP 40C : decrease value of register CX by 1 and jump to address
40D if value of register CX is not zero
• MOV [600], AL : store the value of register AL to offset 600
• HLT : stop
8086 program to find the min value in
a given array
Algorithm –
• Assign value 500 in SI and 600 in DI
• Move the contents of [SI] in CL and
increment SI by 1
• Assign the value 00 H to CH
• Move the content of [SI] in AL
• Decrease the value of CX by 1
• Increase the value of SI by 1
• Move the contents of [SI] in BL
• Compare the value of BL with AL
• Jump to step 11 if carry flag is set
• Move the contents of BL in AL
• Jump to step 6 until the value of CX
becomes 0, and decrease CX by 1
• Move the contents of AL in [DI]
• Halt the program
UNIT -2
8086
SYSTEM BUS
STRUCTURE
PIN DIAGRAM
MINIMUM MODE SIGNALS
MAXIMUM MODE SIGNALS
Address / Data Bus (AD15–AD0)
• The multiplexed Address/ Data bus acts as
address bus during the first part of machine
cycle (T1) and data bus for the remaining part
of the machine cycle.
Reset
• This signal is used to reset the 8086.
• It causes the processor to immediately terminate its present
activity.
• The signal must be active HIGH for at least four
clock
cycles.
• It restarts execution when RESET returns LOW.
Clock (CLK)
• This signal provides the basic timing for the
processor and bus controller.
• The clock frequency may be 5 MHz or 8 MHz
or
10 MHz depending on the version of 8086.
VCC
• It is a +5V power supply pin.
Ground (GND)
• Two pins (1 and 20) are connected to ground ie, 0
V power supply.
Minimum/Maximum (MN/ MX )
• This pin indicates what mode the processor is to
operate in.
MEMORY / IO (M/ IO )
• It is used to distinguish a memory access from an
I/O access. M = HIGH, I/O = LOW.
WRITE( WR )
• It indicates that the processor is performing a
write memory or write I/O cycle, depending on
the state of the M/ IO signal.
• Interrupt Acknowledge ( INTA )
This signal indicates recognition of an interrupt
request. It is used as a read strobe for interrupt
acknowledge cycles.
Address Latch Enable (ALE)
• This signal is used to demultiplex the AD 0-AD 15
into A0-A15 and D0-D15. It is a HIGH pulse active
during T1 of any bus cycle.
Data Enable( DEN )
This signal informs the transceivers
(8286/8287) that the 8086 is ready to send or
receive data.
Hold
• This signal indicates that another master
(DMA or processor) is requesting the host
8086 to handover the system bus.
Hold Acknowledge (HLDA)
• On receiving HOLD signal 8086 outputs
HLDA signal HIGH as an acknowledgement.
Request/Grant ( RQ / GT0 , RQ / GT1 )
• These pins are used by other local bus masters to force
RQ / GT1 the processor to release the local bus at the
end of the processor’s current bus cycle
LOCK
• This signal indicates that other system bus masters are
not to gain control of the system bus while LOCK is
active LOW.
• The LOCK signal is activated by the “LOCK” prefix
instruction and remains active until the completion of
the next instruction.
QUEUEue Status (QS1, QS0)
• The queue status is valid during the CLK cycle after
which the queue operation is performed.
SYSTEM BUS STRUCTURE
• System bus is a single computer bus that
connects the major components of a computer
system.
• It consists of data bus, address bus and control
bus.
• To communicate with external world,
microprocessor make use of buses.
DATA BUS
• It is used for the exchange of
data between the
processor, memory and peripherals.
• It is bi-directional so that it allows data flow
in
both directions.
• The width of the data bus can differ for
every
microprocessor.
• When the microprocessor issues the address of
the instruction, it gets back the instruction
ADDRESS BUS
• The address bus contains the connections
between the microprocessor and memory or
output devices
• It is unidirectional.
• The width of the address bus corresponds to
the maximum addressing capacity
CONTROL BUS
• The control bus carries the signals relating to
the control and coordination of the various
activities across the computer, which can be
sent from the control unit within the CPU.
• Microprocessor uses control bus to process
data, that is what to do with the selected
memory location.
MIN-MAX MODE OF OPERATION
Intel 8086 has two modes of operation. They are:
• Minimum mode
• Maximum mode
• Alldevices
I/O control signals for controlling
are generated inside memory
the 8086
and
microprocessor.
• In this mode , peripheral devices can be used
with the microprocessor without any special
consideration
READ CYCLE
WRITE CYCLE
Maximum mode operation’
• In maximum mode 8086 based system, an
external Bus Controller (Intel 8288) has to be
employed to generate the bus control signals.
• The important signals are :
• MRDC - Memory Read Command
MWTC - Memory Write Command
IORC - I/O Read Command
IOWC - I/O Write Command
AMWC - Advanced Memory Write Command
AIOWC - Advanced I/O Write Command
• Three numbers of 8 bit latches (Intel 8282) are
employed to demultiplex the address lines.
• The latches are enabled by using the ALE
signal
generated by the bus controller.
• Two numbers of octal bus transceivers
(Intel
8286) are used as data transceivers.
• The signals DEN and DT/ R are generated by the
bus controller
• The are used(Intel
clock generator as enable
8284)and is direction
used to
control
generaterespectively.
clock, reset and ready signals for 8086.
• A quartz crystal of frequency 15 MHz is
connected to 8284.
Read cycle
Write cycle
SYSTEM DESIGN USING 8086
The specification of the system includes the
following:
• I/O devices
• Memory requirement
• System clock frequency
• Peripheral devices
required
• Application
I/O devices
Input devices : 8279 – keyboard and display
controller
• Ready
• Running
• Blocked
TRANSISTIONS
Creation
• The creation transition is caused by a syscall
for loading a program.
• A process control block is created for
the
program.
• Usually the operating system sets up three
open files: standard input, standard output, and
standard error.
Dispatch
• I/O system
• Clock generator
LOOSELY COUPLED CONFIGURATION
• In loosely coupled configuration a number
of
modules ofsystem
common 8086 canbus
be interfaced
to workthrough
as a
multiprocessor.
• Each module has an independent
microprocessor based system with its own
clock source, and its own memory and I/O
devices interfaced through a local bus.
• Each module can also be a closely coupled
configuration of a processor or coprocessor.
Advantages
• Better system throughput by
having more than
one processor.
• Polling method
• Independent Priority
DAISY CHAINING METHOD
• In daisy chaining method all masters make
use of
In response
• the same linetofora bus
bus request.
request, the controller sends
a bus grant if the bus is free.
• The bus grant signal serially propagates through
each master until it encounters the first one that is
requesting access to the bus.
• This master blocks the propagation of the bus
grant signal, activates the busy line and gains
control of the bus.
POLLING
• In polling method, the
controller sends address of
device to grant bus access.
• The number of address lines required is depend on
the
number of masters connected in the system.
• In response to a bus request, controller
generates a
sequence of master addresses.
• When the requesting master recognizes the
address, it
activates the busy line and begins to use the bus.
• The priority can be changed by altering the
polling
Independent priority
• Each master has a separate pair of bus request
(BRQ) and bus grant (BGR) lines and each
pair has a priority assigned to it.
• The built in priority decoder within the
controller selects the highest priority request
and asserts the corresponding bus grant signal.
ADVANCED PROCESSOR
• In real mode, the advanced processors,
including the Pentium, simply operate like
very fast 8086, with the associated 1 MB
memory limit.
• Real mode operation is automatically selected
upon power-up.
• Pentium-based PC that boots up into DOS
is
operating in real mode.
• In protected mode, the full 4 GB of memory
is available to the processor.
• It supports for multitasking, virtual
memory
addressing,
and controlmemory management,
over the internal data and
protection
instruction cache.
• The Windows operating system runs in
protected mode to take advantage of these
improvements.
PENTIUM PROCESSOR
• The term ‘’Pentium processor’’ refers
to a family
of microprocessors that share a common
architecture and instruction set.
• The first Pentium processors were introduced
in
• It runs at a clock frequency of either 60 or 66
1993.
MHz and has 3.1 million transistors.
The features of Pentium architecture are
• Improved instruction execution time
• Bus cycle pipelining
• Address parity .
• Internal parity checking
• Functional redundancy checking
FEATURES
• Wider (64-bit) Data Bus: With its 64-bit-wide external data
bus the Pentium processor can handle up to twice the data
load of the Intel486 processor at the same clock frequency.
• Superscalar Architecture: Dual Instruction Pipeline
• Dynamic Branch Prediction Logic: The Pentium processor
fetches the branch target instruction before it executes the
branch instruction.
• Enhanced Floating Point Unit: The Pentium processor
executes individual instructions faster through execution
pipelining, which allows multiple floating point instructions
to be executed at the same time.
• Dedicated Instruction and Data Cache: The Pentium
processor has two separate 8 KB caches on chip-one for
instructions and one for data.
• Write-Back MESI Protocol in Data Cache: When data is
modified; only the data in the cache is changed.
STAGES OF PENTIUM PROCESSOR
• Pre-fetch/Fetch : Instructions are fetched from the
instruction cache and aligned in pre-fetch buffers for
decoding.
• Decode1 : Instructions are decoded into the Pentium's
internal instruction format. Branch prediction also takes
place at this stage.
• Decode2 : Same as above, and microcode ROM kicks
in here, if necessary. Also, address computations take
place at this stage.
• Execute : The integer hardware executes the
instruction.
• Write-back : The results of the computation are written
back to the register file.
FLOATING POINT UNIT
• There are 8 general-purpose 80-bit
floating
point registers.
• Floating point unit has 8 stages of
pipelining.
• Since the possibility of error is more in
First fivepoint
floating are similar to integer
unit (FPU) unit.
than in integer unit
Multi-core processor
• A multi-core processor is a single
chip that
contains more than one microprocessor core.
• Each core can simultaneously execute
processor instructions in parallel.
I/O
INTERFACING
Memory Interfacing
• While executing a program, the
microprocessor
needs to access memory frequently to read
instruction code and data stored in memory; the
interfacing circuit enables that access.
• Memory has some signal requirements to write
into and read from its registers.
• Similary, the microprocessor initiates a set of
signals when it wants to read from and write into
memory.
I/O INTERFACING
• The Input/Output devices such as keyboards and
displays are the communication channels to the
outside world.
• Latches and buffers are used for I/O interfacing.
They once hardwired, perform only one function
(either as input device if it is buffer and as output
device if it is a latch). Thus limiting their
capabilities.
• To improve the overall system performance the
Intel has designed various programmable I/O
devices.
• Some of the peripheral devices developed by
Intel for 8085/8086/8088 based system are:
• 8255 - Parallel Communication Interface
• 8251 - Serial Communication Interface
• 8254 - Programmable Timer
• 8279 - Keyboard / Display Controller
• 8257 - DMA Controller
• 8259 - Programmable Interrupt Controller
• The microprocessor can communicate with
external world or other systems using two
types of communication interfaces. They are:
• Serial Communication Interface
• Simplex
• Half duplex
• Full duplex
Simplex
• The data are transmitted in only one direction.
There is no possibility of data transfer in the
other direction.
• Example : Transmission from a computer to
the printer.
Half duplex
• The data are transmitted in both directions,
but
not simultaneously.
• Example : Walky - Talky
Full duplex
• The data are transmitted in both
directions
simultaneously.
• Example : Telephone
The data in the serial communication may
be
sent in two formats:
• Asynchronous
• Synchronous
Synchronous Transmission
• In synchronous transmission, a receiver and
transmitter work in same speed and could be
synchronized.
• Both will use a common clock and start at the
same time
Asynchronous transmission
• The asynchronous transmission is character-
oriented. Each character carries the information of
the Start and Stop bits
• When no data are being transmitted, a receiver
stays high at logic 1, called Mark and logic 0 is
called Space.
• Transmission begins with one start bit (Low),
followed by 7 or 8 bits to represent a character
and 1 or 2 Stop bits (high).
• A start bit, character and stop bits are called as
Frame.
PARALLEL COMMUNICATION INTERFACE OR
(8255 A - Programmable Peripheral
Interface)
MICROCONTR
OLLERS
BASIC BLOCK DIAGRAM
FEATURES
High integration
•ofMicrocontrollers
functionality : are called as single chip
computers because they have on - chip
memory and I/O circuitry and other
circuitries
that enable
alone them towithout
computers functionother
as small stand -
supporting
circuitry.
• Field programmability, flexibility :
Microcontrollers often use EPROM or
E2PROM as their storage device to allow field
programmability so they are flexible to use.
• Once the program is tested to be correct then
large quantities of microcontrollers can be
programmed to be used in embedded
systems.
• Easy to use.
Advantages of microcontrollers
• The overall system cost is low, as the
peripherals are integrated in a single chip.
• The product is of small size as compared to the
microprocessor based system and is very
handy.
• The system is more reliable.
• The system is easy to troubleshoot and
maintain.
• If required additional RAM, ROM and
I/O
ports may be interfaced
ARCHITECTURE OF 8051
The features of the 8051 are :
• 8 bit CPU with registers A (the accumulator) and B
• 16 bit Program Counter (PC) and Data Pointer (DPTR)
• 8 bit Program Status Word (PSW)
• 64K Program memory address space
• 64K Data memory address space
• 128 bytes of on chip data memory
• 32 I/O pins for four 8 bit ports : Port 0, Port 1, Port
2,
Port 3
• Two 16 bit timers / counters : T0 and T1
• Full duplex UART : SBUF
• Two external and three internal interrupt sources
• On chip clock oscillator.
Central processing unit
• The CPU is the brain of the microcontrollers
reading user’s programs and executing the
expected task as per instructions stored there
in. It’s primary elements are an Accumulator
(ACC), B register (B), Stack pointer (SP),
Program counter (PC), Program status word
(PSW), Data pointer register (DPTR) and few
more 8 bit registers.
Accumulator
• The accumulator performs arithmetic and
logic
functions on 8 bit input variables.
• Arithmetic operations include basic
addition,
subtraction, multiplication and division.
• Logical
• Apart operations
from all the are AND,accumulator
above, OR XOR as is
well
responsible for conditional branching decisions
as rotate,
and clear, acomplement
provides temporary etc.
place in a data
transfer operations within the device.
B Register
• B register is used in multiply and divide
operations.
• During execution B register either keeps one
of the two inputs and then retains a portion of
the result.
• For other instructions it is used as general
purpose register.
Stack Pointer
• Stack Pointer (SP) is an 8 bit register.
• This pointer keeps track of memory space where
the important register information are stored when
the program flow gets into executing a subroutine.
• The stack portion may be placed in anywhere in
the onchip RAM.
• But normally SP is initialized to 07H after
a
device SP
• The reset is
and grows up from the
automatically location 08H.or
incremented
decremented for all PUSH or POP instructions
and for all subroutine calls and returns.
Program Counter
• The Program Counter (PC) is the 16 bit
register giving address of next instruction to be
executed during program execution.
• It always points to the program memory space.
Data Pointer Register
• The Data Pointer Register (DPTR) is the 16 bit
addressing register that can be used to fetch
any 8 bit data from the data memory space.
• When it is not being used for this purpose, it
can be used as two eight bit registers, DPH and
DPL.
Program Status Word
• The Program Status Word (PSW) keeps the
current status of the arithmetic and
operations in different bits. logic
• The 8051 has four math flags that respond
automatically to the outcomes of arithmetic and
logic operations and 3 general purpose user flags
that can be set 1 or cleared to 0 by the
programmer as desired.
• The math flags are carry (C), auxiliary carry
(AC), overflow (OV) and parity (P).
• User flags are named flag 0 (F0), Register
bank
select bits RS0 and RS1.
Input / Output Ports
• 8051 has 32 I/O pins configured as 4 eight
bit
• parallel ports
Each pin can(P0,
beP1,
usedP2 as
andanP3).
input or as an
output under the software control.
• These I/O pins can be accessed directly by
memory instructions during program execution
to get require flexibility.
Timers / Counters
• 8051 has two 16 bit Timers / Counters, T0 and T1
capable of working in different modes.
• Each consists of a ‘HIGH’ byte and a ‘LOW’
byte
which can be accessed under software.
• There is a mode control register (TMOD) and a
control register (TCON) to configure these
timers / counters in number of ways.
• These timers are used to measure time intervals,
determine pulse widths or initiate events with one
microsecond resolution upto a maximum 65ms.
Serial Port
• The 8051 has a high speed full duplex serial
port which is software configurable in 4 basic
modes :
• Shift register mode
• Standard UART mode
• Multiprocessor mode
• 9 bit UART mode
Interrupts
• The 8051 has five interrupt sources : One from
the serial port (RI / TI) when a transmission or
reception operation is executed : two from the
timers (TF0, TF1) when overflow occurs and two
come from the two input pins INT0, INT1.
• Each interrupt may be independently enabled or
disabled to allow polling on same sources and
each may be classified as high or low priority.
• These operations are selected by Interrupt Enable
(IE) and Interrupt Priority (IP) registers.
Oscillator and Clock
• The 8051 generates the clock pulses by
which
all internal operations are synchronized.
•connecting
Pins XTAL a 1resonant
and XTAL 2 are to
network provided
form an
foroscillator.
• A quartz crystal is used for oscillator.
• The crystal frequency is the basic
internal
clock frequency of the microcontroller.
SPECIAL FUNCTION REGISTERS (SFRS)
• The address of the Special Function Registers
are above 80H, since the addresses 00H to
7FH are the addresses of RAM memory.
• The SFRs have addresses between 80H and
FFH.
• But all the address space of 80H to FFH is
not
used by the SFRs.
• The unused locations are reserved and
must
not be used by the programmer.
ADDRESSING MODES
• Immediate addressing
mode
• Register addressing mode
• Direct addressing mode
• Register indirect addressing
mode
• Indexed addressing mode
Immediate Addressing Mode
• When a source operand is a constant rather
than a variable, then the constant can be
embedded into the instruction itself.
• This kind of instructions take two bytes and
first one specifies the opcode and second byte
gives the required constant.
• The operand comes immediately after the
opcode. The mnemonic for immediate data is
the pound sign (#).
• This addressing mode can be used to load
information into any of the registers including
DPTR register.
Register Addressing Mode
• Register addressing accesses the eight
working
registers
• The (R0 significant
least - R7) of the selected
three register
bits ofbank.
the
instruction opcode indicate which register is to
be used for the operation.
• One of the four banks of registers is to be
predefined in the PSW before using register
addressing instruction.
• ACC, B and DPTR can also be addressed in
this mode.
Direct Addressing Mode
• In the direct addressing mode, all 128 bytes
of
internal RAM
directly usingandthethe single
SFRs may be address
- byte
addressed
assigned to each RAM location and each SFR.
• Internal RAM uses address from 00H to
7FH
to address each byte.
Register Indirect Addressing Mode
• In this mode a register is used as a pointer to
the data.
• If the data is inside the CPU, only registers
R0
and R1
• When R0areand
used
R1for thisthe
hold purpose.
addresses of RAM
locations, they must be preceded by the “@”
sign.
Indexed Addressing Mode
• Only the program memory can be accessed by this
mode.
• This mode is intended for reading lookup tables in
the
program memory.
• A 16 bit base register (DPTR or PC) points to the base
of the lookup tables and accumulator carries the
constant indicating table entry number.
• The address of the exact location of the table is formed
by adding the accumulator data to the base pointer.
Example
MOVC A, @A + DPTR
• The contents of A are added to the
DPTR to form the 16
I/OPORTS
Port 0 (P0.0 - 0.7)
• Port 0 is used for both address and data bus (AD0
– AD7).
• When the microcontroller chip is connected to an
external memory, Port 0 provides both address
and data.
• ALE pin indicates if Port 0 has address or data.
• When ALE = 0, Port 0 provides data (D0 – D7)
= 1, Port 0 provides address (A0 – A7)
• ALE is used for demultiplexing address and data
with the help of a latch
Port 1 (P1.0 - P1.7)
• Port 1 pins are used as input or output.
• To make port 1 as an input port, write 1 to all
its 8 bits.
• To make port 1 as output port, write 0 to all
its
8 bits.
• Thus port 1 pins have no dual functions.
Port 2 (P2.0 - P2.7)
• Port 2 pins are used as input / output
pins
similar in operation to port 1.
•order
The alternate
address use
byteof(A
port
8 – 2 is to) supply
A 15 when athe
high
microcontroller is connected to external
memory
Port 3 (P3.0 - P3.7)
• Port 3 pins are used as input or output
INSTRUCTION SET
• An instruction is a command given to the
computer to perform a specified operation on
given data.
• The instruction set is the collection of
instructions that the microcontroller is
designed to execute.
• The programmer can write the program
in
assembly language using these instructions.
• Data transfer group
• Arithmetic group
• Logical group
• Boolean variable
manipulation
• Program branching
Data Transfer Instructions
ARITHMETIC INSTRUCTIONS
UNIT – 5
INTERFACING
MICROCONTROL
LER
PROGRAMMING 8051 TIMERS
Mode 1 Programming
Operations of mode 1:
• It allows values of 0000 H to FFFF H to be
loaded
into the timer’s registers TL and TH.
• After TH and TL are loaded with a 16 - bit initial
value,
the timer must be started.
• This is done by “SET B TR0” for Timer 0 and “SET
B
TR1” for Timer 1.
• After the timer is started, it starts to count up. It counts
up until it reaches its limit of FFFF H. When it rolls
over from FFFF H to 0000H, it sets high a flag bit
called TF (Timer Flag). This timer flag can be
monitored. When this timer flag is raised, one option
would be to stop the timer with the instructions “CLR
TR0” or “CLR TR1” for Timer 0 and Timer 1
respectively.
• After the timer reaches its limit and rolls over to repeat
the process the registers TH and TL must be reloaded
with the original value and TF must be reset to 0
TIMER FOR MODE 1
PROCEDURE
• Load the TMOD value register indicating which
timer (Timer 0 or Timer 1) is to be used and
which timer mode (0 or 1) is selected.
• Load registers TL and TH with initial count
values.
• Start the Timer.
• Keep monitoring the timer flag (TF). When
TF
becomes high get out of the loop.
• Stop the timer.
• Clear the TF flag for the next round.
PROGRAM
Mode 2 Programming
Operations of Mode 2:
• Mode 2 allows only values of 00 H to FF H to be loaded
into the timer’s register TH.
• After TH is loaded with the 8 bit value, the 8051 gives a
copy of it to TL. Then the timer must be started. This is
done by “SET B TR0” for Timer 0 and “SET B TR 1” for
Timer 1.
• After the timer is started, it started it starts to count up by
incrementing the TL register. It counts up until it reaches its
limit of FFH. When it rolls over from FFH to 00H, it sets
high the timer flag (TF) TF0 is raised for Timer 0 and TF 1
is raised for Timer 1.
• When the TL register rolls from FF H to 00 H and TF is set
to 1, TL is reloaded automatically with the original value
kept by the TH register. To repeat the process clear TF (anti
- reloading).
PROCEDURE
• Load the TMOD value register indicating which
timer (Timer 0 or 1) is to be used and select the
timer mode 2.
• Load the TH registers with the initial count value.
• Start the timer.
• Keep monitoring the timer flag (TF) with “JNB
TFx” instruction. When TF becomes high get out
of the loop.
• Clear the TF flag
• Go back to step 4, since Mode 2 is auto - reload.
COUNTER PROGRAMMING
• When C/T = 1, the timer is used as a counter and gets
its pulses from outside the 8051. The counter counts up
as pulses are fed from pins T0 (Timer 0 input) and T1
(Timer 1 input). These two pins belong to port 3. For
Timer 0, when C/T = 1 pin 3.4 provides the clock pulse
and counter counts up for each clock pulse coming
from that pin.
• Similarly for Timer 1, when C/T = 1 each clock pulse
coming in from pin 3.5 makes the counter countup.
P3.4 - T0 - Timer/Counter 0 external input
P3.5 - T1 - Timer/Counter 1 external input
• In counter mode, the TMOD, TH and TL registers are
the same as for the timer. Counter programming also
same as timer programming.
SERIAL PORT PROGRAMMING
Programming the 8051 to transfer data
serially
• The TMOD register is loaded with the
value
20H, indicating the use of Timer 1 in mode 2
(8 bit auto - reload) to set the baud rate.
• The TH 1 is loaded with one of the values in
Table to set the baud rate for serial data
transfer.
• The SCON register is loaded with the value 50
H, indicating serial mode 1, where 8-bit data is
framed with start and stop bits.
• TR 1 is set to start Timer 1.
• TI is cleared by the “CLR TI” instruction.
• The character byte to be transferred serially
is
written into the SBUF registers.
•instruction
The TI flag“JNB
bit is monitored
TI, XX ”withto the
seeuseif of
the
thecharacter has been transferred
completely.
• To transfer next character, go to step 5.
Programming the 8051 to receive data serially
• The first 4 steps are as same in programming
to transfer data serially.
• RI is cleared with “CLR RI “ instruction.
• The RI flag bit is monitored with the use of
theinstruction “JNB RI, XX” to see if the
character has been received yet.
• When RI is raised, SBUF has the byte.
Its
contents are moved into a safe place.
• To receive the next character, go to step 5.
INTERRUPT PROGRAMMING
• An interrupt is an internal or external event that
interrupts the microcontroller to inform it that a device
needs its service. Every interrupt has a program
associated with it called the interrupt service routine
(ISR).
• The 8051 has 6 interrupts:
• Reset
• Timer interrupts :Timer 0 interrupt and Timer 1
interrupt
• External hardware interrupts : INT 0 INT 1
• Serial communication interrupt
• The 8051 can be programmed to enable or disable an
interrupt and the interrupt priority can be altered.
Register IE is responsible for enabling and disabling the
interrupts.
Programming Timer Interrupts
• The timer flag (TF) is raised when the timer rolls over.
In polling TF, we have to wait until the TF is raised.
• Inproblem with polling method is that the
microcontroller is tied down while waiting for TF to
be raised and cannot do anything else.
• Using interrupts solves this problem and avoids
tying
down the microcontroller.
• If the timer interrupt in the IE register is enabled,
whenever the timer rolls over, TF is raised and the
microcontroller is interrupted in whatever it is doing
and jumps to the interrupt vector table to service the
ISR.
• In this way the microcontroller can do other things until
it is notified that the timer has rolled over.
Programming External Hardware Interrupts
• The 8051 has two external hardware
interrupts
INT 0 and INT 1.
• Uponpins
Port activation
P3.2 andof these
P3.3, interrupts
the 8051 gets
through
interrupted in whatever it is doing and jumps
to the interrupt vector table to perform the
interrupt service routine (ISR).
• There are two types of activation for the
external hardware interrupts: Level triggered
and Edge triggered.
KEYBOARD INTERFACING
• The rows are connected to an output port
and
the columns are connected to an input port.
• Whena a key
make is pressed,
contact, a rowthere
otherwise and a is no
column
connection between rows and columns.
• If all the rows are grounded and a key is
pressed, one of the columns will have 0 since
the key pressed provides the path to ground.
• If no key has been pressed, reading the input
port will yield 1s for all columns since they are
connected to Vcc.
• If any key is pressed, the columns are scanned
again and again until one of them has a 0 on it.
• After the key press detection, it waits 20 milli
seconds for the bounce and then scans the
columns again.
• After 20 ms delay, the key is still pressed, it goes
to detect which row it belongs to. To detect the
row it grounds one row at a time, reading the
columns each time.
• If all columns are high, the pressed key cannot
belong to that row. Therefore it grounds the next
row and continues until it finds the row the key
press belongs to.
• After finding the row, it sets up the starting
address for the look-up table holding the
ASCII codes for that row and goes to the next
stage to identify the key.
• Now it rotates the column bits, one bit at a
time into the carry flag and checks if it is low.
• When carry flag is zero, it pulls out the ASCII
code for that key from look-up table; otherwise
it increments the pointer to point to the next
element of the look-up table.
LCD INTERFACING
• The various types of LCD displays are, 16x2,
20x1, 20x2, 20x4, 40x2 and 40x4 LCDs. 16x2
LCD means that it having two lines, 16
characters per line.
• The 8 bit data pins (D 0 –D 7) are used to send
information tot he LCD or read the contents of
the LCD’s internal registers.
• The data lines are connected to Port 1. Register
Select (RS),
• Read/Write ( R/W ) and Enable (EN) plans
are
connected to Port 3.
• There are two important registers are available inside the LCD. They
are (i) instruction command register, (ii) data register.
• The RS pin is used to select the register. If RS=0, the instruction
command code register is selected, allowing the user to send a
command. If RS=1, the data register is selected, allowing the user to
send data to be displayed on the LCD.
• R/W pin is used to write information to the LCD or read information
from it. EN (enable) pin is used to latch information presented to its
data pins.
• When data is supplied to data pins, a high-to-low pulse must be
applied to EN pin in order for the LCD to latch in the data present at
the data pins.
• This pulse must be a minimum of 450 ns.
• If RS=0 and R/W = 0
When busy flag (D7)=1, the LCD is busy and will not accept any
new information.
• When busy flag (D7) = 0, the LCD is ready to receive new
information.
ADC interfacing
• ADCs are used to convert the analog signals to digital
numbers so that the microcontroller can read them.
• ADC [like ADC 0804 IC] works with +5 volts and has
a
resolution of 8 bits.
• Conversion time is defined as the time taken to convert the
analog input to digital (binary) number. The conversion
time varies depending upon the clock signals; it cannot be
faster than 110 μs .
• Analog input is given to the pins Vin (+) and Vin (-).
• Vin (-) is connected to ground.
• Digital output pins are D0 - D7. D7 is the MSB and D0 is the
LSB.
• There are two pins for ground, analog ground and digital
ground. Analog ground is connected to the ground of the
analog Vin and digital ground is connected to the ground of
the VCC pin.
• The following steps are followed for data
conversion :
• Make chip select ( CS ) = 0 and send a low - to
- high pulse to pin WR to start the conversion.
• Keep monitoring the INTR pin. If INTR is
low, the conversion is finished and go to the
next step. If INTR is high, keep polling until it
goes low.
• After the INTR has become low, we make CS
= 0 and send a high- to-low pulse to the RD
pin to get the data out.
The program presents the concept to monitor the
INTR pins and bring an analog input into
register A. Then call a hex - to - ASCII
conversion and data display subroutines
continuously.
• P2.6 = WR (start conversion needs to low -
to -
high pulse)
• P2.7 = INTR, when low, end - of -
conversion
• P2.5 = RD (a high-to-low will read the
data
DAC INTERFACING
• The digital - to - analog converter (DAC) is used
to convert digital pulses to analog signals.
The methods of creating a DAC are:
• Binary weighted
• R/2R ladder.
• Mostly R/2R method with DAC 0808 (MC 1408)
is used since it can achieve a much higher degree
of precision. Port 1 furnishes the digital byte to be
converted to an analog Voltage and port 3 controls
the conversion process.
• In DAC 0808, the digital inputs are converted to
current. The total courrent provided by the Iout pin
is a function of the binary numbers at the D0 – D7
inputs of DAC and the reference current Iref.
SENSOR INTERFACING
Sensor :
• Sensor converts the physical Pressure, Temperature or other variable
to a proportional voltage or current.
Types of Sensors :
• Light Sensor
• Temperature Sensor
• Pressure Sensor
• Force Sensor
• Flow Sensor
Temperature Sensor
• There are many types of temperature sensors. Now we discuss about
Semiconductor Temperature Sensor (LM 35). The LM35 series
sensors are precision integrated circuit temperature sensor whose
output voltage is proportional to the Celsius (centigrade)
temperature.
• It outputs 10 mV for each degree of centigrade temperature. If the
output is connected to a negative reference voltage V S, the sensor
will give a meaningful output for a temperature range of –550C to
+1500C. The output voltage can be amplified or filtered for a
particular application.
EXTERNAL MEMORY INTERFACING
• When the data is located in the code space of
8051, MOVC instruction is used to get the data,
where ‘C’ stands for code.
• When the data memory space must be
implemented externally, MOVX instruction is
used, where ‘X’ stands for external.
External data RAM interfacing
• To connect the 8051 to an external SRAM, we
must use both RD (P3.7) and WR (P3.6).
• In writing data to external data RAM, the
instruction “MOVX @DPTR, A” is used, where
the contents of register A are written to external
RAM whose address is pointed to by the DPTR
register.
STEPPER MOTOR INTERFACING
• A stepper motor is a widely used device that translates electrical
pulses into mechanical movement. In applications such as disk
drives, dot matrix printers and robotics the stepper motor is used for
position control. Every stepper motor has a permanent magnet rotor
surrounded by four stator windings, that are paired with a center-
tapped common.
• The center tap allows a change of current direction in each of two
coils when a winding is grounded, thereby resulting in a polarity
change of the stator. The stepper motor shaft runs in a fixed
repeatable increment which allows one to move it to a precise
position.
• This repeatable fixed movement is possible as a result of basic
magnetic theory where poles of the same polarity repel and opposite
poles attract. The direction of the rotation is dictated by the stator
poles. The stator poles are determined by the current sent through
the wire coils.
• As the direction of the current is changed, the polarity is also
changed causing the reverse motion of the rotor As the sequence of
power is applied to each stator winding, the rotor will rotate. There
are several used sequences where each has a different degree of
precision.
WAVEFORM GENERATION:
• Steps to generate sine wave on 8051 microcontroller.
• Generate digital values of sine wave on a port that is 8 bit binary value.
• Convert that digital value into analog value to take that 8 bit output on 1
pin.
• Generated sine wave is in steps hence to obtain a pure sine wave, pass it
through low pass filter. Thus by remove high frequency part, obtain
smoother sine wave.
• First, generate digital values for sine wave. For this example take 16 points
in 1 cycle. Thus 1 value will hold for 1/16th of 360 degree. Hence use
sine(360 * (i/16)) where i runs from 0 to 15.
• This will cover 16 equally spaced points in one cycle. Place this cycle in
while (1) loop so that will get continuous sine wave.
• In a cycle of sine wave, half cycle is positive and remaining half cycle is
negative. Since microcontroller cannot have negative voltage, will shift
sine wave to half of maximum value.
• As maximum value is 255 for 8 bits, half of it is 127.5.Thus digital value to
be assigned to port is 127.5 + 127.5 * sine(360*(i/16)) where i runs from 0
to 15. Here minimum value is 127.5 - 127.5 = 0 and maximum value is
127.5 + 127.5 = 255
• Hence sine wave will be between 0 and 255 and which can be assigned to
port. Since most of the values will come in fraction, have to round figure to
assign integer value.
COMPARISON OF MICROPROCESSOR,
MICROCONTROLLER, PIC AND ARM
PROCESSORS
Microprocessor
• Microprocessor has only a CPU inside them in one or
few Integrated Circuits. Like microcontrollers it does
not have RAM, ROM and other peripherals. They are
dependent on external circuits of peripherals to work.
But microprocessors are not made for specific task but
they are required where tasks are complex and tricky
like development of software’s, games and other
applications that require high memory and where input
and output are not defined. It may be called heart of a
computer system. Some examples of microprocessor
are Pentium, I3, and I5 etc.
Microcontroller
• A micro-controller can be comparable to a little stand alone
computer; it is an extremely powerful device, which is able
of executing a series of pre-programmed tasks and
interacting with extra hardware devices. Being packed in a
tiny integrated circuit (IC) whose size and weight is
regularly negligible, it is becoming the perfect controller for
as robots or any machines required some type of intelligent
automation.
• A single microcontroller can be enough to manage a small
mobile robot, an automatic washer machine or a security
system. Several microcontrollers contains a memory to
store the program to be executed, and a lot of input/output
lines that can be a used to act jointly with other devices, like
reading the state of a sensor or controlling a motor.8051
microcontroller is an 8-bit family of microcontroller is
developed by the Intel in the year 1981.
PIC Microcontroller
• Peripheral Interface Controller (PIC) is microcontroller
developed by a Microchip, PIC microcontroller is fast and
simple to implement program when we contrast other
microcontrollers like 8051. The ease of programming and
simple to interfacing with other peripherals PIC become
successful microcontroller. Microcontroller is an integrated
chip which is consists of RAM, ROM, CPU, TIMER and
COUNTERS.
• The PIC is a microcontroller which as well consists of
RAM, ROM, CPU, timer, counter, ADC (analog to digital
converters), DAC (digital to analog converter). PIC
Microcontroller also support the protocols like CAN, SPI,
UART for an interfacing with additional peripherals. PIC
mostly used to modify Harvard architecture and also
supports RISC (Reduced Instruction Set Computer) by the
above requirement RISC and Harvard we can simply that
PIC is faster than the 8051 based controllers which is
prepared up of Von-Newman architecture.
ARM Processor
• An ARM processor is also one of a family of CPUs based
on the RISC (Reduced Instruction Set
Computer)
architecture developed by Advanced RISC
Machines (ARM). An ARM makes at 32-bit and 64-bit
RISC multi- core processors. RISC processors are designed
to perform a smaller number of types of computer
instructions so that they can operate at a higher speed,
performing extra millions of instructions per second
(MIPS).
• By stripping out unnecessary instructions and optimizing
pathways, RISC processors give outstanding performance at
a part of the power demand of CISC (complex instruction
set computing) procedure. ARM processors are widely used
in customer electronic devices such as smart phones,
tablets, multimedia players and other mobile devices, such
as wearables. Because of their reduced to instruction set,
they need fewer transistors, which enable a smaller die size