Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 32 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
32
Dung lượng
2,66 MB
Nội dung
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.
[...]... -END 30 CHƯƠNG 3: T P L NH PIC16F8xx Bài t p 3: S d ng B NG - Xét vai trò c a thanh ghi PC • • • • • 0000 0001 0002 00 03 0004 LOOP MOVLW MOVWF DECFSC GOTO END 0xFF BIEN1 BIEN1 LOOP CHƯƠNG 3: T P L NH PIC16F8xx - S d ng B ng MOVLW 0x04 CALL TABLE ADDWF PCL,1 TABLE retlw 01 retlw 02 retlw 03 retlw 04 (W=04) retlw 05 retlw 06 retlw 07 (PCL=02H) RETURN 31 CHƯƠNG 3: T P L NH PIC16F8xx Bài t p 3: S d... giúp ngư i vi t chương trình d dàng hơn 23 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 đ chi ti t Lưu đ t ng quá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: Kh i t o chương trình chính: EQU ORG So n th o chương trình đi u khi n: K t thúc chương trình: END 24 CHƯƠNG 3: T P L... CHƯƠNG 3: T P L NH PIC16F8xx 3.3 Các Ch d n l nh (Directive Language) CONFIG C u hình các Bit ch n ch đ ho t đ ng c a PIC DB 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 T o b ng d li u đ i v i các l nh RETLW EQU Đ t tên cho ô nh hay thanh ghi 25 CHƯƠNG 3: T P L NH PIC16F8xx END K t thúc chương trình INCLUDE Ch n thư vi n c a lo i PIC s d ng CHƯƠNG 3: T P L NH PIC16F8xx LIST... lưu vào F n u d=1 13 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 14 CHƯƠNG 3: T P L NH PIC16F8xx... +L nh m t 2 chu kỳ máy 22 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... lưu vào F n u d=1 19 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) ↔ (F ) - 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... 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: - Di n gi i: 0 ≤ F ≤ 127; 0≤b≤7 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 17 CHƯƠNG 3: T P L NH PIC16F8xx... 1 thì Nh y: b qua 1 l nh F = 0 thì làm l nh k ti p 18 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... 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 11 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... (11bit) - Th c thi: k PC PCLATCH PC - Di n gi i: Nh y t i Nhãn (k) L nh này m t 2 chu kỳ máy 20 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 . 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. 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: