chuong 3 khao sat tap lenh va ltrinh vdk

9
Ni dung: Chương 1: Gii thiuvVi xChương 2: Gii thiuvcu trúc caHVi điu khin 8051 Chương 3: Kho sát tplnh và lp trình Vi điu khin 8051 Chương 4: Hot động cabộ định thi Chương 5: Hot động ngt Chương 6: Hot động truyn thông ni tiếp Chương 7: Thiếtkế giao tiếp Chương 3: Kho sát tp lnh và lp trình Các ký hiucn chú ý: Rn : Các thanh ghi tR0 – R7 (bank thanh ghi hin hành) Ri : Các thanh ghi tR0 – R1 (bank thanh ghi hin hành) @Rn : định địa chgián tiếp 8 bit dùng thanh ghi Rn @DPTR : định địa chgián tiếp 16 bit dùng thanh ghi DPTR direct : Định địa chtrc tiếp RAM ni (00h 7Fh) hay SFR (80h – FFh) (direct) :ni dung cabnhti địa chdirect #data8 : giá trtc thi 8 bit #data16 : giá trtc thi 16 bit bit : địa chbit ca các ô nhcó thể định địa chbit 3.1. Các chếđộđịnh địa chca MCS - 51 Có 8 chế độ định địa ch: Định địa chtrc tiếp. Định địa chgián tiếp. Định địa chtc thi. Định địa chthanh ghi. Định địa chtương đối. Định địa chtuyt đối. Định địa chdài. Định địa chchs. 3.1. Các chếđộđịnh địa ch3.1.1. Định địa chtrc tiếp (Direct Addressing) Dùng để truy xut các ô nhtrong RAM ni (00h – 7Fh) và các thanh ghi chcnăng đặc bit (80h - FFh). Các lnh có kiu định địa chtrc tiếp thường chiếm 2 byte: byte thnht là mã lnh (opcode), byte thhai địa chtrc tiếpca ô nh.

Upload: but-chi

Post on 29-Jun-2015

3.667 views

Category:

Documents


3 download

DESCRIPTION

vi điều khiển cho cơ khí động lực c3

TRANSCRIPT

Page 1: Chuong 3 khao sat tap lenh va ltrinh vdk

Nội dung:

• Chương 1: Giới thiệu về Vi xử lý

• Chương 2: Giới thiệu về cấu trúc của Họ Vi điều

khiển 8051

• Chương 3: Khảo sát tập lệnh và lập trình Vi điềukhiển 8051

• Chương 4: Hoạt động của bộ định thời

• Chương 5: Hoạt động ngắt

• Chương 6: Hoạt động truyền thông nối tiếp

• Chương 7: Thiết kế giao tiếp

Chương 3: Khảo sát tập lệnh và lập trình

Các ký hiệu cần chú ý:

• Rn : Các thanh ghi từ R0 – R7 (bank thanh ghi hiện hành)

• Ri : Các thanh ghi từ R0 – R1 (bank thanh ghi hiện hành)

• @Rn : định địa chỉ gián tiếp 8 bit dùng thanh ghi Rn

• @DPTR : định địa chỉ gián tiếp 16 bit dùng thanh ghi DPTR

• direct : Định địa chỉ trực tiếp RAM nội (00h – 7Fh)

hay SFR (80h – FFh)

• (direct) : nội dung của bộ nhớ tại địa chỉ direct

• #data8 : giá trị tức thời 8 bit

• #data16 : giá trị tức thời 16 bit

• bit : địa chỉ bit của các ô nhớ có thể định địa chỉ bit

3.1. Các chế độ định địa chỉ của MCS - 51

Có 8 chế độ định địa chỉ:

� Định địa chỉ trực tiếp.

� Định địa chỉ gián tiếp.

� Định địa chỉ tức thời.

� Định địa chỉ thanh ghi.

� Định địa chỉ tương đối.

� Định địa chỉ tuyệt đối.

� Định địa chỉ dài.

