8051 family microcontrollers instruction · pdf file8051 family microcontrollers instruction...

49
8051 Family Microcontrollers 8051 Family Microcontrollers Instruction Set Instruction Set Chapter 4

Upload: tranphuc

Post on 18-Feb-2018

245 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: 8051 Family Microcontrollers Instruction · PDF file8051 Family Microcontrollers Instruction Set Chapter 4. ... 8051 Add in Next instruction’s PC PC bit15-b0 SJMP rel 2nd byte of

8051 Family Microcontrollers 8051 Family Microcontrollers

Instruction SetInstruction Set

Chapter 4

Page 2: 8051 Family Microcontrollers Instruction · PDF file8051 Family Microcontrollers Instruction Set Chapter 4. ... 8051 Add in Next instruction’s PC PC bit15-b0 SJMP rel 2nd byte of

2011 Microcontrollers-... 2nd Ed. Raj Kamal

Pearson Education2

Lesson 5

Program Flow Control and Interrupt Flow Control

Instructions

Page 3: 8051 Family Microcontrollers Instruction · PDF file8051 Family Microcontrollers Instruction Set Chapter 4. ... 8051 Add in Next instruction’s PC PC bit15-b0 SJMP rel 2nd byte of

2011 Microcontrollers-... 2nd Ed. Raj Kamal

Pearson Education3

SJMP rel

Branch instructions- Jump to new

value of Program Counter (PC)

LJMP address16

AJMP addr11

JMP A, @A + DPTR

Page 4: 8051 Family Microcontrollers Instruction · PDF file8051 Family Microcontrollers Instruction Set Chapter 4. ... 8051 Add in Next instruction’s PC PC bit15-b0 SJMP rel 2nd byte of

2011 Microcontrollers-... 2nd Ed. Raj Kamal

Pearson Education4

8051

Higher byte2nd byte of

instruction

lower BytePC

LJMP Addr16LJMP Addr16

3rd byte of instruction

Page 5: 8051 Family Microcontrollers Instruction · PDF file8051 Family Microcontrollers Instruction Set Chapter 4. ... 8051 Add in Next instruction’s PC PC bit15-b0 SJMP rel 2nd byte of

2011 Microcontrollers-... 2nd Ed. Raj Kamal

Pearson Education5

LJMP Instruction Execution

Fetch

opcode-bitsSTEP 1

PCLTime

2 clock

cycles

Fetch lower byte for

branch

address

PCH

Fetch higher byte for

branch

address

STEP 2

STEP 3

Page 6: 8051 Family Microcontrollers Instruction · PDF file8051 Family Microcontrollers Instruction Set Chapter 4. ... 8051 Add in Next instruction’s PC PC bit15-b0 SJMP rel 2nd byte of

2011 Microcontrollers-... 2nd Ed. Raj Kamal

Pearson Education6

8051

lower byte3-bits from1st byte

3-bitsPC bit10-b0

AJMP Addr11AJMP Addr11

2nd byte of instruction

Jump within same Jump within same

segment of 2 kB. segment of 2 kB.

Upper 5Upper 5--bits of PCbits of PC

unchanged unchanged

Page 7: 8051 Family Microcontrollers Instruction · PDF file8051 Family Microcontrollers Instruction Set Chapter 4. ... 8051 Add in Next instruction’s PC PC bit15-b0 SJMP rel 2nd byte of

2011 Microcontrollers-... 2nd Ed. Raj Kamal

Pearson Education7

AJMP Instruction Execution

Fetch five

opcode-bitsSTEP 1

PCH 3-bits

Time

2 clock

cycles

Fetch branch

address 3 bits b10-

b9-b8

PCL

Fetch lower byte

b7--... - b0 for

branch address

STEP 2

STEP 3

Page 8: 8051 Family Microcontrollers Instruction · PDF file8051 Family Microcontrollers Instruction Set Chapter 4. ... 8051 Add in Next instruction’s PC PC bit15-b0 SJMP rel 2nd byte of

2011 Microcontrollers-... 2nd Ed. Raj Kamal

Pearson Education8

8051

Add

in Next instruction’s PC

PC bit15-b0

SJMP relSJMP rel

2nd byte of instruction anumber in 2’s complement form

