วันจันทร์ที่ 10 มีนาคม พ.ศ. 2557

Microcontroller ep.2

- Microcontroller Ep.2 -


            การเขียนโปรแกรมสำหรับไมโครคอนโทรลเลอร์ เราจะมาเริ่มต้นกันด้วยโปรแกรมง่ายๆอย่างการควบคุม input และoutput ของไมโครคอนโทรลเลอร์ โดยที่ Input และ Output ของไมโครคอนโทรลเลอร์นั้นจะมีลักษณะเป็นสัญญาณดิจิตอล คือ มีค่าเป็น High และ Low 

           เราจะตั้งค่าขาของไมโครคอนโทรลเลอร์เป็น Output เพื่อทำการ On และ Off อุปกรณ์ที่นำมาต่อเข้ากับไมโครคอนโทรลเลอร์ เช่น หลอด LED เป็นต้น ส่วนการตั้งค่าขาของไมโครคอนโทรลเลอร์ให้เป็น Input เพื่อรับค่าจาก สวิตส์แบบต่างๆ เช่น Push button (กดติดปล่อยดับ) เป็นต้น

           MCS-51 (AT89C51)

           การเขียนโปรแกรมสำหรับควบคุมไมโครคอนโทรลเลอร์นั้นจะต้องมีการกำหนด Register ว่า Address ไหนคือ อุปกรณ์อะไรโดยที่จะมีไฟล์สำหรับกำหนดค่าคือ REG51.h ซึ่งเก็บค่าของRegister ของไมโครคอนโทรลเลอร์ AT89C51 เอาไว้ การเรียกใช้ทำได้โดยการใช้คำสั่ง

            #include <REG51.h>
 
         โดยหากเปิดไฟล์  REG51.h ขึ้นมาจะพบว่ามีการกำหนด Register ของแต่ละพอร์ทเอาไว้ดังนี้

sfr P0   = 0x80;
sfr P1   = 0x90;
sfr P2   = 0xA0;
sfr P3   = 0xB0;

           คือ Port 0 จะแทนด้วยสัญลักษณ์ P0 , Port 1 จะแทนด้วยสัญลักษณ์ P1 ,Port 2 จะแทนด้วยสัญลักษณ์ P2 และ Port 3 จะแทนด้วยสัญลักษณ์ P3 ดังนั้นเราจะใช้สัญลักษณ์เหล่านี้ในการควบคุมขาของไมโครคอนโทรลเลอร์

            การเขียนโปรแกรมนั้น จะต้องมีฟังก์ชั่น void main() ซึ่งเป็นฟังก์ชั่นแรกที่ไมโครคอนโทรลเลอร์ของเราจะเข้าไปทำงาน โดยการควบคุม Input และ Output ของไมโครคอนโทรลเลอร์นั้นเราจะต้องทำการกำหนด ให้Port นั้นๆเป็น Input หรือ Output ก่อนซึ่งทำได้โดย

   P0 = 0xFF ;  //กำหนดให้ Port 0 เป็น input
  P1 = 0xFF ; //กำหนดให้ Port 1 เป็น input
P2 = 0x00 ; //กำหนดให้ Port 2เป็น  output
P3 = 0x00 ;  //กำหนดให้ Port 3เป็น  output

                หลังจากกำนด ทิศทางของแต่ละพอร์ทแล้ว เราจะใช้คำสั่ง

                  while(true)
{
}

      เพื่อให้ไมโครคอนโทรลเลอร์ของเรามีการทำงานซ้ำๆไปตลอด และในวงเล็บเราจะใส่คำสั่ง

P2 = P0 ;  // set Port2 equal to Port0
P3 = P1 ;  // set Port3 equal to Port1

     เพื่อกำหนดให้ พอร์ท2 มีค่าเท่ากับพอร์ท 0 และ พอร์ทมีค่าเท่ากับพอร์ท 1 ก็หวังว่าจะเป็นประโยชน์ต่อผู้เข้ามาอ่านไม่มากก็น้อยนะครับ
           



ไฟล์  Proteus Schematic
ไฟล์ main.c,main.h และ REG51.h