1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

các tập lệnh cơ bản trong vi điều khiển 8051

44 1,5K 36

Đ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 44
Dung lượng 432,62 KB

Nội dung

- H ệ lệnh của MC : Là tập các lệnh mà người lập trình có thể sử dụng ñể lập trình, và người lập trình chỉ có thể sử dụng các lệnh trong hệ lệnh mà thôi.. Các chữ viết tắt dùng trong tập

Trang 1

GV LÊ TIẾN DŨNG

Bộ môn Tự ựộng hóa Ờ Khoa điện

Trường đại học Bách khoa Ờ đại học đà Nẵng

Trang 3

CH ƯƠNG 3:

TÓM TẮT TẬP LỆNH

3.1 Mở ñầu.

- Ch ương trình là chuỗi các lệnh mà MC phải xử lý, thực hiện.

- L ập chương trình là soạn thảo các lệnh bằng ngôn ngữ lập

trình ñể thực hiện một algorith (thuật toán) cụ thể.

Chương trình = Thuật toán + Cơ sở dữ liệu.

- Ch ương trình dịch : Ví dụ Assembler, thực hiện dịch từ mã ngữ sang mã máy.

- H ệ lệnh của MC : Là tập các lệnh mà người lập trình có thể sử dụng ñể lập trình, và người lập trình chỉ có thể sử dụng các lệnh trong hệ lệnh mà thôi.

- Mỗi họ MC có một tập lệnh riêng, chương trình viết cho MC họ nào thì chỉ chạy cho họ ñó.

Trang 4

* Mã máy : Mỗi một lệnh tương ứng với một mã

nhị phân gọi là mã lệnh, do nhà sản xuất quy ñịnh MC chỉ hiểu

ñược các lệnh ở dạng mã máy Các lệnh có thể chiếm 1 byte, 2 byte hoặc 3 byte.

* Mã ng ữ : Các lệnh ñược mô tả ở dạng biểu trưng (Symbol) Symbol có thể là từ viết tắt như MOV, ADD, hoặc là ký hiệu các khối chức năng ở dạng Graphic.

Trang 5

CH ƯƠNG 3:

TÓM TẮT TẬP LỆNH

3.1 Mở ñầu.

Các chữ viết tắt dùng trong tập lệnh

Rn : ðịnh ñịa chỉ thanh ghi sử dụng R0 - R7.

direct : ðịa chỉ trực tiếp 8 bit trong RAM nội (00H-FFH).

@Ri : ðịnh ñịa chỉ gián tiếp sử dụng thanh ghi R0 hoặc R1.

source : Toán hạng nguồn, có thể là Rn, hoặc direct hoặc @Ri dest : Toán hạng ñích, có thể là Rn, hoặc direct hoặc @Ri.

Trang 6

bit : ðịa chỉ trực tiếp (8 bit) của 1 bit.

rel : offset 8-bit có dấu.

addr11 : ðịa chỉ 11 bit trong trang hiện hành.

ddr16 : ðịa chỉ 16 bit.

Trang 7

Ví dụ: 01010101B

Trang 8

CH ƯƠNG 3:

TÓM TẮT TẬP LỆNH

3.1 Mở ñầu.

CÁCH VIẾT SỐ

- Số Hexa: Số hex khi viết cần thêm phía sau giá trị

bằng kí tự "H" Nếu sô hex bắt ñầu là A,B,C,D,E,F thì cần thêm số "0" phía trước ñể trình biên dịch nhận biết ñược ñó là số Hex, không lầm giá trị số với các kí tự chữ khác

Số hex là cách viết ngắn gọn của số nhị phân.

Ví dụ : 69H, 0A3H

Cách viết khác : 0x69, 0xA3;

Trang 9

sử dụng

Ví dụ : 45, 27, 68D

Trang 10

CH ƯƠNG 3:

TÓM TẮT TẬP LỆNH

3.2 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

Trang 11

+ Tuyệt ñối (Absolute).

+ Dài (Long).

+ Chỉ số (Indexed).

Trang 12

CH ƯƠNG 3:

TÓM TẮT TẬP LỆNH

3.2 Các kiểu ñịnh ñịa chỉ.

+ Kiểu thanh ghi (Register).

Người lập trình 8051 có thể truy xuất 8 thanh ghi làm việc ñược ñánh số từ R0 ñến R7 Có 4 dãy thanh ghi "làm việc" nhưng ở một thời ñiểm chỉ có một dãy tích cực Ta dùng bit 3 và 4 của từ trạng thái chương trình PSW ñể chỉ

ra dãy thanh ghi tích cự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.

Trang 13

CH ƯƠNG 3:

TÓM TẮT TẬP LỆNH

3.2 Các kiu ñị nh ñị a ch ỉ.

+ ðị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.

Ví dụ :

MOV 40H,A

MOV 40H,A ; Chuyển nd A vào thanh ghi có ñịa chỉ 40H

- 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

Trang 14

CH ƯƠNG 3:

TÓM TẮT TẬP LỆNH

