Tải bản đầy đủ (.pdf) (32 trang)

Vi xử lý-Chương 3 pptx

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 (2.66 MB, 32 trang )

1
CHƯƠNG 3
TẬP LỆNH PIC16F8xx
CHƯƠNG 3: TẬP LỆNH PIC16F8xx
1. Cấu trúc của lệnh
- Các lệnh sẽ được nạp vào bộ nhớ chương trình.
- Mỗi lệnh PIC16Fxx cấu tạo bởi 1 word = 14 bit.
- Cấu trúc lệnh được phân theo 3 loại:
+ Các lệnh thao tác định hướng theo Byte
( Byte-oriented File Register Operations)
+ Các lệnh thao tác định hướng theo Bit
( Bit-oriented File Register Operations)
+ Các lệnh thao tác với giá trị HẰNG SỐ hoặc
( Literal and Control Operations) NHÃN.
2
CHƯƠNG 3: TẬP LỆNH PIC16F8xx
a. Cấu trúc một dòng lệnh
[ NHÃN ] LỆNH Tham số1, Tham số2
- NHÃN: là Tên đánh dấu vị trí dòng lệnh nào đó trong
chương trình, được dùng với lệnh nhảy tới Nhãn
GOTO hoặc lệnh gọi chương trình con CALL
- Lệnh và Tham số: một lệnh có thể có 1 hoặc 2 hay
không có tham số nào, tham số là đối tượng lệnh
thực hiện. Ví dụ: MOVLW 00h
BSF 03h,5
CHƯƠNG 3: TẬP LỆNH PIC16F8xx
b. Cấu trúc lệnh thao tác định hướng theo Byte
- OPCODE: mã địa chỉ của lệnh (mã lệnh).
- d (Destination select): bit chọn thanh ghi đích đến.
+ d=0 kết quả lưu vào thanh ghi W
+ d=1 kết quả lưu vào tập thanh ghi F


- F (Register File): các thanh ghi được chỉ định trong
lệnh. F có 7bit tương ứng 128 Byte (00h -> 7Fh).
3
CHƯƠNG 3: TẬP LỆNH PIC16F8xx
c. Cấu trúc lệnh thao tác định hướng theo Bit
- OPCODE: mã địa chỉ của lệnh (mã lệnh).
- b (Bit address): vị trí Bit trong tập thanh ghi F.
3-bit b tương ứng 8 vị trí trong một Byte của tập F.
- F (Register File): thanh ghi được chỉ định trong tập F.
F có độ rộng 7bit nên gồm 128 Byte ( 00h -> 7Fh ).
CHƯƠNG 3: TẬP LỆNH PIC16F8xx
d. Cấu trúc lệnh thao tác với giá trị HẰNG SỐ hoặc
NHÃN
+ k -8Bit: giá trị 8 bit
+ k -11Bit: giá trị 11 bit hoặc NHÃN khi dùng lệnh
GOTO , CALL
- OPCODE: địa chỉ của lệnh (mã lệnh).
- k (Literal field): có thể là Giá trị hay NHÃN.
4
CHƯƠNG 3: TẬP LỆNH PIC16F8xx
Bảng tóm tắt Tập lệnh
Cộng W với F
AND W với F
Xóa F
Xóa W
Đảo F
Các lệnh thao tác định hướng theo Byte
2. Tập lệnh
CHƯƠNG 3: TẬP LỆNH PIC16F8xx
Đảo F

Giảm F
Giảm F, Nhảy nếu F=0
Tăng F
Tăng F, Nhảy nếu F=0
OR (W và F)
Di chuyển F
Chuyển W vào F
Không làm gì
Xoay trái F có C
5
CHƯƠNG 3: TẬP LỆNH PIC16F8xx
Các lệnh thao tác định hướng theo Bit
Xóa Bit trong F
Đặt Bit trong F
Ktra Bit = 0, Nhảy
Ktra Bit = 1, Nhảy
Xoay phải F có C
Lấy F - W
Đổi 4bit Cao - 4bit Thấp
XOR (W và F)
CHƯƠNG 3: TẬP LỆNH PIC16F8xx
Các lệnh thao tác với hằng số hoặc Nhãn
Cộng k với W
AND (k và W)
Gọi CT con thực hiện
Tắt chế độ WDT
Nhảy tới vị trí NHÃN
OR (k và W)
Chuyển k vào W
Thoát từ CT Ngắt