� Định địa chỉ chỉ số.

3.1. Các chế độ định địa chỉ

3.1.1. Định địa chỉ trực tiếp (Direct Addressing)

• Dùng để truy xuất các ô nhớ trong RAM nội (00h – 7Fh)

và các thanh ghi chức năng đặc biệt (80h - FFh).

• Các lệnh có kiểu định địa chỉ trực tiếp thường chiếm

2 byte: byte thứ nhất là mã lệnh (opcode), byte thứ hai

là địa chỉ trực tiếp của ô nhớ.

Page 2: Chuong 3 khao sat tap lenh va ltrinh vdk

3.1. Các chế độ định địa chỉ

3.1.1. Định địa chỉ trực tiếp (Direct Addressing)

Ví dụ: Các lệnh sau có kiểu định địa chỉ trực tiếp:

MOV A, P0

⇒⇒⇒⇒ Chuyển nội dung từ Port 0 vào thanh ghi A

MOV A, 30h

⇒⇒⇒⇒ Chuyển nội dung của ô nhớ có địa chỉ 30h vào

thanh ghi A

3.1. Các chế độ định địa chỉ

3.1.2. Định địa chỉ gián tiếp (Indirect Addressing)

Dùng để truy xuất cho cả RAM nội và RAM ngoài.

• Các thanh ghi R0 và R1 hoạt động như các con trỏ, dùng

để truy xuất RAM nội. Nội dung của các thanh ghi này là

địa chỉ của RAM nội.

Ví dụ: MOV A, @R0

⇒⇒⇒⇒ Chuyển nội dung của RAM nội có địa chỉ chứa trong

R0 vào thanh chứa A.

3.1. Các chế độ định địa chỉ

3.1.2. Định địa chỉ gián tiếp (Indirect Addressing)

• Thanh ghi DPTR dùng để truy xuất RAM ngoại

Ví dụ: MOV DPTR, #5000h

MOVX A, @DPTR

⇒Nạp địa chỉ 5000h (RAM ngoài) vào con trỏ DPTR;

⇒ Chuyển nội dung của RAM ngoài có địa chỉ chứa trong

DPTR vào thanh chứa A.

• Các lệnh ở chế độ địa chỉ gián tiếp chỉ chiếm 1 byte

3.1. Các chế độ định địa chỉ

3.1.3. Định địa chỉ tức thời (Immediate Addressing)

• Dùng để đưa trực tiếp hằng số vào mã lệnh của chương

trình. Hằng số được xác định bằng cách sử dụng dấu #.

Ví dụ: MOV A, #10h; ⇒⇒⇒⇒ Nạp giá trị 10h vào thanh chứa A.

• Lệnh này chiếm từ 2 đến 3 byte

Page 3: Chuong 3 khao sat tap lenh va ltrinh vdk

3.1. Các chế độ định địa chỉ

3.1.4. Định địa chỉ thanh ghi (Register Addressing)

• Dùng cho các lệnh xử lý dữ liệu chứa trong thanh ghi.

Việc truy xuất thanh ghi làm việc trong 8 thanh ghi

(R0 đến R7) được mã hóa bằng 3 bit trong Opcode.

Ví dụ: ADD A, R2⇒⇒⇒⇒ Cộng nội dung của R2 và A

MOV R0, A

⇒⇒⇒⇒ Chuyển nội dung thanh ghi A vào R0

• Mã lệnh thuộc kiểu này chiếm 1 byte

3.1. Các chế độ định địa chỉ

3.1.5. Định địa chỉ tương đối (Relative Addressing)

• Kiểu định địa chỉ này sử dụng cho các lệnh nhảy. Nơi nhảy

đến có địa chỉ bằng địa chỉ hiện hành trong thanh ghi PC

cộng với địa chỉ tương đối (Relative Offset).

• Địa chỉ tương đối là một số 8 bit có dấu nên tầm nhảy ngắn

giới hạn từ -127 byte (nhảy lùi) đến 128 byte (nhảy tới).

