:redface: :redface:
اطلاعیه
Collapse
No announcement yet.
ضرب 16 بیتی
Collapse
X
-
پاسخ : ضرب 16 بیتی
برای نمایش حاصلضرب که یک عدد 32 بیتی است باید آن را بصورت متوالی بر 10 تقسیم کرد و باقیمانده ها را به ترتیب به عنوان ارقام کوچکتر در نظر گرفت و آخرین خارج قسمت، معادل رقم سمت چپ خواهد بود( که ممکن است از یک مکان به بعد در عدد، این باقیمانده و خارج قسمت ها صفر باشند).اوژن: به معنای افکننده و شکست دهنده است
دانایی، توانایی است-Knowledge is POWER
برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد
-
پاسخ : ضرب 16 بیتی
اول اینکه از مطرح کردن سوالات 8051 در انجمن AVR خودداری کنید. مسئله دوم ناخوانا بودن متن برنامه ای است که قرار داده اید. اما به همین میزانی که مشخص است، عملکرد آن صحیح نیست. زیرا تقسیمات 8 بیتی در آن انجام شده و به همین دلیل است که هر بایت را به صورت مجزا نشان می دهد. در حالی که یک تقسیم 32 بیت به 8 بیت برای نمایش کل عدد مورد نیاز است.اوژن: به معنای افکننده و شکست دهنده است
دانایی، توانایی است-Knowledge is POWER
برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد
دیدگاه
-
پاسخ : ضرب 16 بیتی
در برنامه ای که متن آن را قرار دادید، r0 تا r3 بصورت مستقل از هم نمایش داده می شوند و به همین دلیل است که در هنگام نمایش، معادل هر بایت آن را بصورت مجزا مشاهده می کنید. اما مجموع این 4 بایت تشکیل یک عدد واحد را می دهند که برای نمایش کل عدد باید تمام آنها با هم در محاسبات شرکت داده شوند. لازمه این امر دسترسی به یک روتین تقسیم 32 بیت به 8 بیت (یا 16 بیت) است که در فایل ضمیمه ای که در پست زیر قرار داده شده، یک روتین تقسیم 32 بر 16 بیت بصورت بدون علامت وجود دارد و می توانید از آن استفاده کنید:
http://www.eca.ir/forum2/index.php?t...2942#msg292942اوژن: به معنای افکننده و شکست دهنده است
دانایی، توانایی است-Knowledge is POWER
برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد
دیدگاه
-
پاسخ : ضرب 16 بیتی
برای انجام منظور مورد نظر شما (با توجه به تصحیحی که در پست اول تاپیک انجام داده اید و اصل صورت مسئله را بیان کرده اید) و به دلیل اینکه حاصل تقسیم 300 بر 255 یک عدد با اعشار زیاد است و حتی در صورت ضرب وتقسیم مورد نظر، باز هم نتیجه دقیقی بدست نمی آید، روش دیگری به غیر از ضرب و تقسیم پیشنهاد می شود و آن استفاده از Lookup Table است. در واقع شما 256 عدد مجزا در خروجی ADC دارید که به ازای هر یک از این اعداد می خواهید اعداد معادلی را روی LCD نمایش دهید. بنابراین می توانید این اعداد را از طریق DB (که منظور Define Byte است) موقع پروگرام شدن در Flash میکروکنترلر قرار دهید و در هنگام اجرای برنامه آنها را از حافظه بخوانید و روی LCD نمایش دهید. در همین رابطه به توضیح دستورات اسمبلی MOVC A,@A+DPTR و MOVC A,@A+PC مراجعه کنید.اوژن: به معنای افکننده و شکست دهنده است
دانایی، توانایی است-Knowledge is POWER
برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد
دیدگاه
دیدگاه