Thoát và đặt k vào W
6
CHƯƠNG 3: TẬP LỆNH PIC16F8xx
Thoát CT con
Đặt chế độ SLEEP
Lấy k - W
XOR (k và W)
CHƯƠNG 3: TẬP LỆNH PIC16F8xx
2.1 Nhóm lệnh số học
 Cộng với hằng số k
- Cú pháp: ADDLW k
- Phạm vi: 0 ≤ k ≤ 255
- Thực thi: (W) + k 

 (W)
- Trạng thái ảnh hưởng: C, DC, Z
- Diễn giải: Cộng nội dung W với hằng số k-8bit.
Kết quả lưu vào W.
7
CHƯƠNG 3: TẬP LỆNH PIC16F8xx
 Cộng thanh ghi
- Cú pháp: ADDWF F,d
- Phạm vi: 0 ≤ F ≤ 127; d = 0,1
- Thực thi: (W) + (F) 

 (dest)
- Trạng thái ảnh hưởng: C, DC, Z
- Diễn giải: Cộng nội dung W với F.
Kết quả: lưu vào W nếu d=0.
lưu vào F nếu d=1.

- Chú ý: Trường hợp ghi d thì có thể ghi trực tiếp
tên thanh ghi chứa kết quả W, hoặc không ghi thì
Kết quả sẽ lưu vào thanh ghi F.
CHƯƠNG 3: TẬP LỆNH PIC16F8xx
 Trừ với hằng số k
- Cú pháp: SUBLW k
- Phạm vi: 0 ≤ k ≤ 255
- Thực thi: k - (W) 

 (W)
- Trạng thái ảnh hưởng: C, DC, Z
- Diễn giải: Lấy hằng số k trừ W.
Kết quả lưu vào W.
8
CHƯƠNG 3: TẬP LỆNH PIC16F8xx
 Trừ thanh ghi
- Cú pháp: SUBWF F,d
- Phạm vi: 0 ≤ F ≤ 127; d = 0,1
- Thực thi: (F) - (W) 

 (dest)
- Trạng thái ảnh hưởng: C, DC, Z
- Diễn giải: Trừ nội dung F cho nội dung W.
Kết quả: lưu vào W nếu d=0
lưu vào F nếu d=1.
CHƯƠNG 3: TẬP LỆNH PIC16F8xx
 Tăng thanh ghi
- Cú pháp: INCF F,d
- Phạm vi: 0 ≤ F ≤ 127; d = 0,1
- Thực thi: (F) + 1 


 (dest)
- Trạng thái ảnh hưởng: Z
- Diễn giải: Tăng nội dung F lên 1 đơn vị.
Kết quả: lưu vào W nếu d=0
lưu vào F nếu d=1.
9
CHƯƠNG 3: TẬP LỆNH PIC16F8xx
 Tăng thanh ghi và Nhảy
- Cú pháp: INCFSZ F,d
- Phạm vi: 0 ≤ F ≤ 127; d=0,1
- Thực thi: (F) + 1 

 (dest)
- Trạng thái ảnh hưởng: Z
- Diễn giải:
Tăng nội dung F lên 1 đơn vị.
Kết quả: lưu vào W nếu d=0
lưu vào F nếu d=1.
Nếu kết quả = 0 thì bỏ qua lệnh kế (NOP), và thực
hiện lệnh kế tiếp theo. Lệnh mất 2 chu kỳ máy.
CHƯƠNG 3: TẬP LỆNH PIC16F8xx
 Giảm thanh ghi
- Cú pháp: DECF F,d
- Phạm vi: 0 ≤ F ≤ 127; d = 0,1
- Thực thi: (F) - 1 

 (dest)
- Trạng thái ảnh hưởng: Z
- Diễn giải: Giảm nội dung F một đơn vị.

Kết quả: lưu vào W nếu d=0
lưu vào F nếu d=1.
10
CHƯƠNG 3: TẬP LỆNH PIC16F8xx
 Giảm thanh ghi và Nhảy
- Cú pháp: DECFSZ F,d
- Phạm vi: 0 ≤ F ≤ 127; d=0,1
- Thực thi: (F) - 1 

 (dest)
- Trạng thái ảnh hưởng: Z
- Diễn giải:
Giảm nội dung F 1 đơn vị.
Kết quả: lưu vào W nếu d=0
lưu vào F nếu d=1.
Nếu kết quả = 0 thì bỏ qua lệnh kế (=NOP) và thực
hiện lệnh kế tiếp theo. Lệnh mất 2 chu kỳ máy.
CHƯƠNG 3: TẬP LỆNH PIC16F8xx
2.2 Nhóm lệnh Logic
 Phép NOT