Ví dụ: SJMP X1

⇒⇒⇒⇒ Nhảy đến nhãn có tên X1 nằm trong giới hạn 256 byte

3.1. Các chế độ định địa chỉ

3.1.5. Định địa chỉ tương đối (Relative Addressing)

Lệnh nhảy thuộc kiểu định địa chỉ này chiếm 2 byte.

• Byte thứ nhất là mã lệnh (Opcode).

• Byte thứ hai là địa chỉ tương đối (Relative Offset).

3.1. Các chế độ định địa chỉ

3.1.6. Định địa chỉ tuyệt đối (Absolute Addressing)

• Kiểu định địa chỉ này dùng với các lệnh ACALL và AJMP.

• Các lệnh này chiếm 2 byte. Trong đó, Opcode nằm ở 5 bit

cao. Nơi nhảy đến hoặc gọi đến nằm trong phạm giới hạn

2 kbyte.

Page 4: Chuong 3 khao sat tap lenh va ltrinh vdk

3.1. Các chế độ định địa chỉ

3.1.6. Định địa chỉ tuyệt đối (Absolute Addressing)

Ví dụ: AJMP X2

⇒⇒⇒⇒ Nhảy đến nhãn có tên X2 nằm trong giới hạn 2

kbyte

3.1. Các chế độ định địa chỉ

3.1.7. Định địa chỉ dài (Long Addressing)

• Kiểu định đại chỉ này dùng với các lệnh LCALL và LJMP.

• Các lệnh này chiếm 3 byte. Trong đó, 2 byte chứa địa chỉ

của nơi đến. Do đó, Nơi nhảy đến hoặc gọi đến nằm trong

giới hạn 64 kbyte.

3.1. Các chế độ định địa chỉ

3.1.8. Định địa chỉ chỉ số (Indexed Addressing)

• Kiểu định đại chỉ này dùng “một thanh ghi cơ bản

(Base Register)” (PC hoặc DPTR) kết hợp với “một

giá trị lệch (Offset)” để tạo ra địa chỉ của ô nhớ cần

truy xuất hoặc địa chỉ của nơi nhảy đến.

3.1. Các chế độ định địa chỉ

3.1.8. Định địa chỉ chỉ số (Indexed Addressing)

• Ví dụ: MOVX A, @A+DPTR

⇒⇒⇒⇒ Chuyển dữ liệu trong vùng nhớ A + DPTR vào

thanh chứa A.

Page 5: Chuong 3 khao sat tap lenh va ltrinh vdk

3.2. Tập lệnh của MCS - 51

• Tập lệnh của MCS-51 được thiết kế với Opcode 8 bit.

⇒ Có khả năng mã hóa 256 lệnh khác nhau (thực tế có

255 lệnh).

• Ngoài Opcode, một lệnh còn có thể có 1 hoặc 2 byte để

mã hóa chế độ địa chỉ:

� 139 lệnh 1 byte.

�92 lệnh 2 byte.

� 24 lệnh 3 byte.

3.2. Tập lệnh của MCS - 51

Gồm 5 nhóm lệnh cơ bản:

� Nhóm lệnh số học (ADD, SUB, MUL, DIV,…).

�Nhóm lệnh logic (AND, OR, XOR, NOT,…).

� Nhóm lệnh chuyển dữ liệu (MOV).

� Nhóm lệnh xử lý bit (SETB, CLR,…).

� Nhóm lệnh rẽ nhánh (JMP,…).

3.2.1. Nhóm lệnh số học

Gồm các lệnh:

• Cộng: ADD

• Trừ: SUBB

• Nhân: MUL

• Chia: DIV

• Tăng: INC

• Giảm: DEC

3.2. Tập lệnh của MCS - 51

3.2.1. Nhóm lệnh số học

Tất cả các lệnh số học được thực thi trong 1 chu kỳ

máy (1µµµµs), trừ các lệnh:

• INC DPTR ⇒⇒⇒⇒ thực thi trong 2 chu kỳ máy.