Jump relative after adding a twoJump relative after adding a two’’s s

complement number which is complement number which is

within within −−128 to +127 of next

instruction

Page 9: 8051 Family Microcontrollers Instruction · PDF file8051 Family Microcontrollers Instruction Set Chapter 4. ... 8051 Add in Next instruction’s PC PC bit15-b0 SJMP rel 2nd byte of

2011 Microcontrollers-... 2nd Ed. Raj Kamal

Pearson Education9

SJMP Instruction Execution

Fetch opcode-

bits

STEP 1

PCHTime

2 clock

cycles

Fetch 8 bits b7--b0

for +or -ve number

PCL

STEP 2

Add PCH PCL

Next instruction Branch to new

address

Page 10: 8051 Family Microcontrollers Instruction · PDF file8051 Family Microcontrollers Instruction Set Chapter 4. ... 8051 Add in Next instruction’s PC PC bit15-b0 SJMP rel 2nd byte of

2011 Microcontrollers-... 2nd Ed. Raj Kamal

Pearson Education10

Rel = 11111000 mean number = −8

Example- SJMP F8H

PC PC − 8.

Therefore, when jump

the new PC 1F06H

Let PC before the SJMP = 1F0CH

Next instruction PC when no jump = 1F0EH

Page 11: 8051 Family Microcontrollers Instruction · PDF file8051 Family Microcontrollers Instruction Set Chapter 4. ... 8051 Add in Next instruction’s PC PC bit15-b0 SJMP rel 2nd byte of

2011 Microcontrollers-... 2nd Ed. Raj Kamal

Pearson Education11

8051Add; DPTR is pointer to the code block and A is offset

Pointed instruction PCPC bit15-b0

JMP @ A + DPTRJMP @ A + DPTR

8-bits from A

Add offset at A in DPTR to find Add offset at A in DPTR to find

code address, jump to the memory code address, jump to the memory

addressaddress

16-bit from DPTR

Page 12: 8051 Family Microcontrollers Instruction · PDF file8051 Family Microcontrollers Instruction Set Chapter 4. ... 8051 Add in Next instruction’s PC PC bit15-b0 SJMP rel 2nd byte of

2011 Microcontrollers-... 2nd Ed. Raj Kamal

Pearson Education12

JMP @ A + DPTRJMP @ A + DPTR JMP

Instruction Execution

Fetch 8

opcode-bitsSTEP 1

PCH Time

2 clock

cycles

PCLAdd

DPH DPL

Pointed data blockBranch to new

address

A offset

Page 13: 8051 Family Microcontrollers Instruction · PDF file8051 Family Microcontrollers Instruction Set Chapter 4. ... 8051 Add in Next instruction’s PC PC bit15-b0 SJMP rel 2nd byte of

2011 Microcontrollers-... 2nd Ed. Raj Kamal

Pearson Education13

DPTR = 11ADH; A = 08H

Example- JMP@ A+ DPTR

PC A + DPTR.

Therefore, new PC 11B5H

Let PC after the JMP = 1F0CH

This PC replaces and gets new 16-bits

Page 14: 8051 Family Microcontrollers Instruction · PDF file8051 Family Microcontrollers Instruction Set Chapter 4. ... 8051 Add in Next instruction’s PC PC bit15-b0 SJMP rel 2nd byte of

2011 Microcontrollers-... 2nd Ed. Raj Kamal

Pearson Education14

JNZ rel; JNZ rel;

JZ rel;JZ rel;

JC rel;JC rel;

JNC rel;JNC rel;

Conditional jumps

Page 15: 8051 Family Microcontrollers Instruction · PDF file8051 Family Microcontrollers Instruction Set Chapter 4. ... 8051 Add in Next instruction’s PC PC bit15-b0 SJMP rel 2nd byte of

2011 Microcontrollers-... 2nd Ed. Raj Kamal

Pearson Education15

8051

Add in PC the 2’s complement number

Next instruction PCPC bit15-b0

2nd byte of instruction

Jump relative after adding a twoJump relative after adding a two’’s complement s complement

number within number within −−128 to +127 of next instruction

If A= 00H

JZ rel; jump on zero A

Yes

No

