ในการควบคุมไมโครคอนโทรลเลอร์ให้ทำงานตามที่เราออกแบบไว้นั้นจะต้องเขียน
โปรแกรมควบคุมขึ้นมา จะด้วยภาษาใดก็ได้มีหลายภาษาด้วยกัน เช่น ภาษาเบสิก
ภาษาซี ภาษาปาสคาล และภาษาโลโก้ หรือภาษาโฟลว์ชาร์ทก็แล้วแต่
ล้วนทำได้หมดทั้งสิ้น
เพียงแต่ปัจจัยที่สำคัญนั้นอยู่ที่ตัวคอมไพเลอร์ของแต่ละยี่ห้อนั้นจะทำเน้น
ในภาษาใดเท่านั้น
ในที่นี้ขอกล่าวถึงภาษาซี
เพราะเป็นภาษาที่ได้รับความนิยมทุกยี่ห้อทุกตระกูลไมโครคอนโทรลเลอร์
มันสามารถแก้ไขได้ง่าย เพราะโครงสร้างง่ายต่อการสร้างโมดูลาร์(Modular)
เมื่อเรียนรู้ของตระกูลใดๆแล้ว
การศึกษาการควบคุมไมโครคอนโทรลเลอร์ในตระกูลอื่นก็ง่าย
เพราะรูปแบบพื้นฐานที่เหมือนกัน
จะแตกต่างกันเฉพาะคำสั่งเฉพาะของไมโครคอนโทรลเลอร์แต่ละตระกูลเท่านั้น
พื้นฐานที่จำเป็นของภาษาซี
ตัวดำเนินการเลขคณิตในภาษาซี- การลบ x-y
+ การบวก x+y
* การคูณ x*y
/ การหาร x/y
% การหารเอาเฉพาะเศษไว้ 9%2= เศษ 1 , 1 คือผลลัพธ์
- - การลดค่าครั้งละ 1 x- - หรือ - -x จะมีค่าเหมือนกับ x=x-1
++ การเพิ่มค่าครั้งละ 1 x++ หรือ ++x จะมีค่าเหมือนกับ x=x+1
จากข้างต้น ในภาษาซีจะมีลำดับในการประมวลผลก่อนและหลัง หากมีการใช้ตัวดำเนินการมากๆในหนึ่งนิพจน์ ดังนี้
() ลำดับที่1
++,- - ลำดับที่2
* / % ลำดับที่3
+- ลำดับที่4
+= , -= , *= , /= , %= ลำดับที่5
ตัวดำเนินการในภาษาซีทั้งหมดมีดังนี้() Function call
[] array element
. structure member
-> pointer to structure member
! Logical
- Minus
+ Add
- - Decrement
++ Increment
& address of
= content of
* Multiply
/ Divide
% Modulus
<< (left shift)
>> (right shift)
< less than
<= less than or equal to
> greater than
>= greater than or equal to
== equality
!= not equal
& AND (bit by bit)
^ XOR (bit by bit)
! OR (bit by bit)
&& logical AND
|| logical OR
?: Conditional
= Assignment
*=/=%=+= compound assignment
-=<<=>>= compound assignment
&=^=!= compound assignment
, comma operator
ตัวแปรและการประกาศตัวแปร ตัวแปรคือตัวแทนค่าตัวเลข อักษร
ข้อความ ที่ใช้ในการประมวลผล
ในการเขียนโปรแกรมจะต้องประกาศตัวแปรก่อนดำเนินการคำสั่งอื่น
ซึ่งเป็นการแจ้งต่อคอมไพเลอร์ว่าตำแหน่งใดคือค่าอะไร ชื่ออะไรเป็นต้น
Char ตัวอักษร 8 บิท เก็บรหัสแอสกี้
Float ตัวเลขทศนิยม 32 บิท 3.4x(10)-38 ถึง 3.4x(10)38
Short ตัวเลข 1 บิท 0 , 1
Long ตัวเลข 16 บิท 0 - 65,535
Int ตัวเลข 8 บิท 0 - 255
Int1 ตัวเลข 1 บิท 0 , 1
Int8 ตัวเลข 8 บิท 0 - 255
Int16 ตัวเลข 16 บิท 0 - 65,535
Int32 ตัวเลข 32 บิท 0 - 4,294,967,295
ตัวอย่าง เช่น int k=0; หมายถึง กำหนดค่าคงที่ ชื่อ k มีค่าเท่ากับ 0 เป็นต้น
ตัวแปรแบบอาเรย์ เมื่อต้องการประกาศตัวแปรหลายๆตัวเพื่อใช้
เก็บข้อมูลที่มีหลายอย่าง เราสามารถใช้ตัวแปรชนิดนี้ได้
เพราะตัวแปรชนิดนี้สามารถเก็บตัวแปรไดจำนวนมากและยังเข้าถึงกลุ่มข้อมูลได้
รวดเร็ว อีกด้วย
รูปแบบที่1เป็นการประกาศตัวแปรที่เป็นชื่อเดียวกันที่สามารถเก็บค่าได้ 5 ตัว
ชนิดของตัวแปร ชื่ออาเรย์ [ขนาดของอาเรย์]
เช่น int money[5];
คือ money[0] , money[1] , money[2] , money[3] , money[4]
รูปแบบที่2เป็นการประกาศตัวแปรที่เป็นชื่อเดียวกัน 5 ตัว โดยแต่ละตัวแปรมีค่าอยู่
เช่น int number[5] = {0,1,2,3,4};
คือ number[0]=0 , number[1]=1 , number[2]=2 , number[3]=3 , number[4]=4
รูปแบบที่3เป็นการประกาศที่ไม่กำหนดขนาดของอาเรย์ในระบบจะจองหน่วยความจำเอาไว้เท่ากับจำนวนค่าที่ประกาศเอาไว้
เช่น unsigned char number[ ] = {P,E,T,E,R};
unsigned char number[ ] = "PETER CORP";
โครงสร้างของภาษาซีคอมไพเลอร์ไดเร็คทีฟ(Compiler directive) คือส่วนหัวของโปรแกรมนั่นเอง ซึ่งจะเป็นการบอกแหล่งไฟล์อ้างอิงประเภท head file ที่จำเป็นนำมาใช้ในการประมวลผลในโปรแกรมนั้น
รูปแบบคือ #include <ชื่อไฟล์อ้างอิง.h>
ตัวอย่าง
#include <16F877.h> หมายถึง โปรแกรมนี้มีการอ้างอิงข้อมูลจากไฟล์
16F877.h ซึ่งเป็นข้อมูลเกี่ยวกับไมโครคอนโทรลเลอร์เบอร์ 16F877 นั่นเอง
ตัวโปรแกรม(Body)
ในส่วนที่โปรแกรมเริ่มประมวลคำสั่งจริงๆจะอยู่ในส่วนนี้ ซึ่งจะเป็นตัวกำหนดขอบเขตของโปแกรม
รูปแบบคือ void main()
{
คำสั่งต่างๆ ;
}
สำหรับฟังก์ชั่นย่อย เขียนดังนี้
void ชื่อโปรแกรม(ชนิดตัวแปร ชื่อตัวแปรคืนค่า)
{
คำสั่งต่างๆ และตัวแปร ;
}
ส่วนอธิบายโปรแกรม ในการเขียนส่วนอธิบายโปรแกรมจะต้องมีขอบเขตเช่นกัน ดังนี้
/ * ข้อความอธิบาย */
บทความยอดนิยม
-
การขยายสัญญาณเสียงให้มีความดังมากขึ้น ถือว่าเป็นสิ่งสำคัญในวงขยายเสียง และจะต้องนำไปใช้ในการขยายสัญญาณเสียงจากแหล่งกำเนิดต่างกัน ต้องการความ...
-
ตัวต้านทานปรับค่าได้(Variable Resistor) ตัวต้านทานปรับค่าได้มีหลายแบบด้วยกัน เช่น แบบหมุนแกน แบบปรับแท็ป แบบทริม และรีโอสตัด ...
-
การทำงานของเครื่องขยายเสียงนั้นโดยทั่วไปแล้ว สามารถแบ่งออกได้เป็น 3 ส่วนใหญ่ๆ 1.ภาคขยายสัญญาณเบื้องต้น 2.ภาคปรับแต่งสัญญาณ 3.ภาคขยายกำล...
วันพฤหัสบดีที่ 8 ธันวาคม พ.ศ. 2554
ควบคุมไมโครคอนโทรลเลอร์ด้วยภาษาซี ตอนที่1
ป้ายกำกับ:
เขียนโปรแกรม,
ควบคุมไมโครคอนโทรลเลอร์,
ด้วยภาษาซี,
ไมโครคอนโทรลเลอร์