• Các lệnh MUL, DIV ⇒⇒⇒⇒ thực thi trong 4 chu kỳ

máy.

3.2. Tập lệnh của MCS - 51

Page 6: Chuong 3 khao sat tap lenh va ltrinh vdk

3.1.2. Nhóm lệnh logic

3.2. Tập lệnh của MCS - 51

• Nhóm lệnh logic thực hiện các phép toán logic trên các

byte dữ liệu. Trong đó, thanh chứa A luôn đóng vai trò

là một toán hạng và lưu kết quả.

• Tất cả các lệnh logic đều được thực hiện trong 1 chu

kỳ máy.

• Nhóm lệnh logic bao gồm: ANL, ORL, XRL, CPL, RL

(Rotate Left), RR (Rotate Right).

3.1.3. Nhóm lệnh di chuyển dữ liệu

3.2. Tập lệnh của MCS - 51

Nhóm lệnh chuyển dữ liệu bao gồm:

• Chuyển dữ liệu trong RAM nội: MOV, XCH, XCHD

• Chuyển dữ liệu trong RAM ngoài: MOVX

• Chuyển dữ liệu từ bộ nhớ chương trình: MOVC

(thường dùng để truy xuất bảng dữ liệu trong bộ nhớ

chương trình ).

• Truy nhập ngăn xếp: PUSH, POP.

3.1.4. Nhóm lệnh xử lý bit

3.2. Tập lệnh của MCS - 51

Bao gồm các lệnh:

• Xóa, thiết lập bit: CLR, SETB

• Logic: ANL, ORL, CPL

• Di chuyển bit: MOV

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

3.2. Tập lệnh của MCS - 51

Bao gồm các lệnh:

• Gọi chương trình con: ACALL, LCALL, RETI

• Nhảy không điều kiện: JMP, SJMP, LJMP, AJMP

• Nhảy có điều kiện: JC, JNC, JB, JNB, JZ, JNZ,

CJNE, DJNE

Page 7: Chuong 3 khao sat tap lenh va ltrinh vdk

3.3.1. Trình dịch hợp ngữ

3.3. Lập trình hợp ngữ cho MCS - 51

• Khi chương trình nguồn được viết, phần mở rộng của tập

tin nguồn là “.asm” hoặc “.src”.

• Trình dịch hợp ngữ của 8051 sẽ dịch tập tin này ra dạng mã

máy và tạo ra tập tin đối tượng (.obj) và tập tin liệt kê (.lst).

• Các chương trình 8051IDE, Keil C51 là các chương trình

bao gồm 3 chức năng: soạn thảo chương trình nguồn, dịch

chương trình nguồn và mô phỏng được ứng dụng khi lập

trình MCS – 51.

3.3.2. Khuôn dạng của chương trình hợp ngữ

3.3. Lập trình hợp ngữ cho MCS - 51

[Nhãn:] [Từ gợi nhớ] [Các toán hạng] [;Chú thích]

Loop: MOV A, P0 ; Chuyển(P0)→→→→(A)

Ví dụ:

Lệnh trong hợp ngữ có 4 trường như sau:

Chương trình thực hiện như sau:

ORG 0000H ; Địa chỉ bắt đầu

MOV TMOD, #10h ; Thiết lập chế độ 1 của Timer 1

Loop: MOV TH1, #HIGH (-500) ; Nạp byte cao của -500

MOV TL1, #LOW (-500) ; Nạp byte thấp của -500

SETB TR1 ; Cho phép timer 0 hoạt động

Wait: JNB TF1, Wait ; Nếu Timer chưa tràn thì chờ

CLR TF1 ; Xóa cờ tràn

CPL P1.0 ; Đảo bit P1.0 để tạo xung vuông

CLR TR1

SJMP Loop

END

3.3.2. Khuôn dạng của chương trình hợp ngữ

Không nhất thiết lúc nào cũng có đầy đủ 4 trường, Tuy

