Bài giảng Vi xử lý - Chương 3: Họ vi điều khiển 8051 - Bùi Minh Thành

Nội dung

3.1 Giới thiệu họ vi điều khiển 8051

3.2 Kiến trúc phần cứng 8051

3.3 Các phương pháp định địa chỉ

 8051 là vi điều khiển đầu tiên của họ vi điều khiển

MCS51 được Intel sản xuất vào năm 1980. Họ MCS51

là họ 8-bit có khả năng định địa chỉ 64KB bộ nhớ

chương trình và 64KB bộ nhớ dữ liệu

 

pdf101 trang | Chuyên mục: Vi Xử Lý – Vi Điều Khiển | Chia sẻ: tuando | Lượt xem: 539 | Lượt tải: 0download
Tóm tắt nội dung Bài giảng Vi xử lý - Chương 3: Họ vi điều khiển 8051 - Bùi Minh Thành, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
ta 
memory
1231
32
30
8051 Internal data memory
71
Instruction Operation 
MOV @R1, A Copy the data in A to the address pointed to by 
the contents of R1 
MOV A, @R0 Copy the contents of the address pointed to by 
register R0 to the A register 
MOV @R1, #35h Copy the number 35h to the address pointed to 
Examples of Indirect Addressing
by register R1 
MOV @R0, 80h or 
MOV @R0, P0 
Copy the contents of the port 0 pins to the 
address pointed to by register R0. 
MOVX A, @R0 Copy the contents of the external data address 
pointed to by register R0 to the A register 
MOVX A, @DPTR Copy the contents of the external data address 
pointed to by register DPTR to the A register 
MOV @Ri,#data where i = 0 or 1
72
Write a program segment to copy the 
value 55h into RAM memory locations 
40h to 44h using:
(a) Direct addressing mode;
Example
(b) register indirect addressing mode 
without a loop; and
(c) with a loop
73
MOV A, #55h ; load A with value 55h
MOV 40h, A ; copy A to RAM location 40h
MOV 41h, A ; copy A to RAM location 41h
Solution to Example (a)
Direct addressing mode
MOV 42h, A ; copy A to RAM location 42h
MOV 43h, A ; copy A to RAM location 43h
MOV 44h, A ; copy A to RAM location 44h
74
MOV A, #55h ; load A with value 55h
MOV R0, #40h ; load the pointer. R0 = 40h
MOV @R0, A ; copy A to RAM location R0 points to
INC R0 ; increment pointer. Now R0 = 41h
MOV @R0, A ; copy A to RAM location R0 points to
Solution to Example (b)
register indirect addressing mode without a loop
INC R0 ; increment pointer. Now R0 = 42h
MOV @R0, A ; copy A to RAM location R0 points to
INC R0 ; increment pointer. Now R0 = 43h 
MOV @R0, A ; copy A to RAM location R0 points to
INC R0 ; increment pointer. Now R0 = 44h
MOV @R0, A ; copy A to RAM location R0 points to
75
MOV A, #55h ; A = 55h
MOV R0, #40h ; load pointer. R0 = 40h, RAM add.
MOV R2, #05 ; load counter, R2 = 5
AGAIN: 
MOV @R0, A ; copy 55A to RAM location R0 points to
INC R0 ; increment R0 pointer
Solution to Example (c) Loop method
DJNZ R2, AGAIN ; loop until counter = zero 
“DJNZ” : decrement and jump if Not Zero
DJNZ direct, relative
DJNZ Rn, relative where n = 0,1,,,7
MOV R2, #05h ; example
LP: 
;--------------------------------
; do 5 times inside the loop
;--------------------------------
DJNZ R2, LP ; R2 as counter
76
Example (looping)
Write a program segment to clear 15 RAM 
locations starting at RAM address 60h.
CLR A ; A = 0
MOV R1, #60h ; load pointer. R1 = 60h
MOV R7, #15 ; load counter, R7 = 15 (0F in HEX)
AGAIN: MOV @R1, A ; clear RAM location R1 points to
INC R1 ; increment R1 pointer
DJNZ R7, AGAIN ; loop until counter = zero 
; clear one ram location at address 60h
CLR A
MOV R1,#60h
MOV @R1,A
Setup a loop using DJNZ and register R7 as counter
77
Example (block transfer)
Write a program segment to copy a block of 10 bytes of 
data from RAM locations starting at 35h to RAM 
locations starting at 60h.
MOV R0, #35h ; source pointer
MOV R1, #60h ; destination pointer
MOV R3, #10 ; counter
BACK:
MOV A, @R0 ; get a byte from source
MOV @R1, A ; copy it to destination
INC R0 ; increment source pointer
INC R1 ; increment destination pointer
DJNZ R3, BACK ; keep doing it for all ten bytes
78
Using pointer in the program enables handling 
dynamic data structures an advantage
Dynamic data: the data value is not fixed
In this mode, we can defer the calculation of the 
address of data and the determination of the amount 
of memory to allocate at (program) runtime (eg. 
Notes of Indirect Addressing
MOV A, @R0)
Register or direct addressing (eg. MOV A, 30H) cannot be used ,
since they require operand addresses to be known at assemble-time.
79
Addressing Modes
5) Register Indexed Mode – source or 
destination address is the sum of the base 
address and the accumulator (Index)
• Base address can be DPTR or PC
mov dptr, #4000h
mov a, #5
movc a, @a + dptr ;a  M[4005]
80
Addressing Modes
5) Register Indexed Mode continue
• Base address can be DPTR or PC
ORG 1000h
1000 mov a, #5
1002 movc a, @a + PC ;a  M[1008]
1003 Nop
• Lookup Table 
• MOVC only can read internal code memory
PC
81
Using a base register (starting point) and an 
offset (how much to parse through) to form 
the effective address for a JMP or MOVC
instruction
Indexed Addressing
MOVC A, @A+DPTR
MOVC A, @A+PC
JMP @A+DPTR
Used to parse through an array of items or a 
look-up table
Usually, the DPTR is the base register and the 
“A” is the offset
A increases/decreases to parse through the 
list
82
Program 
memory
ACC
DPTR
00 10
ACC
56⊕
Indexed Addressing Example: MOVC A,@A+DPTR
AfterBefore
MOVC A, @A + DPTR2000
2001
41 3156
83
Instruction Operation 
MOVC A, @A + DPTR Copy the code byte, found at the ROM 
address formed by adding register A and the 
DPTR register, to A 
MOVC A, @A + PC Copy the code byte, found at the ROM 
Examples of Indexed Addressing
address formed by adding A and the PC, to A 
JMP @A + DPTR Jump to the address formed by adding A to 
the DPTR, this is an unconditional jump and 
will always be done. 
84
Example (look-up table)
Write a program to get the x value from P1 and 
send x2 to P2, continuously.
ORG 0
MOV DPTR, #300h ; load look-up table address
MOV A, #0FFh ; A = FF
MOV P1, A ; configure P1 as input port
BACK: MOV A, P1 ; get X
MOV A, @A+DPTR ; get X square from table
MOV P2, A ; issue it to P2
SJMP BACK ; keep doing it
ORG 300h
TABLE:DB 0, 1, 4, 9, 16, 25, 36, 49, 64, 81
END 
85
Review Questions
1. The instruction “MOV A, 40h” uses ________ 
addressing mode. Why?
2. What address is assigned to register R2 of bank 0?
3. What address is assigned to register R2 of bank 2?
4. What address is assigned to register A?
5. Which registers are allowed to be used for register 
indirect addressing mode if the data is in on-chip 
RAM?
86
Access to Accumulator
• A register can be accessed by direct and register
mode
• This 3 instruction has same function with different
code
0703 E500 mov a,00h
0705 8500E0 mov acc,00h
0708 8500E0 mov 0e0h,00h
• Also this 3 instruction 
070B E9 mov a,r1
070C 89E0 mov acc,r1
070E 89E0 mov 0e0h,r1 87
Access to SFRs
• B – always direct mode - except in MUL & DIV
0703 8500F0 mov b,00h
0706 8500F0 mov 0f0h,00h
0709 8CF0 mov b,r4
070B 8CF0 mov 0f0h,r4
• P0~P3 – are direct address 
0704 F580 mov p0,a
0706 F580 mov 80h,a 
0708 859080 mov p0,p1
• Also other SFRs (pcon, tmod, psw,.)
88
SFRs Address
All SFRs such as
(ACC, B, PCON, TMOD, PSW, P0~P3, ) 
are accessible by name and direct 
address
But
both of them 
Must be coded as direct address
89
8051 Instruction Format
• 6) relative addressing
here: sjmp here ;machine code=80FE(FE=-2)
Range = (-128 ~ 127)
• 7) Absolute addressing (limited in 2k current mem block)
Op code Relative address
A10-
A8 Op code
0700 1 org 0700h
0700 E106 2 ajmp next ;next=706h
0702 00 3 nop
0703 00 4 nop
0704 00 5 nop
0705 00 6 nop
7 next:
8 end
A7-A0 07FEh
90
Tính toán offset với định địa chỉ tương đối
91
Used in jump (“JMP”) instructions
Relative address: an 8-bit value (-128 to 
+127)
Relative Addressing SJMP relative
DJNZ direct, relative
DJNZ Rn, relative, where n=0,1,,,7
You may treat relative address as an 
offset
Labels indicate the JMP destinations (i.e. 
where to stop)
Assembler finds out the relative address 
using the label
92
The relative address is added to the PC
The sum is the address of the next 
instruction to be executed
Relative Addressing
As a result, program skips to the desired 
line right away instead of going through 
each line one by one
Labels indicate the JMP destinations (i.e. 
where to stop).
93
Branch Opcode
Offset
Next Opcode
Program Counter
Relative Addressing
Program counter + offset 
= Effective address 
= address of next instruction
+ Offset
Next Instruction
94
Instruction Operation 
SJMP NXT Jump to relative address with the label 'NXT'; this 
is an unconditional jump and is always taken. 
DJNZ R1, DWN Decrement register R1 by 1 and jump to the 
relative address specified by the label 'DWN' if 
Examples of Relative Addressing
the result of R1 is not zero. 
0035
95
Only used with the instructions ACALL and 
AJMP
Similar to indexed addressing mode
The largest “jump” that can be made is 2K
Absolute Addressing ACALL address11
AJMP address11
211 = 2048=2K
The subroutine called must therefore start within the 
same 2K Block of the program memory as the first 
byte of the instruction following ACALL.
96
Absolute Addressing
ACALL address11
AJMP address11ORG 00H ; reset location
LJMP START ; 3 bytes instruction
ORG 3FFEH
START: ACALL FORWARD ; 2 bytes instruction
; now code address at 4000H
LJMP TEST
ORG 47FFH ; 010001111111111B
FORWARD: 
RET
ORG 5800H ; 0101100000000000B
BACKWARD:
RET
ORG 5FFDH
TEST: ACALL BACKWARD ; 2 bytes instruction
; now code address at 5FFFH
SJMP $
END
97
8051 Instruction Format
• Long distance address
• Range = (0000h ~ FFFFh)
0700 1 org 0700h
Op code A15-A8 A7-A0
0700 020707 2 ajmp next ;next=0707h
0703 00 3 nop
0704 00 4 nop
0705 00 5 nop
0706 00 6 nop
7 next:
8 end
98
Bài tập 1
Cho biết mã máy và các cách định địa chỉ 
của các lệnh sau:
1. MOVX @DPTR, A
2. SETB P3.1
3. ADD A, R3
4. MOV A, #0FBH
5. MOV A, @R1
6. MOV 41H, A
99
Bài tập 2
1. Viết các lệnh thực hiện cất giá trị FFH 
vào RAM dữ liệu bên ngoài ở địa chỉ 
19A3H.
2. Sau đoạn chương trình này, cho biết các 
địa chỉ bit có nội dung là 1:
a) MOV 25h, #13h 
b) MOV R0, #22h 
c) MOV @R0, 25h
100
Bài tập 3
1. Cho biết mã máy sau biểu diễn lệnh/tác vụ gì?
75H, 8AH, E7H
2. Giả sử lệnh
AJMP LABEL
trong bộ nhớ mã ở địa chỉ 1600H và 1601H, 
và nhãn LABEL ứng với lệnh ở địa chỉ 1723H
a) Cho biết mã máy của lệnh này?
b) Lệnh này có hợp lệ không khi LABEL ứng với lệnh 
ở địa chỉ 1A23H? Giải thích 
101

File đính kèm:

  • pdfbai_giang_vi_xu_ly_chuong_3_ho_vi_dieu_khien_8051_bui_minh_t.pdf
Tài liệu liên quan