ไมโครคอนโทรลเลอร์

ไมโครคอนโทรลเลอร์
ไมโครคอนโทรลเลอร์เป็นอุปกรณ์ที่ทำงานตามการโปรแกรม ซึ่งสามารถเขียนได้หลายภาษา เช่น ภาษาแอสเซมบลี ภาษาซี การเขียนโปรแกรมด้วยภาษาซีจะช่วยทำให้การพัฒนาโปรแกรมสารถทำได้เร็วและง่ายกว่าการใช้ภาษาแอสเซมบลี และสามารถจำลองการทำงานของโปรแกรมได้ ดังนั้นในบทความนี้เราจะกล่าวถึงพื้นฐานของภาษาซี โครงสร้างของภาษาซี การกำหนดตัวแปร การวนรอบ การเปรียบเทียบ การส่งค่าผ่านฟังก์ชัน เพื่อเป็นความรู้พื้นฐานในการเขียนโปรแกรมเพื่อนำมาพัฒนาระบบไมโครคอนโทรลเลอร์ต่อไป
โครงสร้างของภาษาซี
โครงสร้างของภาษาซีประกาบไปด้วยไฟล์ส่านหัวโปรแกรม (Header Files) และส่วนของตัวโปรแกรม ไฟล์ส่วนหัวโปรแกรมเป็นไฟล์ที่มีส่านขยายเป็น .h ใช้ร่วมในการคอมไพล์โปรแกรม ส่วนของตัวโปรแกรมจะเริ่มต้นการด้วยฟังก์ชัน main() ซึ่งเป็นฟังก์ชันหลักของโปรแกรมมีเครื่องหมายปีกาเปิด ( { ) เป็นเครื่องหมายเริ่มต้นการเขียนโปรแกรมและมีเครื่องหมายปีกาปิด ( }) เป็นเครื่องหมายจบโปรแกรม ภายในฟังก์ชัน  main() จะประกอบไปด้วยชุดคำสั่งและฟังก์ชันต่างๆ ซึ่งเกือบทั้งหมดจะปิดท้ายด้วยเครื่องหมายเซมิคอลอน ( ; ) การเขียนโปรแกรมภาษาซีจะเขียนด้วยอักษรตัวพิมพ์เล็กซึ่งภาษาซีจะแยกความแตกต่างระหว่างอักษรตัวพิมพ์เล็กและอักษรพิมพ์ใหญ่ และส่วนของคำอธิบายจะใช้เครื่องหมาย /* และ /* ขั้นตามลำดับหรือเครื่องหมาย // ซึ่งจะใช้ในการอธิบายโปรแกรมไม่มีผลต่อการคอมไพล์
ไฟล์ส่วนหัวโปรแกรม
ตัวโปรแกรม
โครงสร้างของภาษาซี
การควบคุมหลอดแสดงผล
การเขียนโปรแกรมควบคุมการทำงานหลอดแสดงผล  การประยุกต์ใช้งานไมโครคอนโทรลเลอร์ ควบคุมการทำงานหลอดแสดงผล หลอดแสดงผล LED (Light Emitting Diode) หรือไดโอดเปล่งแสงเป็นอุปกรณ์อิเล็กทรอนิกส์ที่ใช้ในการแสดงผล นิยมใช้กันแพร่หลายเนื่องจากใช้งานง่ายและราคาถูก โดยส่วยใหม่จะใช้แสดงผลสถานการณ์ทำงานของอุปกรณ์และไมโครคอนโทรลเลอร์
โปรแกรมการควบคุมหลอดแสดงผลตามการกดสวิตช์ขนาด 4 บิต
คำอธิบาย
  1. บรรทัดที่ 2 ถึง 9 ประกาศตัวแปรแบบบิตโดยให้ตัวแปร sw0 ถึง sw3 รับข้อมูลจากพอร์ต 0 ถึง P3.3 และให้ตัวแปร LED0 ถึง LED3 แทนบิตข้อมูลของพอร์ต P1.0 ถึง P1.3
  2. บรรทัดที่ 12 ถึง 23 วนรอบตรวจสอบการกดสวิตช์ในฟังก์ชัน do while
  3. บรรทัดที่ 13 ถึง 20 ทำการตรวจสอบการกดสวิตซ์ sw0 ถึง sw3 ถ้าสวิตช์ของบิตใดถูกกดให้ LED0 ถึง LED3 ของบิตนั้นเท่ากับ 1 ทำให้พอร์ต0 ถึง P1.3 ติดตามการกดสวิตช์
  4. บรรทัดที่ 21 และ 22 หน่วงเวลาและส่งข้อมูล 00H ออกพอร์ต P1
ผลการรันโปรแกรม
ไมโครคอนโทรลเลอร์จะตรวจสอบการกดสวิตช์ของพอร์ต P3.0 ถึง P3.3 ถ้าบิตใดถูกกดจะควบคุมให้ LED ของพอร์ต P1.0 ถึง P1.3 ติดตามการกดสวิตช์โปรแกรมควบคุมไฟวิ่งซ้ายขวาตามการกดสวิตซ์
 คำอธิบาย
  1. บรรทัดที่ 3 และ 4 ประกาศตัวแปร sw0 และ sw1 ให้เป็นตัวแปรแบบบิตและรับขอมูลมาจากพอร์ต 0 และ P3.1
  2. บรรทัดที่ 5 ประกาศตัวแปรอาร์เรย์ LED[8] เพื่อเก็บข้อมูลที่ส่งออกพอร์ต
  3. บรรทัดที่ 6 ประกาศตัวแปร i และ direct ให้มีค่าเริ่มต้นเท่ากับ 0
  4. บรรทัดที่ 9 ถึง 25 วนรอบตรวจสอบการกดสวิตช์และส่งข้อมูลออกพอร์ตในฟังก์ชัน do while
  5. บรรทัดที่ 11 และ 12 ถ้ากดสวิตช์ sw0 ถูกกดให้ตัวแปร direct=1
  6. บรรทัดที่ 13 และ 14 ถ้ากดสวิตช์ sw1 ถูกกดให้ตัวแปร direct=2
  7. บรรทัดที่ 15 และ 16 ถ้าตัวแปร direct=1 ให้ตัวแปร i++ เป็นการเลื่อนบิตข้อมูลไปทางขวา
  8. บรรทัดที่ 17 และ 18 ถ้าตัวแปร direct=2 ให้ตัวแปร i—เป็นการเลื่อนบิตข้อมูลไปทางซ้าย
  9. บรรทัดที่ 19 ถึง 22 กำหนดให้ค่าตัวแปร i มีค่าอยู่ในช่วง 0 ถึง 7 ตามขนาดของอาร์เรย์
  10. บรรทัดที่ 23 และ 24 ส่งข้อมูล LED[i] ออกพอร์ต P1 แล้วหน่วงเวลา
ผลการรันโปรแกรม
ไมโครคอนโทรลเลอร์ตรวจสอบการกดสวิตช์ถ้า sw0 ถูกกดจะควบคุมให้ LED วิ่งจากซ้ายไปขวา แต่ถ้า sw1 ถูกกดจะควบคุมให้ LED วิ่งจากขวาไปซ้าย

Comments

Popular Posts