nhiên, có một số điểm cần lưu ý:

• Nhãn: cho phép chương trình tham chiếu đến một dòng

lệnh bằng tên nhãn.

• Từ gợi nhớ và toán hạng: kết hợp với nhau để thực hiện

nhiệm vụ của chương trình.

• Chú thích: ghi vào các lời giải thích cho chương trình và

được viết sau dấu “;”. Trình dịch hợp ngữ sẽ bỏ qua các

chú thích này khi dịch chương trình.

Page 8: Chuong 3 khao sat tap lenh va ltrinh vdk

3.3.3. Các chỉ dẫn

� Chỉ dẫn ORG (Set origin):

Dùng để khai báo địa chỉ bắt đầu của chương trình.

ORG Expression

Expression: địa chỉ bắt đầu của chương trình

tronng bộ nhớ chương trình.

Ví dụ: ORG 300h

Các lệnh …,,,,,,

⇒⇒⇒⇒ Chương trình bắt đầu từ địa chỉ 300h trong ROM

3.3.3. Các chỉ dẫn

� Chỉ dẫn END

• Chỉ dẫn này báo cho trình dịch hợp ngữ biết kết

thúc tập tin nguồn (.ASM).

• Chỉ dẫn END là dòng cuối cùng của chương trình

8051, nghĩa là mọi lệnh sau END đều bị trình dịch

bỏ qua.

3.3.3. Các chỉ dẫn

� Chỉ dẫn EQU (Equate)

• Chỉ dẫn này được dùng để gán (định nghĩa) một

giá trị cho nhãn.

Symbol EQU Expression

• Ví dụ: Led7 EQU P0

MOV Led7, A ;Xuất dữ liệu từ A⇒⇒⇒⇒ P0

Count EQU 100 ;Count có giá trị 100

3.3.3. Các chỉ dẫn

� Chỉ dẫn DB (Define Byte)

• Chỉ dẫn dùng để định nghĩa (các) giá trị byte dữ liệu.

Thường được dùng để đặt các hằng số (bảng dữ liệu) vào

bộ nhớ chương trình.

[Label:] DB Expression

Ví dụ: ORG 500h

DATA: DB 12h, 55h, 64h, 08h….

⇒⇒⇒⇒ Định nghĩa DATA gồm các giá trị: 12h, 55h, 64h,

….nằm trong bộ nhớ ROM với địa chỉ bắt đầu 500h

Page 9: Chuong 3 khao sat tap lenh va ltrinh vdk

3.3.3. Các chỉ dẫn

� Chỉ dẫn DB (Define Byte)

Địa chỉ Mô tả Bit

500h 12h

501h 55h

502h 64h

503h 08h

504h ….,

…, ….,

3.3.3. Các chỉ dẫn

� Chỉ dẫn DW (Define word)

• Chỉ dẫn này tương tự DB nhưng mỗi phần tử được gán

cho một vùng nhớ 2 byte (word)

[Label:] DW Expression

Ví dụ: ORG 600h

DATA: DW 1234h, 515h, 64h, ….

⇒⇒⇒⇒ Định nghĩa DATA gồm các giá trị: 12h, 55h, 64h,

….nằm trong bộ nhớ ROM với địa chỉ bắt đầu 600h

3.3.3. Các chỉ dẫn

� Chỉ dẫn DW (Define word)

Địa chỉ Mô tả Bit

600h 34h

601h 12h

602h 15h

603h 05h

604h 64h

605h 00

606h ….,

…, ….,

Nội dung:

• Chương 1: Giới thiệu về Vi xử lý

• Chương 2: Giới thiệu về cấu trúc của Họ Vi điều

khiển 8051

• Chương 3: Khảo sát tập lệnh và lập trình Vi điều

khiển 8051

• Chương 4: Hoạt động của bộ định thời

• Chương 5: Hoạt động ngắt

• Chương 6: Hoạt động truyền thông nối tiếp

• Chương 7: Thiết kế giao tiếp