ลองเขียนโปรแกรมเอง ครั้งแรกเจอเลย!!! ช่วยทีครับ
LSVคลังสมองออนไลน์ "ปีที่21"
พฤษภาคม 15, 2024, 07:34:33 AM *
ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น
 
   หน้าแรก   ช่วยเหลือ เข้าสู่ระบบ สมัครสมาชิก  
หน้า: [1]   ลงล่าง
  พิมพ์  
ผู้เขียน หัวข้อ: ลองเขียนโปรแกรมเอง ครั้งแรกเจอเลย!!! ช่วยทีครับ  (อ่าน 2878 ครั้ง)
nonlimit
member
*

คะแนน-5
ออฟไลน์ ออฟไลน์

กระทู้: 58



อีเมล์
« เมื่อ: กันยายน 17, 2011, 09:24:51 PM »

ลองหัดเขียนโค๊ดเองครับ ครั้งแรกเจอเลย พอจะBuild ให้เป็นHex. มันไม่ได้ครับ จะทำไฟแบบนี้ครับ
http://www.youtube.com/embed/6nczkG6aCjY


โปรแกรมที่ผมลองเขียนครับ

#include <12F675.H>
#fuses INTRC_IO, NOWDT, NOCPD, PROTECT, NOMCLR, PUT, BROWNOUT
#use delay(clock=4000000)

#byte ADCON0 = 0x1F
#byte ANSEL = 0x9F
#byte CMCON = 0x19
#define blue1 pin_a1
#define blue2 pin_a4
#define red1 pin_a5
#define red2 pin_a0

char gc_old_button_statu s;
int8 i;


void MODE1(void)
       { char sayac;
         for(sayac=0; sayac<4; sayac++)
         {
                output_high(blue1);
                output_high(blue2);
          delay_ms(50);
                output_low(blue1);
                output_low(blue2);
          delay_ms(50);
        }
         for(sayac=0; sayac<4; sayac++)
         {
                output_high(red1);
                output_high(red2);
          delay_ms(50);
                output_low(red1);
                output_low(red2);
          delay_ms(50);
        }
             delay_ms(10);             
        }

void MODE2(void)
       { char sayac;
         for(sayac=0; sayac<4; sayac++)
         {
                output_high(blue1);
                output_high(red1);
          delay_ms(50);
                output_low(blue1);
                output_low(red1);
          delay_ms(50);
        }
         for(sayac=0; sayac<4; sayac++)
         {
                output_high(blue2);
                output_high(red2);
          delay_ms(50);
                output_low(blue2);
                output_low(red2);
          delay_ms(50);
        }
             delay_ms(10);             
        }


void MODE8(void)
        {
                output_high(blue1);
                output_high(blue2);
                delay_ms(200);
                output_low(blue1);
                output_low(blue2);
                delay_ms(100);
                output_high(red1);
                output_high(red2);
                delay_ms(200);
                output_low(red1);
                output_low(red2);
                delay_ms(100);
        }

void MODE4(void)
{
output_high(blue1);
output_high(blue2);
output_high(red1);
output_high(red2);
delay_ms(400);
output_low(blue1);
output_low(blue2);
output_low(red1);
output_low(red2);
delay_ms(200);
}

void MODE5(void)
        {
                output_high(blue1);
                output_high(red2);
                delay_ms(200);
                output_low(blue1);
                output_low(red2);
                delay_ms(100);
                output_high(red1);
                output_high(blue2);
                delay_ms(200);
                output_low(red1);
                output_low(blue2);
                delay_ms(100);
        }

void MODE7(void)
       { char sayac;
         for(sayac=0; sayac<4; sayac++)
         {
                output_high(blue1);
                output_high(red2);
          delay_ms(50);
                output_low(blue1);
                output_low(red2);
          delay_ms(50);
        }
         for(sayac=0; sayac<4; sayac++)
         {
                output_high(red1);
                output_high(blue2);
          delay_ms(50);
                output_low(red1);
                output_low(blue2);
          delay_ms(50);
        }
             delay_ms(10);             
        }

