PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : قرار دادن یک متغییر روی پورت



kavir
23-09-2009, 16:07
سلام
دوستان یک سوال مبتدیانه ولی برام سوال شده که چجوری مستقیم دیتا رو از یک متغییر روی پورت بذارم

farzadsw
23-09-2009, 19:14
یکم بیشتر توضیح میدید ؟
روی پورت IO میخواید بگذارید؟
یعنی مثلا عدد 57 (که داخل متغیره) رو میخواید روی پین های PA13 تا PA 20 نمایش بدید ( 0x00111001 )؟

kavir
23-09-2009, 22:33
سلام
بله همچین چیزی تقریبا
می خوام LCDG راه بندازم و برای پورت دیتا و پورت های کنترلری می خوام مثلا دیتایی که در یک رجیستر هست روی پورت دیتای LCDG بفرستم

farzadsw
24-09-2009, 02:01
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 ) و هر تیکشو به مقدار لازم شیفت بدید.
در آخر هم اینو بگم که این ساده ترین روش هست ، ولی برنامه رو میشه طور دیگه هم نوشت (که بهتر باشه) اما بازم کلیت روش همینه.