اطلاعیه

Collapse
No announcement yet.

اشکال در برنامه نویسی

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    اشکال در برنامه نویسی

    سلام دوستان
    من دارم AVR یاد میگیرم.
    اولین برنامه رو برای یک سون سگمنت تکی نوشتم که به پورت D یک atmega8 وصل شده و با استفاده از دو کلید up & down که به پین های 0 و 1 پورت B وصل شده مقادیر 0 تا 9 رو نمایش میده.
    وقتی کامپایل می کنم کدویژن دو اشکال زیر رو ازش میگیره:
    کد:
    Error: F:\Electronic\My project\7 seg\7seg.c(19): invalid expression
    Error: F:\Electronic\My project\7 seg\7seg.c(23): no final }
    برنامه رو هم ببینین:
    کد:
    #include <mega8.h>
    flash unsigned char segment[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; 
    unsigned char i;
    void main(void)
    {
    PORTB=0x03;
    DDRB=0x00;
    PORTD=0x00;
    DDRD=0xFF;
    while (1)
       {
       if(PINB.0==0 && i<9) {
       i++ ;
       while(PINB.0==0);
        };
       if(PINB.1==0 && i!=0) {
       i-- ;
       while(PINB.1==0)
        };
       PORTD=segment[i];
       
       };
    }
    ممنون میشم اشکال رو بهم بگین.

    #2
    پاسخ : اشکال در برنامه نویسی

    چیزی که بنظر میاد (من توی کد ویژن چک نکردم) بعد از while دومی برای یک شدن PINB.1 یک ; کم گذاشتین. توصیه میکنم سورستون رو مرتب بنویسین تا اشکال زدایی اون بطور چشمی راحتتر باشه.


    کد:
    #include <mega8.h>
    flash unsigned char segment[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; 
    unsigned char i;
    void main(void)
    {
     PORTB=0x03;
     DDRB=0x00;
     PORTD=0x00;
     DDRD=0xFF;
     while (1)
     {
       if(PINB.0==0 && i<9)
       {
        i++ ;
        while(PINB.0==0);
       };
       if(PINB.1==0 && i!=0)
       {
        i-- ;
        while(PINB.1==0)
       };
       PORTD=segment[i];
       
     };
    }

    دیدگاه


      #3
      پاسخ : اشکال در برنامه نویسی

      با سلام من ارور را بر طرف کردم اما برنامتون به نظرم درست نیست من تست نکردم خودتون تست کنید ببینید درست کار میکنه؟
      #include <mega8.h>
      flash unsigned char segment[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6 F};
      unsigned char i;
      void main(void)
      {
      PORTB=0x03;
      DDRB=0x00;
      PORTD=0x00;
      DDRD=0xFF;
      while (1)
      {
      if(PINB.0==0&&i<9)
      {
      i++ ;
      while(PINB.0==0);
      }
      if(PINB.1==0&&i!=0)
      {
      i-- ;
      while(PINB.1==0);
      }
      PORTD=segment[i];
      }
      }

      دیدگاه


        #4
        پاسخ : اشکال در برنامه نویسی

        ممنون از دوستان
        مشکل تو استفاده از دستور while بود.درست شد.
        موفق باشین

        دیدگاه

        لطفا صبر کنید...
        X