void MODE6(void)
        {
                output_low(red2);
                output_high(blue1);
                delay_ms(100);
                output_low(blue1);
                output_high(blue2);
                delay_ms(100);
                output_low(blue2);
                output_high(red1);
                delay_ms(100);
                output_low(red1);
                output_high(red2);
                delay_ms(100);
        }
void MODE3(void)
        {
        char sayac;
         for(sayac=0; sayac<3; sayac++)
         {
                output_high(blue1);
                output_high(blue2);
          delay_ms(20);
                output_low(blue1);
                output_low(blue2);
          delay_ms(20);
        }
         for(sayac=0; sayac<3; sayac++)
         {
                output_high(red1);
                output_high(red2);
          delay_ms(20);
                output_low(red1);
                output_low(red2);
          delay_ms(20);
        }
             //delay_ms(10);             

}
void MODE9(void)
        {
output_high(blue1);
output_high(red1);
output_high(blue2);
output_high(red2);

delay_ms(30);
output_low(blue1);
output_low(red1);
output_low(blue2);
output_low(red2);

delay_ms(100);
}
void mode10(void)
{
       char sayac;
         for(sayac=0; sayac<3; sayac++)
         {
                output_high(blue1);
                output_high(blue2);
          delay_ms(40);
                output_low(blue1);
                output_low(blue2);
          delay_ms(20);
}
for(sayac=0; sayac<3; sayac++)
         {
                output_high(red1);
                output_high(red2);
          delay_ms(40);
                output_low(red1);
                output_low(red2);
          delay_ms(20);
        }
}
// ___________________ ___________________ _________
void check_buttons(void)
{
char new_status;


new_status = input(pin_a2);    // Read the buttons
//delay_ms(10);
// Have the switches changed ?
// if(new_status != gc_old_button_statu s)
if((new_status != gc_old_button_statu s) && (new_status==1))
  {
// If so, do something.
//delay_ms(10);
if (i<10) {
i++;
}
else {
i=0;
}
   }

// Save button status for next time.
gc_old_button_statu s = new_status;
}
//___________________________________________________

void main()
{

i=0;
ADCON0 = 0; // ADC off
ANSEL = 0; // GPIO pins 0,1,2 and 4 set to all digital
CMCON = 7; // Comparators off
//set_tris_a(0b001111);

//            for(;Wink
while (true)
            {
check_buttons();           
if (i==1) {
MODE1();
}             
if (i==2) {
MODE2();
}             
if (i==3) {
MODE3();
}             
if (i==4) {
MODE4();
}             
if (i==5) {
MODE5();
}             
if (i==6) {
MODE6();
}             
if (i==7) {
MODE7();
}             
if (i==8) {
MODE8();
}             
if (i==9) {
MODE9();
}             
if (i==10) {
MODE10();
}             



       
             }
}


พอจะBuild เสร็จมันขึ้นแบบนี้ครับ

ช่วยดูให้ทีครับ ว่าจะแก้ตรงไหนครับ
ครั้งแรกเจอเลย เฮ้อ.... cry2!!


บันทึกการเข้า

kiano♥
kiano555@gmail.com
กลุ่มสนับสนุนLSV+มีน้ำใจ
member
****

คะแนน337
ออฟไลน์ ออฟไลน์

กระทู้: 570


การให้น่าภูมิใจกว่าได้รับ Line ID : Tech64

kiano555@windowslive.com kiano555@yahoo.com
เว็บไซต์ อีเมล์
« ตอบ #1 เมื่อ: กันยายน 17, 2011, 10:10:21 PM »

โค๊ดที่คุณเขียน เป็นภาษาซีก็จริง แต่มันเป็นไวยากรณ์ของโปรแกรม CCSC ใช้กับโปรแกรม MikroC ไม่ได้