If A= 00H

Page 16: 8051 Family Microcontrollers Instruction · PDF file8051 Family Microcontrollers Instruction Set Chapter 4. ... 8051 Add in Next instruction’s PC PC bit15-b0 SJMP rel 2nd byte of

2011 Microcontrollers-... 2nd Ed. Raj Kamal

Pearson Education16

8051

Add in PC the 2’s complement number

Next instruction PCPC bit15-b0

2nd byte of instruction

Jump relative after adding a twoJump relative after adding a two’’s complement s complement

number within number within −−128 to +127 of next instruction

If A= 00H

JNZ rel; jump on not zero A

No

Yes

If A= 00H

Page 17: 8051 Family Microcontrollers Instruction · PDF file8051 Family Microcontrollers Instruction Set Chapter 4. ... 8051 Add in Next instruction’s PC PC bit15-b0 SJMP rel 2nd byte of

2011 Microcontrollers-... 2nd Ed. Raj Kamal

Pearson Education17

8051

Add in PC the 2’s complement number

Next instruction PCPC bit15-b0

2nd byte of instruction

Jump relative after adding a twoJump relative after adding a two’’s complement s complement

number within number within −−128 to +127 of next instruction

If C= 0

JC rel; jump on C (PSW.7) not zero

Yes

Yes

If C= 1

Page 18: 8051 Family Microcontrollers Instruction · PDF file8051 Family Microcontrollers Instruction Set Chapter 4. ... 8051 Add in Next instruction’s PC PC bit15-b0 SJMP rel 2nd byte of

2011 Microcontrollers-... 2nd Ed. Raj Kamal

Pearson Education18

8051

Add in PC the 2’s complement number

Next instruction PCPC bit15-b0

2nd byte of instruction

Jump relative after adding a twoJump relative after adding a two’’s complement s complement

number within number within −−128 to +127 of next instruction

If C= 1

JNC rel; jump on C (PSW.7) not 1

Yes

Yes

If C= 0

Page 19: 8051 Family Microcontrollers Instruction · PDF file8051 Family Microcontrollers Instruction Set Chapter 4. ... 8051 Add in Next instruction’s PC PC bit15-b0 SJMP rel 2nd byte of

2011 Microcontrollers-... 2nd Ed. Raj Kamal

Pearson Education19

Rel = 11111000 mean number = − 8

Example- JZ F8H

PC PC − 8.

Therefore, new PC 1F06H if A = 00H,else 1F0EH

Let PC before the JMP = 1F0CH

Next instruction PC when no jump = 1F0EH

Page 20: 8051 Family Microcontrollers Instruction · PDF file8051 Family Microcontrollers Instruction Set Chapter 4. ... 8051 Add in Next instruction’s PC PC bit15-b0 SJMP rel 2nd byte of

2011 Microcontrollers-... 2nd Ed. Raj Kamal

Pearson Education20

JB bit, relJB bit, rel

JNB bit, rel JNB bit, rel

JBC bit, rel;JBC bit, rel;

Page 21: 8051 Family Microcontrollers Instruction · PDF file8051 Family Microcontrollers Instruction Set Chapter 4. ... 8051 Add in Next instruction’s PC PC bit15-b0 SJMP rel 2nd byte of

2011 Microcontrollers-... 2nd Ed. Raj Kamal

Pearson Education21

8051 Add in PC the 2’s complement number

Next instruction PCPC bit15-b0

2nd byte of instruction

Jump relative after adding a twoJump relative after adding a two’’s complement s complement

number within number within −−128 to +127 of next instruction

If bit at address of bit = 0

JB bit, rel; jump on bit at address of bit is set 1;

Yes

Yes

If bit at address of bit = 1

Page 22: 8051 Family Microcontrollers Instruction · PDF file8051 Family Microcontrollers Instruction Set Chapter 4. ... 8051 Add in Next instruction’s PC PC bit15-b0 SJMP rel 2nd byte of

2011 Microcontrollers-... 2nd Ed. Raj Kamal

Pearson Education22

8051 Add in PC the 2’s complement number

Next instruction PCPC bit15-b0

2nd byte of instruction

Jump relative after adding a twoJump relative after adding a two’’s complement s complement

