Hệ vi xử lí - Chương 3: Tập lệnh PIC16F8xx

- Biểu thức được cho là Đúng thì lặp, nếu Sai thì kết thúc. - Đúng khi giá trịkhác 0, Sai khi bằng 0. - Vòng lặp này chứa tối đa 100 dòng lệnh. - Sốlần lặp tối đa 255 lần.

pdf64 trang | Chia sẻ: tuanhd28 | Lượt xem: 2000 | Lượt tải: 2download
Bạn đang xem trước 20 trang tài liệu Hệ vi xử lí - Chương 3: Tập lệnh PIC16F8xx, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
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. 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). 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. CHƯƠNG 3: TẬP LỆNH PIC16F8xx Bảng tóm tắt Tập lệnh Các lệnh thao tác định hướng theo Byte 2. Tập lệnh Cộng W với F AND W với F Xóa F Xóa W Đảo F 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 CHƯƠNG 3: TẬP LỆNH PIC16F8xx Xoay phải F có C Lấy F - W Đổi 4bit Cao - 4bit Thấp XOR (W và F) 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 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 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. 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. 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. 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. 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. 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. 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. 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. 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 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. 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. 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 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 = 0. - Trạng thái ảnh hưởng: - Diễn giải: Nếu F = 0 thì Nhảy: bỏ qua 1 lệnh F = 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 = 1. - Trạng thái ảnh hưởng: - Diễn giải: Nếu F = 1 thì Nhảy: bỏ qua 1 lệnh F = 0 thì làm lệnh kế tiếp. 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. 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ự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. 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. 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. 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. 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átLư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 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. 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 Liệt kê loại PIC sử dụng.  ORG Chọn địa chỉ Bắt đầu chương trình. CHƯƠNG 3: TẬP LỆNH PIC16F8xx  PROCESSOR Chọn loại PIC  IF ELSE ENDIF CHƯƠNG 3: TẬP LỆNH PIC16F8xx  WHILE ENDW - Biểu thức được cho là Đúng thì lặp, nếu Sai thì kết thúc. - Đúng khi giá trị khác 0, Sai khi bằng 0. - Vòng lặp này chứa tối đa 100 dòng lệnh. - Số lần lặp tối đa 255 lần. CHƯƠNG 3: TẬP LỆNH PIC16F8xx Bảng tóm tắt các Chỉ dẫn lệnh _ _BADRAM BANKISEL BANKSEL CBLOCK ENDC CODE _ _CONFIG CONSTANT DA DATA DB DE #DEFINE #UNDEFINE DT DW END EQU ERROR ERRORLEVEL EXITM EXPAND NOEXPAND EXTERN FILL GLOBAL IDATA _ _IDLOCS #IF #ELSE CHƯƠNG 3: TẬP LỆNH PIC16F8xx #ENDIF #IFDEF #IFNDEF LIST NOLIST LOCAL MACRO ENDM _ _MAXRAM MESSG ORG PAGE PAGESEL PROCESSOR RADIX RES SET SPACE TITLE SUBTITLE UDATA UDATA_ACS UDATA_OVR UDATA_SHR VARIABLE WHILE ENDW INCLUDE CHƯƠNG 3: TẬP LỆNH PIC16F8xx Bảng tóm tắt các kí hiệu và quy ước CHƯƠNG 3: TẬP LỆNH PIC16F8xx CHƯƠNG 3: TẬP LỆNH PIC16F8xx List p=16F877A #INCLUDE __CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF & _HS_OSC &_LVP_OFF BIEN1 EQU 0X20 BIEN2 EQU 0X21 Bài tập 1: Blink PortC CALL DELAY1 CALL DELAY1 MOVLW B'11111111' MOVWF PORTC CALL DELAY1 CALL DELAY1 GOTO LOOP ;===================== DELAY1: ORG 0X0000 GOTO MAIN MAIN ;KHOI DONG PORTC BANKSEL TRISC CLRF TRISC BANKSEL PORTC LOOP CLRF PORTC CLRF BIEN1 L2 CLRF BIEN2 L1 DECFSZ BIEN2 GOTO L1 DECFSZ BIEN1 GOTO L2 RETURN END CHƯƠNG 3: TẬP LỆNH PIC16F8xx List p=16f877a #INCLUDE __CONFIG . BIEN1 EQU 0X20 BIEN2 EQU 0X21 ORG 0X0000 GOTO MAIN Bài tập 2: 1 Led Sáng đuổi CALL DELAY1 BTFSS PORTC,7 GOTO LEFT RIGHT RRF PORTC CALL DELAY1 BTFSS PORTC,0 GOTO RIGHT GOTO LEFT ;-----------DELAY DELAY1MAIN ;KHOI TAO PORTC BANKSEL TRISC CLRF TRISC BANKSEL PORTC ;========================= CLRF PORTC BSF STATUS,C LEFT RLF PORTC CLRF BIEN1 L1 CLRF BIEN2 L2 DECFSZ BIEN2 GOTO L2 DECFSZ BIEN1 GOTO L1 RETURN ;-------------------------------------- END CHƯƠNG 3: TẬP LỆNH PIC16F8xx • 0000 • 0001 • 0002 • 0003 Bài tập 3: Sử dụng BẢNG - Xét vai trò của thanh ghi PC MOVLW 0xFF MOVWF BIEN1 LOOP DECFSC BIEN1 GOTO LOOP • 0004 END CHƯƠNG 3: TẬP LỆNH PIC16F8xx MOVLW CALL . TABLE retlw 01 - Sử dụng Bảng 0x04 TABLE ADDWF PCL,1 (PCL=02H) retlw 02 retlw 03 retlw 04 retlw 05 retlw 06 retlw 07 RETURN (W=04) CHƯƠNG 3: TẬP LỆNH PIC16F8xx List p=16f877a #INCLUDE ;__CONFIG .. CBLOCK 0X20 BIEN1 BIEN2 TAM Bài tập 3: Sử dụng BẢNG CALL TABLE MOVWF PORTC CALL DELAY1 INCF TAM MOVLW 0X0F SUBWF TAM,W BTFSC STATUS,Z CLRF TAM GOTO LOOP TABLEENDC ORG 0X0000 BANKSEL TRISC CLRF TRISC BANKSEL PORTC CLRF PORTC ;--------------------------------- CLRF TAM LOOP MOVF TAM,W ADDWF PCL,1 RETLW B'00000001' RETLW B'00000011‘ (TAM=1) RETLW B'00000111‘ (TAM=2) RETLW B'00001111‘ (TAM=3 RETLW B'00011111' RETLW B'00111111' RETLW B'01111111' RETLW B'11111111' RETLW .. END CHƯƠNG 3: TẬP LỆNH PIC16F8xx CBLOCK 0X20 COUNT1 COUNT2 TAM1;DE LUU & XUAT GIA TRI RA PORTC TAM2;BIEN DAT SO LAN DICH LED TAM3;BIEN KIEM SOAT SO LAN XOAY LED TAM4 ;BIEN XOAY LED Bài tập 4: Sử dụng BẢNG LOOP2 ;---GAN TAM3 = TAM2--- MOVF TAM2,0 MOVWFTAM3 ;---GAN TAM4 = 0--- MOVLW 0X00 MOVWFTAM4 ;---SET C--- BSF STATUS,C LOOP1 RLF TAM4 MOVF TAM4,0 ;LUU TAM4 = WENDC KHỞI TẠO PORTC ORG 0X0000 MAIN ;---GAN TAM1 = 0--- MOVLW 0X00 MOVWF TAM1 ;---GAN TAM2 = 8--- MOVLW 0X08 MOVWF TAM2 IORWF TAM1,0 ;OR LUU VAO W MOVWF PORTC ;XUAT RA P_C CALL DELAY BCF STATUS,C DECFSZ TAM3 ;GIAM SO LAN XOAY LED GOTO LOOP1 MOVF PORTC,0 ;LUU P_C = W MOVWF TAM1 ;LUU W =TAM1 DECFSZ TAM2 GOTO LOOP2

Các file đính kèm theo tài liệu này:

  • pdfchuong_3_pic_tap_lenh_226.pdf
Tài liệu liên quan