ไมโครคอนโทรลเลอร์เป็นไอซีตัวเล็ก แต่ประสิทธิภาพการใช้งานสูงมาก สามารถนำมาประยุกต์ใช้งานด้านต่างๆได้มากมาย แล้วแต่ไอเดียของแต่ละคน การจะเริ่มต้นใช้งานนั้นไม่ได้ง่าย แต่ก็ไม่ยากมากนัก ที่สำคัญ "อย่าข้ามขั้นตอน"

การเริ่มต้นเรียนรู้เพื่อใช้งาน ไมโครคอนโทรลเลอร์ หาอ่านได้ทั่วไปตามเวบเพจต่างๆ แต่ผมจะสรุปให้อีกทีดังนี้


1. เรียนรู้เข้าใจพื้นฐานวงจรอิเล็คทรอนิกส์ ต่อวงจร อ่านวงจร เข้าใจการทำงานของวงจร อุปกรณ์อิเล็คทรอนิกส์พื้นฐาน
2. เรียนรู้เข้าใจพื้นฐานดิจิตอล ลอจิกเกทต่างๆ เลขฐานสอง ฐานสิบ ฐานสิบหก
3. ทำความเข้าใจโครงสร้างของไมโครคอลโทรลเลอร์ (เอาแค่บางส่วนก็พอ ไม่ต้องเข้าใจหมดหรอก ผมเองยังไม่เคยอ่านหมดเลย) เช่น register คืออะไร port คืออะไร timer คืออะไร และ.... โดยการหาโหลดดาต้าชีทมาอ่าน
4. ทำความเข้าใจภาษาที่เราจะใช้เขียนควบคุมไมโครคอลโทรลเลอร์ เช่นภาษาซี
5. ทำความเข้าใจไวยากรณ์ที่จะใช้เขียนภาษาซีกับโปรแกรมคอมไพเลอร์ทีเราจะเขียนโปรแกรม แต่ละโปรแกรมก็มีไวยากรณ์ที่แตกต่างกัน แต่โดยพื้นฐานโครงสร้างภาษาจะเหมือนกัน ต้องหัดเีขียนโปรแกรมง่ายๆก่อน เช่นไฟกระพริบ 1 หลอด
6. หัดใช้โปรแกรมที่จำลองการทำงานของวงจรไมโครคอลโทรลเลอร์ เพื่อดูการทำงานก่อนต่อวงจรจริง เช่นโปรแกรม proteus
ึ7. หัดใช้โปรแกรมเบิร์นไฟล์เข้าสู่ไอซีไมโครคอลโทรลเลอร์ ด้วยเครื่องโปรแกรมไอซี
8. หัดใช้โปรแกรมออกแบบแผ่น PCB
9. หัดการใช้งานฟรีเวบบอร์ดอย่างถูกวิธี ใช้งานเวบบอร์ดยังไง จะทำให้เราได้มาซึ่งคำตอบ

**สำคัญที่สุด** ภาษาอังกฤษ เพราะเอกสารเกี่ยวกับไมโครคอลโทรลเลอร์ส่วนใหญ่เป็นภาษาอังกฤษ

คุณอยู่ในขั้นตอนไหน ต้องตรวจสอบตัวเองก่อน อย่าข้ามขั้นตอน
บันทึกการเข้า
nonlimit
member
*

คะแนน-5
ออฟไลน์ ออฟไลน์

กระทู้: 58



อีเมล์
« ตอบ #2 เมื่อ: กันยายน 17, 2011, 10:16:53 PM »

กว่าจะเป็นนี่ัมันยากเหมือนกันนะครับ งง
ผมกะว่า คงจะต้องไปหาที่เรียนเลยน่าจะดีกว่า ping!
ขอบคุณมากครับพี่ เอาแน่
บันทึกการเข้า
หน้า: [1]   ขึ้นบน
  พิมพ์  
 
กระโดดไป:  

Powered by MySQL Powered by PHP Powered by SMF 1.1 RC2 | SMF © 2001-2006, Lewis Media

lsv2555Please follow the new website at https://www.pohchae.com

Valid CSS!