number within number within −−128 to +127 of next instruction

If bit at address of bit = 1

JNB bit, rel; jump on bit at address of bit is

reset 0;

Yes

Yes

If bit at address of bit = 0

Page 23: 8051 Family Microcontrollers Instruction · PDF file8051 Family Microcontrollers Instruction Set Chapter 4. ... 8051 Add in Next instruction’s PC PC bit15-b0 SJMP rel 2nd byte of

2011 Microcontrollers-... 2nd Ed. Raj Kamal

Pearson Education23

8051

Add in PC the 2’s complement number and reset C

Next instruction PCPC bit15-b0

2nd byte of instruction

Jump relative after adding a twoJump relative after adding a two’’s complement s complement

number within number within −−128 to +127 of next instruction

and reset C = 0

If bit at address of bit = 0

JBC bit, rel; jump on bit is set 1 and then

reset C = 0

No

Yes

If bit at address of bit = 1

Page 24: 8051 Family Microcontrollers Instruction · PDF file8051 Family Microcontrollers Instruction Set Chapter 4. ... 8051 Add in Next instruction’s PC PC bit15-b0 SJMP rel 2nd byte of

2011 Microcontrollers-... 2nd Ed. Raj Kamal

Pearson Education24

Rel = 11111000 mean number = -8

Example— JB 91H, F8H

PC PC −8.

Therefore, new PC 1F06H if P1.1 = 1,else 1F0EH

Let PC before the JMP = 1F0CH

Next instruction PC when no jump = 1F0EH

bit = 91H mean bit1 Port P1

Page 25: 8051 Family Microcontrollers Instruction · PDF file8051 Family Microcontrollers Instruction Set Chapter 4. ... 8051 Add in Next instruction’s PC PC bit15-b0 SJMP rel 2nd byte of

2011 Microcontrollers-... 2nd Ed. Raj Kamal

Pearson Education25

Save PC on stack and then call the instruction

of the routine at new value of Program

Counter (PC)

LCALL address16

ACALL addr11

Subroutine Call Instructions

Page 26: 8051 Family Microcontrollers Instruction · PDF file8051 Family Microcontrollers Instruction Set Chapter 4. ... 8051 Add in Next instruction’s PC PC bit15-b0 SJMP rel 2nd byte of

2011 Microcontrollers-... 2nd Ed. Raj Kamal

Pearson Education26

Saving PC on stack before Branch instruction-

call routine at new value of Program Counter

(PC)

Before call - (1) Increment SP

and then move the next instruction PCL byte to

SP pointed address (2) Increment SP and then

move the next instruction PCH byte to SP

pointed address

Execution of Subroutine Call Instructions

Page 27: 8051 Family Microcontrollers Instruction · PDF file8051 Family Microcontrollers Instruction Set Chapter 4. ... 8051 Add in Next instruction’s PC PC bit15-b0 SJMP rel 2nd byte of

2011 Microcontrollers-... 2nd Ed. Raj Kamal

Pearson Education27

8051

Higher byte

2nd byte of instructionlower Byte

PC

LCALL Addr16LCALL Addr16

3rd byte of instruction

Next instruction PC saves on stack at address pointed by SP + 1 and SP + 2.

New SP becomes SP+02H

Page 28: 8051 Family Microcontrollers Instruction · PDF file8051 Family Microcontrollers Instruction Set Chapter 4. ... 8051 Add in Next instruction’s PC PC bit15-b0 SJMP rel 2nd byte of

2011 Microcontrollers-... 2nd Ed. Raj Kamal

Pearson Education28

LCALL Addr16 Instruction

Execution Fetch

opcode-bitsSTEP 1

Step 6:New PCL

Time

2 clock

cycles

Fetch lower byte for

call

address

Fetch higher byte for

call

address

STEP 2

STEP 3

Step 7: New PCH

Step 4: Old PCL

after step 3 at SP +1

Step 5: Old PCH after

step 4 at SP +2

Page 29: 8051 Family Microcontrollers Instruction · PDF file8051 Family Microcontrollers Instruction Set Chapter 4. ... 8051 Add in Next instruction’s PC PC bit15-b0 SJMP rel 2nd byte of

