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