1. Trang chủ
  2. » Giáo án - Bài giảng

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

46 542 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 46
Dung lượng 1,09 MB

Nội dung

Tuy nhiên có một số lệnh chưa được xây dựngCác lệnh 8051 được chia ra 5 nhóm chính:... 5 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

Trang 1

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

Trang 2

2

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ựngCác lệnh 8051 được chia ra 5 nhóm chính:

Trang 4

4

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ố

Trang 5

5

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

Trang 6

MOV P1, A

Trang 7

7

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

Trang 9

9

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

Trang 10

10

4.3 Tập lệnh của họ vi điều khiển 8051

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à:

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

Trang 11

11

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

Trang 12

MOV A, 7FH

Ghi giá trị trong ô nhớ 7FH vào ANế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

Trang 13

(A) = 20H và (R7) = 20H

Trang 14

(A) = 100

Trang 15

VD: chép dữ liệu từ ô nhớ 40H vào ô nhớ 50HMOV 50H, 40H

Trang 16

16

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

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

MOV P0,#00100000B ACALL delay

MOV P0,#01000000B ACALL delay

MOV P0,#10000000B ACALL delay

SJMP Loop

delay:

MOV R6,#255 Lap1: MOV R7,#255 Lap2: DJNZ R7,Lap2

DJNZ R6,Lap1 RET

END

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

Trang 19

19

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:

Trang 20

VD: ban đầu A có giá trị 1000 0000B

Trang 21

END

Trang 22

22

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

Trang 23

23

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

Trang 24

RRC A SJMP Loop

MOV

Trang 25

RRC A SJMP Loop

Trang 26

MOV P0,#00000000B ACALL DELAY

Lap2: SETB C

RRC A

MOV P0,A ACALL DELAY

JNC Lap2

SJMP Lap1

DELAY:

MOV R6,#255 Lap3: MOV R7,#255 Lap4: DJNZ R7,Lap4

DJNZ R6,Lap3 RET

END

Trang 27

27

4.3.4 Nhóm lệnh với biến Boole

Trang 28

28

4.3.4 Nhóm lệnh với biến Boole

Nhóm lệnh Boole là các tác vụ trên 1 bit, chỉ thực thi được đối với BIT có địa chỉ

Ta có thể đặt lên 1 hay xóa về 0 các bit bằng 1 lệnh (rất thuận lợi cho điều khiển các thiết bị I/O)

VD: 1 đèn led được điều khiển bằng bit 7 của Port 0 (P0.7), ta có thể bật đèn bằng cách set bit lên 1

SETB P0.7

Và tắt nó bằng cách xóa bit về 0

CLR P0.7

Trang 29

29

4.3.4 Nhóm lệnh với biến Boole

Các lệnh trên bit còn có thể là các lệnh rẽ nhánh có điều kiện

- JC rel: nhảy đến vị trí nhãn rel nếu bit C = 1

- JNC rel: nhảy đến vị trí nhãn rel nếu bit C = 0

- JB bit,rel: nhảy đến vị trí nhãn rel nếu bit điều kiện = 1

- JNB bit,rel: nhảy đến vị trí nhãn rel nếu bit điều kiện

= 0

- JBC bit,rel: nhảy đến vị trí nhãn rel nếu bit điều kiện =

1 và CLR (xóa) bit điều kiện về 0

Trang 30

30

4.3.4 Nhóm lệnh với biến Boole

VD: chương trình điều khiển led sáng dần – tắt hết

ORG 0000H Lap1: MOV A,#00000000B

MOV P0,#00000000B ACALL DELAY

Lap2: SETB C

RRC A MOV P0,A ACALL DELAY

JNC Lap2

SJMP Lap1

DELAY:

MOV R6,#255 Lap3: MOV R7,#255 Lap4: DJNZ R7,Lap4

DJNZ R6,Lap3 RET

END

Trang 32

32

4.3.1 Nhóm lệnh số học

Trang 33

33

4.3.1 Nhóm lệnh số học

VD: lệnh ADD

ADD A,7FH Định địa chỉ trực tiếp (DIR)

ADD A,#100 Định địa chỉ tức thời (IMM)

Trang 38

38

4.3.5 Nhóm lệnh rẽ nhánh chương trình

Các lệnh rẽ nhánh không điều kiện:

Click to edit Master text styles

Second level

Third level

Fourth level

Fifth level

Trang 39

39

4.3.5 Nhóm lệnh rẽ nhánh chương trình

Có 3 loại lệnh nhảy là SJMP, LJMP và AJMP

- SJMP rel: nhảy đến nhãn mong muốn (không có điều kiện), khoảng cách nhảy bị giới hạn trong vùng từ -128 đến +127 byte địa chỉ

- AJMP rel: nhảy đến nhãn mong muốn (không có điều kiện), khoảng cách nhảy bị giới hạn trong cùng khối 2KB

- LJMP rel: nhảy đến nhãn mong muốn (không có điều kiện), nhảy đến bất cứ vị trí nào trong vùng nhớ chương trình 64K

Trang 40

Chương trình con phải kết thúc bằng lệnh RET để 8051 quay về thực hiện chương trình chính tiếp theo lệnh CALL

Lệnh ACALL và LCALL có cùng những giới hạn với địa chỉ đích như AJMP và LJMP

Trang 41

MOV P0,#00000000B

ACALL DELAY Lap2: SETB C

RRC A MOV P0,A

DJNZ R6,Lap3

RET

END

Trang 43

Được dùng để điều khiển vòng lặp Để thực thi vòng lặp

N lần, nạp giá trị cho byte là N và sử dụng DJNZ để điều khiển vòng lặp

VD: thực hiện vòng lặp 2 lần

MOV R7, #2LOOP: (bắt đầu các lệnh trong vòng lặp)

………

(kết thúc các lệnh trong vòng lặp)DJNZ R7, LOOP

Trang 44

ACALL DELAY MOV P0,#00H ACALL DELAY DJNZ R2,Loop SJMP $

DELAY:

MOV R7,#2 Lap1: MOV R6,#250 Lap2: MOV R5,#250 Lap3: DJNZ R5,Lap3

DJNZ R6,Lap2 DJNZ R7,Lap1 RET

END

Trang 46

46

4.3.5 Nhóm lệnh rẽ nhánh chương trình

CJNE A,byte,rel: nhảy đến rel nếu (A) khác (byte)

CJNE byte,#data8,rel: nhảy đến rel nếu (byte) khác

#data8

Được dùng để điều khiển vòng lặp

Ngày đăng: 27/05/2016, 14:02

TỪ KHÓA LIÊN QUAN

w