2011 Microcontrollers-... 2nd Ed. Raj Kamal

Pearson Education29

Let SP = 07H

Return from call instruction - RET

Return retrieves PC. PCH from 09H, PCL from 08H. PC again = 1F0FH

Let PC before the CALL = 1F0CH.

Call instruction stacks 1F0EH at 08-09H.

08H 0F and 09H 1F

PC after the ACALL = 1F0FH.

Page 30: 8051 Family Microcontrollers Instruction · PDF file8051 Family Microcontrollers Instruction Set Chapter 4. ... 8051 Add in Next instruction’s PC PC bit15-b0 SJMP rel 2nd byte of

2011 Microcontrollers-... 2nd Ed. Raj Kamal

Pearson Education30

ACALL Addr11ACALL Addr11

Call within same segment of 2 kB. Upper 5Call within same segment of 2 kB. Upper 5--bits of bits of

PC unchanged PC unchanged

Next instruction PC saved on stack. SP is now SP+02H

Page 31: 8051 Family Microcontrollers Instruction · PDF file8051 Family Microcontrollers Instruction Set Chapter 4. ... 8051 Add in Next instruction’s PC PC bit15-b0 SJMP rel 2nd byte of

2011 Microcontrollers-... 2nd Ed. Raj Kamal

Pearson Education31

ACALL Addr11 Instruction

Execution Fetch

opcode-bits and 3

bits for PC

STEP 1

Step 7: Replace all 8

bits to get new PCL

Time

2 clock

cycles

Fetch lower byte for

call

address

STEP 2

Step 6: Replace 3 bits

to get New PCHStep 4: Old PCL

after step 2 at SP +1

Step 5: Old PCH after

step 3 at SP +2

Page 32: 8051 Family Microcontrollers Instruction · PDF file8051 Family Microcontrollers Instruction Set Chapter 4. ... 8051 Add in Next instruction’s PC PC bit15-b0 SJMP rel 2nd byte of

2011 Microcontrollers-... 2nd Ed. Raj Kamal

Pearson Education32

3 higher bits in first byte = 100 and 8-bits in

2nd byte of instruction = 11111000.

Let SP = 07H

Example— ACALL codes are 91H-F0H

PC PC + 00011 1001111 0000. Therefore, new PC 3BFEH

Let PC before the CALL = 1F0CH

Next instruction PC= 1F0EH. It stacks 1F0CHat 08-09H. Five bits are 00011

Page 33: 8051 Family Microcontrollers Instruction · PDF file8051 Family Microcontrollers Instruction Set Chapter 4. ... 8051 Add in Next instruction’s PC PC bit15-b0 SJMP rel 2nd byte of

2011 Microcontrollers-... 2nd Ed. Raj Kamal

Pearson Education33

Let SP = 07H

Return from call instruction - RET

Return retrieves PC. PCH from 09H, PCL from 08H. PC again = 1F0EH

Let PC before the CALL = 1F0CH.

Call instruction stacks 1F0EH at 08-09H.

08H 0E and 09H 1F

PC after the ACALL = 1F0EH.

Page 34: 8051 Family Microcontrollers Instruction · PDF file8051 Family Microcontrollers Instruction Set Chapter 4. ... 8051 Add in Next instruction’s PC PC bit15-b0 SJMP rel 2nd byte of

2011 Microcontrollers-... 2nd Ed. Raj Kamal

Pearson Education34

DJNZ Rn, rel;DJNZ Rn, rel;

DJNZ direct, rel DJNZ direct, rel

Decrement and Jump conditional

Combined instructions

Page 35: 8051 Family Microcontrollers Instruction · PDF file8051 Family Microcontrollers Instruction Set Chapter 4. ... 8051 Add in Next instruction’s PC PC bit15-b0 SJMP rel 2nd byte of

2011 Microcontrollers-... 2nd Ed. Raj Kamal

Pearson Education35

8051 Add in PC the 2’s complement number

Next instruction PCPC bit15-b0

2nd byte of instruction

Jump relative after adding a twoJump relative after adding a two’’s complement s complement

number within number within −−128 to +127 of next instruction

Decrease Rn, If byte at Rn after decrement = 0

DJNZ DJNZ RnRn, , relrel;; jump on byte at Rn after decrement

