اطلاعیه

Collapse
No announcement yet.

ارور کدویژن

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

    ارور کدویژن

    سلام ، وقت بخیر .
    لطف میکنید مشکل این کد رو شفاف کنید .

    /* * test.c
    *
    * Created: 4/29/2020 11:38:48 PM
    * Author: peyman
    */


    #include <io.h>
    #include <mega32.h>
    #include <delay.h>
    #define xtal 1000000
    void main(void)
    {
    int a = 0;
    unsigned char seg [10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x7F,0x6F};


    DDRB=0B11111111;



    for (int b = 0; b<10 ; b++)
    {
    PORTB =seg[a] ;
    a++;
    delay_ms(300);
    }








    }


    جدیدترین ویرایش توسط peypy; ۱۷:۵۷ ۱۳۹۹/۰۲/۱۱. دلیل: عنوان و متن غلط

    #2
    پاسخ : ارور کدوی

    نوشته اصلی توسط peypy نمایش پست ها
    سلام ، وقت بخیر .
    لطف میکنید مشکل این کد رو شفاف کنید .
    [FONT=Yekan]/*[/FONT] * test.c
    *
    * Created: 4/29/2020 11:38:48 PM
    * Author: peyman
    */


    #include <io.h>
    #include <mega32.h>
    #include <delay.h>
    #define xtal 1000000
    void main(void)
    {
    int a = 0;
    unsigned char seg [10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x7F,0x6F};


    DDRB=0B11111111;



    for (int b = 0; b<10 ; b++)
    {
    PORTB =seg[a] ;
    a++;

    }








    }


    سلام
    قصدتون از این کد چیه؟ این کد چندتا ایراد داره که اگر بگید قصدتون دقیق چیه میتونم دقیق راهنمایی کنم.

    دیدگاه


      #3
      پاسخ : ارور کدویژن

      راستش قصد ساخت شمارنده تک رقمی رو دارم

      دیدگاه


        #4
        پاسخ : ارور کدویژن

        نوشته اصلی توسط peypy نمایش پست ها
        راستش قصد ساخت شمارنده تک رقمی رو دارم
        یعنی چی دقیقا؟ یعنی پشت سر هم از 0 تا 9 بشماره؟

        دیدگاه


          #5
          پاسخ : ارور کدویژن

          نوشته اصلی توسط hossein.m98 نمایش پست ها
          یعنی چی دقیقا؟ یعنی پشت سر هم از 0 تا 9 بشماره؟
          بله درسته مد ها رو ویرایش کردم

          /* * test.c
          *
          * Created: 4/29/2020 11:38:48 PM
          * Author: peyman
          */


          #include <io.h>
          #include <mega32.h>
          #include <delay.h>
          #define xtal 1000000
          void main(void)
          {
          int a = 0;
          unsigned char seg [10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x7F,0x6F};


          DDRB=0B11111111;



          for (int b = 0; b<10 ; b++)
          {
          PORTB =seg[a] ;

          delay_ms(300);
          a++;
          if(a==10)
          {
          b = 0;

          a = 0 ;
          }
          }








          }



          ارور این هست که متغیر b تعریف نشده
          جدیدترین ویرایش توسط peypy; ۱۸:۱۰ ۱۳۹۹/۰۲/۱۱.

          دیدگاه


            #6
            پاسخ : ارور کدویژن

            نوشته اصلی توسط peypy نمایش پست ها
            بله درسته مد ها رو ویرایش کردم
            [FONT=Yekan]/*[/FONT] * test.c
            *
            * Created: 4/29/2020 11:38:48 PM
            * Author: peyman
            */


            #include <io.h>
            #include <mega32.h>
            #include <delay.h>
            #define xtal 1000000
            void main(void)
            {
            int a = 0;
            unsigned char seg [10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x7F,0x6F};


            DDRB=0B11111111;



            for (int b = 0; b<10 ; b++)
            {
            PORTB =seg[a] ;

            delay_ms(300);
            a++;
            if(a==10)
            b = 0;
            }








            }




            ارور این هست که متغیر b تعریف نشده
            بازم این کد چیزای بی معنی داره!
            اول اینکه 1 متغیره کافیه؛ اصلا لازم نبود هم a باشه و هم b. کافی بود یکی از متغیرها رو به عنوان شمارنده به حلقه بدید و از همون استفاده کنید. مثلا حالا که b رو به حلقه دادید، خط زیر رو به شکلی که نوشتم اصلاح کنید:

            PORTB = seg[b];

            مورد بعدی اینه که شما a رو دارید تو خط 28 به بعد دستی زیاد میکنید، بعد b رو صفر میکنید! خوب اینم بی معنیه!
            قبل از اینکه کدتون رو اصلاح کنم لازم یه چیزی رو گوشزد کنم. ببینید کدویژن اصلا کامپایلر استانداردی نیست و خیلی از قواعد زبان C در اون رعایت نشده. از جمله اینکه توی کدویژن، داخل پرانتز for شما نمیتونید متغیر شمارنده رو تعریف کنید! برای استفاده از for لازمه بیرون از for شمارنده اش رو تعریف کنید. به صورت کلی اگر کد زیر رو بنویسید مشکل حل میشه. فقط دقت داشته باشید شمارنده تنها 1 بار کار میکنه:

            #include <mega32.h>
            #include <delay.h>

            void main(void)
            {
            int b = 0;
            unsigned char seg [10] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x7F,0x6F};

            DDRB = 0b11111111;

            for (b = 0; b < 10; b++)
            {
            PORTB = seg[b];
            delay_ms(1000);
            }

            while(1)
            {

            }
            }

            ضمنا فکر نمیکنم توی کدویژن احتیاجی به کتابخونه io.h و ثابت xtal باشه!
            جدیدترین ویرایش توسط hossein.m98; ۱۸:۲۶ ۱۳۹۹/۰۲/۱۱.

            دیدگاه


              #7
              پاسخ : ارور کدویژن

              نوشته اصلی توسط hossein.m98 نمایش پست ها
              بازم این کد چیزای بی معنی داره!
              اول اینکه 1 متغیره کافیه؛ اصلا لازم نبود هم a باشه و هم b. کافی بود یکی از متغیرها رو به عنوان شمارنده به حلقه بدید و از همون استفاده کنید. مثلا حالا که b رو به حلقه دادید، خط زیر رو به شکلی که نوشتم اصلاح کنید:

              PORTB = seg[b];

              مورد بعدی اینه که شما a رو دارید تو خط 28 به بعد دستی زیاد میکنید، بعد b رو صفر میکنید! خوب اینم بی معنیه!
              قبل از اینکه کدتون رو اصلاح کنم لازم یه چیزی رو گوشزد کنم. ببینید کدویژن اصلا کامپایلر استانداردی نیست و خیلی از قواعد زبان C در اون رعایت نشده. از جمله اینکه توی کدویژن، داخل پرانتز for شما نمیتونید متغیر شمارنده رو تعریف کنید! برای استفاده از for لازمه بیرون از for شمارنده اش رو تعریف کنید. به صورت کلی اگر کد زیر رو بنویسید مشکل حل میشه. فقط دقت داشته باشید شمارنده تنها 1 بار کار میکنه:

              #include <mega32.h>
              #include <delay.h>

              void main(void)
              {
              int b = 0;
              unsigned char seg [10] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x7F,0x6F};

              DDRB = 0b11111111;

              for (b = 0; b < 10; b++)
              {
              PORTB = seg[b];
              delay_ms(1000);
              }

              while(1)
              {

              }
              }

              ضمنا فکر نمیکنم توی کدویژن احتیاجی به کتابخونه io.h و ثابت xtal باشه!

              تشکر از راهنماییتون

              دیدگاه


                #8
                پاسخ : ارور کدویژن

                نوشته اصلی توسط peypy نمایش پست ها
                بله درسته مد ها رو ویرایش کردم

                ارور این هست که متغیر b تعریف نشده
                نوشتی ارور کد ویژن ارور کد ویزن نبود که ارور برنامه بود
                نوشتی متغییر b تعریف نشده . خوب متغیر b رو تغریف کن
                سوال بعدی

                دیدگاه


                  #9
                  پاسخ : ارور کدویژن

                  نوشته اصلی توسط antipa نمایش پست ها
                  نوشتی ارور کد ویژن ارور کد ویزن نبود که ارور برنامه بود
                  نوشتی متغییر b تعریف نشده . خوب متغیر b رو تغریف کن
                  سوال بعدی
                  تعریف کرده بودن منتهی کدویژنه دیگه خطاهای من در آوردی میده!

                  دیدگاه


                    #10
                    پاسخ : ارور کدویژن

                    نوشته اصلی توسط hossein.m98 نمایش پست ها
                    بازم این کد چیزای بی معنی داره!
                    اول اینکه 1 متغیره کافیه؛ اصلا لازم نبود هم a باشه و هم b. کافی بود یکی از متغیرها رو به عنوان شمارنده به حلقه بدید و از همون استفاده کنید. مثلا حالا که b رو به حلقه دادید، خط زیر رو به شکلی که نوشتم اصلاح کنید:

                    PORTB = seg[b];

                    مورد بعدی اینه که شما a رو دارید تو خط 28 به بعد دستی زیاد میکنید، بعد b رو صفر میکنید! خوب اینم بی معنیه!
                    قبل از اینکه کدتون رو اصلاح کنم لازم یه چیزی رو گوشزد کنم. ببینید کدویژن اصلا کامپایلر استانداردی نیست و خیلی از قواعد زبان C در اون رعایت نشده. از جمله اینکه توی کدویژن، داخل پرانتز for شما نمیتونید متغیر شمارنده رو تعریف کنید! برای استفاده از for لازمه بیرون از for شمارنده اش رو تعریف کنید. به صورت کلی اگر کد زیر رو بنویسید مشکل حل میشه. فقط دقت داشته باشید شمارنده تنها 1 بار کار میکنه:

                    #include <mega32.h>
                    #include <delay.h>

                    void main(void)
                    {
                    int b = 0;
                    unsigned char seg [10] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x7F,0x6F};

                    DDRB = 0b11111111;

                    for (b = 0; b < 10; b++)
                    {
                    PORTB = seg[b];
                    delay_ms(1000);
                    }

                    while(1)
                    {

                    }
                    }

                    ضمنا فکر نمیکنم توی کدویژن احتیاجی به کتابخونه io.h و ثابت xtal باشه!
                    مشکلی که پیش اومده اینه که از عدد 6 میپره 8 و عدد 7 رو نشون نمیده ، تقیقا کد نوشته شده توسط خودتون رو هم کپی کردم اما همچنان همین مورد تکرار شد

                    دیدگاه


                      #11
                      پاسخ : ارور کدویژن

                      نوشته اصلی توسط peypy نمایش پست ها
                      مشکلی که پیش اومده اینه که از عدد 6 میپره 8 و عدد 7 رو نشون نمیده ، تقیقا کد نوشته شده توسط خودتون رو هم کپی کردم اما همچنان همین مورد تکرار شد
                      آرایه seg ناقصه. اصلاحش کنید.

                      دیدگاه

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