|
[ บทความ : 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 |