سلام
با توجه به آنکه میکروکنترلر AT91SAM7X256 یک میکرو 32 بیتی است ونیز تعداد پین های پورت a , b هر کدام 31 پین میباشد. اگر بخواهیم یک دیتای 32 بیتی را به یکی از پورتهای A ویا B بفرستیم چگونه این کار امکان پذیر است
با تشکر
سلام
با توجه به آنکه میکروکنترلر AT91SAM7X256 یک میکرو 32 بیتی است ونیز تعداد پین های پورت a , b هر کدام 31 پین میباشد. اگر بخواهیم یک دیتای 32 بیتی را به یکی از پورتهای A ویا B بفرستیم چگونه این کار امکان پذیر است
با تشکر
من توی انجمن اتمل مطرح کردم :
http://www.at91.com/forum/viewtopic.php/f,15/t,18929/
با سلام
تو سيستم هاي كه ما احتياج داريم كه اطلاعات رو به صورت 32 بيتي و اونم به شكل پارالل رد و بدل كنيم معمولا ً با ارزش ترين بيت رو به عنوان Select وسيله جانبي متصل شده به ميكروكنترلر در نظر گرفته ميشه .
به عبارت ديگه ديتا رو به صورت 31 بتي در نظر مي گيرن و بيت 32 رو براي انتخاب منظور مي كنن .
ولي اگه در پروژه اي خاص پهناي باند اطلاعت ورودي يا خروجي 32 بيت تمام مد نظر قرار بگيرد، ميتوان از پايه اي ديگر به عنوان بيت با ارزش استفاده نمود .
براي دريافت اطلاعت 32 بيتي از طريق پورتي كه فقط 31 بيتش تو خروجي قابل دسترسي است بايد از يه كلك نرم افزاري استفاده كرد .
به اين صورت كه شما عدد 31 بيتي رو مثلاً از طريق پورت a دريافت كنيد و داخل يه متغيري ذخيرش كنين، بعد بيت با ارزش رو از طريق يه پايه جداگانه دريافت كرده و اونم داخل يه متغير بيتي ذخيره كنيد .
عدد دوم كه از ورودي دريافت كردين رو با عدد 0b1111111111111111111111111111111 جمع كنيد و حاصل رو يه جايي ذخيره كنيد .
در ادامه همين عدد جديد بدست آمده بعد از عمل جمع رو به شرط اينكه بيت باارزش وردي صفر باشه با عدد 31 بتي and كنيد و به شرط اينكه بيت باارزش وردي يك باشه با عدد 31 بتي or كنيد .
0b1111111111111111111111111111111 = 0x7fffffff
ویرایش توسط Division : 15-05-2010 در ساعت 02:48
سادگی نهایت کمال است
یه مدتی میشه که نیستم... ولی به زودی بر می گردم...