CHƯƠN G3 TẬP LỆNH CỦA VI ĐIỀU KHIỂN PIC
3.1 VÀI NÉT SƠ LƯỢC VỀ TẬP LỆNH CỦA VI ĐIỀU KHIỂN PIC
Như đã trình bày ở chương 1, PIC là vi điều khiển có tập lệnh rút gọn RISC (Reduced Instruction Set Computer), bao gồm 35 lệnh và có thể được phân ra thành 3 nhóm cơ bản:
Nhóm lệnh thao tác trên bit. Nhóm lệnh thao tác trên byte. Nhóm lệnh điều khiển.
Đối với dòng vi điều khiển PIC16Fxxx, mỗi lệnh được mã hóa thành 14 bit word, bao gồm các bit opcode (dùng để xác định lệnh nào được mã hóa) và các bit mô tả một hay vài tham số của lệnh.
Đối với nhóm lệnh thao tác trên byte, ta có 2 tham số f (xác định địa chỉ byte cần thao tác) và d (xác định nơi chứa kết quả thực thi lệnh). Nếu d = 0, kết quả sẽ được đưa vào thanh ghi W. Nếu d = 1, kết quả được đưa vào thanh ghi được mô tả bởi tham số f.
Đối với nhóm lệnh thao tác trên bit, ta có hai tham số b (xác định bit cần thao tác) và f (xác định địa chỉ byte dữ liệu cần
thao tác). Hình 3.1 Cơ chế mã hóa lệnh của PIC16Fxxx. Đối với nhóm lệnh điều khiển chỉ có một tham số duy nhất là k (k có thể là 8 bit trong trường hợp các lệnh bình thường hay 11 bit trong trường hợp là lệnh CALL và lệnh GOTO) dùng để mô tả đối tượng tác động của vi điều khiển (một label, một hằng số nào đó).
Mỗi lệnh sẽ được vi điều khiển thực thi xong trong vòng một chu kì lệnh, ngoại trừ các lệnh làm thay đổi giá trị bộ đếm chương trình PC cần 2 chu kì lệnh. Một chu kì lệnh gồm 4 xung clock của oscillator. Ví dụ ta sử dụng oscillator có tần số 4 MHz thì tần số thực thi lệnh sẽ là 4MHz/4 = 1 MHz, như vậy một chu kì lệnh có thời gian 1 uS.
Các lệnh thao tác trên một thanh ghi bất kì đều thực hiện cơ chế Read-Modify-Write, tức là thanh ghi sẽ được đọc, dữ liệu được thao tác và kết quả được đưa vào thanh ghi chứa kết quả (nơi chứa kết quả tùy thuộc vào lệnh thực thi và tham số d). Ví dụ như khi thưc thi lệnh “CLRF PORTB”, vi điều khiển sẽ đọc giá trị thanh ghi PORTB, xóa tất cả các bit và ghi kết quả trở lại thanh ghi PORTB.