โครงสร้างภาษาซี
MCS51
24/6/2557 SONGCHAI PRAPATRUNGSEE
โครงสร้างภาษาซี
MCS51
=======================
#include <REGX51.H>
//#include "REGX51.H"
unsigned char k;//0-255
void DELAY_MS(unsigned int TIME){
//DELAY HAVE INPUT
unsigned int
i,j;//0-65535
for(i=TIME;i!=0;i--)
for(j=124;j!=0;j--);//ADJUST TIME THIS ROW
}
/*CRYSTAL 12MHZ,
124=1MS PER ROUND*/
void main(void){
P1=255; //P1=PORT1
DELAY_MS(500);//500=DELAY
500MS
P1=0;
DELAY_MS(500);
}
================================
#include <REGX51.H>
ส่วนนี้เรียกว่าหัวโปรแกรม(HEADER
FILE)
จะต้องมีเครื่องหมายชาร์ป #
# หมายถึง
PREPROCESSOR(ประมวลผลก่อน)
include หมายความว่าเอาไฟล์ภายนอกเข้ามาร่วม
<> ในวงเล็บมุมคือชื่อไฟล์ที่จะนำเข้ามาร่วม
อาจใช้เครื่องหมายคำพูด ” ” แทนวงเล็บมุมก็ได้
REGX51.H หมายถึงไฟล์ที่ทางC51คอมไพล์เลอร์
ได้ทำการตั้งชื่อแทนตำแหน่งแอดเดรส
(ที่อยู่ของไมโครคอนโทรลเลอร์จะเป็นตัวเลข)
เพื่อให้ง่ายต่อการจดจำและใช้งาน
เมื่อตั้งชื่อแทนตำแหน่งแอดเดรสแล้ว
ชื่อนั้นจะเรียกว่ารีจิสเตอร์(REGISTER)
.H เป็นนามสกุลH
FILE ไม่ใช่HEX FILE
ในส่วนตรงนี้จะใช้นามสกุลอื่นก็ได้ เช่น .C
//#include "REGX51.H"
// เครื่องหมายสแลช(SLASH)2อัน
หมายถึงคอมเมนท์หรือคำอธิบายบรรทัดเดียว
คอมไพล์เลอร์จะไม่คอมไพล์จุดนี้
unsigned char k;//0-255
ส่วนนี้เรียกว่าการประกาศตัวแปร(DECLARATION)
การประกาศส่วนนี้คือ
การประกาศตัวแปรแบบโกลบอล(GLOBAL)
ข้อดีคือสามารถใช้ตัวแปรได้ทั่วทั้งไฟล์หรือโปรแกรม
ข้อเสียคือเปลืองแรม(RAM)
เพราะเป็นการจองแรมแบบถาวร
unsigned char คือชนิดข้อมูล(DATA TYPE)
มีค่าอยู่ในช่วง 0 – 255
k คือชื่อตัวแปรที่เราตั้งขึ้นเอง
ควรตั้งให้สอดคล้องกับความหมาย
; เครื่องหมายเซมิโคลอน
เรียกว่าสเตทเมนท์(STATEMENT)
หมายถึงจบคำสั่ง
ถ้าไม่มีเวลาคอมไพล์จะฟ้อง ERROR
==========================
ฟังชันย่อย
ส่วนนี้จะมีหรือไม่มีก็ได้
void DELAY_MS(unsigned int TIME){
//DELAY HAVE INPUT
unsigned int
i,j;//0-65535
for(i=TIME;i!=0;i--)
for(j=124;j!=0;j--);//ADJUST
TIME THIS ROW
}
/*CRYSTAL 12MHZ,
124=1MS PER ROUND*/
void แรกในตำแหน่งนี้เรียกว่าเอาท์พุท
(OUTPUT)
หรือRETURN TYPE
void แปลว่าไม่มีในที่นี้หมายความว่าไม่มีเอาท์พุท
หรือ ไม่มี RETURN TYPE
DELAY_MS คือชื่อฟังชันที่เราตั้งขึ้นเอง
(unsigned int TIME) ส่วนวงเล็บนี้
เรียกว่าอินพุท(INPUT)
หรืออาร์กิวเมนท์(ARGUMENT)
ส่วนช่วงที่รับข้อมูล เรียกว่าพารามิเตอร์(PARAMETER)
unsigned int คือชนิดข้อมูล อยู่ในช่วง 0 – 65535
TIME คือชื่อตัวแปรที่ตั้งขึ้นเอง
หมายความว่า
ตอนนี้ตัวแปรชื่อTIME
จะมีค่าอยู่ในช่วง 0 – 65535
{ วงเล็บปีกกาเปิด หมายถึง
จุดเริ่มต้นการทำงานของฟังชัน
unsigned int i,j;
เป็นการประกาศตัวแปรแบบโลคอล(LOCAL)
เพราะประกาศภายในวงเล็บปีกกาของฟังชัน
ข้อดีคือ ประหยัดแรม(RAM)
หมายถึงเมื่อจบฟังชัน
ก็จะคืนแรมให้กับไมโครคอนโทรลเลอร์
ข้อเสียคือสามารถใช้ตัวแปร
ได้เฉพาะในฟังชันที่ประกาศไว้เท่านั้น
i,j; หมายความว่าเป็นการประกาศตัวแปร2ตัว
โดยใช้เครื่องหมายคอมมา มาคั่นไว้
for(i=TIME;i!=0;i--)
for(j=124;j!=0;j--);
คำสั่งวนลูปfor แบบ2ชั้น
} วงเล็บปีกกาปิด
หมายถึงสิ้นสุดหรือจบฟังชัน
/* */ หมายถึงคอมเมนท์หรือคำอธิบายได้หลายบรรทัด
คอมไพล์เลอร์จะไม่คอมไพล์ส่วนนี้
===========================
ฟังชันหลัก
เป็นฟังชันที่จะต้องมี ถ้าไม่มีจะERROR
ฟังชันหลักจะเป็นจุดเริ่มต้นการทำงานของโปรแกรม
และเป็นจุดสิ้นสุดการทำงานของโปรแกรม
void main(void){
P1=255; //P1=PORT1
DELAY_MS(500);//500=DELAY
500MS
P1=0;
DELAY_MS(500);
}
===========================
void main(void)
void แรกในตำแหน่งนี้เรียกว่าเอาท์พุท
(OUTPUT)
หรือRETURN TYPE
void แปลว่าไม่มีในที่นี้หมายความว่าไม่มีเอาท์พุท
หรือ ไม่มี RETURN TYPE
main คือชื่อฟังชันหลัก
ฟังชันนี้เราไม่สามารถตั้งขึ้นเองได้
(void) ส่วนวงเล็บนี้
เรียกว่าอินพุท(INPUT)
หรืออาร์กิวเมนท์(ARGUMENT)
ส่วนช่วงที่รับข้อมูล เรียกว่าพารามิเตอร์(PARAMETER)
ในที่นี้เป็น void แปลว่าไม่มี
{ วงเล็บปีกกาเปิด หมายถึง
จุดเริ่มต้นการทำงานของโปรแกรม
P1=255; หมายถึงPORT1มีไฟทั้ง8ขา
DELAY_MS(500); เรียกใช้ฟังชันDELAY_MS
หน่วงเวลา 500MS(ครึ่งวินาที)
P1=0; หมายถึงPORT1 เป็นกราวด์ทั้ง8ขา
DELAY_MS(500); เรียกใช้ฟังชันDELAY_MS
หน่วงเวลา 500MS(ครึ่งวินาที)
} วงเล็บปีกกาปิด
หมายถึงสิ้นสุดหรือจบโปรแกรม
//////////////////////////////////////////////
ไม่มีความคิดเห็น:
แสดงความคิดเห็น