Tải bản đầy đủ (.ppt) (40 trang)

Tài liệu môn kỹ thuật vi điều khiển 3

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (280.88 KB, 40 trang )

3. TẬP LỆNH CỦA 8051


1. Các kiểu định địa chỉ.
-Khi một lệnh được thực thi và lệnh này yêu cầu
dữ liệu, một câu hỏi được đặt ra là "Dữ liệu chứa
ở đâu?" Câu trả lời cho câu hỏi này tạo ra các kiểu
(mode) định địa chỉ của 8051.
- Các kiểu định địa chỉ cho phép ta xác định rõ
nguồn và đích của dữ liệu theo nhiều cách khác
nhau phụ thuộc vào tình huống lập trình.

Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng




• Bộ nhớ dữ liệu: RAM – 128 Byte
7F 7E 7D 7C 7B 7A 79 78


Byte address
7FH

2F
2E

RAM
đa mục đích
30H
2FH



RAM định địa
chỉ bit

20H
1FH
18H
17H
10H
0FH
08H
07H
00H

Bank 3
Bank 2
Bank 1 (Stack)
Default Register
Bank for R0-R7

R7
R6
R5
R4
R3
R2

1F
17
0F

07

1E 1D 1C 1B 1A
16 15 14 13 12
0E 0D 0C 0B 0A
06 05 04 03 02

19
11
09
01


18
10
08
00

20

Bit address

R1
R0
Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng




Các kiểu định địa chỉ:


+ Tức thời (Immediate).
+ Thanh ghi (Register).
+ Trực tiếp (Direct).
+ Gián tiếp (Indirect).
+ Chỉ số (Indexed).

Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng




Định địa chỉ tức thời (Immediate)
- Khi toán hạng nguồn là một hằng số thay vì là một biến và đây là
byte dữ liệu tức thời.
- Trước dữ liệu phải có dấu #
-Tất cả các lệnh sử dụng kiểu định địa chỉ tức thời đều sử dụng hằng
dữ liệu 8-bit làm dữ liệu tức thời.
-Có một ngoại lệ khi ta khởi động con trỏ dữ liệu 16-bit DPTR, hằng
dữ liệu 16-bit được cần đến.
Ví dụ:

MOV
MOV
MOV
MOV

A,#65H
R6,#55H
DPTR,#2343H

P1,#0FH

Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng




Kiểu thanh ghi (Register)
- Sử dụng thanh ghi làm việc để lưu dữ liệu cần thao tác
Hợp ngữ của 8051 chỉ ra kiểu định địa chỉ thanh ghi bằng
ký hiệu Rn, trong đó n có giá trị từ 0 đến 7.
VD:
ADD A,R7.
- Thanh nguồn và đích phải phù hợp nhau về kích thước
- Không được phép chuyển trực tiếp giữa các thanh ghi Rn
với nhau

Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng




Định địa chỉ trực tiếp (Direct)
-Địa chỉ của dữ liệu được chỉ ra trực tiếp trong lệnh.
-Chế độ định địa chỉ trực tiếp có thể dùng để truy cập toàn bộ
không gian của bộ nhớ trong RAM. Tuy nhiên, thực tế chế độ
này thường được dùng để truy cập các ngăn nhớ RAM từ địa
chỉ 30H đến 7FH.
-Cần phân biệt với chế độ định địa chỉ tức thời
-Các thanh ghi R0 đến R7 có thể truy cập bằng 2 cách: Thanh

ghi và trực tiếp
-Ngăn xếp và chế độ định địa chỉ trực tiếp
Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng




Định địa chỉ gián tiếp (Indirect)
-Ở chế độ này, thanh ghi được dùng để trỏ đến dữ liệu có trong
bộ nhớ. Nếu dữ liệu ở trên chip thì các thanh ghi R0 và R1
được sử dụng, hoạt động như những con trỏ (pointer).
-Kiểu định địa chỉ gián tiếp được nhận biết dựa vào ký hiệu
@.
Ví dụ:
dụ Ghi số 55H vào các ô nhớ từ 40H đến 44H trong RAM
MOV
MOV
MOV
INC
MOV
INC

A,#55H
R0,#40H
@R0,A
R0
@R0,A
R0

; Nạp vào A giá trị 55H

; Nạp vào con trỏ R0 = 40H
; Ghi A vào thanh ghi do R0 trỏ đến
; Tăng con trỏ. Bây giờ R0 = 41H
; Ghi A vào thanh ghi do R0 trỏ đến (41H)
; Tăng con trỏ. Bây giờ R0 = 42H

Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng




+ Định địa chỉ chỉ số.
- Sử dụng một thanh ghi nền (hoặc bộ đếm chương trình
hoặc con trỏ dữ liệu) và một offset (thanh chứa A) tạo
thành dạng địa chỉ hữu dụng cho lệnh JMP hoặc MOVC.
- Trong nhiều ứng dụng, các bảng nhảy hoặc các bảng tìm
kiếm được tạo ra dễ dàng bằng cách sử dụng kiểu định địa
chỉ chỉ số.
VD: Đọc giá trị từ x (0 đến 9) ở cổng P0 và xuất ra giá trị
bình phương ra cổng P1
Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng




2. Tập lệnh.
lệnh
Tập lệnh của 8051 được chia làm 5 nhóm
+ Nhóm lệnh số học.
+ Nhóm lệnh logic.

+ Nhóm lệnh di chuyển dữ liệu.
+ Nhóm lệnh xử lý bit.
+ Nhóm lệnh rẽ nhánh.
Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng




1. Nhóm lệnh số học
LỆNH
ADD
ADD
ADD
ADD
ADD

A,source
A,Rn
A,direct
A,@Ri
A,#data

