![Page 1: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/1.jpg)
Chapter 3 Instruction Set
How to write a program
The 8051 Microcontroller
Lê Chí Thông 1
Lê Chí Thông
sites.google.com/site/chithong
Ho Chi Minh City University of Technology
![Page 2: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/2.jpg)
Instruction Set
• 255 instructions
1-byte instructions: 139
2-byte instructions: 92
3-byte instructions: 24
• Summary instruction set (pdf)
• Full instruction set (pdf)
Lê Chí Thông 2
![Page 3: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/3.jpg)
The First ProgramFirst_program.asm
ORG 0000H
MOV P1,#0FH
SETB P1.7
CLR P1.0
END
Lê Chí Thông 3
First_program.hex
:0700000075900FD297C2902A
:00000001FF
First_program.lst
LOC OBJ LINE SOURCE
0000 1 ORG 0000H
0000 75900F 2 MOV P1,#0FH
0003 D297 3 SETB P1.7
0005 C290 4 CLR P1.0
5 END
Byte count
Load addressOpcode
Checksum =
2’s complement
of all data
Type
end of file record type
0000H 75H
0001H 90H
0002H 0FH
0003H D2H
0004H 97H
0005H C2H
0006H 90H
CodeMemory
![Page 4: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/4.jpg)
Registers and Data Transfer Instructions
• Register
o Register A = accumulator
o Register B
o Register R0 – R7
• Data Transfer Instruction
o MOV destination, source
Ex:
MOV A,R0
MOV R1,B
MOV R1,R3Lê Chí Thông
A R0
R1 B
4
![Page 5: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/5.jpg)
Internal RAM
• 128 locations from address 00H to 7FH (256 locations for 8052)
• The content of one location is 8 bit.
• Register banks: address 00H to 1FH
• Bit Addressable RAM: address 20H to 2FH
• General purpose RAM: address from 30H to 7FH
Lê Chí Thông 5
![Page 6: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/6.jpg)
Bit-addressable
RAM (20H-2FH)
Register banks
(00H-1FH)
General purpose
RAM (30H-7FH)
Special function registers
(SFRs)(80H-FFH)
Lê Chí Thông 6
![Page 7: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/7.jpg)
• Address from 30H to 7FH
• The content of one location is 8 bit.
Ex: MOV A,30H
This instruction moves (reads) the content of location 30H (NOT data 30H) to register A.
Ex: MOV 31H,R4
This instruction moves (writes) the content of register R4to location 31H.
Lê Chí Thông
General Purpose RAM
A 30H
31H R4
7
![Page 8: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/8.jpg)
Bit-addressable
RAM (20H-2FH)
Register banks
(00H-1FH)
General purpose
RAM (30H-7FH)
Special function registers
(SFRs)(80H-FFH)
Lê Chí Thông 8
![Page 9: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/9.jpg)
• Address from 20H to 2FH
• The content of one location is 8 bit.
• Can read/write a byte or a bit
Ex: MOV 20H, A ; writes the content of register A to location 20H.
Ex: SETB 20H.0
or SETB 00H
Ex: MOV C,31H
or MOV C, 26H.1
Lê Chí Thông
Bit Addressable RAM
20H A
20H 1
Not affected
26HCY
9
![Page 10: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/10.jpg)
Bit-addressable
RAM (20H-2FH)
Register banks
(00H-1FH)
General purpose
RAM (30H-7FH)
Special function registers
(SFRs)(80H-FFH)
Lê Chí Thông 10
![Page 11: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/11.jpg)
• 4 banks: Bank 0 (default), Bank 1, Bank 2, and Bank 3
• Change register bank by selecting bits RS1 and RS0 (in register PSW)
• One bank includes 8 registers: R0 through R7o R0 of Bank 0 is location 00H
o …
o R7 of Bank 0 is location 07H
o R0 of Bank 1 is location 08H
o …
o R7 of Bank 1 is location 0FH
o R0 of Bank 2 is location 10H
o …
o R7 of Bank 2 is location 17H
o R0 of Bank 3 is location 18H
o …
o R7 of Bank 3 is location 1FH Lê Chí Thông
Register Banks
11
![Page 12: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/12.jpg)
o R1 of Bank 0 is location ………
o R5 of Bank 0 is location ………
o R5 of Bank 1 is location ………
o R1 of Bank 2 is location ………
o R2 of Bank 3 is location ………
o R6 of Bank 3 is location ………
Lê Chí Thông
Register Banks – Your Turn!
12
![Page 13: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/13.jpg)
Ex: use default bank (Bank 0)
MOV A, R5 = MOV A, 05H
MOV R0, A = MOV 00H, A
Lê Chí Thông
Register Banks
R5 05H≡
Read the contents of register R5 into the accumulator
Read the contents of location 05H into the accumulator
Read the contents of register Ainto register R0
Read the contents of register Ainto location 00H
13
![Page 14: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/14.jpg)
Lê Chí Thông
Register PSW (Program Status Word)
14
![Page 15: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/15.jpg)
The active bank is selected by bit RS1 (PSW.4) & RS0 (PSW.3)
Ex: MOV PSW, #00010000B ; select bank 2
or SETB RS1
CLR RS0
Try it: Select bank 1
……………………..
……………………..Lê Chí Thông
Selecting Register Bank
RS1 RS0 Bank
0 0 0
0 1 1
1 0 2
1 1 3
15
![Page 16: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/16.jpg)
Bit-addressable
RAM (20H-2FH)
Register banks
(00H-1FH)
General purpose
RAM (30H-7FH)
Special function registers
(SFRs)(80H-FFH)
Lê Chí Thông 16
![Page 17: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/17.jpg)
Lê Chí Thông
Special Function Registers (SFRs)• SFRs include register A, B, PSW, P0, P1, P2, P3, DPTR,
TMOD, SCON …
• All SFRs are accessible by name and direct address.
• Both of them must be coded as direct addressEx: MOV P1, A ; Output register A to Port 1
MOV 90H, A ; same
Same opcode: F5 90Ex: MOV R1, ACC
MOV R1, 0E0H
Same opcode: A9 E0Ex: MOV R1, ACC
MOV R1, A
Same function BUT different opcodes (A9 E0 vs. F9)
Try it: Input Port 2 to register A ……………………………17
![Page 18: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/18.jpg)
1. Immediate Addressing
2. Register Addressing
3. Direct Addressing
4. Indirect Addressing
5. Relative Addressing
6. Absolute Addressing
7. Long Addressing
8. Indexed Addressing
Addressing Modes
Lê Chí Thông 18
![Page 19: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/19.jpg)
Lê Chí Thông
Coding format- Addressing modes
19
![Page 20: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/20.jpg)
- Source operand is constant
- Use # sign
(Source)
MOV A,#12
MOV A,#0C4H
MOV R1,#1110B
ADD A,#11110001B
MOV DPTR,#2000H
Immediate Addressing
Lê Chí Thông
A 0 0 0 0 1 1 0 0
A 1 1 0 0 0 1 0 0
R1 0 0 0 0 1 1 1 0
A 1 0 1 1 0 1 0 1CY 1
DPH 0 0 1 0 0 0 0 0 DPL 0 0 0 0 0 0 0 0
20
![Page 21: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/21.jpg)
Ex: MOV R1,#36H
MOV A,R1
MOV R7,#0FH
ANL A,R7
INC A
DEC A
MOV DPTR,#2000
INC DPTR (source)
Lê Chí Thông
Register Addressing
R1 0 0 1 1 0 1 1 0
A 0 0 1 1 0 1 1 0
R7 0 0 0 0 1 1 1 1
A 0 0 0 0 0 1 1 0
A 0 0 0 0 0 1 1 1
A 0 0 0 0 0 1 1 0
DPH 0 0 1 0 0 0 0 0 DPL 0 0 0 0 0 0 0 1
21
![Page 22: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/22.jpg)
Direct Addressing
Lê Chí Thông
• Access internal RAM and SFRs
MOV A,70H ; copy contents of RAM at 70H to A
MOV R0,40H ; copy contents of RAM at 40H to A
MOV 56H,A ; put contents of A into RAM at 56H
MOV 0D0H,A ; put contents of A into PSW
MOV PSW,A ; same
22
![Page 23: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/23.jpg)
Direct Addressing vs. Immediate Addressing
Lê Chí Thông
MOV A,30H MOV A,#30H
Direct addressing Immediate addressing
A 30H A 0 0 1 1 0 0 0 0
23
≠
![Page 24: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/24.jpg)
Play with R0-R7 (bank 0) by Direct Addressing
Lê Chí Thông
MOV A,4 MOV A,R4
MOV A,7 MOV A,R7
MOV 7,6 MOV R7,R6
MOV R2,#05 ; Put 5 in R2
MOV R2,5 ; Put content of RAM at address 5 in R2
R2 05H R2 0 0 0 0 0 1 0 1
24
≠MOV R2,5 MOV R2,#5
![Page 25: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/25.jpg)
1. Immediate Addressing
2. Register Addressing
3. Direct Addressing
4. Indirect Addressing
5. Relative Addressing
6. Absolute Addressing
7. Long Addressing
8. Indexed Addressing
Addressing Modes
Lê Chí Thông 25
![Page 26: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/26.jpg)
• The address of the source or destination is specified in registers.
• Use registers R0 or R1 for 8-bit address (internal or external RAM)
• Use @ sign to access the content of the memory location: @R0, @R1
Ex: MOV R0,#30H ;R0 30H
MOV A,@R0 ;A(R0): read content of internal RAM at ; address specified by R0 to A
Indirect Addressing
Lê Chí Thông
A
7FH
30H
00H
R0 0 0 1 1 0 0 0 0Internal RAM
26
![Page 27: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/27.jpg)
Ex: Write a program to move (write) the content of A to location 32H in internal RAM using 2 methods of addressing: direct addressing and indirect addressing. Method 1: Direct addressing
ORG 0000H
MOV 32H,A
END
Method 2: Indirect addressingORG 0000H
MOV R0,#32H
MOV @R0,A
END
Lê Chí Thông 27
Ex: Write Data to Internal RAM (1)
![Page 28: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/28.jpg)
Ex: Write Data to Internal RAM (2)Write a program to move (write) 40H to location 30H in internal RAM using 2 methods of addressing: direct addressing and indirect addressing. Method 1: Direct addressing
ORG 0000H
MOV 30H,#40H
END
Method 2: Indirect addressingORG 0000H
MOV R0,#30H
MOV @R0,#40H
END
Lê Chí Thông 28
![Page 29: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/29.jpg)
Ex: Clear Internal RAMEx: Write a program to clear location 31H in internal RAM using 2 methods of addressing: direct addressing and indirect addressing. Hint: to clear means to reset the data to zero. Method 1: Direct addressing
ORG 0000H
MOV 31H,#0
END
Method 2: Indirect addressingORG 0000H
MOV R0,#31H
MOV @R0,#0
END
Lê Chí Thông 29
![Page 30: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/30.jpg)
Ex: Write a program to move (read) the content of location 33H in internal RAM to register A using 2 methods of addressing: direct addressing and indirect addressing. Method 1: Direct addressing
ORG 0000H
MOV A,33H
END
Method 2: Indirect addressingORG 0000H
MOV R0,#33H
MOV A,@R0
END
Lê Chí Thông 30
Ex: Read Data from Internal RAM
![Page 31: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/31.jpg)
Ex: Write a program to move (transfer) the content of internal RAM from address 34H to address 35H, using 2 methods of addressing: direct addressing and indirect addressing. Method 1: Direct addressing
ORG 0000H
MOV 35H,34H
END
Method 2: Indirect addressingORG 0000H
MOV R0,#34H
MOV A,@R0
INC R0
MOV @R0,A
END
Lê Chí Thông 31
Ex: Data Transfer (Read/Write)
![Page 32: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/32.jpg)
Ex: MOV R0,#30H ;R0 30H
MOVX A,@R0 ;A(R0): read content of eXternal RAM at ; address specified by R0 to A
Indirect Addressing – External 8-bit address RAM
Lê Chí Thông
A 30H
00H
External RAMR0 0 0 1 1 0 0 0 0
32
![Page 33: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/33.jpg)
• Uses DPTR register for 16-bit addresses (external memory)
• Use @ sign to access the content of the memory location:@DPTR
Ex: MOV DPTR,#4000H ; DPTR Address
MOVX A,@DPTR ; read content of external RAM at
; address 4000H to A
Lê Chí Thông
A 4000H
00H
External RAMDPTR 40H 00H
33
Indirect Addressing – External 16-bit address RAM
![Page 34: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/34.jpg)
Ex: MOV DPTR,#31FFH ; DPTR Address
MOVX @DPTR,A ; write content of A to external RAM
; at address 31FFH
A 31FFH
00H
External RAMDPTR 31H FFH
Lê Chí Thông 34
Indirect Addressing – External 16-bit address RAM
![Page 35: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/35.jpg)
Ex: Write a program to move the content of register A to location 0033H in external RAM.
ORG 0000H
MOV DPTR,#0033H
MOVX @DPTTR,A
END
Lê Chí Thông 35
Write Data to External RAM (1)
![Page 36: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/36.jpg)
Ex: Write a program to write 40H to location 0030H in externalRAM.
ORG 0000H
MOV A,#40H
MOV DPTR,#0030H
MOVX @DPTR,A
END
Lê Chí Thông 36
Write Data to External RAM (2)
![Page 37: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/37.jpg)
Ex: Write a program to clear location 0031H in external RAM. ORG 0000H
CLR A
MOV DPTR,#0031H
MOVX @DPTTR,A
END
Lê Chí Thông 37
Clear External RAM
![Page 38: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/38.jpg)
Ex: Write a program to read data from external RAM at address 0032 to register A.
ORG 0000H
MOV DPTR,#0032H
MOVX A,@DPTTR
END
Lê Chí Thông 38
Read Data from External RAM
![Page 39: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/39.jpg)
Ex: Write a program to move the content of location 0034H in external RAM to location 0035H in external RAM.
ORG 0000H
MOV DPTR,#0034H
MOVX A,@DPTTR
INC DPTR
MOVX @DPTR,A
END
Lê Chí Thông 39
Read/Write External RAM
![Page 40: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/40.jpg)
Write a program to move data from internal RAM at address 56H to external RAM at address 4123H.
ORG 0000H
MOV A, 56H
MOV DPTR, #4123H
MOVX @DPTR, A
END
Your Turn!
Lê Chí Thông 40
![Page 41: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/41.jpg)
Register Addressing vs. Indirect Addressing
Lê Chí Thông
MOV A,R1 MOV A,@R1
Register addressing
Indirect addressing
A R1
41
A
7FH
00H
R1Internal RAM
≠
![Page 42: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/42.jpg)
Ex: (Implementation of array)
Clear internal RAM from address60H to 7FH
MOV R0, #60H
LOOP: MOV @R0, #0
INC R0
CJNE R0, #80H, LOOP
Example of Indirect Addressing
Lê Chí Thông 42
R0 60H
(R0) 0
R0 R0+1
R0= 80h?N
Y
![Page 43: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/43.jpg)
Write a program to output (send) the content of internal RAM, from address 20H to 45H, to Port 1
ORG 0000H
MOV R0, #20H
LOOP:
MOV A, @R0
MOV P1, A
INC R0
CJNE R0, #46H, LOOP
END
Your Turn!
Lê Chí Thông 43
![Page 44: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/44.jpg)
1. Immediate Addressing
2. Register Addressing
3. Direct Addressing
4. Indirect Addressing
5. Relative Addressing
6. Absolute Addressing
7. Long Addressing
8. Indexed Addressing
Addressing Modes
Lê Chí Thông 44
![Page 45: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/45.jpg)
• Used in SJMP instruction
• A relative address (or offset) is an 8-bit signed value.
• It is added to PC to form a new value for PC.
• Range: -128 ~ +127
• Usually used with label
Ex: SJMP LABEL1 is in memory at locations 0100H and 0101H
PC = 0102H
If LABEL1 is the label representing an instruction at location 0107H
Relative offset is 0107H – 0102H = 5
Opcode of SJMP LABEL1 is 80 05
Relative Addressing
Lê Chí Thông 45
![Page 46: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/46.jpg)
Ex: SJMP LABEL2 is in memory at locations 2040H and 2041H
PC = 2042H
If LABEL2 is the label representing an instruction at location 2038H
Relative offset is 2038H – 2042H = -10 = F6H
Opcode of SJMP LABEL1 is 80 F6
Relative Addressing
Lê Chí Thông 46
![Page 47: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/47.jpg)
Ex: ORG 0000H
AGAIN: SETB P1.0
NOP
NOP
CLR P1.0
NOP
SJMP AGAIN
END
a. Find the opcode of SJMP AGAIN instruction?
b. Find the duration of P1.0=1? P1.0=0?
c. What is the result of this program?
Your Turn!
Lê Chí Thông 47
![Page 48: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/48.jpg)
• Used in AJMP, ACALL instruction
• Usually used with label
Absolute Addressing
Memory map showing 2K pages
Lê Chí Thông 48
Within any 2K page, the upper five address
bits are the same for the source and
destination addresses.
The lower 11 bits of the destination are
supplied in the instruction
![Page 49: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/49.jpg)
• Used in LCALL and LJMP instruction
• Use full 16-bit address
• Usually used with label
Ex: LCALL SUBPROGRAM1
LJMP LABEL2
Long Addressing
Lê Chí Thông 49
![Page 50: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/50.jpg)
• Base address (PC or DPTR) + Offset (A) Effective Address
• Used with JMP or MOVC
Ex: MOVC A, @A+DPTR
MOVC A, @A+PC
JMP @A+DPTR
Indexed Addressing
Lê Chí Thông 50
![Page 51: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/51.jpg)
Ex: An even number from 0 to 6 is in the Accumulator. The following sequence of instructions branches to one of four AJMP instructions in a jump table starting at JMP_TBL.
MOV DPTR, # JMP_TBL
JMP @A + DPTR
JMP_TBL: AJMP LABEL0
AJMP LABEL1
AJMP LABEL2
AJMP LABEL3
• If the Accumulator equals 04H when starting this sequence, execution jumps to label LABEL2. Because AJMP is a 2-byte instruction, the jump instructions start at every other address.
Indexed Addressing
Lê Chí Thông 51
![Page 52: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/52.jpg)
Instruction Types
• Data transfer
• Arithmetic
• Logical
• Boolean variable
• Program branching
Lê Chí Thông 52
![Page 53: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/53.jpg)
8051 Instruction Set SummaryLegend
Lê Chí Thông 53
![Page 54: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/54.jpg)
8051 Instruction Set SummaryData Transfer
Lê Chí Thông 54
![Page 55: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/55.jpg)
8051 Instruction Set SummaryData Transfer
Lê Chí Thông 55
![Page 56: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/56.jpg)
Data TransferMOV dest, source ; dest source
MOV A,#72H ;A=72HMOV R4,#62H ;R4=62HMOV B,0F9H ;B=the content of address F9H of RAM
MOV DPTR,#7634HMOV DPL,#34HMOV DPH,#76H
MOV P1,A ;move (out) A to Port 1
Note 1:MOV A,#72H ≠ MOV A,72H
Note 2:MOV A,R3 ≡ MOV A,3 ;R3 of bank 0 is location 3
Lê Chí Thông 56
![Page 57: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/57.jpg)
Creating a Loop (1)Ex: Write a program to write 40H to internal RAM from location 30H to location 36H.
ORG 0000H
MOV 30H,#40H
MOV 31H,#40H
MOV 32H,#40H
MOV 33H,#40H
MOV 34H,#40H
MOV 35H,#40H
MOV 36H,#40H
END
Lê Chí Thông 57
![Page 58: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/58.jpg)
Ex: Write a program to write 40H to internal RAMfrom location 30H to location 36H.(source)
ORG 0000H
MOV R5,#7 ;Loop=7
MOV R1,#30H;Address=30H
Again: MOV @R1,#40H
INC R1
DEC R5
CJNE R5,#0,Again
END
Lê Chí Thông 58
Addr 30H
(Addr) 40H
AddrAddr+1
Loop=0?N
Y
Loop 7
LoopLoop-1
Creating a Loop (2)
![Page 59: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/59.jpg)
Ex: Write a program to write 40H to internal RAMfrom location 30H to location 36H.(source)
ORG 0000H
MOV R5,#7;Loop=7
MOV R1,#30H;Address=30H
Again: MOV @R1,#40H
INC R1
DJNZ R5,Again
END
Lê Chí Thông 59
Creating a Loop (3)
Addr 30H
(Addr) 40H
AddrAddr+1
Loop=0?N
Y
Loop 7
LoopLoop-1
![Page 60: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/60.jpg)
Ex: Write a program to write 40H to internal RAMfrom location 30H to location 36H.(source)
ORG 0000H
MOV R1,#30H;Address=30H
Again: MOV @R1,#40H
INC R1
CJNE R1,#37H,Again
END
Lê Chí Thông 60
Creating a Loop (4)
Addr 30H
(Addr) 40H
AddrAddr+1
Addr=37H?N
Y
![Page 61: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/61.jpg)
Your Turn! Write a program to read data from internal RAM from location 20H to location 29H and output to Port 1
Lê Chí Thông 61
![Page 62: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/62.jpg)
Solutions (1)Write a program to read data from internal RAM from location 20H to location 29H and output to Port 1Method 1: using DJNZ
ORG 0000H
MOV R7,#10
MOV R0,#20H
Loop:MOV P1,@R0 ;Output to Port1
INC R0
DJNZ R7,loop
END
Lê Chí Thông 62
![Page 63: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/63.jpg)
Solutions (2)Write a program to read data from internal RAM from location 20H to location 29H and output to Port 1Method 2: using CJNE
ORG 0000H
MOV R0,#20H
Loop:MOV P1,@R0 ;Output to Port1
INC R0
CJNE R0,#2AH,loop
END
Lê Chí Thông 63
![Page 64: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/64.jpg)
MOV A,#ENTRY_NUMBER
MOV DPTR,#TABLE
MOVC A,@A+DPTR
TABLE: DB data1, data2, data3, …
Lê Chí Thông 64
Look-up Table
![Page 65: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/65.jpg)
Given a packed-BCD number in location 33H of internal RAM. Writea program that calculate the square of high decade of this number,and store the result in internal RAM at address 34H
ORG 0MOV A,33HSWAP AANL A,#0FHMOV DPTR,#TABLEMOVC A,@A+DPTRMOV 34H, A
TABLE:DB 0,1,4,9,16,25,36,49,64,81END
Lê Chí Thông 65
Look-up Table - Example
![Page 66: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/66.jpg)
Given a packed-BCD number in location 34H of internal RAM. Writea program that displays the low decade of this number on thecommon-anode 7-seg LED connected to Port 2 (schematic).
Lê Chí Thông 66
Your Turn!
![Page 67: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/67.jpg)
Lê Chí Thông 67
Create the TableD7 D6
gD5f
D4e
D3d
D2c
D1b
D0a
0 0 1 0 0 0 0 0 0 40H
1 0 1 1 1 1 0 0 1 79H
2 0 0 1 0 0 1 0 0 24H
3 0 0 1 1 0 0 0 0 30H
4 0 0 0 1 1 0 0 1 19H
5 0 0 0 1 0 0 1 0 12H
6 0 0 0 0 0 0 1 0 02H
7 0 1 1 1 1 0 0 0 78H
8 0 0 0 0 0 0 0 0 00H
9 0 0 0 1 0 0 0 0 10H
TABLE: DB 40h,79h,24h,30h,19h, 12h,02h,78h,00h,10h
![Page 68: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/68.jpg)
ORG 0000HMOV 34H,#25HMOV A,34HANL A,#0FHMOV DPTR,#TABLEMOVC A,@A+DPTRMOV P2,ASJMP DONE
TABLE: DB 40h,79h,24h,30h,19hDB 12h,02h,78h,00h,10h
DONE: NOPEND
(source)
Lê Chí Thông 68
Solutions
![Page 69: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/69.jpg)
MOV A, #ENTRY_NUMBER
CALL LOOK_UP
…
LOOK_UP:
INC A
MOVC A, @A+PC
RET
TABLE:
DB data1, data2, data3, …
Lê Chí Thông 69
Look-up Table
![Page 70: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/70.jpg)
MOV DPTR,#JUMP_TABLEMOV A,INDEX_NUMBERRL AJMP @A+DPTR…
JUMP_TABLE: AJMP CASE0AJMP CASE1AJMP CASE2…
Lê Chí Thông
Jump Table
70
![Page 71: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/71.jpg)
8051 Instruction Set SummaryArithmetic Operations
Lê Chí Thông 71
![Page 72: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/72.jpg)
8051 Instruction Set SummaryArithmetic Operations
Lê Chí Thông 72
![Page 73: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/73.jpg)
8051 Instruction Set SummaryArithmetic Operations
Lê Chí Thông 73
![Page 74: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/74.jpg)
8051 Instruction Set SummaryFlag Effect
Lê Chí Thông 74
![Page 75: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/75.jpg)
Arithmetic Operations (1)
ADD A,#34H ; Immediate addressing A A + 34H
ADD A,34H ;Direct addressing A A + (34H)
ADD A,R1 ;Register addressing A A + R1
ADD A,@R1 ;Indirect addressing A A + (R1)
Lê Chí Thông 75
![Page 76: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/76.jpg)
Arithmetic Operations (2)
MOV A,#23H ; A = 23H, CY = 0, P = 1, OV = 0
ADD A,#22 ; A = 39H, CY = 0, P = 0, OV = 0
ADD A,#11100111B ; A = 20H, CY = 1, P = 1, OV = 0
ADDC A,#09H ; A = 2AH, CY = 0, P = 1, OV = 0
SUBB A,#00100111B ; A = 03H, CY = 0, P = 0, OV = 0
SUBB A,#3 ; A = 00H, CY = 0, P = 0, OV = 0
SUBB A,#0F2H ; A = 0EH, CY = 1, P = 1, OV = 0
Lê Chí Thông 76
![Page 77: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/77.jpg)
Arithmetic Operations (3)
MOV A,#45 ; A = 2DH, CY = 1, P = 0, OV = 0
MOV B,#12H ; B = 12H
MUL AB ; A = 2AH, B = 03H
MOV B,#10 ; B = 10
DIV AB ; A = 04H, B = 02H
MOV A,#-100 ; A = 9CH, CY = 0, P = 0, OV = 0
ADD A,#-50 ; A = 6AH, CY = 1, P = 0, OV = 1
MOV A,#120 ; A = 78H, CY = 1, P = 0, OV = 1
ADD A,#30 ; A = 44H, CY = 0, P = 0, OV = 1
Lê Chí Thông 77
![Page 78: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/78.jpg)
Your Turn!Given 10 8-bit unsigned numbers in internal RAM at starting address 30H. Write a program to calculate the sum of these numbers and store the result in internal RAM at address 2FH. Assume that the result is less than or equal 255.
Lê Chí Thông 78
![Page 79: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/79.jpg)
SolutionsGiven 10 8-bit unsigned numbers in internal RAM at starting address 30H. Write a program to calculate the sum of these numbers and store the result in internal RAM at address 2FH. Assume that the result is less than or equal 255.
ORG 0MOV R0,#30HCLR AMOV R2,#10
loop: ADD A,@R0INC R0DJNZ R2,loopMOV 2FH,AEND
Lê Chí Thông 79
![Page 80: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/80.jpg)
• Rotate instructions operate only on A
RL A
MOV A,#0F0H ; A 11110000
RR A ; A 11100001
RR A
MOV A,#0F0H ; A 11110000
RR A ; A 01111000
Rotate
80Lê Chí Thông
![Page 81: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/81.jpg)
RRC A
MOV A, #0A9H ; A A9H
ADD A, #14H ; A BDH (10111101), C0
RRC A ; A 01011110, C1
RLC A
MOV A, #3CH ; A 3CH(00111100)
SETB C ; C 1
RLC A ; A 01111001, C1
C
C
Rotate through Carry
81Lê Chí Thông
![Page 82: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/82.jpg)
• Note that a shift left is the same as multiplying by 2, shift right is divide by 2
MOV A, #3 ; A 00000011 (3)
CLR C ; C 0
RLC A ; A 00000110 (6)
RLC A ; A 00001100 (12)
RRC A ; A 00000110 (6)
Rotate and Multiplication/Division
82Lê Chí Thông
![Page 83: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/83.jpg)
SWAP A
MOV A, #72H ; A 72H
SWAP A ; A = 27H
Swap
83Lê Chí Thông
![Page 84: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/84.jpg)
8051 Instruction Set SummaryLogic Operations
Lê Chí Thông 84
![Page 85: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/85.jpg)
Logic Operations (1)
Lê Chí Thông 85
MOV A,#46H
MOV R3,A
ANL A,#0FH
MOV R7,A
MOV A,R3
ANL A,#0F0H
SWAP A
MOV R6,A
R6 = ………………………….; R7 = …………………………….
![Page 86: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/86.jpg)
Logic Operations (2)
Lê Chí Thông 86
MOV R2,#05H
MOV R3,#07H
MOV A,R2
SWAP A
ORL A,R3
A = ………………………….
![Page 87: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/87.jpg)
8051 Instruction Set SummaryBoolean Variable
Lê Chí Thông 87
![Page 88: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/88.jpg)
Boolean Variable
Lê Chí Thông 88
ORG 0
LOOP: MOV C,P1.0
ANL C,P1.1
MOV P1.2,C
SJMP LOOP
END
![Page 89: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/89.jpg)
Your Turn!
Lê Chí Thông 89
![Page 90: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/90.jpg)
Solutions
Lê Chí Thông 90
ORG 0
LOOP: MOV C,P1.4
CPL C
ANL C,P1.5
CPL C
ORL C,P1.6
MOV P1.7,C
SJMP LOOP
END
![Page 91: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/91.jpg)
8051 Instruction Set SummaryProgram Branching
Lê Chí Thông 91
![Page 92: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/92.jpg)
8051 Instruction Set SummaryProgram Branching
Lê Chí Thông 92
![Page 93: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/93.jpg)
Program Branching
Lê Chí Thông 93
LJMP(long jump)LJMP is an unconditional jump. It is a 3-byte instruction. It allows a jump to any memory location from 0000 to FFFFH.
AJMP(absolute jump)In this 2-byte instruction, It allows a jump to any memory location within the 2k block of program memory.
SJMP(short jump)In this 2-byte instruction. The relative address range of 00-FFH is divided into forward and backward jumps, that is , within -128 to +127 bytes of memory relative to the address of the current PC.
SJMP : 8-bit offsetLJMP : 11-bit address (2KB segment)AJMP : 16-bit
Unconditional jumps
![Page 94: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/94.jpg)
Conditional Jumps
Lê Chí Thông 94
JZ Jump if A=0
JNZ Jump if A ≠ 0
DJNZ Decrement and jump if ≠ 0
CJNE A,byte Jump if A ≠ byte
CJNE reg,#data Jump if byte ≠ #data
JC Jump if CY=1
JNC Jump if CY=0
JB Jump if bit=1
JNB Jump if bit=0
JBC Jump if bit=1 and clear bit
![Page 95: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/95.jpg)
CALL Instruction
Lê Chí Thông 95
LCALL(long call)This 3-byte instruction can be used to call subroutines located anywhere within the 64K byte address space of the 8051.
ACALL (absolute call)
ACALL is 2-byte instruction. the target address of the subroutine must be within 2K byte range.
![Page 96: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/96.jpg)
• Call is similar to a jump, but
– Call pushes PC on stack before branching
ACALL <address ll> ; stack PC
; PC address 11 bit
LCALL <address 16> ; stack PC
; PC address 16 bit
Call and Return
96Lê Chí Thông
![Page 97: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/97.jpg)
• Return is also similar to a jump, but
– Return instruction pops PC from stack to get address to jump to
RET ; PC stack
Call and Return
97Lê Chí Thông
![Page 98: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/98.jpg)
MAIN: ...
ACALL SUBLABEL
...
...
SUBLABEL: ...
...
RET
the subroutine
call to the subroutine
Subroutines
98Lê Chí Thông
![Page 99: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/99.jpg)
DJNZ – a For loop
Lê Chí Thông 99
Use DJNZ to create a for loop control
Ex: a 10-time loopMOV R7,#10
LOOP: (begin loop)……(end loop)DJNZ R7,LOOP(continue)
![Page 100: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/100.jpg)
DJNZ – a For loop
Lê Chí Thông 100
Use DJNZ to create a 1000-time loop?
![Page 101: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/101.jpg)
DJNZ – an example
Lê Chí Thông 101
Ex: Write a program to write 40H to internal RAM from location 30H to location 36H.(source)
ORG 0000H
MOV R5,#7;Loop=7
MOV R1,#30H;Address=30H
Again: MOV @R1,#40H
INC R1
DJNZ R5,Again
END
Addr 30H
(Addr) 40H
AddrAddr+1
Loop=0?N
Y
Loop 7
LoopLoop-1
![Page 102: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/102.jpg)
Write a program to clear ACC, then add 3 to the accumulator ten times.
Solution:
MOV A,#0
MOV R2,#10
AGAIN: ADD A,#03
DJNZ R2,AGAIN ;repeat until R2=0 (10 times)
MOV R5,A
Lê Chí Thông 102
DJNZ – another example
![Page 103: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/103.jpg)
Write a program to copy a block of 10 bytes from RAM location starting at 37h to RAM location starting at 59h.
Lê Chí Thông 103
DJNZ – Your Turn!
![Page 104: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/104.jpg)
Write a program to copy a block of 10 bytes from RAM location starting at 37h to RAM location starting at 59h.
Solution:MOV R0,#37h ; source pointerMOV R1,#59h ; dest pointer MOV R2,#10 ; counter
L1: MOV A,@R0MOV @R1,AINC R0INC R1DJNZ R2,L1
Lê Chí Thông 104
Solutions
![Page 106: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/106.jpg)
ORG 0LOOP: SETB P1.0
ACALL DELAYCLR P1.0ACALL DELAYSJMP LOOP
DELAY: MOV R6,#200DL1: MOV R7,#250
DJNZ R7,$DJNZ R6,DL1RETEND
(source)
Waveform? Period? Frequency?
Lê Chí Thông 106
Blinky Program
P1.0 1
Delay
P1.0 0
Delay
![Page 107: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/107.jpg)
ORG 0LOOP: SETB P1.0
ACALL DELAYCLR P1.0ACALL DELAYSJMP LOOP
DELAY: MOV R6,#200DL1: MOV R7,#250 1MC x 1
DJNZ R7,$ 2 MC x 250DJNZ R6,DL1RETEND
Lê Chí Thông 107
Blinky Program
501 MC
![Page 108: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/108.jpg)
ORG 0LOOP: SETB P1.0
ACALL DELAYCLR P1.0ACALL DELAYSJMP LOOP
DELAY: MOV R6,#200 1 MC x 1DL1: MOV R7,#250
DJNZ R7,$DJNZ R6,DL1 2 MC x 200RETEND
Lê Chí Thông 108
Blinky Program
501 MC x 200 100,601 MC
![Page 109: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/109.jpg)
ORG 0LOOP: SETB P1.0
ACALL DELAYCLR P1.0ACALL DELAYSJMP LOOP
DELAY: MOV R6,#200DL1: MOV R7,#250
DJNZ R7,$DJNZ R6,DL1RET 2 MCEND
Lê Chí Thông 109
Blinky Program
100,601 MC100,603 MC
![Page 110: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/110.jpg)
ORG 0LOOP: SETB P1.0 1 MC
ACALL DELAY 100,063 + 2 MCCLR P1.0 1 MCACALL DELAY 100,063 + 2 MCSJMP LOOP 2 MC
DELAY: MOV R6,#200DL1: MOV R7,#250
DJNZ R7,$DJNZ R6,DL1RETEND
tH = 100,063 + 2 + 1 = 100,066 MC tL = 100,063 + 2 + 2 + 1 = 100,068 MC
Lê Chí Thông 110
Blinky Program
![Page 111: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/111.jpg)
If using 12 MHz crystal, 1 MC = 1 μs
tH = 100,066 MC = 100,066 μs
tL = 100,068 MC = 100,068 μs
T = tH + tL = 200,134 μs
f = 1/T = 4.99 Hz
Lê Chí Thông 111
Blinky Program
tH tL
T
P1.0 1
Delay tH
P1.0 0
Delay tL
![Page 112: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/112.jpg)
ORG 0LOOP: SETB P1.0
ACALL DELAYCLR P1.0ACALL DELAYSJMP LOOP
DELAY: MOV R6,#200DL1: MOV R7,#250
DJNZ R7,$DJNZ R6,DL1RETEND
tH = tL ≈ tDELAY ≈ 200 x 250 x 2 MC = 100,000 MC = 100,000 μs T ≈ 200,000 μs f ≈ 5 Hz
Lê Chí Thông 112
Blinky Program - Estimating
P1.0 1
Delay tH
P1.0 0
Delay tL
![Page 113: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/113.jpg)
ORG 0LOOP: CPL P1.0
ACALL DELAYSJMP LOOP
DELAY: MOV R6,#200DL1: MOV R7,#250
DJNZ R7,$DJNZ R6,DL1RETEND
Lê Chí Thông 113
Blinky Program – Alternative Method
P1.0 NOT (P1.0)
Delay
P1.0 1
Delay
P1.0 0
Delay
![Page 114: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/114.jpg)
Write a program that creates a 10-KHz square wave at pin P1.3. Assume that crystal is 24 MHz.
Lê Chí Thông 114
10-kHz square wave
![Page 115: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/115.jpg)
Write a program that creates a 10-KHz square wave at pin P1.3. Assume that crystal is 24 MHz.
Lê Chí Thông 115
10-kHz square wave
tH tL
T
P1.3 1
Delay tH
P1.3 0
Delay tL
P1.3 NOT (P1.3)
Delay
If tH = tL
![Page 116: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/116.jpg)
Write a program that creates a 10-KHz square wave at pin P1.3. Assume that crystal is 24 MHz.
ORG 0000Hlap: CPL P1.3
ACALL delaySJMP lap
delay:MOV R4,#50DJNZ R4,$RETEND
Lê Chí Thông 116
10-kHz square wave
P1.3 NOT (P1.3)
Delay
![Page 117: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/117.jpg)
Write a program that creates a 10-KHz square wave with duty cycle 30% at pin P1.3. Assume that crystal is 24 MHz.
Lê Chí Thông 117
10-kHz square wave, duty cycle 30%
tH tL
T
P1.3 1
Delay tH
P1.3 0
Delay tL
![Page 118: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/118.jpg)
Write a program that creates a 10-KHz square wave with duty cycle 30% at pin P1.3. Assume that crystal is 24 MHz.
ORG 0000Hlap: SETB P1.3
ACALL delay1CLR P1.3ACALL delay2SJMP lap
Delay1: MOV R4,#30DJNZ R4,$RET
Delay2: MOV R4,#70DJNZ R4,$RETEND
Lê Chí Thông 118
10-kHz square wave, duty cycle 30%
P1.3 1
Delay tH
P1.3 0
Delay tL
![Page 119: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/119.jpg)
Write a program that creates a 100-kHz square wave at pin P1.1. Assume that crystal is 12 MHz.
Lê Chí Thông 119
100-kHz square wave
![Page 120: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/120.jpg)
Write a program that creates a 100-kHz square wave at pin P1.1. Assume that crystal is 12 MHz.
ORG 0000Hlap: CPL P1.1
NOPNOPSJMP lapEND
Lê Chí Thông 120
100-kHz square wave
![Page 121: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/121.jpg)
Write a program that creates a 100-kHz square wave with duty cycle 40% at pin P1.2. Assume that crystal is 12 MHz.
Lê Chí Thông 121
100-kHz square wave, duty cycle 40%
![Page 122: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/122.jpg)
Write a program that creates a 100-kHz square wave with duty cycle 40% at pin P1.2. Assume that crystal is 12 MHz.
ORG 0000Hlap: SETB P1.2
NOPNOPNOPCLR P1.2NOPNOPNOPSJMP lapEND
Lê Chí Thông 122
100-kHz square wave, duty cycle 40%
![Page 123: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/123.jpg)
CJNE A,#05H,Skip
(Statement 1)
Skip: (Continue)
Lê Chí Thông 123
CJNE – Equal/Not Equal (1)
A = 05H?N
Y
Statement 1
![Page 124: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/124.jpg)
Ex: Write a program to write 40H to internal RAM from location 30H to location 36H.(source)
ORG 0000H
MOV R1,#30H;Address=30H
Again: MOV @R1,#40H
INC R1
CJNE R1,#37H,Again
END
Lê Chí Thông 124
An Example
Addr 30H
(Addr) 40H
AddrAddr+1
Addr=37H?N
Y
![Page 125: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/125.jpg)
CJNE A,#05H,Not_Eq
(Statement 1)
SJMP Next
Not_Eq: (Statement 2)
Next: (Continue)
Lê Chí Thông 125
CJNE – Equal/Not Equal (2)
A = 05H?N
Y
Statement 1Statement 2
![Page 126: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/126.jpg)
CJNE A,#05H,Next
Next: JC LessThan
(Statement 1)
LessThan: (Continue)
Lê Chí Thông 126
CJNE – Greater Than or Equal/Less Than (1)
A ≥ 05H?N
Y
Statement 1
CJNE A,#05H,$+3
JC LessThan
(Statement 1)
LessThan: (Continue)
![Page 127: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/127.jpg)
CJNE A,#05H,Next
Next: JNC GT_Eq
SJMP Continue
GT_Eq: (Statement 1)
Continue: (Continue)
Lê Chí Thông 127
CJNE – Greater Than or Equal/Less Than (1)
A ≥ 05H?N
Y
Statement 1
CJNE A,#05H,$+3
JNC GT_Eq
SJMP Continue
GT_Eq: (Statement 1)
Continue: (Continue)
![Page 128: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/128.jpg)
Examine the content of A, if 5 ≤ A ≤ 10 then output A to Port 1; if not, output A to Port 2.
ORG 0
CJNE A,#5,$+3
JC PORT2
CJNE A,#11,$+3
JNC PORT2
MOV P1,A
SJMP DONE
PORT2:MOV P2,A
DONE: NOP
END
128Lê Chí Thông
An Example
![Page 129: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/129.jpg)
CJNE A,#05H,$+3
JNC GT_Eq
(Statement 2)
SJMP Next
GT_Eq: (Statement 1)
Next: (Continue)
Lê Chí Thông 129
CJNE – Greater Than or Equal/Less Than (2)
A ≥ 05H?N
Y
Statement 1Statement 2
![Page 130: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/130.jpg)
Given a 20-byte string in internal RAM, starting at address 40H. Write a program that output even numbers to Port 2.
130Lê Chí Thông
Bit Testing
![Page 131: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/131.jpg)
Given a 20-byte string in internal RAM, starting at address 40H. Write a program that output even numbers to Port 2.
ORG 0
MOV R4,#20 ; Number of loops
MOV R0,#40H ; Address pointer
LOOP:
MOV A,@R0 ; Read data from internal RAM to A
JB ACC.0,NEXT ; skip if odd number
MOV P2,A ; Output to Port 2 if even number
NEXT:
INC R0
DJNZ R4,LOOP
END 131Lê Chí Thông
Bit Testing
![Page 132: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/132.jpg)
Given a 20-byte string in external RAM, starting at address 4000H. Write a program that output odd numbers to Port 2.
132Lê Chí Thông
Your Turn!
![Page 133: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/133.jpg)
Given a 20-byte string in external RAM, starting at address 4000H. Write a program that output odd numbers to Port 2.
ORG 0
MOV R4,#20 ; Number of loops
MOV DPTR,#4000H ; Address of external RAM
LOOP:
MOVX A,@DPTR ; Read data from external RAM to A
JNB ACC.0,NEXT; skip if even number
MOV P2,A ; Output to Port 2 if odd number
NEXT:
INC DPTR
DJNZ R4,LOOP
END 133Lê Chí Thông
Solutions
![Page 134: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/134.jpg)
Given a 100-byte unsigned number string in external RAM at address starting from 0100H. Write a program that sends positive numbers to Port 1 and negative numbers to Port 2.
Hint:- A positive number has MSB = 0.- A negative number has MSB = 1.- Use JB / JNB instruction--
Lê Chí Thông
Bit Testing
134
![Page 135: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/135.jpg)
Given a 100-byte unsigned number string in external RAM at address starting from 0100H. Write a program that sends positive numbers to Port 1 and negative numbers to Port 2.
ORG 0000HMOV DPTR,#0100HMOV R4,#100
loop: MOVX A,@DPTRJNB ACC.7,positiveMOV P2,ASJMP next
positive: MOV P1,Anext: INC DPTR
DJNZ R4,loopEND
Lê Chí Thông
Bit Testing
135
![Page 136: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/136.jpg)
Lê Chí Thông
Bit Testing
LOOP: MOV C,P1.0
JNB P1.1,SKIP
CPL C
SKIP: MOV P1.2,C
SJMP LOOP
XOR
P1.0
P1.1
P1.2
136
![Page 137: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/137.jpg)
Lê Chí Thông
Example ProblemA 4-bit DIP switch and a common-anode 7-segment LED are connected to an 8051 as shown in the following figure. Write a program that continually reads a 4-bit code from the DIP switch and updates the LEDs to display the appropriate hexadecimal character. For example, if the code 1100B is read, the hexadecimal character “C” should appear, thus, segments a through g respectively should be ON, OFF, OFF, ON, ON, ON, and OFF. Note that setting an 8051 port pin to “1” turns the corresponding segment “ON”.
137
![Page 138: The 8051 Microcontroller Chapter 3 Instruction Set How to ...bmthanh/ViXuLy/8051-Chap3-Instruction_V1.pdf · Chapter 3 Instruction Set How to write a program The 8051 Microcontroller](https://reader031.vdocuments.mx/reader031/viewer/2022021417/5ada8d1e7f8b9a52528cfccc/html5/thumbnails/138.jpg)
138
References
Lê Chí Thông
• I. Scott MacKenzie , The 8051 Microcontroller, 2nd Edition, Prentice-Hall, 1995
• Kenneth J. Ayala, The 8051 Microcontroller: Architecture, Programming, and Applications, West Publishing Company
• [email protected] , Lecture notes