กรุณาปิด AdBlock!

Cancel your adBlock please.

ขยายหน้าเว็บRegister Login
 โฆษณา
หน้า: [1]  ลงล่าง
  พิมพ์  
topic

การเขียนโปรแกรมควบคุมไมโครคอนโทรลเลอร์ [AT89C51] ด้วยภาษา C  (อ่าน 25966 ครั้ง)

ไอที
« เมื่อ: 26, 05 2011, 07:35:56 AM »
เนื่องจากผมกำลังทำบทเรียนช่วยสอนให้รุ่นน้องแผนกเทคนิคคอมพิวเตอร์ ว.เทคนิคพระนครศรีอยุธยา เลยลองเอามาให้ชมกันครับ (แบบพื้นฐานนะครับ) สำหรับใครที่เขียนเป็นแล้วก็อย่ามาบ่นนะครับว่ามันง่ายไป
ถ้าช่วงใหนว่างๆ ผมก็จะทะยอยทำ vdo มาสอนอีกครับ รอบต่อๆไปจะมีการสอนต่อ 7segment ด้วยครับ  Tongue
 :ถ้าใครก็ตามแต่ ที่ copy บทความหรือ vdo ที่ผมทำไว้ก็ช่วยให้เครดิตหน่อยเถอะครับ : )


ปล. ผมอาจนานๆมาอัพทีนะครับ ต้นฉบับครับ
http://www.zone-it.com/175324 link




ใช้โปรแกรม Proteus และ Keil uVision3 และภาษา C ในการทำ
- - - - - - - - - - - - - - - - - - - - - - - - - - -
ก่อนเริ่มเขียน เราควรมีพื้นฐานภาษา C อยู่ด้วย รูปแบบการเขียนโปรแกรม
- - - - - - - - - - - - - - - - - - - - - - - - - - -
#include <reg51.h>                                     // เป็นคำสั่งใช้รวมไฟล์ส่วนหัวเข้ามาในโปรแกรม ซึ่งมีหลายแบบ เช่น stdio.h , conio.h , reg51.h ฯลฯ
void main()                                                // เป็น function หลักของโปรแกรม และเราสามารถสร้างเพิ่มเองได้ เดี๋ยวจะอธิบายในคราวต่อไป
{                                                             // ตั้งแต่ { จนถึง } คือคำสั่งที่เราต้องการให้ทำงานหรือแสดงผลเช่นการคำนวน ฯลฯ
     โค้ดโปรแกรม;
}
- - - - - - - - - - - - - - - - - - - - - - - - - - -
คำสั่งที่ใช้งานบ่อยๆก็มีประมาณนี้ครับ
reg51.h               เป็นการประกาศว่าจะใช้ special function register
stdio.h                ประกาศ prototype สำหรับ I/O ฟังก์ชัน

for  คือการทำซ้ำ
โค๊ด:
for(count=0; count<10; count++)         // count++ เพิ่มขึ้น 1 , count-- ลดลง 1  ฯลฯ
{
     คำสั่งที่ต้องการให้ทำซ้ำ..
}

while       การทำซ้ำอย่างมีเงื่อนไข
โค๊ด:
while(เงื่อนไข)
{
     คำสั่งที่ต้องการให้ทำซ้ำ..
}

คำสั่งตรวจสอบเงื่อนไข [ if...elseif...else]
คือ ถ้าเป็นจริง จะให้ทำอะไรต่อไป และถ้าเป็นเท็จ จะให้ทำอะไรต่อไป
     - if
          ตัวอย่างการใช้งาน
          
โค๊ด:
          if (a<b)
          {
               printf("ok");
          }
    - if...else
          ตัวอย่างการใช้งาน
          
โค๊ด:
          if (a<b)
          {
               printf("ok");
          }
          else
          {
               printf("no");
          }
    - if...elseif...else
          ตัวอย่างการใช้งาน
          