MÔ TẢ
Cộng toán hạng nguồn với A, kết quả
chứa trong A.
(A)  (A) + (source)

Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng





Nhóm lệnh số học (tiếp)
LỆNH

ADDC
ADDC
ADDC
ADDC
ADDC

A,source
A,Rn
A,direct
A,@Ri
A,#data

MÔ TẢ

Cộng đồng thời nội dung của
một byte ở địa chỉ được chỉ ra
trong lệnh với nội dung của thanh
chứa và cờ nhớ. Kết quả đặt vào
thanh chứa.

Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng

(A)  (A) + (C) + (Source)




Nhóm lệnh số học (tiếp)
LỆNH

SUBB
SUBB
SUBB
SUBB
SUBB

A,source
A,Rn
A,direct
A,@Ri
A,#data

MÔ TẢ
Trừ bớt nội dung của thanh chứa A
bởi nội dung của toán hạng chỉ ra
trong lệnh cùng với cờ nhớ và cất kết
quả vào thanh chứa.

Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng

(A)  (A) - (C) - (source)




Nhóm lệnh số học (tiếp)

LỆNH

INC
INC
INC
INC
INC
INC

source
A
Rn
direct
@Ri
DPTR

MÔ TẢ

(source)  (source) + 1

Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng




Nhóm lệnh số học (tiếp)
LỆNH

DEC
DEC

DEC
DEC

A
Rn
direct
@Ri

MÔ TẢ

(source)  (source) - 1

Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng




Nhóm lệnh số học (tiếp)
LỆNH

MÔ TẢ

MUL AB

Nhân các số nguyên không dấu 8-bit chứa
trong A và B. Byte thấp của tích số 16-bit
cất trong A, byte cao cất trong B.

DIV AB


Chia số nguyên không dấu 8-bit chứa
trong A với số nguyên không dấu 8-bit chứa
trong B. Thương số cất trong A, còn số dư
cất trong B.

DA

Hiệu chỉnh thập phân nội dung của thanh
chứa đối với phép cộng.

A

Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng




2. Nhóm lệnh Logic
LỆNH

ANL
ANL
ANL
ANL
ANL
ANL
ANL

des,source
A,Rn

A,direct
A,@Ri
A,#data
direct,A
direct,#data

MÔ TẢ

Thực hiện AND từng bit
giữa 2 toán hạng được chỉ ra
trong lệnh và lưu kết quả vào
toán hạng đích.

Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng

(des)  (des) AND (source)




Nhóm lệnh Logic (tiếp)
LỆNH

ORL
ORL
ORL
ORL
ORL
ORL
ORL

ORL

des,source
A,Rn
A,direct
A,@Ri
A,#data
direct,A
direct,#data
C,bit

MÔ TẢ

Thực hiện OR từng bit
giữa 2 toán hạng được chỉ ra
trong lệnh và lưu kết quả vào
toán hạng đích.

Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng

(des)  (des) OR (source)



Nhóm lệnh Logic (tiếp)
LỆNH

XRL
XRL
XRL

XRL
XRL
XRL

A,Rn
A,direct
A,@Ri
A,#data
direct,A
direct,#data

MÔ TẢ

Thực hiện XOR từng bit
giữa 2 toán hạng được chỉ ra
trong lệnh và lưu kết quả vào
toán hạng đích.

Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng

(des)  (des) XOR (source)




Nhóm lệnh Logic (tiếp)

CLR

LỆNH

A

Xóa A

CPL

A

Lấy bù A

RL

A

Quay trái A

RLC

A

Quay trái A kể cả cờ nhớ

RR

A

Quay phải A

RRC


A

Quay phải A kể cả cờ nhớ

SWAP A

MÔ TẢ

Hoán đổi 2 nibble (2 nửa 4-bit) của A

Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng




3. Nhóm lệnh di chuyển dữ liệu
LỆNH
MOV
MOV
MOV
MOV
MOV

A,source
A,Rn
A,direct
A,@Ri
A,#data

MOV

MOV
MOV
MOV

dest,A
Rn,A
direct,A
@Ri,A

MÔ TẢ

Di chuyển toán hạng nguồn đến
đích.

Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng




Nhóm lệnh di chuyển dữ liệu (tiếp)
LỆNH
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV


dest,source
Rn,direct
Rn,#data
direct,Rn
direct,direct
direct,@Ri
direct,#data
@Ri,direct
@Ri,#data

Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng

MÔ TẢ

Di chuyển
toán hạng nguồn đến đích.




Nhóm lệnh di chuyển dữ liệu (tiếp)
LỆNH
MOV
MOV
MOV
MOV
MOV
MOV
MOV

MOV
MOV
MOV

dest,source
Rn,direct
Rn,#data
direct,Rn
direct,direct
direct,@Ri
direct,#data
@Ri,direct
@Ri,#data
DPTR,#data16

MÔ TẢ

Di chuyển
toán hạng nguồn đến đích.

Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng




Nhóm lệnh di chuyển dữ liệu (tiếp)
LỆNH

MOVX
MOVX

MOVX
MOVX

A,@Ri
A,@DPTR
@Ri,A
@DPTR,A

MÔ TẢ

Di chuyển ở bộ nhớ ngoài. 2
loại địa chỉ: địa chỉ gián tiếp
8-bit (R0 hoặc R1) và địa chỉ
16-bit.

Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng




Nhóm lệnh di chuyển dữ liệu (tiếp)
LỆNH

MOVC A,@A+DPTR
MOVC A,@A+PC
PUSH direct
POP direct

Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng


MÔ TẢ

Bảng nhảy
Cất vào và lấy dữ liệu ra từ
stack




×