Tải bản đầy đủ (.pptx) (46 trang)

TẬP LỆNH HỌ VI ĐIỀU KHIỂN CHIP 8051

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 (776.4 KB, 46 trang )

CHƯƠNG 4
TẬP LỆNH HỌ VI ĐIỀU KHIỂN 8051


4.1 Giới thiệu về tập lệnh của họ 8051
8051 có khả năng cung cấp tối đa 28 = 256 lệnh. Tuy nhiên
có một số lệnh chưa được xây dựng
Các lệnh 8051 được chia ra 5 nhóm chính:
- Số học
- Luận lý (logic)
- Chuyển dữ liệu
- Biến Boole
- Rẽ nhánh chương trình


4.2 Các kiểu định địa chỉ
Một ô nhớ có thể được truy xuất bằng nhiều cách khác
nhau, người ta đưa ra CÁC KIỂU ĐỊNH ĐỊA CHỈ giúp ta
truy xuất chính xác ô nhớ mong muốn.


4.2 Các kiểu định địa chỉ
Có 8 kiểu định địa chỉ đối với 8051:
- Định địa chỉ thanh ghi
- Định địa chỉ trực tiếp
- Định địa chỉ gián tiếp
- Định địa chỉ tức thời
- Định địa chỉ tương đối
- Định địa chỉ tuyệt đối
- Định địa chỉ dài
- Định địa chỉ theo chỉ số




4.2.1 Định địa chỉ thanh ghi
Người ta sử dụng các thanh ghi để chứa dữ liệu, và sử
dụng tên của các thanh ghi trong câu lệnh. Ta có 8 thanh
ghi R0 – R7
Ví dụ:
ADD A, R7 Cộng dữ liệu trong A với dữ liệu
trong R7, kết quả lưu vào A
MOV A, R0
MOV R2, A

Chép dữ liệu từ R0 vào A
Chép dữ liệu từ A vào R2


4.2.2 Định địa chỉ trực tiếp
Dùng để truy cập dữ liệu bằng cách sử dụng địa chỉ byte
VD:
MOV A, 40H
dữ liệu trong ô nhớ có địa chỉ
40H sẽ được chép vào A
Một vài ô nhớ đặc biệt, 8051 có hỗ trợ các từ gợi nhớ (P0,
P1, TMOD, …).
VD:
MOV P1, A


4.2.4 Định địa chỉ tức thời
Khi ta muốn nạp một giá trị hằng số vào một ô nhớ nào đó,

ta sẽ dùng phương pháp định địa chỉ tức thời
Trong phương pháp định địa chỉ tức thời, ta sử dụng dấu
“#” trước các toán hạng tức thời
VD:
MOV A,#12H Nạp giá trị 12H vào thanh ghi A
MOV R1,#28

Nạp giá trị 28 vào thanh ghi R1

MOV 30H,#0F0H Nạp giá trị F0H vào ô nhớ có địa
chỉ 30H


4.3 Tập lệnh của họ vi điều khiển 8051
Gồm 5 nhóm chính:
1- Nhóm lệnh số học
2- Nhóm lệnh luận lý - logic
3- Nhóm lệnh chuyển dữ liệu
4- Nhóm lệnh với biến Boole
5- Nhóm lệnh rẽ nhánh chương trình


4.3 Tập lệnh của họ vi điều khiển 8051
Ý nghĩa các ký hiệu được sử dụng:
Ký hiệu

Ý nghĩa

Rn hoặc Rr Các thanh ghi R0 – R7
direct


Địa chỉ nội 8 bit (00H – FFH)

#data8

Hằng số 8 bit

src

Toán hạng nguồn (source)

dest

Toán hạng đích (destination)

(X)

Nội dung trong X. VD: (A) là nội dung trong thanh ghi
A


4.3 Tập lệnh của họ vi điều khiển 8051
Chu kỳ máy:
Mỗi lệnh trong 8051 khi thực thi sẽ cần một khoảng thời
gian nhất định, tùy lệnh mà thời gian sẽ dài hay ngắn
Công thức tính chu kỳ máy

VD: 8051 sử dụng thạch anh 12 MHz sẽ có chu kỳ máy là:



4.3.3 Nhóm lệnh chuyển dữ liệu


4.3.3 Nhóm lệnh chuyển dữ liệu
Ví dụ về lệnh MOV A,(scr)
MOV A, 7FH
MOV A, R7
MOV A, #100
MOV A, 7FH
Ghi giá trị trong ô nhớ 7FH vào A
Nếu giá trị trong ô nhớ 7FH là 20H. Sau khi thực hiện
lệnh, giá trị trong A và giá trị trong ô nhớ 7FH bằng bao
nhiêu ?
(A) = 20H và (7FH) = 20H


