اطلاعیه

Collapse
No announcement yet.

سوال درباره مقدار دهی پورتهای میکرو

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

    سوال درباره مقدار دهی پورتهای میکرو

    سلام به همگی

    آیا میشه پورتهای میکرو را از طریق حلقه FOR مقدار دهی کرد..؟؟ مثلا فرض کنیم میخواهیم تمامی پایه های پورت A از میکروی AVR ورودی شوند. آیا میتوان نوشت:

    کد:
    for(i=0 ; i<8 ; i++)
    DDR.i=1;

    ممنون میشم اگر توضیح بدید. چون تو برنامه من که ارور داد.

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

    فکر میکنم که بیتهای رجیسترهای پورت با define تعریف شدند و نمیشه اونها رو با شماره بهش دسترسی داشت اینطور که شما نوشتین

    دیدگاه


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

      بیت های پورت با define تعریف نشدن. بلکه این یک جور جایگزین برای دستورات بیتی هست. در اصل دستوری مثل DDRD.1 = 1 به دستور sbi DDRD,1 ترجمه میشه. و بخاطر اینکه این دستور نمیتونه آرگومان بگیره نمیشه بفرمی که شما قید کردین استفاده بشه. ضمنا این دستور جزئی از C استاندارد نیست و جزء موارد اضافه شده توسط کامپایلر غیر استانداردی مثل کد ویژن هست. ولی اگر خواستین میتونین بفرم زیر ست اش کنین:


      کد:
      for( i=0; i<8; i++)
        DDRD |= 1 << i;


      ضمنا یک کردن یک بیت در رجیستر DDR اون بیت رو خروجی میکنه و نه ورودی.

      دیدگاه


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

        نوشته اصلی توسط mojalan
        فکر میکنم که بیتهای رجیسترهای پورت با define تعریف شدند و نمیشه اونها رو با شماره بهش دسترسی داشت اینطور که شما نوشتین
        سلام
        درسته اینجوری نمیشه ... اما شما میتونین یه تابع واسطه تعریف کنین و تو حلقه ی for بزارین که هر ایندکسی که دریافت کرد پین متناظر رو 1 کنه ...

        اگه بازم کمکی لازم بود در خدمتم ...
        Share OR Die

        دیدگاه

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