اطلاعیه

Collapse
No announcement yet.

کمک برای این کد سی در winavr

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

    کمک برای این کد سی در winavr

    سلام

    من به تازگی با winavr شروع به برنامه نویسی کرده ام و در این مدت کوتاه واقعا دارم از اون لذت میبرم
    یک کد ساده نوشتم که منطقش درست به نظر میرسه اما تو پروتوس کار نمیکنه

    #include <avr/io.h>
    #include <avr/delay.h>




    int main (void)
    {
    int a;
    a=100;
    // set PORTD for output
    DDRD = 0xFF;
    while(1) {
    /*for(int i = 1; i <= 8; i++)
    {
    for(int j=1;j<=8;j++)
    {

    }
    } */

    a=a*2;
    PORTD=a;

    }
    return 1;
    }
    نمیدانم چرا در پورت دی هیچ تغییری نمیکنه و همش صفر نشون میده .
    اما وقتی بجای a=a*2 از ++a یا --a استفاده میکنم کار میکنه و پورت دائما تغییر میکنه اما برای ضرب یا تقسیم کار نمیکنه

    خوشحال میشوم اگر راهنمایی کنید.

    #2
    پاسخ : کمک برای این کد سی در winavr

    ببین دوست عزیز

    شما متغیر a رو از نوع int تعریف کردی و 16 بیتی هست در حالی که پورت ها 8بیتی هستند و وقتی a رو در هر مرحله 2برابر میکنی از رنج 8 بیت خارج میشه

    در مرحله اول که a برابر 100 هست رو 2 برابر میکنی و میشه 200 و این از 2 بتوان 8 کوچکتره و نمایش داده میشه (11001000)

    حالا که مجددا عدد رو 2 برابر میکنی میشه 400 (110010000) که 9 بیتی هستش

    دیدگاه


      #3
      پاسخ : کمک برای این کد سی در winavr

      با تشکر از پاسخ شما دوست عزیز

      من عدد رو برابر با 100 قرارداده بودم برای اینکه آخرین بار پس از اینکه از ضرب جوابی نگرفتم آنرا با تقسیم بر دو امتحان کردم اما بازم کار نکرد(اینو تو پست قبلیم گفته بودم) .فقط با -- و ++ کار میکنه و انگار ضرب و تقسیم حالیش نمیشه.
      من این کارو با مقدار دهی متغیر به 1 هم امتحان کردم اما فایده نداره.

      جددا متعجبم که چرا جواب نمیده. oo:

      دوستان نظر دیگری ندارید؟

      دیدگاه


        #4
        پاسخ : کمک برای این کد سی در winavr

        دوست عزیز هدفتون از نوشتن این برنامه چیه؟؟؟

        شما درون یک حلقه while دائمی یک عدد intiger رو دائما دو برابر میکنید و روی یک پورت هشت بیتی میریزید.

        - هیچ تاخیری در حلقه قرار ندادید
        پس بهتر است درون حلقه یک delay مناسب قرار دهید.

        - متغیر را از نوع char انتخاب کنید

        - بعد از حلقه while از علامت ; استفاده کنید

        - return 1 نیز بی معنی است

        دیدگاه


          #5
          پاسخ : کمک برای این کد سی در winavr

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

          در واقع تغییرات اینقدر سریع بود که روشن شدن پورتها رو نمیدیم.
          در هر حال من که دارم از winavr لذت میبرم(حتی از برنامه هایی که کار نکنن) :wow:

          دیدگاه


            #6
            پاسخ : کمک برای این کد سی در winavr

            آقا من هم شروع کردم دارم winavr کار میکنم
            خیلی حال میده
            مخصوصا وقتی بعضی کارا رو که مجبوری از command promp انجام بدی
            دو روز طول کشید تا بفهمم چطور باید avrlib رو بهش لینک کرد بعد کلی pdf خوندن وسرچیدن
            کاش یکی ار اساتید تو یک پست یه آموزش جامع وتوضیح هدر های موجود در winavr رو شروع کنه
            عالی میشه ما هم کاری از دستمون بر بیاد در خدمتیم

            دیدگاه


              #7
              پاسخ : کمک برای این کد سی در winavr

              http://www.eca.ir/forum2/index.php?topic=30294.0

              به این یخ نگاه بنداز

              خیلی خوبه

              دیدگاه


                #8
                پاسخ : کمک برای این کد سی در winavr

                نوشته اصلی توسط nanocycle
                سلام
                من به تازگی با winavr شروع به برنامه نویسی کرده ام و در این مدت کوتاه واقعا دارم از اون لذت میبرم
                یک کد ساده نوشتم که منطقش درست به نظر میرسه اما تو پروتوس کار نمیکنه
                نمیدانم چرا در پورت دی هیچ تغییری نمیکنه و همش صفر نشون میده .
                اما وقتی بجای a=a*2 از ++a یا --a استفاده میکنم کار میکنه و پورت دائما تغییر میکنه اما برای ضرب یا تقسیم کار نمیکنه
                خوشحال میشوم اگر راهنمایی کنید.
                سلام .......
                شما مد optimize رو عوض کن مشکلت درست میشه OPTIMIZER کامپایلر خیلی از کدهایی رو که عملی انجام نمیدن بصورت هوشمند حذف میکنه مثلا اون دو تا حلقه که تو در تو گذاشتی با مد OS حذف میشه


                Qt - A cross-platform application and UI framework

                با کامپایلرهای قدرتمند GCC در Linux و MinGw در Windows

                دیدگاه

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