4.3.3 Nhóm lệnh chuyển dữ liệu
MOV A, R7
Ghi giá trị trong thanh ghi R7 vào thanh ghi A
Nếu giá trị trong R7 là 20H. Sau khi thực hiện lệnh, giá
trị trong A và giá trị trong R7 bằng bao nhiêu ?
(A) = 20H và (R7) = 20H


4.3.3 Nhóm lệnh chuyển dữ liệu
MOV A, #100
Ghi giá trị 100 vào thanh ghi A
Sau khi thực hiện lệnh, giá trị trong thanh ghi A bằng
bao nhiêu ?
(A) = 100



4.3.3 Nhóm lệnh chuyển dữ liệu
Lệnh “MOV dest, src” cho phép chuyển dữ liệu giữa
bất kỳ byte RAM nội nào của 8051 mà không cần qua
thanh ghi A
VD: chép dữ liệu từ ô nhớ 40H vào ô nhớ 50H
MOV 50H, 40H


4.3.3 Nhóm lệnh chuyển dữ liệu
MOV P0,#00100000B
ACALL delay
MOV P0,#01000000B
ACALL delay
MOV P0,#10000000B
ACALL delay
SJMP Loop

VD: chương trình 1 led sáng dịch chuyển trên Port 0

ORG 0000H
MOV P0,#00000000B
ACALL delay
Loop: MOV P0,#00000001B
ACALL delay
MOV P0,#00000010B
ACALL delay
MOV P0,#00000100B
ACALL delay

MOV P0,#00001000B
ACALL delay
MOV P0,#00010000B
ACALL delay

delay:
MOV R6,#255
Lap1: MOV R7,#255
Lap2: DJNZ R7,Lap2
DJNZ R6,Lap1
RET
END


4.3.3 Nhóm lệnh chuyển dữ liệu
Dựa vào chương trình mẫu trên, viết ứng dụng:
- led sáng dần và tắt hết


4.3.2 Nhóm lệnh luận lý - logic
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level


4.3.2 Nhóm lệnh luận lý - logic
Các lệnh logic thực hiện các phép toán Boole (AND,
OR, NOT, XOR) trên cơ sở từng bit

VD: thanh ghi A chứa giá trị 00110101B, thực hiện lệnh
sau:
ANL A, #01010011B
00110101
AND
01010011
Kquả
00010001

:được lưu vào A


4.3.2 Nhóm lệnh luận lý - logic
Các lệnh xoay sẽ dịch giá trị trong thanh ghi sang trái 1
bit (RL: rotate left) hoặc phải 1 bit (RR: rotate right) (chỉ áp
dụng được với thanh ghi A)
VD: ban đầu A có giá trị 1000 0000B
1

0

0

Nếu thực hiện lệnh:
1

0

0


0

0

0

RR A

0

0

0

0

0

0

0

1

0

0

0


0

0

0

Kết quả
0


4.3.2 Nhóm lệnh luận lý - logic
VD: chương trình 1 led sáng dịch chuyển trên Port 0
ORG 0000H
MOV A,#00000001B
LOOP: RR A
MOV P0,A
ACALL DELAY
SJMP LOOP
DELAY:
MOV R6,#255
LAP1: MOV R7,#255
LAP2: DJNZ R7,LAP2


4.3.2 Nhóm lệnh luận lý - logic
Dựa vào chương trình mẫu trên, viết ứng dụng:
1 led tắt dịch chuyển trên Port 0


4.3.2 Nhóm lệnh luận lý - logic

Lệnh “RRC A”: xoay phải qua cờ C
VD: thanh ghi A có nội dung 10000000B
A
1

cờ C có nội dung là 1
0

0

0

0

C
0

0

0

1

Kết quả
A
1

C
1


0

0

0

0

0

0

0


4.3.2 Nhóm lệnh luận lý - logic
VD: có đoạn CT sau:
MOV A,#00H
Loop: SETB C

A
MOV

0

0

0

0


0

0

0

A
SETB C

RRC A
SJMP Loop

0

0

C
0

0

0

0

0

0


0

A
RRC A

1

C
0

0

0

0

0

0

0

A
SETB C

1

1

0


C
0

0

0

0

0

0

0

A
RRC A

1

1

C
1

0

0


0

0

0

0

0


4.3.2 Nhóm lệnh luận lý - logic
VD: có đoạn CT sau:

A
1

MOV A,#00H
Loop: SETB C

1

1

1

1

1


1

0

A
RRC A

RRC A
SJMP Loop

C

1

C
1

1

1

1

1

1

1

A

SETB C

1

1

0

C
1

1

1

1

1

1

1

A
RRC A

1

1


C
1

1

1

1

1

1

1

1


×