= not 0;

Yes

Yes

If byte at Rn after decrement not 0

Page 36: 8051 Family Microcontrollers Instruction · PDF file8051 Family Microcontrollers Instruction Set Chapter 4. ... 8051 Add in Next instruction’s PC PC bit15-b0 SJMP rel 2nd byte of

2011 Microcontrollers-... 2nd Ed. Raj Kamal

Pearson Education36

8051

Add in PC the 2’s complement number

Next instruction PCPC bit15-b0

2nd byte of instruction

Jump relative after adding a twoJump relative after adding a two’’s complement s complement

number within number within −−128 to +127 of next instruction

Decrease byte at direct address, If byte becomes 0

DJNZ direct, DJNZ direct, relrel;; jump on byte at direct address

after decrement = not 0;

Yes

Yes

If byte remains not 0

Page 37: 8051 Family Microcontrollers Instruction · PDF file8051 Family Microcontrollers Instruction Set Chapter 4. ... 8051 Add in Next instruction’s PC PC bit15-b0 SJMP rel 2nd byte of

2011 Microcontrollers-... 2nd Ed. Raj Kamal

Pearson Education37

CJNE A, #data, rel; CJNE A, #data, rel;

CJNE Rn, #data, rel;CJNE Rn, #data, rel;

CJNE @Ri, #data, rel; CJNE @Ri, #data, rel;

CJNE A, direct, rel;CJNE A, direct, rel;

Compare and then conditional jump

Page 38: 8051 Family Microcontrollers Instruction · PDF file8051 Family Microcontrollers Instruction Set Chapter 4. ... 8051 Add in Next instruction’s PC PC bit15-b0 SJMP rel 2nd byte of

2011 Microcontrollers-... 2nd Ed. Raj Kamal

Pearson Education38

8051 Add in PC the 2’s complement number

Next instruction PCPC bit15-b0

2nd byte of instruction

Jump relative after adding a twoJump relative after adding a two’’s complement s complement

number within number within −−128 to +127 of next instruction

Compare A and data byte, if equal

CJNE A, #data, rel; jump on byte at A on

comparison not equal

Yes

Yes

Compare A and data byte, if not equal

Page 39: 8051 Family Microcontrollers Instruction · PDF file8051 Family Microcontrollers Instruction Set Chapter 4. ... 8051 Add in Next instruction’s PC PC bit15-b0 SJMP rel 2nd byte of

2011 Microcontrollers-... 2nd Ed. Raj Kamal

Pearson Education39

8051 Add in PC the 2’s complement number

Next instruction PCPC bit15-b0

2nd byte of instruction

Jump relative after adding a twoJump relative after adding a two’’s complement s complement

number within number within −−128 to +127 of next instruction

Compare Rn and data byte, if equal

CJNE Rn, #data, rel; jump on byte at Rn on

comparison not equal

Yes

Yes

Compare Rn and data byte, if not equal

Page 40: 8051 Family Microcontrollers Instruction · PDF file8051 Family Microcontrollers Instruction Set Chapter 4. ... 8051 Add in Next instruction’s PC PC bit15-b0 SJMP rel 2nd byte of

2011 Microcontrollers-... 2nd Ed. Raj Kamal

Pearson Education40

8051

Add in PC the 2’s complement number

Next instruction PCPC bit15-b0

2nd byte of instruction

Jump relative after adding a twoJump relative after adding a two’’s complement s complement

number within number within −−128 to +127 of next instruction

Compare byte pointed by Ri and data byte, if

equal

CJNE @Ri, #data, rel; jump on byte pointed by Ri

on comparison not equal

Yes

Yes

Compare byte pointed by Ri and data byte, if

not equal

Page 41: 8051 Family Microcontrollers Instruction · PDF file8051 Family Microcontrollers Instruction Set Chapter 4. ... 8051 Add in Next instruction’s PC PC bit15-b0 SJMP rel 2nd byte of

2011 Microcontrollers-... 2nd Ed. Raj Kamal

Pearson Education41

8051

Add in PC the 2’s complement number

Next instruction PCPC bit15-b0

2nd byte of instruction

Jump relative after adding a twoJump relative after adding a two’’s complement s complement