3.2 Các kiu ñị nh ñị a ch ỉ.

+ ðị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ụ ụ: MOV A,#55H ; Nạp vào A giá trị 55H

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

Trang 15

CH ƯƠNG 3:

TÓM TẮT TẬP LỆNH

3.2 Các kiu ñị nh ñị a ch ỉ.

+ ðị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, hằng số này có thể ñưa vào lệnh và ñây là byte dữ liệu tức thời.

- Trong hợp ngữ, các toán hạng tức thời ñược nhận biết nhờ vào ký tự

# ñặt trước chúng 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 A,#65H

MOV R6,#55H MOV DPTR,#2343H MOV P1,#0FH

Trang 16

CH ƯƠNG 3:

TÓM TẮT TẬP LỆNH

3.2 Các kiu ñị nh ñị a ch ỉ.

+ ðịnh ñịa chỉ tương ñối, ñịnh ñịa chỉ tuyệt ñối, ñịnh ñịa chỉ dài.

- ðược sử dụng cho các lệnh nhảy.

- Một ñịa chỉ tương ñối (hay còn gọi là offset) là một giá trị 8-bit có

dấu Giá trị này ñược cộng với bộ ñếm chương trình ñể tạo ra ñịa chỉ của lệnh tiếp theo cần ñược thực thi Tầm nhảy ñược giới hạn là -128 byte ñến 127 byte (8-bit có dấu)

- ðịnh ñịa chỉ tuyệt ñối chỉ ñược sử dụng với các lệnh ACALL và AJMP ðây là các lệnh 2-byte cho phép rẽ nhánh chương trình trong trang 2K hiện hành của bộ nhớ chương trình.

- Kiểu ñịnh ñịa chỉ dài chỉ ñược dùng cho các lệnh LCALL và LJMP Các lệnh 3 byte này chứa ñịa chỉ ñích 16-bit

Trang 17

CH ƯƠNG 3:

TÓM TẮT TẬP LỆNH

3.2 Các kiu ñị nh ñị a ch ỉ.

+ ðị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ố

Trang 20

(A) ←(A) + (C) + (Source)

Trang 21

(A) ←(A) - (C) - (source)

Trang 24

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

DIV 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

MUL AB

MÔ TẢ LỆNH

Trang 25

Lệnh này chiếm dung lượng bộ nhớ ROM là 1 Byte

Thời gian thực hiện : 1 chu kì máy

Công dụng : Cộng giá trị dữ liệu trên thanh ghi A với giá trị

dữ liệu trên thanh ghi Rn, sau khi thực hiện lệnh kết quả ñược lưu ở thanh ghi A Lệnh này có ảnh hưởng ñến thanh ghi từ trạng thái chương trình PSW

Trang 26

Kết quả : A = #0A3h R6 = #0BAh

Cờ C = 1

Trang 27

(des) ←(des) AND (source)

Trang 28

(des) ←(des) OR (source)

Trang 29

(des) ←(des) XOR (source)

Trang 30

Quay phải A

RR A

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

Quay trái A

RL A

Lấy bù A CPL A

Xóa A CLR A

MÔ TẢ LỆNH

Trang 36

OR bit với C

OR NOT bit với C

Di chuyển bit ñến bit

Trang 38

MÔ TẢ LỆNH

Trang 39

JB bit,rel

Nhảy ñến ñịa chỉ(hoặc nhãn) chỉ ra trong

lệnh nêú nội dung A khác 0.

Jump if A Not Zero

JNZ rel

Nhảy ñến ñịa chỉ(hoặc nhãn) chỉ ra trong

lệnh nêú nội dung A bằng 0.

Jump if A Zero

JZ rel

MÔ TẢ LỆNH

Trang 40

JBC bit,rel

Nếu bit ñược chỉ ra trong lệnh bằng 0, nhảy ñến ñịa chỉ ñược chỉ ra trong lệnh Ngược lại, thực hiện lệnh tiếp theo.

JNB bit,rel

MÔ TẢ LỆNH

Trang 41

CH ƯƠNG 3:

TÓM TẮT TẬP LỆNH

3.3 Tp lnh nh

5 Nhóm lệnh ñiều khiển rẽ nhánh

So sánh và nhảy ñến ñịa chỉ (hoặc

label) ñược chỉ ra trong lệnh nếu dest

và source không bằng nhau Nếu

bằng nhau, thực hiện lệnh tiếp theo.

Compare and jump if not equal

CJNE dest,source,rel

CJNE A,direct,rel CJNE A,#data,rel CJNE @Ri,#data,rel

CJNE Rn,#data,rel

MÔ TẢ LỆNH

Trang 42

MÔ TẢ LỆNH

Trang 43

CH ƯƠNG 3:

TÓM TẮT TẬP LỆNH

Bài tp chương 2 2.

Trang 44

THANK YOU !

SEE YOU IN NEXT CHAPTER.

Ngày đăng: 30/10/2015, 18:19

TỪ KHÓA LIÊN QUAN

w