- Cú pháp: COMF F,d
- Phạm vi: 0 ≤ F ≤ 127; d=0,1
- Thực thi: (F)\ 

 (dest)
- Trạng thái ảnh hưởng: Z
- Diễn giải: Đảo nội dung thanh ghi F.
Kết quả: lưu vào W nếu d=0
lưu vào F nếu d=1.
11

CHƯƠNG 3: TẬP LỆNH PIC16F8xx
 Phép OR với hằng số k
- Cú pháp: IORLW k
- Phạm vi: 0 ≤ k ≤ 255
- Thực thi: (W) OR k 

 (W)
- Trạng thái ảnh hưởng: Z
- Diễn giải: OR nội dung thanh ghi W với k.
Kết quả lưu vào W.
CHƯƠNG 3: TẬP LỆNH PIC16F8xx
 Phép OR thanh ghi
- Cú pháp: IORWF F,d
- Phạm vi: 0 ≤ F ≤ 127; d=0,1
- Thực thi: (W) OR (F) 

 (dest)
- Trạng thái ảnh hưởng: Z
- Diễn giải: OR nội dung thanh ghi W với F.
Kết quả: lưu vào W nếu d=0
lưu vào F nếu d=1.
12
CHƯƠNG 3: TẬP LỆNH PIC16F8xx
 Phép AND với hằng số k
- Cú pháp: ANDLW k
- Phạm vi: 0 ≤ k ≤ 255
- Thực thi: (W) AND k 

 (W)
- Trạng thái ảnh hưởng: Z

- Diễn giải: AND nội dung thanh ghi W với k.
Kết quả lưu vào W.
CHƯƠNG 3: TẬP LỆNH PIC16F8xx
 Phép AND thanh ghi
- Cú pháp: ANDWF F,d
- Phạm vi: 0 ≤ F ≤ 127; d=0,1
- Thực thi: (W) AND (F) 

 (dest)
- Trạng thái ảnh hưởng: Z
- Diễn giải: AND nội dung thanh ghi W với F.
Kết quả: lưu vào W nếu d=0
lưu vào F nếu d=1.
13
CHƯƠNG 3: TẬP LỆNH PIC16F8xx
 Phép XOR với hằng số k
- Cú pháp: XORLW k
- Phạm vi: 0 ≤ k ≤ 255
- Thực thi: (W) XOR k 

 (W)
- Trạng thái ảnh hưởng: Z
- Diễn giải: XOR nội dung thanh ghi W với k.
Kết quả lưu vào W.
CHƯƠNG 3: TẬP LỆNH PIC16F8xx
 Phép XOR thanh ghi
- Cú pháp: XORWF F,d
- Phạm vi: 0 ≤ F ≤ 127; d=0,1
- Thực thi: (W) XOR (F) 


 (dest)
- Trạng thái ảnh hưởng: Z
- Diễn giải: XOR nội dung thanh ghi W với F.
Kết quả: lưu vào W nếu d=0
lưu vào F nếu d=1.
14
CHƯƠNG 3: TẬP LỆNH PIC16F8xx
 Xóa thanh ghi W
- Cú pháp: CLRW
- Phạm vi:
- Thực thi: 00h 

 (W)
- Trạng thái ảnh hưởng: Z = 1
- Diễn giải: Xóa nội dung thanh ghi W.
Kết quả: W = 00h
CHƯƠNG 3: TẬP LỆNH PIC16F8xx
 Xóa thanh ghi F
- Cú pháp: CLRF
- Phạm vi:
- Thực thi: 00h 

 (F)
- Trạng thái ảnh hưởng: Z = 1
- Diễn giải: Xóa nội dung thanh ghi F.
Kết quả: F = 00h
15
CHƯƠNG 3: TẬP LỆNH PIC16F8xx
 Xóa Watch Dog Timer
- Cú pháp: CLRWDT

- Phạm vi:
- Thực thi:
- Trạng thái ảnh hưởng:
TO\ = 1, PD\ = 1
- Diễn giải: -Reset WDT
-Reset Prescaler WDT
-Bit TO\ = 1 và PD\ =1.
Bit (Time-out) và (Power down)
CHƯƠNG 3: TẬP LỆNH PIC16F8xx
 Vào chế độ Stanby