number within number within −−128 to +127 of next instruction

Compare byte at direct and byte at A, if equal

CJNE A, direct, rel; jump on byte at direct on

comparison not equal to A

Yes

Yes

Compare byte at direct and byte at A, if not

equal

Page 42: 8051 Family Microcontrollers Instruction · PDF file8051 Family Microcontrollers Instruction Set Chapter 4. ... 8051 Add in Next instruction’s PC PC bit15-b0 SJMP rel 2nd byte of

2011 Microcontrollers-... 2nd Ed. Raj Kamal

Pearson Education42

Delay and

Interrupt flow control—

NOP and RETI

Page 43: 8051 Family Microcontrollers Instruction · PDF file8051 Family Microcontrollers Instruction Set Chapter 4. ... 8051 Add in Next instruction’s PC PC bit15-b0 SJMP rel 2nd byte of

2011 Microcontrollers-... 2nd Ed. Raj Kamal

Pearson Education43

NOP instruction

Let PC before the NOP = 1F0CH

After NOP, PC PC +1 1F0DH

PC 1F0DH

Page 44: 8051 Family Microcontrollers Instruction · PDF file8051 Family Microcontrollers Instruction Set Chapter 4. ... 8051 Add in Next instruction’s PC PC bit15-b0 SJMP rel 2nd byte of

2011 Microcontrollers-... 2nd Ed. Raj Kamal

Pearson Education44

8051

Add 0001H in PC

Next to next instruction PC

PC bit15-b0

NOP

NOP instruction executes delay

= 1 cycle = 1 µs for 12 MHZ

XTAL

Page 45: 8051 Family Microcontrollers Instruction · PDF file8051 Family Microcontrollers Instruction Set Chapter 4. ... 8051 Add in Next instruction’s PC PC bit15-b0 SJMP rel 2nd byte of

2011 Microcontrollers-... 2nd Ed. Raj Kamal

Pearson Education45

8051

100 times executed in a loop

NOP instruction delay = 100

cycle =100 µs for 12MHZ

XTAL

Page 46: 8051 Family Microcontrollers Instruction · PDF file8051 Family Microcontrollers Instruction Set Chapter 4. ... 8051 Add in Next instruction’s PC PC bit15-b0 SJMP rel 2nd byte of

2011 Microcontrollers-... 2nd Ed. Raj Kamal

Pearson Education46

NOP Instruction Execution

Fetch opcode-bits =

00000000STEP 1

PCH Time

1 clock

cycle

PCL Add PCH- PCL

0001H

Branch is to next to next address after NOP

Next instruction

Page 47: 8051 Family Microcontrollers Instruction · PDF file8051 Family Microcontrollers Instruction Set Chapter 4. ... 8051 Add in Next instruction’s PC PC bit15-b0 SJMP rel 2nd byte of

2011 Microcontrollers-... 2nd Ed. Raj Kamal

Pearson Education47

Let SP = 77H

Return from interrupt ISR— RETI

Return retrieves PC if no interrupt arose during ISR running then the PCH from 79H, PCL from 78H. PC again = 1F0EH. SP = 77H.

Let PC before the ISR CALL = 1F0CH

ISR call stacks 1F0EH at 08-09H. 78H 0E and 79H 1F

Return retrieves PC of last interrupted ISR.

Page 48: 8051 Family Microcontrollers Instruction · PDF file8051 Family Microcontrollers Instruction Set Chapter 4. ... 8051 Add in Next instruction’s PC PC bit15-b0 SJMP rel 2nd byte of

2011 Microcontrollers-... 2nd Ed. Raj Kamal

Pearson Education48

Summary

Page 49: 8051 Family Microcontrollers Instruction · PDF file8051 Family Microcontrollers Instruction Set Chapter 4. ... 8051 Add in Next instruction’s PC PC bit15-b0 SJMP rel 2nd byte of

2011 Microcontrollers-... 2nd Ed. Raj Kamal

Pearson Education49

We learnt 8051 family program flow control instructions

• AJMP,LJMO, SJMP rel,

• conditional jumps

• decrement and then test and jump

• increment and then test and jump

• LCALL,ACALL, RET

• NOP and RETI