اطلاعیه

Collapse
No announcement yet.

راهنمایی برای مثال های تمرینی AVR

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

    #16
    پاسخ : راهنمایی برای مثال های تمرینی AVR

    نوشته اصلی توسط reza_rouhi نمایش پست ها
    اول چندتا سوال دارم و بعد چیزی که گفتین رو انجام میدم و اگه مشکلی داشتم از شما کمک میگیرم.
    مرسی از اینکه راهنمایی میکنید. اینطوری خیلی خوب یاد میگیرم

    1- چرا توی برنامه جدید باید بجای bit از int استفاده بشه؟
    2- این دستور چیکار میکنه؟
    کد:
    x=!x;
    سلام
    خواهش می کنم
    متغییر bit فقط دوتا عدده 0 و 1
    والی int اعداد صحیحه همون طور که دوستمون گفتن
    دستور x=!x هم متغیر ایکس رو برابر با نات خودش قرار میده یعنی چی؟؟؟یعنی اگه 0باشه شرط بر قرار بشه 1میشه و اگه 1باشه شرط بر قرار بشه 0میشه
    نوشته اصلی توسط reza_rouhi نمایش پست ها
    من برنامه جدید رو نوشتم و جواب گرفتم.
    کد:
    #include <mega32.h>
    #include <delay.h>
    void main (void){
    int x=0;
    DDRA.0=0;
    DDRB=0xff;
    
    
    while(1){
          if(PINA.0==0){
         while(PINA.0==0);  
          x++ ;  
          }     
          
                if(x==1){
          PORTB.0=0xff;
          }
           
                if(x==2){
          PORTB.1=0xff;
          }
          
                if(x==3){
          PORTB.2=0xff;
          }
          
                if(x==4){
          PORTB.3=0xff;
          }
          
                if(x==5){
          PORTB.4=0xff;
          }
          
                if(x==6){
          PORTB.5=0xff;
          }
          
                if(x==7){
          PORTB.6=0xff;
          }
          
                if(x==8){
          PORTB.7=0xff;
          }
       }   
    }
    یعنی لامپها یکی پس از دیگری روشن میشن تا لامپ آخری.
    حالا سوالم اینه که وقتی همه روشن شدن میخوام با کلیک کردن بعدی برنامه ریست شده و لامپها خاموش بشن و دوباره LED ها از اول روشن بشن.
    باید چیکار کنم؟




    خوب شرط بعدی رو بزارید که اگه ایکس به عدد بعدی رسید کل پورت برابر با 0B00000000 بشه اون وقت همه خاموش میشن

    موفق باشی
    جدیدترین ویرایش توسط real_ahmadi; ۲۲:۲۲ ۱۳۹۵/۰۷/۲۶.
    Proudly @real_ahmadi
    #real_ahmadi

    واسه اسمت بجنگ

    دیدگاه


      #17
      پاسخ : راهنمایی برای مثال های تمرینی AVR

      درسته. عدد بعدی میشه 9 و با این شرط لامپها خاموش میشن.
      حالا اگه بازم کلیک کنم عدد میشه 10 . اونوقت برنامه از اول که کار نمیکنه؟
      میخوام وقتی برای نهمین بار کلیک کردم بیاد لامپ اولی رو نشون بده و سیکل دوباره انجام بشه.
      جدیدترین ویرایش توسط reza_rouhi; ۲۲:۳۲ ۱۳۹۵/۰۷/۲۶.

      دیدگاه


        #18
        پاسخ : راهنمایی برای مثال های تمرینی AVR

        نوشته اصلی توسط reza_rouhi نمایش پست ها
        درسته. عدد بعدی میشه 9 و با این شرط لامپها خاموش میشن.
        حالا اگه بازم کلیک کنم عدد میشه 10 . اونوقت برنامه از اول که کار نمیکنه؟
        میخوام وقتی برای نهمین بار کلیک کردم بیاد لامپ اولی رو نشون بده و سیکل دوباره انجام بشه.
        اهان بله شما اضافه کنید شرط رو اگه ایکس بزرگ تر از 9شد بیاد ایکس برابر با صفر بشه

        if(x>9)x=0
        Proudly @real_ahmadi
        #real_ahmadi

        واسه اسمت بجنگ

        دیدگاه


          #19
          پاسخ : راهنمایی برای مثال های تمرینی AVR

          نشد
          کجای برنامه بذارم؟
          کد:
                      if(x==8){
                PORTB.7=0xff;
                }
                if(x>9)
                x=0 ;
          نمیشه از دستور return استفاده کرد و بگیم برگرد به خط مثلا 14 ؟؟؟

          دیدگاه


            #20
            پاسخ : راهنمایی برای مثال های تمرینی AVR

            نوشته اصلی توسط reza_rouhi نمایش پست ها
            نشد
            کجای برنامه بذارم؟
            کد:
                        if(x==8){
                  PORTB.7=0xff;
                  }
                  if(x>9)
                  x=0 ;
            نمیشه از دستور return استفاده کرد و بگیم برگرد به خط مثلا 14 ؟؟؟
            یه شرط دیگه هم اضافه کنید این که اگه ایکس برابر با صفر شد پورت برابر با 0B00000000 بشه یعنی کل پورت صفر بشه
            Proudly @real_ahmadi
            #real_ahmadi

            واسه اسمت بجنگ

            دیدگاه


              #21
              پاسخ : راهنمایی برای مثال های تمرینی AVR

              نوشته اصلی توسط مهندس احمدی نمایش پست ها
              یه شرط دیگه هم اضافه کنید این که اگه ایکس برابر با صفر شد پورت برابر با 0B00000000 بشه یعنی کل پورت صفر بشه
              مرسی. درست شد.

              حالا میخوام برنامه به این صورت باشه که با زدن کلید فقط لامپ اولی روشن بشه و با زدن دومین بار ، لامپ دومی روشن بشه و اولی که روشن بود خاموش بشه و سومی ...
              یعنی باید همون برنامه که شرط گزاشتم توی هر شرط بگم پورت قبلی خاموش بشه؟

              دیدگاه


                #22
                پاسخ : راهنمایی برای مثال های تمرینی AVR

                نوشته اصلی توسط reza_rouhi نمایش پست ها
                مرسی. درست شد.

                حالا میخوام برنامه به این صورت باشه که با زدن کلید فقط لامپ اولی روشن بشه و با زدن دومین بار ، لامپ دومی روشن بشه و اولی که روشن بود خاموش بشه و سومی ...
                یعنی باید همون برنامه که شرط گزاشتم توی هر شرط بگم پورت قبلی خاموش بشه؟
                بله درسته. توی همون شرط بگین پورت قبلی خاموش بشه.
                شما همین جملاتی که به صورت فارسی بیان میکنی رو به زبان c++ تبدیل کن و توی برنامه بنویس.
                توی هر مرحله هم که شک داری، نترس، برنامه رو بنویس و پیاده کن اگه جواب نگرفتی از اساتید بزرگوار انجمن بپرس. اگه خودت درگیر نوشتن بشی مطالب بیشتری گیرت میاد و در واقع به جای گرفتن ماهی از اساتید، ماهیگیری رو ازشون یاد میگیری.
                موفق باشی.
                جدیدترین ویرایش توسط شوکول; ۰۵:۴۷ ۱۳۹۵/۰۷/۲۷.

                دیدگاه


                  #23
                  پاسخ : راهنمایی برای مثال های تمرینی AVR

                  من کد رو به این صورت نوشتم و جواب گرفتم و کار میکنه. ولی احساس میکنم خیلی راحتتر هم میشه نوشت و انقدر زیاد هم نشه.
                  کسی نظری داره؟


                  #include <mega32.h>
                  #include <delay.h>
                  void main (void){
                  int x=0;
                  DDRA.0=0;
                  DDRB=0xff;


                  while(1){
                  if(PINA.0==0){
                  while(PINA.0==0);
                  x++ ;
                  }

                  if(x==1){
                  PORTB.0=0xff;
                  }

                  if(x==2){
                  PORTB.1=0xff;
                  PORTB.0=0x00;
                  }

                  if(x==3){
                  PORTB.2=0xff;
                  PORTB.1=0x00;
                  }

                  if(x==4){
                  PORTB.3=0xff;
                  PORTB.2=0x00;
                  }

                  if(x==5){
                  PORTB.4=0xff;
                  PORTB.3=0x00;
                  }

                  if(x==6){
                  PORTB.5=0xff;
                  PORTB.4=0x00;
                  }

                  if(x==7){
                  PORTB.6=0xff;
                  PORTB.5=0x00;
                  }

                  if(x==8){
                  PORTB.7=0xff;
                  PORTB.6=0x00;
                  }

                  if(x>9){
                  x=0 ;
                  }

                  if(x==0) {
                  PORTB=0x00;
                  }

                  }
                  }

                  دیدگاه


                    #24
                    پاسخ : راهنمایی برای مثال های تمرینی AVR

                    سلام
                    به نظر من از دستوز switch(case )استفاده کنی خیلی بهتر میشه
                    و وقتی به PORTB.n مقدار میدی چرا 0xff مینویسی یه دونه یک یا صفر کافیه.
                    شرط آخر رو هم میتونی اول بنویسی:
                    (if(++x==9
                    }
                    x=0;
                    PORTB=0;
                    {

                    دیدگاه


                      #25
                      پاسخ : راهنمایی برای مثال های تمرینی AVR

                      نوشته اصلی توسط yousefiz نمایش پست ها
                      سلام به نظر من از دستوز switch(case )استفاده کنی خیلی بهتر میشه و وقتی به PORTB.n مقدار میدی چرا 0xff مینویسی یه دونه یک یا صفر کافیه. شرط آخر رو هم میتونی اول بنویسی:
                      (if(++x==9 } x=0; PORTB=0; {
                      بله با سوئیچ وکیس هم میشه ولی یکم بیشتر میشهیکم سخت تر
                      Proudly @real_ahmadi
                      #real_ahmadi

                      واسه اسمت بجنگ

                      دیدگاه


                        #26
                        پاسخ : راهنمایی برای مثال های تمرینی AVR

                        نوشته اصلی توسط مهندس احمدی نمایش پست ها
                        بله با سوئیچ وکیس هم میشه ولی یکم بیشتر میشهیکم سخت تر
                        یعنی همینی که نوشتم بهتره؟
                        حالا میشه شما یه مدار ساده از همین LED بدین من برنامه بنویسم؟
                        لازم بذکر هست که هنوز روی lcd و چیزای دیگه نرفتم و کار نکردم.

                        دیدگاه


                          #27
                          پاسخ : راهنمایی برای مثال های تمرینی AVR

                          نوشته اصلی توسط reza_rouhi نمایش پست ها
                          یعنی همینی که نوشتم بهتره؟
                          حالا میشه شما یه مدار ساده از همین LED بدین من برنامه بنویسم؟
                          لازم بذکر هست که هنوز روی lcd و چیزای دیگه نرفتم و کار نکردم.
                          بله همینی که نوشتید عالیه

                          روی فلاشر کار کن انواع افکت ها ورقص نور هارو باهاش درست کن یکم این بیت هاو طرز افکت ها دستت بیاد حتما lcd رو هم کار کن..چیز خیلی جالبو کاربردیه
                          موفق باشی
                          Proudly @real_ahmadi
                          #real_ahmadi

                          واسه اسمت بجنگ

                          دیدگاه


                            #28
                            پاسخ : راهنمایی برای مثال های تمرینی AVR

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

                            روی فلاشر کار کن انواع افکت ها ورقص نور هارو باهاش درست کن یکم این بیت هاو طرز افکت ها دستت بیاد حتما lcd رو هم کار کن..چیز خیلی جالبو کاربردیه
                            موفق باشی
                            عملکردشون رو نمیدونم. یه مثال عملی بزنید تا برنامه ش رو بنویسم.
                            یعنی چی افکت بدم؟

                            دیدگاه


                              #29
                              پاسخ : راهنمایی برای مثال های تمرینی AVR

                              نوشته اصلی توسط reza_rouhi نمایش پست ها
                              عملکردشون رو نمیدونم. یه مثال عملی بزنید تا برنامه ش رو بنویسم.
                              یعنی چی افکت بدم؟
                              یعنی مثلا
                              اولی روشن بشه بعدش دومی بعدش سومی ....تا اخر دوباره از اخر برگرده به اول
                              حالا یکی در میون روشن بشه بعدش برگرده دوباره یکی در میون خاموش بشه برگرده
                              بره تا اخر روشن بمونه اخری دوباره بره تا اخر روشن بمونه......تا اخر..کلا به انواع رقص نور ها میگن افکت
                              Proudly @real_ahmadi
                              #real_ahmadi

                              واسه اسمت بجنگ

                              دیدگاه


                                #30
                                پاسخ : راهنمایی برای مثال های تمرینی AVR

                                نوشته اصلی توسط مهندس احمدی نمایش پست ها
                                یعنی مثلا
                                اولی روشن بشه بعدش دومی بعدش سومی ....تا اخر دوباره از اخر برگرده به اول
                                حالا یکی در میون روشن بشه بعدش برگرده دوباره یکی در میون خاموش بشه برگرده
                                بره تا اخر روشن بمونه اخری دوباره بره تا اخر روشن بمونه......تا اخر..کلا به انواع رقص نور ها میگن افکت
                                یعنی یکبار کلید رو بزنم و دیگه بصورت اتومات رقص نور انجام بشه. درسته؟
                                پس من مثال اولی رو که بترتیب روشن میشن رو انجام میدم.
                                باید کمکم کنید
                                مرسی

                                دیدگاه

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