- Cú pháp: SLEEP
- Thực thi:
- Trạng thái ảnh hưởng:
TO\ = 1, PD\ = 0
- Diễn giải:
+Reset WDT
+Reset Prescaler
+Stop Bộ dao động
+Bit TO\ = 1.
+Bit PD\ = 0.
16
CHƯƠNG 3: TẬP LỆNH PIC16F8xx
2.3 Nhóm lệnh di chuyển dữ liệu
 Di chuyển hằng số k
- Cú pháp: MOVLW k
- Phạm vi: 0 ≤ k ≤ 255
- Thực thi: k 

 (W)
- Trạng thái ảnh hưởng: Z

- Diễn giải: Di chuyển k vào thanh ghi W.
CHƯƠNG 3: TẬP LỆNH PIC16F8xx
 Di chuyển thanh ghi F
- Cú pháp: MOVF F,d
- Phạm vi: 0 ≤ F ≤ 127; d=0,1
- Thực thi: (F) 

 (dest)
- Trạng thái ảnh hưởng: Z
- Diễn giải: Di chuyển nội dung thanh ghi F vào :
Kết quả: ghi vào W nếu d=0
ghi vào F nếu d=1.
17
CHƯƠNG 3: TẬP LỆNH PIC16F8xx
 Di chuyển vào thanh ghi F
- Cú pháp: MOVWF F
- Phạm vi: 0 ≤ F ≤ 127
- Thực thi: (W) 

 (F)
- Trạng thái ảnh hưởng: Z
- Diễn giải: Di chuyển nội dung thanh ghi W vào F.
CHƯƠNG 3: TẬP LỆNH PIC16F8xx
2.4 Nhóm lệnh xử lý BIT
 Xóa Bit thanh ghi
- Cú pháp: BCF F,b
- Phạm vi: 0 ≤ F ≤ 127; 0 ≤ b ≤ 7
- Diễn giải: Xóa Bit thứ b trong thanh ghi F.
- Chú ý: Ta có thể ghi trực tiếp b = tên của Bit
trong thanh ghi F

BCF STATUS, C
18
CHƯƠNG 3: TẬP LỆNH PIC16F8xx
 Kiểm tra và Nhảy nếu Bit = 0
- Cú pháp: BTFSC F,b
- Phạm vi: 0 ≤ F ≤ 127; 0 ≤ b ≤ 7
- Thực thi: Nhảy nếu F<b> = 0.
- Trạng thái ảnh hưởng:
- Diễn giải: Nếu F<b> = 0 thì Nhảy: bỏ qua 1 lệnh
F<b> = 1 thì làm lệnh kế tiếp.
- Ví dụ:
CHƯƠNG 3: TẬP LỆNH PIC16F8xx
 Kiểm tra và Nhảy nếu Bit = 1
- Cú pháp: BTFSS F,b
- Phạm vi: 0 ≤ F ≤ 127; 0 ≤ b ≤ 7
- Thực thi: Nhảy nếu F<b> = 1.
- Trạng thái ảnh hưởng:
- Diễn giải: Nếu F<b> = 1 thì Nhảy: bỏ qua 1 lệnh
F<b> = 0 thì làm lệnh kế tiếp.
19
CHƯƠNG 3: TẬP LỆNH PIC16F8xx
 Xoay trái có C
- Cú pháp: RLF F,d
- Phạm vi: 0 ≤ F ≤ 127
d=0,1
- Trạng thái ảnh hưởng: C
- Diễn giải: Xoay trái thanh ghi F và C một lần.
Kết quả: lưu vào W nếu d=0
lưu vào F nếu d=1.
CHƯƠNG 3: TẬP LỆNH PIC16F8xx

 Xoay phải có C
- Cú pháp: RRF F,d
- Phạm vi: 0 ≤ F ≤ 127
d=0,1
- Trạng thái ảnh hưởng: C
- Diễn giải: Xoay phải thanh ghi F và C một lần.
Kết quả: lưu vào W nếu d=0
lưu vào F nếu d=1.
20
CHƯƠNG 3: TẬP LỆNH PIC16F8xx
 Hoán đổi 4 bit thấp - 4 bit cao