โค๊ด:
          if (a<b)
          {
               printf("ok1");
          }
          elseif (a<c)
          {
               printf("ok2");
          }
          elseif (a<d)
          {
               printf("ok3");
          }
          else
          {
               printf("no");
          }

sbit                 =        เป็นการควบคุมบิตของไมโครคอนโทรลเลอร์แบบเจาะจงบิต
sbit ชื่อตัวแปร = P1^บิตที่เท่าไหร่ก็ว่าไป;
โค๊ด:
                    sbit SW = P1^0;           // ควบคุมพอร์ต P1 ที่บิต 0

delay               =        เป็นคำสั่งหน่วงเวลา

เครื่องหมายเปรียบเทียบ
อ้างถึง
      >               =       มากกว่าหรือไม่
       <               =       น้อยกว่าหรือไม่
       >=             =       มากกว่าหรือเท่ากันหรือไม่
       <=             =       น้อยกว่าหรือเท่ากันหรือไม่
       !=              =       ไม่เท่ากันหรือไม่
       ==             =       เท่ากันหรือไม่
       &&             =       ตรวจสอบว่าเป็นจริงทั้งหมดหรือไม่ ดูภาพประกอบจะได้เข้าใจมากขึ้น
                                

       ||              =       ตรวจสอบว่าเป็นจริงทั้งหมดหรือมีส่วนใดส่วนหนึ่งเป็นจริงหรือไม่ ดูภาพประกอบจะได้เข้าใจมากขึ้น
                                
ตัวแปร  
     - char [ ตัวอักษร ]                                  ได้แก่ ตัวอักษร ตัวเลข และกลุ่มตัวอักขระพิเศษใช้พื้นที่ในการเก็บข้อมูล 1 ไบต์
     - int [ จำนวนเต็ม ]                                   ได้แก่ จำนวนเต็มบวก จำนวนเต็มลบ ศูนย์ ใช้พื้นที่ในการเก็บ 2 ไบต์
     - long [ จำนวนเต็มที่มีขนาด 2 เท่า ]                ข้อมูลที่มีเลขเป็นจำนวนเต็ม  ใช้พื้นที่  4 ไบต์
     - float [ เลขทศนิยม ]                               ข้อมูลที่เป็นเลขทศนิยม ขนาด 4 ไบต์
- - - - - - - - - - - - - - - - - - - - - - - - - - -
ในการเขียนโปรแกรมควบคุมไมโครคอนโทรลเลอร์บางคำสั่งต้องใช้เลขฐาน 16 ในการเขียน

การแปลงเลขฐาน 2 เป็น ฐาน 16
สมมุติเราต่อหลอดไฟที่พอร์ต P1.0 , P1.3 , P1.7
ให้เราทำตามนี้
0 =  เป็นจริง ,  1 = เป็นเท็จ

ก็จะได้ 89 เวลาใช้ให้เขียนเป็น 0x89
ตัวอย่า
โค๊ด:
...
void main()
{
     if(sw==0)
     {
          P1=0x0f;
     }
     else
     {
          P1=0x89
     }
}




- - - - - - - - - - - - - - - - - - - - - - - - - - -
sornram9254
เด็กไอทีคลับหน้าใหม่
*
พลังความคิด 4
กระทู้: 20
เว็บไซต์
บันทึกการเข้า

link link link
link link link
link link link
link link
link link
link
ไอที
« ตอบ #1 เมื่อ: 26, 05 2011, 07:36:55 AM »
เพื่อความสะดวก ไปที่นี่ครับ 
http://www.zone-it.com/175324 link
sornram9254
เด็กไอทีคลับหน้าใหม่
*
พลังความคิด 4
กระทู้: 20
เว็บไซต์
บันทึกการเข้า

link link link
link link link
link link link
link link
link link
link
หน้า: [1]  ขึ้นบน
  พิมพ์  
 
กระโดดไป: