วันเสาร์ที่ 1 พฤศจิกายน พ.ศ. 2557

ฟังชันหลัก main MCS51




ฟังชันหลัก main MCS51
7/7/2557 SONGCHAI PRAPATRUNGSEE
ฟังชันหลัก main MCS51

ฟังชันหลัก(main) หมายถึง
เป็นจุดเริ่มต้นของการทำงานของโปรแกรม
และจุดสิ้นสุดการทำงานของโปรแกรม
หมายความว่าฟังชันนี้จะต้องมี
ถ้าไม่มีจะคอมไพล์(แปล)ไม่ผ่าน(ERROR)

ส่วนฟังชันย่อยจะมีหรือไม่มีก็ได้
แต่ถ้ามีชื่อฟังชันย่อยอยู่ในฟังชันหลัก
เมื่อทำงานมาถึงบรรทัดที่มีชื่อฟังชันย่อย
ฟังชันหลักก็จะเรียกใช้งานฟังชันย่อยนั้น
เมื่อทำงานในฟังชันย่อยจนเสร็จแล้วก็จะมาทำงาน
ต่อจากบรรทัดที่มีชื่อฟังชันย่อยนั้น

ส่วนฟังชันอินเทอรัพท์จะมีหรือไม่มีก็ได้เช่นกัน
ฟังชันอินเทอรัพท์คือฟังชันขัดจังหวะ
เมื่อฟังชันหลักกำลังทำงานอยู่
แล้วมีการขัดจังหวะจากฟังชันอินเทอรัพท์
ก็จะกระโดดไปทำงานยังฟังชันอินเทอรัพท์ก่อน
เสร็จแล้วก็จะกลับมาทำงานในฟังชันหลักที่ค้างไว้
//////////////////////////////////////////////////////

#include <REGX51.H>

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>
เอาไฟล์รีจิสเตอร์ของ AT89S51
เข้ามาร่วมกับไฟล์.C

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
}
เป็นฟังชันย่อยชื่อDELAY_MS
ฟังชันนี้จะมีหรือไม่มีก็ได้

void main(void){ }
ฟังชันหลักเป็นฟังชันที่สำคัญจะไม่มีไม่ได้

voidแรก คือRETURN TYPEหรือเอาท์พุท
ส่วนคำว่า voidแปลว่าไม่มี
หมายความว่าไม่มีรีเทิร์นไทพ์หรือเอาท์พุท

main คือชื่อฟังชัน แปลว่า หลัก

(void) คือ ARGUMENTหรืออินพุท
ในที่นี้หมายความว่าไม่มีอาร์กิวเมนท์หรืออินพุท

{ วงเล็บปีกกาเปิด
หมายถึงจุดเริ่มต้นการทำงานของโปรแกรม

} วงเล็บปีกกาปิด
หมายถึงจุดสิ้นสุดการทำงานของโปรแกรม
จากนั้นเข้าสู่โหมดประหยัดพลังงาน

P1=255;  //P1=11111111
กำหนดให้PORT1 มีไฟออกทั้ง 8ขา(8BIT)

DELAY_MS(500); //500=DELAY 500MS
หน่วงเวลาไว้500มิลลิวินาที (ครึ่งวินาที)

P1=0; //P1=00000000
กำหนดให้PORT1 เป็นกราวด์ทั้ง 8ขา(8BIT)

DELAY_MS(500);
หน่วงเวลาไว้500มิลลิวินาที (ครึ่งวินาที)


ไม่มีความคิดเห็น: