INCLUDE ตัวแปร
29/3/2557 SONGCHAI
PRAPATRUNGSEE
INCLUDE ตัวแปร
ในกรณีที่มีการประกาศตัวแปรจำนวนมาก
และอยากเก็บไว้ในINCLUDE
ทำดังนี้
1 ให้COPY ตัวแปรที่จะเอาเข้ามาในINCLUDE
2 คลิกFILE/NEW
3 วาง(PASTE)ลงในไฟล์ที่สร้างขึ้น
4 คลิกFILE
5 คลิกSAVE AS
6 ที่ช่องFILE NAMEให้พิมพ์ชื่อตามด้วย.C หรือ.H
7 คลิกSAVE
8 INCLUDEไฟล์ที่เราสร้างเสร็จแล้วเป็นไฟล์.C
หรือ.H เช่น
#include <MUL.C> ชื่อไฟล์ที่อยู่ในวงเล็บมุม
#include ”MUL.C” ชื่อไฟล์ที่อยู่ในเครื่องหมายคำพูด
#include <MUL.H> ชื่อไฟล์ที่อยู่ในวงเล็บมุม
#include ”MUL.H” ชื่อไฟล์ที่อยู่ในเครื่องหมายคำพูด
สามารถใช้ได้เหมือนกันทั้งวงเล็บมุมและเครื่องหมายคำพูด
ถ้าเก็บใน C:\Keil\C51\INC
หรือเก็บไว้ในFOLDERที่รวบรวมไฟล์โปรเจคนั้น
ไม่ต้องมีDIRECTORY
บอกเส้นทางเพราะคอมไพล์เลอร์จะรู้เอง
แต่ถ้าจะเก็บไว้ในที่ของเราเอง
ต้องบอกDIRECTORYหรือบอกเส้นทางให้คอมไพล์เลอร์รู้
เช่น
#include < F:\MUL\MULVARIABLE.C >
#include ” F:\MUL\MULVARIABLE.C ”
#include < F:\MUL\MULVARIABLE.H >
#include ” F:\MUL\MULVARIABLE.H”
=====================
การประกาศตัวแปรแบบGLOBAL
คือการประกาศตัวแปรนอกฟังชัน
และเป็นการจองตัวแปรแบบถาวร
ข้อดีคือสามารถใช้ได้ทั่วทั้งไฟล์(โปรแกรม)
ข้อเสียคือเปลืองRAMและROM เช่น
#include <REGX51.H>
unsigned char i,j;//0-255
unsigned int k;//0-65535
void main(){
i=10,j=200;
k=i*j;
}
/*GLOBAL USE DATA=13BYTE,CODE=33BYTE*/
========================
การประกาศตัวแปรแบบLOCAL
คือการประกาศตัวแปรในฟังชัน
และเป็นการจองตัวแปรแบบชั่วคราว
ข้อดีคือประหยัดRAMและROM
เพราะสามารถใช้งานได้ภายในฟังชันเท่านั้น
เมื่อใช้งานเสร็จแล้วจะคืนพื้นที่ให้กับRAM
เมื่อคืนพื้นที่ให้กับแรมแล้วก็จะสามารถ
ใช้งานชื่อตัวแปรซ้ำกันได้ในฟังชันอื่น
ยกเว้นฟังชันINTERRUPT
เพราะเมื่อเกิดการINTERRUPT
ก็จะกระโดดไปทำงานในฟังชันINTERRUPTก่อน
เมื่อเกิดการINTERRUPTหรือขัดจังหวะ
ฟังชันที่ใช้ชื่อซ้ำกันถ้ายังทำงานไม่เสร็จ
ก็จะยังไม่คืนพื้นที่ให้กับแรม
ดังนั้นค่าของตัวแปรที่ใช้ชื่อซ้ำกันนั้น
ก็จะไปทำงานในฟังชันINTERRUPT
ทำให้เกิดค่าที่ผิดพลาดได้
ในทางกลับกันถ้าฟังชัน INTERRUPTทำงานเสร็จ
ก็จะกลับมาทำงานต่อจากบรรทัดที่ทำงานค้างไว้
ในฟังชันmain(ฟังชันหลัก)
ก็จะทำให้ค่าผิดเพื้ยนได้เช่นเดียวกัน
ข้อเสียคือ
1 ไม่สามารถใช้งานนอกฟังชันได้ เช่น
#include <REGX51.H>
void main(){
unsigned char
i,j;//0-255
unsigned int
k;//0-65535
i=10,j=200;
k=i*j;
}
/*LOCAL USE DATA=11BYTE,CODE=29BYTE*/
========================
การใช้งานINCLUDE
ตัวแปร
#include <REGX51.H>
#include "MULVARIABLE.C"
void main(){
i=10,j=200;
k=i*j;
}
/*INCLUDE=GLOBAL USE DATA=13BYTE,
CODE=33BYTE*/
============================
คำอธิบายโปรแกรม(ไฟล์)
#include <REGX51.H>
# คือ เครื่องหมายSHARP เป็นพรีโปรเซสเซอร์ไดเรกทีฟ
( PREPROCESSOR
DIRECTIVE )
หมายความว่าเป็นคำสั่งประมวลผลก่อน
include =เอาไฟล์ภายนอกเข้ามาร่วมในการคอมไพล์(แปล)
หมายความว่าเวลากดBUILDหรือREBUILD
ก็จะเข้าไปทำการคอมไพล์(แปล)ในไฟล์ include ก่อน
จากนั้นจึงกลับมาคอมไพล์ต่อจากบรรทัดที่คอมไพล์ไปแล้ว
ให้เป็นไฟล์.HEX หรือเลขฐาน16
<REGX51.H> = ชื่อที่ทางคอมไพล์เลอร์กำหนด
แทนตำแหน่งแอดเดรสของไมโครคอนโทรลเลอร์
เพื่อให้ง่ายต่อการจดจำและใช้งาน
.H คือไฟล์นามสกุล H FILE ไม่ใช่ HEX FILE
unsigned char i,j;
, เครื่องหมายคอมมา
หมายความว่า “ยังมีอีก”
; เครื่องหมายเซมิโคลอน
หมายความว่าจบคำสั่ง
i,j คือตัวแปรที่ตั้งชื่อเองอยู่ในช่วงชนิดข้อมูลunsigned
char
อยู่ในช่วง0-255=256ค่า
unsigned
int k;
k คือตัวแปรที่ตั้งชื่อเองอยู่ในช่วงชนิดข้อมูลunsigned
int
อยู่ในช่วง0-65535=65536ค่า
void main( )
void =ไม่มี OUTPUT(RETURN TYPE)
main = FUNCTION
NAME, main=ชื่อฟังค์ชันหลัก
( ) =วงเล็บเปล่า=ไม่มี INPUT(ARGUMENTS)
{….} =วงเล็บปีกกา เป็นLOOPหรือขอบเขตของการทำงาน
i=10,j=200;
กำหนด i=10 และกำหนด
j=200
และจบคำสั่งด้วย ;
STATEMENT
k=i*j;
* คือเครื่องหมายดอกจัน=เครื่องหมายคูณ
k=i*j; i*jเสร็จแล้วเอาผลลัพท์มาเก็บไว้ใน k
จบบรรทัดนี้เข้าสู่โหมดประหยัดพลังงาน
ไม่มีความคิดเห็น:
แสดงความคิดเห็น