[ บทความ : MPLab ] ตอนที่ 3 ... ชุดคำสั่งของ PIC16F877 .... |
สวัสดีครับ หลังจากที่เราได้เรียนรู้เรื่องการใช้ Assembler, ระบบหน่วยความจำ กันไปแล้ว บทความนี้ผมจะกล่าวถึงชื่อคำสั่งและคำอธิบายการทำงานของคำสั่งแบบคร่าวๆ กันก่อน แล้วในคราวหน้าเราค่อยศึกษารายละเอียดของคำสั่งพร้อมกับตัวอย่างโปรแกรมกันทีหลัง ตัวไมโครคอนโทรลเลอร์ PIC16F877 นั้นมีคำสั่งด้วยกัน 35 คำสั่ง โดยแต่ละคำสั่งเป็นแบบ 14 บิต (14bit core) รายการคำสั่งนั้นแบ่งเป็น 3 กลุ่ม ดังนี้ครับ |
1. กลุ่มคำสั่งแบบไบต์ |
ในกลุ่มนี้เป็นการประมวลผลข้อมูลระดับไบต์ โดยมีตัวอักษรที่ใช้แทน Operator อยู่ 2 แบบ คือ f กับ d อันมีความหมายดังนี้ |
f | ค่าตำแหน่งของเรจิสเตอร์ (มีขนาด 7 บิต) | ||
d | การเลือกว่า ผลการทำงานนั้นจะเก็บในเรจิสเตอร์ W หรือ f โดยมีข้อกำหนดว่า | ||
ถ้าค่านี้เป็น 0 แสดงว่า ผลการทำงานของคำสั่งนั้นๆ จะเก็บในเรจิสเตอร์ W | |||
แต่ถ้าเป็น 1 ผลลัพธ์จะเก็บในเรจิสเตอร์ f |
ชุดคำสั่งในกลุ่มนี้ได้แก่
|
Mnemonic |
Operands |
การทำงาน |
จำนวนไซเคิล |
ผลกับแฟล็ก |
ADDWF |
f,d |
บวกค่าของ W และ f |
1 |
C,DC,Z |
ANDWF |
f,d |
ทำการ AND บิตของ W ด้วย f |
1 |
Z |
CLRF |
f |
ทำให้ f เป็น 0 |
1 |
Z |
CLRW |
|
ทำให้ W เป็น 0 |
1 |
|
COMF |
f,d |
คำนวณค่าคอมพลีเมนต์ของ f |
1 |
Z |
DECF |
f,d |
ลดค่าของ f ลง 1 ค่า |
1 |
Z |
DECFSZ |
f,d |
1. ลดค่าของ f แล้วถ้าผลลัพธ์เป็น 0 จะกระโดดข้ามคำสั่งถัดไป 2. ลดค่าของ f แล้วถ้าผลลัพธ์ไม่ใช่ 0 จะทำคำสั่งถัดไป |
2
1 |
|
INCF |
f,d |
เพิ่มค่าของ f |
1 |
Z |
INCFSZ |
f,d |
1. เพิ่มค่าของ f แล้วถ้าผลลัพธ์เป็น 0 จะกระโดดข้ามคำสั่งถัดไป 2. เพิ่มค่าของ f แล้วถ้าผลลัพธ์ไม่ใช่ 0 จะทำคำสั่งถัดไป |
2
1 |
|
IORWF |
f,d |
หาผลลัพธ์ของการทำ Inclusive OR ระหว่าง W กับ f |
1 |
Z |
MOVF |
f,d |
โอนค่าจาก f |
1 |
Z |
MOVWF |
f |
โอนค่าจาก W ไปเก็บใน f |
1 |
|
NOP |
|
ไม่ทำอะไร |
1 |
|
RLF |
f,d |
หมุนบิตไปทางซ้ายโดยใช้ Carry flag |
1 |
C |
RRF |
f,d |
หมุนบิตไปทางขวาโดยใช้ Carry flag |
1 |
C |
SUBWF |
f,d |
ลบค่าใน f ด้วย W |
1 |
C,DC,Z |
SWAPF |
f,d |
สลับบิตแบบ 4 บิตของ f |
1 |
|
XORWF |
f,d |
หาผลลัพธ์ของการทำ Exclusive OR ระหว่าง W |
1 |
Z |