- Cú pháp: SWAPF F,d
- Phạm vi: 0 ≤ F ≤ 127; d = 0,1
- Thực thi: (F<7:4>) ↔ (F<3:0>)
- Trạng thái ảnh hưởng:
- Diễn giải: Đổi vị trí giữa 4 bit thấp và 4 bit cao.
Kết quả: lưu vào W nếu d=0
lưu vào F nếu d=1.
CHƯƠNG 3: TẬP LỆNH PIC16F8xx
2.5 Nhóm lệnh rẽ nhánh
 Lệnh Nhảy
- Cú pháp: GOTO k
- Phạm vi: 0 ≤ k ≤ 2047 (11bit)
- Thực thi: k 

 PC<10:0>
PCLATCH<4:3> 

 PC<12:11>
- Diễn giải: Nhảy tới Nhãn (k).

Lệnh này mất 2 chu kỳ máy.
21
CHƯƠNG 3: TẬP LỆNH PIC16F8xx
 Lệnh Gọi chương trình con thực thi
- Cú pháp: CALL k
- Phạm vi: 0 ≤ k ≤ 2047 (11bit)
- Thực thi:
- Diễn giải:
+Gọi chương trình con (k).
+Đặt địa chỉ của lệnh kế tiếp
trong PC vào ngăn xếp Stack.
+Lệnh này mất 2 chu kỳ máy.
CHƯƠNG 3: TẬP LỆNH PIC16F8xx
 Lệnh trở về từ chương trình con
- Cú pháp: RETURN
- Thực thi:
- Diễn giải:
+Trở lại vị trí nhảy ban đầu
từ chương trình con.
+Trả lại địa chỉ mã lệnh
cho PC từ ngăn xếp Stack.
+Lệnh mất 2 chu kỳ máy.
22
CHƯƠNG 3: TẬP LỆNH PIC16F8xx
 Lệnh trở về từ chương trình con Ngắt
- Cú pháp: RETFIE
- Thực thi:
- Diễn giải:
+Trở lại vị trí nhảy ban đầu
từ chương trình con Ngắt.

+Trả lại địa chỉ mã lệnh
cho PC từ ngăn xếp Stack.
+Set Bit GIE = 1
+Lệnh mất 2 chu kỳ máy.
CHƯƠNG 3: TẬP LỆNH PIC16F8xx
 Lệnh trở về từ chương trình con và đặt k vào W
- Cú pháp: RETLW k
- Thực thi:
- Diễn giải:
+Trở lại vị trí nhảy ban đầu
từ chương trình con.
+Đưa giá trị k vào W
+Trả lại địa chỉ mã lệnh
cho PC từ ngăn xếp Stack.
+Lệnh mất 2 chu kỳ máy.
23
CHƯƠNG 3: TẬP LỆNH PIC16F8xx
 Lệnh không làm gì cả
- Cú pháp: NOP
- Thực thi:
- Diễn giải: Không làm gì.
CHƯƠNG 3: TẬP LỆNH PIC16F8xx
3. Các Chỉ dẫn lệnh và Trình biên dịch
3.1 Giới thiệu trình biên dich MPASM
 Trình biên dịch MPASM là công cụ để biến đổi
ngôn ngữ Assembly thành ngôn ngữ máy.
 Ngôn ngữ máy được nạp vào PIC để thực hiện các
yêu cầu của người viết chương trình.
 MPASM bao gồm 58 chỉ dẫn lệnh (Directive
Language). Các chỉ dẫn lệnh giúp người viết

chương trình dễ dàng hơn.
24
CHƯƠNG 3: TẬP LỆNH PIC16F8xx
3.2 Chương trình điều khiển
a. Lưu đồ giải thuật
Lưu đồ tổng quát
Lưu đồ chi tiết
CHƯƠNG 3: TẬP LỆNH PIC16F8xx
b. Cấu trúc một chương trình điều khiển
 Lựa chọn loại Vi Điều Khiển: LIST 
 Định nghĩa các Ô nhớ, Thanh ghi:  EQU 
 Khởi tạo chương trình chính: ORG 
 Soạn thảo chương trình điều khiển: 
 Kết thúc chương trình: END
25
CHƯƠNG 3: TẬP LỆNH PIC16F8xx
3.3 Các Chỉ dẫn lệnh (Directive Language)
 CONFIG
 DB
Cấu hình các Bit chọn chế độ hoạt động của
PIC.
Lưu các giá trị 8 bit vào bộ nhớ chương trình.
CHƯƠNG 3: TẬP LỆNH PIC16F8xx
 DT
 EQU
Đặt tên cho ô nhớ hay thanh ghi.
Tạo bảng dữ liệu đối với các lệnh RETLW

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×