کد:
AT91F_PIO_CfgOutput ( AT91C_BASE_PIOA, 0x03FFFC00);
AT91F_PIO_ClearOutput( AT91C_BASE_PIOA,0x03FFFC00);
AT91F_PIO_SetOutput( AT91C_BASE_PIOA,adad<<9) ;
توضیح:
اول اون پایه هایی که مورد نظرمون هستن رو خروجی تعریف میکنیم ، 0x03FFFC00 برای پایه های PA10 تا PA25 استفاده شده . به جای این ، عدد متناظر را بگذارید. توجه کنید که PA از 0 شروع میشه (PA0-PA31)
بعد اون پایه ها رو 0 میکنیم
در آخر عدد(متغیر) شیفت داده شده رو روی پورت میگذاریم. مقدار شیفت هم بستگی به پایه اول دیتا(در این مثال PA10 ) داره.
دو تا نکته رو هم بگم :
رجیستر های set و clear به این صورت عمل میکنن که اگه بیت متناظر با اون پایه صفر باشه تغییری روش نمیدن (اصلا برای همین دوتا رجیستر گذاشتن دیگه!)
دوم اینکه اگه پینهای io شما پشت سر هم نباشن باید متغیر رو تیکه پاره کنید !(با and ,or ) و هر تیکشو به مقدار لازم شیفت بدید.
در آخر هم اینو بگم که این ساده ترین روش هست ، ولی برنامه رو میشه طور دیگه هم نوشت (که بهتر باشه) اما بازم کلیت روش همینه.