توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : مقاله میکروکنترلر 8051
آبجی
22nd March 2010, 09:27 PM
تبدیل اعداد به مبنای 2
براي تبديل از مبناي 10 به مبناي 2 از تقسيم هاي متوالي استفاده مي شود و سپس باقيمانده ها به صورت معكوس دنبال هم نوشته مي شوند.
در سيستم مبناي 10 ، ده نماد جدا از هم، از 0 تا 9 براي نمایش اعداد وجود دارد. در سيستم مبناي 2 فقط دو نماد 0 و 1 وجود دارد.
اعداد مبناي 16
در اين مبنا 16 رقم داريم كه از 0 شروع شده به F ختم مي شوند.براي تبديل از مبناي 2 به مبناي 16 از گروه بندي عدد دودويي به دسته هاي چهارتايي استفاده مي كنيم.
همچنين در تبديل از مبناي 16 به مبناي 2 هر عدد را با معادل دودويي آن جايگزين مي كنيم.
نکته: اعداد داخل مبنا نمي توانند از خود مبنا بزرگتر باشند. براي مثال عدد (956) در مبنای 8 بی معنی است.
تقسیم بندی اعداد با درنظر گرفتن علامت
الف) اعداد بدون علامت
ب) اعداد علامت دار
1. دامنه علامت (Sign Magnitude):
در اين روش بيت آخر (سمت چپ) بيت علامت بوده و در ارزش عدد شركت نمي كند. Sign Bit اگر 0 باشد عدد مثبت و اگر 1 باشد عدد منفي است.
نکته: هیچکدام از CPU ها از اين روش استفاده نمي كنند.
2. مكمل يك:
در اين روش آخرين بيت (بيت سمت چپ) بيت علامت است و در ارزش عدد هم شركت مي كند. در اين حالت، بعد از اينكه مثبت يا منفي بودن عدد را مشخص كرديم، كل عدد را مكمل يك مي كنيم
3. مكمل دو:
در اين روش آخرين بيت (بيت سمت چپ) بيت علامت است و در ارزش عدد هم شركت مي كند. در اين روش بعد از اينكه مثبت يا منفي بودن عدد را مشخص كرديم، كل عدد را مكمل دو مي كنيم.
نکته 1) در %80 CPU ها از اين روش استفاده مي شود.
نکته 2) دليل اينكه در CPU ها از روش مكمل يك استفاده نمي شود اين است كه در اين روش دو نوع شكل نمايش براي عدد 0 وجود دارد. مثلا برای حالت 8 بیتی: ( 00000000 و 11111111 ).
آبجی
22nd March 2010, 09:27 PM
جمع اعداد دودويي
کد:
0+0=0
1+0=1
0+1=1
1+1=10
مثال:
کد:
1 1 0 1 1 0 0 +
0 1 1 0 0 1 1
-----------------
1 0 0 1 1 1 1 1
آبجی
22nd March 2010, 09:28 PM
تفريق اعداد دودويي
کد:
0-0=0
1-0=1
1-1=0
0-1=1
مثال:
کد:
1 1 1 1 0 0 0 0 -
1 1 1 1 0 0 1 1
-----------------
1 1 1 1 1 1 0 1
- براي تفريق اعداد دودويي، عدد دوم را مكمل دو كرده و با عدد اول جمع مي كنيم.
- اگر بعد از مكمل دو كردن عدد دوم و جمع آنها، در نهايت بیت نقلی (Carry) به دست نيامد، جواب نامعتبر است. (عدد به دست آمده منفي است) در اين حالت كافيست حاصل را مكمل كنيم.
آبجی
22nd March 2010, 09:28 PM
سرريز
چه هنگامي سرريز رخ ميدهد؟
1. دو عدد منفي با هم جمع شد، حاصل مثبت شد.
2. دو عدد مثبت با هم جمع شد، حاصل منفي شد.
3. يك عدد منفي را از يك عدد مثبت كم كرديم و حاصل مثبت شد.
4. يك عدد مثبت را از يك عدد منفي كم كرديم و حاصل منفي شد.
تشخيص سرريز:
اگر آنچه كه وارد بيت علامت مي شود با آنچه از بيت علامت خارج مي شود با هم فرق كند، سرريز رخ داده است.
مثال:
اعداد A و B را در نظر بگيريد. حاصل A+B و A-B را به دست آوريد. در كدام مورد سرريز رخ مي دهد؟ اعداد علامت دار بوده و محاسبه تفریق در سیستم مكمل دو انجام گیرد.
کد:
A: 11101111 & B: 11000111
B: 11000111 ---------------2'S Complement --------> 00111000 +1 = 00111001
1 1 1 0 1 1 1 1 +
1 1 0 0 0 1 1 1
------------------
1 1 0 1 1 0 1 1 0
1 1 1 0 1 1 1 1 -
1 1 0 0 0 1 1 1
------------------
1 0 0 1 0 1 0 0 0
که در واقع از جمع مکمل 2 عدد B با عدد A به دست آمده است و مشاهده مي شود كه در هيچ حالتي سرريز رخ نمي دهد.
آبجی
22nd March 2010, 09:29 PM
جمع و تفريق اعداد شانزده شانزدهي
جمع اعداد مبناي 16
با شروع از كم ارزشترين رقم، با هم جمع مي شوند. اگر حاصل كمتر از 16 باشد، حاصل جمع را براي آن مكان مي نويسيم. اگر حاصل جمع بزرگتر از 16 باشد، 16 را از آن كم مي كنيم تا رقم آن مكان و نيز رقم نقلي 1 را براي رقم بعدي به دست آوريم. مثال:
کد:
2 3 d 9 +
9 4 b e
---------
b 8 9 7
تفريق اعداد مبناي 16
اگر رقم دوم بزرگتر از اولي باشد، از رقم بعدي، 16 واحد قرض مي گيريم. مثال:
کد:
5 9 f -
2 b 8
--------
2 e 7
آبجی
22nd March 2010, 09:29 PM
كد اسكي (ASCII)
كدهای اسكي الگوهاي دودويي را به اعداد 0 تا 9 ، همه حروف الفبا (از هر نوع حروف بزرگ و كوچك) و همچنین بسياري از كدهاي كنترل و علائم نقطه گذاري، اختصاص مي دهد. مزيت مهم اين سيستم اين است كه اطلاعات مي تواند بين كامپيوترها مشترك باشد.
سيستم اسكي جمعاً 7 بيت را براي نمايش هر يك به كار مي برد. غالباً يك 0 در با اهميت ترين مكان بيت قرار مي گيرد تا آن را به يك كد 8 بيتي تبديل نمايد. كدهاي اسكي 128 كاراكتر را به صورت كد نمايش مي دهند.
ارقام 0 تا 9 با كدهاي اسكي 30H تا 39H نشان داده ميشوند. اين انتخاب موجب مي شود تا با پوشش يا حذف 3 در نيبل (چهار بيت) مرتبه بالا ، تبديل اسكي به سادگي انجام شود.
حروف بزرگ با كدهاي اسكي 41H تا 5AH نشان داده مي شوند. حروف كوچك با كدهاي اسكي 61H تا 7AH نشان داده شده اند. تنها بيت متفاوت در حروف بزرگ ″A″ و حروف ″a″ ، بيت 5 است. بنابراين تبديل بين حروف بزرگ و كوچك تنها با تغيير بيت 5 در اسكي امكان پذير است.
آبجی
22nd March 2010, 09:29 PM
انواع بافرها (Buffer)
به دو منظور از بافرها استفاده مي شود:
1. تقويت ولتاژ و جريان. مثلاً اگر در يك مدار از يك بافر، خروجی 5 ولت بگيريم اين خروجي 5 ولت افت پيدا نمي كند.
2. ايزولاسيون
انواع خروجي IC ها
1. TOTEMPOLE :
خروجي آنها دو حالت High يا Low دارد. نمی توانیم خروجي دو IC از اين نوع را به هم وصل كنيم چون مثلاً اگر يكي خروجي 0 و ديگري خروجي 1 داشته باشند، اتصال كوتاه اتفاق مي افتد.
2. OPEN COLLECTOR :
در اين گونه IC ها اثر ورودي در خروجي ظاهر نمي شود مگر اينكه يك مقاومت به خروجي وصل شود كه سر ديگر آن به VCC وصل باشد.
- خروجي هاي OPEN COLLECTOR را مي توان به هم وصل كرد.
- اگر مقاومتي بين خروجي و VCC نباشد، خروجي نامشخص است.
3. TRI STATE يا THREE STATE :
در اين نوع IC ها، علاوه بر ورودي هاي عادي، ورودي ديگري به نام enable يا select نيز وجود دارد. اگر اين ورودي فعال باشد، خروجی اين گيت همانند TOTEMPOLE عمل مي كند و تمام ويژگيهاي اين نوع IC را دارد و اگر اين ورودي غير فعال باشد، خروجي اين IC بدون توجه به ورودي هاي آن در وضعيت سومي به نام High Impedance يا HZ (يعني قطع =مقاومت خيلي زياد) قرار مي گيرد.
آبجی
22nd March 2010, 09:29 PM
سازمان دروني میکروکنترلرها بخش عملياتي هر میکرو کنترلر به طور کلی هر كامپيوتر قابل تفكيك به سه قسمت است:
1. Cpu (واحد پردازش مركزي) كه وظيفه اجر (پردازش) اطلاعات ذخيره شده در حافظه را دارد.
2. حافظه
3. وسايل i/o كه وظيفه تهيه مفاهيم ارتباط و محاوره با cpu را دارد.
آبجی
22nd March 2010, 09:30 PM
انواع حافظه در ميكروكنترلرها 1. Ram : حافظه با دستيابي تصادفي - هم خواندني و هم نوشتني
به وسيله كامپيوتر براي ذخيره سازي موقت برنامه هاي در حال اجرا یا اطلاعات، مورد استفاده قرار مي گيرد. اين برنامه ها يا اطلاعات، بعد از خاموش شدن كامپيوتر از بين مي روند، به همين دليل آن را حافظه فرار مي خوانند.
2. Rom : حافظه فقط خواندني
براي برنامه ها و اطلاعات در عملكرد كامپيوتر لازم است. اطلاعات در rom دائمي است و قابل تعويض به وسيله كاربر نمي باشد و پس از خاموش شدن كامپيوتر هم از بين نمي رود بنابراين آن را حافظه غير فرار مي خوانند.
آبجی
22nd March 2010, 09:30 PM
گذرگاه ( bus ) CPU از طريق رشته اي از سيم ها به نام گذرگاه به حافظه و I/O متصل است. گذرگاه، اطلاعات را از جايي به جاي ديگر انتقال مي دهد.
در هر كامپيوتر سه نوع گذرگاه وجود دارد: گذرگاه آدرس، گذرگاه داده و گذرگاه كنترل.
به منظور شناسايي يك وسيله (حافظه يا I/O )، بايد آدرسي به آن تخصيص داد. آدرس اختصاص يافته به يك وسيله مورد نظر، بايد منحصر به فرد باشد؛ يعني دو وسيله مختلف مجاز به داشتن يك آدرس نيستند. CPU آدرس را روي گذرگاه آدرس قرار مي دهد (البته به شكل دودويي) و مدار ديكد کننده وسيله را مي يابد. آنگاه CPU براي به دست آوردن داده از يك وسيله يا ارسال داده به آن، از گذرگاه داده استفاده مي نمايد.
گذرگاه هاي كنترل براي تهيه سيگنال هاي خواندن و نوشتن در وسيله و مطلع ساختن آن از تصميم CPU براي دريافت اطلاعات و يا ارسال اطلاعات به آن است. از سه گذرگاه فوق، گذرگاه های آدرس و داده توانمندي يك CPU را نشان مي دهند.
توضيحي بيشتر در مورد گذرگاه داده:
چون گذرگاه هاي داده براي انتقال اطلاعات به و يا از CPU به كار مي روند، لذا هرچه گذرگاه هاي داده بيشتر باشند، CPU بهتر است. اما افزايش در تعداد خطوط، هزينه ساخت را افزايش مي دهد. بالا بودن رشته سیم های گذرگاه ها به معناي CPU و كامپيوتر گرانتر مي باشد.
اندازه متوسط گذرگاه داده در CPU ها بين 8 تا 64 متغير است. گذرگاههاي داده دو طرفه هستند، زيرا CPU از آنها به هنگام دريافت و يا ارسال داده استفاده مي كند. توان پردازش CPU به اندازه اين گذرگاه ها وابسته است؛ زيرا يك گذرگاه 8 بيتي هر بار قادر است 1 بايت داده را بفرستد، ولي گذرگاه 16 بيتي، 2 بايت را هر بار ارسال مي كند كه نتيجه دو برابر سريعتر خواهد بود.
توضيحي بيشتر درباره گذرگاه آدرس:
چون گذرگاه آدرس براي شناسايي وسيله و حافظه متصل به CPU به كار مي رود، هرچه تعداد رشته سیم های گذرگاه هاي آدرس بيشتر باشند، تعداد وسايلي كه می توانند آدرس دهي شوند بيشتر خواهد بود. به بيان ديگر تعداد گذرگاههاي آدرس براي يك CPU، تعداد مكان هايي است كه با آن محاوره مي كند. پس افزایش خطوط آدرس، تعداد این ماکن های حافظه را افزايش مي دهد.
همواره تعداد مكانها 2 به توان X است كه X تعداد خطوط آدرس مي باشد و ربطي به اندازه خطوط داده ندارد. مثلاً يك CPU با 16 خط آدرس ميتواند 65536 (2 به توان 16) يا 64K حافظه را آدرس دهي كند. هر مكان حداكثر 1 بايت داده دارد. گذرگاه آدرس يك گذرگاه يك طرفه است. اين بدان معني است كه CPU از گذرگاه آدرس فقط براي ارسال آدرس به خارج از خود استفاده مي كند.
آبجی
22nd March 2010, 09:30 PM
مقدمه اي بر برنامه نويسي اسمبلي در 8051 cpu فقط با سیستم اعداد دودويي كار مي كند و سرعت قابل توجهي دارد. برنامه اي كه از 0 و 1 ساخته شده باشد، برنامه به زبان ماشين خوانده مي شود. در اوايل دوران كامپيوتر، برنامه را به زبان ماشين مي نوشتند ولی نهايتاً زبان های اسمبلي به وجود آمد كه نمادی رمزي برای دستورات كد ماشين را فراهم نمود و علاوه بر آن ديگر ويژگي آن این بود که برنامه نويسي را سريع تر و كم خطاتر كرد.
برنامه هاي زبان اسمبلي بايد به وسيله برنامه اي به نام اسمبلر به كد ماشين تبديل شود. زبان اسمبلي، به زبان سطح پاييني اشاره مي كند زيرا مستقيماً با ساختار دروني cpu سر و كار دارد. براي برنامه نويسي به زبان ماشين، برنامه نويس بايد همه ثباتهاي cpu و سايز هر كدام را همراه با ديگر جزئيات بداند.
زبانهاي basic ، pascal ، c ، c++ ، java و ديگر زبانها را زبانهاي سطح بالا مي خوانند. زيرا برنامه نويس نيازي به شناخت جزئيات cpu ندارد. در حالي كه براي ترجمه يك برنامه زبان اسمبلي به كد ماشين (گاهي آن را كد مقصد يا كد عمل هم مي گويند) از اسمبلر استفاده مي شود. زبانهاي سطح بالا به وسيله كامپايلر به كد ماشين تبديل مي گردند.
آبجی
22nd March 2010, 09:30 PM
ساختار زبان اسمبلي در يك دستور زبان اسمبلي يك «نماد رمزي» و به دنبال آن يك يا دو عملوند قرار مي گيرند. عملوندها اقلام داده هايي هستند كه بايد دستكاري شوند و «نماد رمزي» فرمانها به cpu مي باشند و به آن دستور مي دهند كه با اقلام مذكور چه كاري بكند.
دستورات به cpu كار مورد نظر را دستور مي دهند و رهنمون ها (يا شبه دستورات) به اسمبلر جهت مي دهند. مثلاً org به اسمبلر ميگويد تا كد عمل را در مكان حافظه قرار دهد (شروع برنامه) و end ميگويد كه انتهاي كد مبدا فرا رسيده (انتهاي برنامه). به بيان ديگر يكي از آنها شروع و ديگري پايان برنامه را مشخص مي كنند.
يك دستور اسمبلي از چهار ميدان تشكيل شده است:
1. ميدان برچسب به برنامه اجازه مي دهد تا به وسيله يك نام به يك خط از كد ارجاع داده شود. ميدان برچسب نبايد داراي بيش از يك تعداد معين كاراكتر باشد.
2. ميدان هاي نماد رمزي زبان اسمبلي به همراه عملوندها كار واقعي برنامه را انجام مي دهند.
3. ميدان توضيح با يك ″؛″ آغاز مي شود. توضيحات ممكن است در انتهاي هر خط و يا در يك خط جداگانه باشند. توضيحات اختياري هستند.
4. سمیکلن : هر برچسبي كه به يك دستور اشاره كند بايد با ″:″ دنبال شود.
نکته: برای رهنمونها هيچ كد ماشيني توليد نمي شود و فقط به وسيله اسمبلر مورد استفاده قرار مي گيرند، در حالي كه دستورات جهت اجرا در cpu به كد ماشين تبديل مي شوند.
آبجی
22nd March 2010, 09:30 PM
اسمبل كردن و اجراي يك برنامه در 8051: 1. ابتدا برنامه بايد در يك اديتور مناسب نوشته شود. اديتور بايد قادر به توليد فايل اسكي باشد (مثل Notepade ). فايل مبدا بسته به اسمبلر به كار رفته داراي توسعه ″asm″ يا ″src″ مي باشد.
2. فايل مبدا كه حامل كد عميات ايجاد شده از مرحله 1 است به اسمبلر 8051 داده مي شود. اسمبلر دستورالعملها را به كد ماشين تبديل مي كند.
اسمبلر يك فايل مقصد (obj) و يك فايل ليست (lst) ايجاد مي كند. اسمبلر 8051 فايلهاي asm را كه از دستورات زبان اسمبلي ساخته شده اند به زبان ماشين تبديل كرده و بدينوسيله فايل obj ايجاد مي گردد.
علاوه بر آن يك فايل ليست هم ايجاد مي شود. اين فايل ليست اختياري است و براي برنامه نويسان بسيار مفيد است زيرا همه كدها و آدرسها همراه با خطاهايي كه اسمبلر شناسايي كرده است، در اين فايل ليست مي شود. اين فايل به وسيله اديتوري مانند Dos Edit دستيابي شده و چاپ مي شود. برنامه نويس فايل ليست را براي يافتن خطاهاي نحوي به كار مي برد. پس از اصلاح همه خطاها كه در فايل ليست آمده است، فايل obj آماده ورود به برنامه پيوند است.
3. اسمبلرها نياز به سومين مرحله دارند كه پيوند خوانده مي شود. برنامه پيوند يك يا چند فايل مقصد را دريافت و يك فايل مقصد مطلق را با توسعه فايل ″abs″ ايجاد مي نمايد. اين فايل به وسيله كساني كه بر روي 8051 برنامه مونيتور دارند، مورد استفاده قرار مي گيرد.
4. سپس فايل ″abs″ به داخل يك برنامه به نام ″OH″ (مبدل مقصد مبناي 16) كه فايلي با توسعه ″hex″ ايجاد مي كند برده مي شود كه اين يك برنامه آماده براي سوزانده شدن در ROM است. اين برنامه همراه با همه اسمبلرهاي 8051 ارائه مي شود. اسمبلرهاي مبتني بر windows هر دو مرحله 2 و 4 را در يك مرحله انجام مي دهند.
نکات:
- برنامه Dos Edit يك فايل اسكي توليد مي نمايد.
- عموماً، نام قسمت توسعه فايل مبدا ″asm″ يا ″src″ است.
- فايل ″asm″ مي تواند به وسيله برنامه Dos Edit توليد شود.
- فايل هاي ″obj″ و ″lst″ به وسيله اسمبلر ايجاد مي شوند.
آبجی
22nd March 2010, 09:31 PM
آشنايي با پورتهاي ميكرو كنترلر 8051A پورت P0
جمعاً 8 پايه (32-39) را اشغال مي كند. مي توان از آن به عنوان ورودي يا خروجي استفاده كرد. اختلاف مهم بين P0 و ديگر پورتها اين است كه P0 داراي مقاومت بالاكش (Pull Up) دروني نيست، بنابراين براي استفاده از پايه هاي پورت به عنوان ورودي و خروجي، هر پايه بايد از بيرون به يك مقاومت بالاكش 10KΩ وصل شود (دليل اين است كه به آن امكان مولتي پلكس شدن آدرس و داده را بدهد).
به همين دليل مي توان گفت كه پورت P0 بر خلاف پورتهاي P1 ، P2 و P3 يك مدار درين باز است. (درين باز اصطلاحی است كه براي تراشه هاي CMOS به كار برده مي شود و شبيه كلكتور باز در تراشه هاي TTL است.)
براي يك بيت P0 بايد يك مقاومت بالاكش از پايه هاي پورت به Vcc وصل كنيم تا جريان را براي راه اندازي يك ورودي فراهم كند. با مقاومتهاي بالاكش بيروني متصل، به هنگام بازنشاني (Reset)، پورت P0 به عنوان پورت خروجي آرايش مي يابد. با مقاومتهاي متصل براي اينكه پورت P0 را به ورودي تبديل كنيم، پورت بايد با نوشتن تمام″1″ برنامه ريزي شود.
وقتي كه 8051/31 به يك حافظة بيروني متصل مي شود، پورت P0 هر دو مقدار آدرس و داده را فراهم مي كند. 8051 ، آدرس و داده را از طريق پورت P0 مولتي پلكس مي نمايد تا در پايه ها صرفه جويي شود.
ALE داده يا آدرس بودن اطلاعات در P0 را مشخص مي نمايد. وقتي ALE صفر باشد، D0 – D7 داده را فراهم مي كند ولي اگر ALE برابر يك باشد، آدرس A0 – A7 در دسترس است. (در سایت میکرورایانه مطالب زیاد و بحث های مفصلی در مورد ALE و سایر مطالب مطرح شده در اینجا وجود دارد) بنابراين ALE به كمك لچ 74LS373 آدرس و داده را دي مولتي پلكس مي نمايد (در اين هنگام ديگر نيازي به وصل كردن مقاومتهاي بيروني نيست).
پورت P1
جمعاً 8 پايه (1-8) را اشغال مي كند. مي توان از آن به عنوان ورودي يا خروجي استفاده كرد. برخلاف پورت P0، اين پورت نيازي به مقاومت بالاكش ندارد، زيرا داراي مقاومت بالاكش دروني است. براي اينكه پورت ورودي شود، بايد در همه بيت هاي آن تمام ″1″ نوشت.
پورت P2
جمعاً 8 پايه (22-28) را اشغال كرده است. مي توان آن را به عنوان ورودي يا خروجي برنامه ريزي كرد. همچون پایه P1 پایه P2 هم به مقاومت بالاكش نيازي ندارد، زيرا داراي مقاومتهاي بالاكش دروني است. بعد از بازنشاني (Reset)، پورت P2 به صورت خروجي در مي آيد. براي ورودي ساختن بايد در آن تماما ″1″ نوشته شود. اين كد پورت P2 را به عنوان يك پورت ورودي آرايش مي دهد.
پورت P3
پورت P3 هم 8 پايه (10-17) را اشغال مي كند. مي توان آن را به عنوان ورودي يا خروجي به كار برد. P3 نیز همچون P1 و P2 نيازي به مقاومت بالاكش ندارد. گرچه پورت P3 پس از بازنشاني (Reset) به صورت پورت خروجي در مي آيد، ولي اين روش، طريق معمول در استفاده از آن نيست.
پاية P3.0 و P3.1 براي تبادل سيگنال اطلاعات RxD و TxD به كار مي رود. بيت P3.2 و P3.3 براي وقفه هاي خارجي كنار گذاشته شده اند. بيت P3.4 و P3.5 براي تايمر 0 و 1 در نظر گرفته شده اند. نهايتاً P3.6 و P3.7 براي تهیه سيگنالهاي WR و RD از حافظة خارجي در سيستمهاي مبتني بر 8031 كنار گذاشته شده اند.
در سيستمهاي مبتني بر 8751 ، 89C51 يا DS5000 ، پايههاي P3.6 و P3.7 براي I/O به كار رفته اند و بقية پايه ها در پورت P3 براي نقش ديگرشان در نظر گرفته شده اند.
از بحث فوق نتيجه مي گيريم كه در سيستمهاي مبتني بر 8751 ، 89C51 و DS5000 سه پورت P0 ، P1 و P2 را براي عمليات I/O در اختيار داريم. اين مقدار ورودي-خروجي براي بسياري از ميكرو كنترلرها كفايت مي كند. پورت P3 براي وقفه و ديگر سيگنالها كنار گذاشته شده اند.
آبجی
22nd March 2010, 09:32 PM
اولین ریز پردازنده ای که با موفقیت عملی به بازار عرضه شد محصول شرکت اینتل در سال 1971 با نام 8080 بود بعد از آن بازار رقابت میکرو پروسسوری گرم شد و شرکت های دیگری همچون RCA ,ZILOG,MOS technology ریز پردازنده های خود را به بازار عرضه کردند.
کم کم با ورود کامپیوتر به صنعت ،وجود تکنولوژی دیگری نیز احساس شد . تکنولوژیی که از میکرو پروسسور جمع و جور تر و کند تر بود اما هزینه را خیلی پایین می آورد .این تکنولوزی میکرو کنترلر نام گرفت و کار آن نظارت و کنترل یک سری اعمال بود که توسط برنامه نویسی انجام می شد.
امروزه میکرو کنترلر حوزه های وسیعی از زندگی مارا اشغال کرده است بی آنکه بدانیم که سیستم به کار رفته در آنها میکرو کنترلری است و به اشتباه همه ی آنها را کامپیوترمی نامیم.برای مثال ماشین لباسشویی که اتمام کار خود را با نواختن آهنگی اعلام میکند یا اجاق گازی که خاموش شدن شعله را با آهنگ گوشزد می کند و یا خودروی سمندی که باز بودن در خودرو را با جمله ی" در ب خودرو باز است."یاد آوری می کند همگی نمونه های ملموسی از سیستم های میکرو کنترلری هستند که روزانه بار ها با آنها سر و کار داریم.آینده صنعت در دست سیستمهای میکرو کنترلری است .
چون میکرو پروسسور و میکرو کنترلر اگر پدر و فرزند نباشند مطمئنا برادر هستند برای آشنایی با میکرو کنترلر ،کمی در مورد میکروپروسسور صحبت می کنیم چون برای اکثر شما ملموس تر است .در پایان شباهت میکرو کنترلر و میکرو پروسسور را خواهیم گفت .
هنگام که چارلز بابیج( پدر کامپیوتر) شمای کلی سیستم کامپیوتری را ارائه داد و عنوان کرد که اگر ماشینی بخواهد که دستورات انسان را اجرا کند باید شامل این بلوکها باشد (بلو کها را خواهیم گفت) اما در زمان آقای بابیج امکانات آن زمان جوابگوی پیاده سازی آن سیستم نبود و به خاطر این آقای بابیج از اینکه به طرح خود جامه عمل بپوشاند باز ماند.بعدها که اولین کامپیوتر ساخته شد از طرح آقای بابیج الگو گرفتند و واحد هایی را برای این سیستم تعریف کردند سازندگان کامپیوتر هم دقیقا این واحد ها را در سیستم خود پیاده سازی می کردند .اولین شرکت سازنده کامپیوتر IBM بود و استاندارد سازی هم بر اساس طرح آنها صورت گرفت لغت "سازگار با IBM" که تا چند سال پیش به کار می رفت به همین دلیل بود.اما واحد های استاندارد یک سیستم کامپیوتری:
1-واحد پردازش مرکزیCPU :
همان مغز سیستم است و فعالیت های سیستم را کنترل می کند و عملیات هایی را بر روی داده ها انجام می دهد .
CPU مجموعه ای از مدارات منطقی است که به طور متناوب دستورات را واکشی و اجرا می کنند.
CPU خود دارای چند قسمت می باشد:
الف- ALU یا واحد محاسبه و منطق که مسئول انجام اعمال محاسباتی نظیر جمع و تفریق و ... و اعمال منطقی مانند مقایسه و And و OR و ... می باشد
ب – واحد کنترل که مسئول رمز گشایی و تعیین نوع عملیاتی است که ALU باید انجام دهد.
ج- ثبات ها جهت ذخیره موقت داده ها قبل از رفتن به ALU و همچنین نگهداری نتایج پردازش به کار میروند.
د – PC یا شمارنده برنامه که آدرس دستورالعمل بعدی که CPU باید از حافظه بخواند را در خود نگه می دارد.
ه- IR یا ثبات دستور العمل که مسئول ذخیره قسمت عملیاتی دستورالعمل فعلی می باشد
2. حافظه :
حافظه محل ذخیره اطلاعات است . حافظه ها را بر اساس مشخصه های مختلفی می توان طبقه بندی کرد .
معمولترین طبقه بندی ، طبقه بندی بر اساس حافظه های اولیه و ثانویه است .
حافظه های اولیه حافظه هایی هستند که در اختیار سیستم هستند و سیستم برای انجام اعمال پردازشی به آنها احتیاج دارد ROM و RAM از حافظه های اولیه هستند .
ROM (رام) یا حافظه فقط خواندنی توسط کارخانه برنامه نویسی شده و محتویات آن توسط کاربر یا برنامه نویس تغییر نمی یابد . در حقیقت ROM یک بار برنامه نویسی شده و بارها و بارها می توان آن را خواند .محتویات ROM ثابت است و با قطع برق از بین نمی رود.
RAM (رم) حافظه با دستیابی تصادفی است که CPU اطلاعات را در آن ذخیره می کند و محتویات آن توسط برنامه نویس هم می تواند تغییر داده شود محتویات آن با قطع جریان برق از بین می رود.
حافظه های ثانویه ، حافظه هایی هستند که ما اطلاعات را بر روی آنها ذخیره می کنیم تا بعدا دوباره آن اطلاعات را مورد استفاده قرار دهیم و با قطع برق محتویات آنها از بین نمی رود .در حقیقت حافظه های ثانویه ترکیبی از خصوصیات Rom و Ram هستند . پایداری خود در مقابل قطع برق را از ROM و توانایی تغییر محتویات توسط کاربر را از RAM به ارث برده اند .برای حافظه های ثانویه می توان از HARD DISK و FLOPPY نام برد
3- گذرگاه یا باس:
مجموعه ای از سیم ها که اطلاعات را با یک هدف مشترک حمل می کنند.در معماری کامپیوتر از سه باس می توان نام برد:
الف – باس آدرس :برای هر عمل خواندن یا نوشتن CPU آدرس (موقعیت) داده را با قرار دادن یک آدرس روی باس آدرس به حافظه ارسال می کند.
ب - باس کنترل :با قرار دادن آدرس بر روی باس آدرس یک سیگنال کنترلی بر روی گذرگاه کنترل قرار می گیرد که مشخص می کند که عملیات مورد نظر خواندن است یا نوشتن در حافظه.
ج- گذرگاه داده : برای عملیات خواندن یک بایت داده بر روی گذرگاه داده توسط حافظه قرار داده می شود و برای عمل نوشتن یک بایت داده توسط CPU بر روی گذرگاه داده قرار می گیرد .
علاوه بر سیگنالهای کنترلی READ و WRITE سیگنال کنترلی دیگری هم با نام CLOCK وجود دارد که برای همزمان کردن واحدها به کار می رود.
4 –I/O یا واحد های ورودی و خروجی :
این واحد مسئول ارتباط با دنیای خارج است و توانایی اتصال سیستم ها را به کامپیوتر می دهد .
از کامپیوتر با نام ماشین برنامه پذیر نام می بریم . حال ببینیم برنامه چه تعریفی دارد.
برنامه:
به مجموعه ای از دستور العمل ها که ترتیب اجرای مشخصی دارند و دارای نقطه شروع و پایان مشخصی هستند که به منظور انجام عمل خاصی نوشته شده اند یک برنامه می گویند.
از تعریف بالا نتیجه گرفته می شود که واحد ساختمانی برنامه دستور العمل است درست مانند یک ساختمان که به وسیله آجر ساخته می شود برنامه هم با قرار دادن دستور العمل ها پهلوی هم ساخته می شود.
عمل خواندن دستور العمل ها از حافظه توسط CPU را واکشی گویند.دستور العملها پشت سر هم واکشی شده و توسط CPU اجرا می شوند تا زمانی که برنامه اتمام برسد و آن هدفی را که برنامه نویس مد نظرش بوده است انجام شود.
CPU تنها با داده های باینری کار می کند بنابراین هر دستور العمل نوشته شده توسط برنامه نویس باید به مقدار معادل باینری (همان زبان ماشین) آن تبدیل شود و سپس اجرا شود.
یک سیکل واکشی دستور به صورت زیر می باشد:
1- مقدار PC یا شمارنده برنامه بر روی گذرگاه آدرس قرار می گیرد .
2- سیگنال کنترلی READ بر روی گذرگاه کنترل قرار می گیرد
3- داده ( کد عملیاتی دستورالعمل) از حافظه خوانده می شود و روی گذرگاه داده قرار می گیرد
4- کد عملیاتی در ثبات IR قرار می گیرد
5- شمارنده برنامه به ابتدای دستور بعدی اشاره میکند( اغلب گفته می شود که شمارنده برنامه یک واحد افزایش می یابد اما گاهی اوقات 2 واحد و گاهی 3 واحد افزایش پیدا می کند در حقیقت شمارنده برنامه به اندازه طول دستور فعلی افزایش پیدا می کند.)
مرحله ی اجرا شامل کد گشایی و ایجاد سیگنالهای کنترلی لازم برای باز کردن ثات های CPU و قرار دادن محتویات آنها در ALU و مجددا قرار دادن نتیجه عملیات در ثبات ها است.
مقایسه ریز پردازنده و میکرو کنترلر :
ریز پردازنده یک IC است که فقط شامل CPU است اما میکرو کنترلر مدارات اضافی دیگری در داخل همان IC قرار داده شده است که میکرو کنترلر را تبدیل به یک میکرو کامپیوتر کرده است ( البته در مقیاس کمتر) مدارات دیگری همانند ROM,RAM,timer, و رابط سریال و پردازش وقفه و...
اما برای اینکه یک میکروپروسسور به عنوان یک میکرو کامپیوتر عمل کند به مدارات ذکر شده بالا در خارج IC نیازمندیم که این مدارات هم حجم و هم هزینه را به طور نمایی افزایش می دهند .اما ریز پردازنده و میکرو کنترلر از نظر معماری داخلی به هیچ وجه قابل مقایسه نیستند ریز پردازنده برای انجام اعمال پردازشی بسیار پیچیده در سرعت بالا طراحی شده است و نتیجتا معماری آن بسیار پیچیده تر از معماری میکرو کنترلر خواهد بود .تفاوت دیگر میکرو کنترلر و میکرو پروسسور در مصرف توان آنهاست .میکرو کنترلر توان بسیار کمتر از توان مصرفی میکرو پوسسور لازم دارد چون مدارات آن نسبت به میکروپروسسور بسیار کمتر است و این یک مزیت برای طراحی مدارات می باشد.
یک سیستم میکرو کامپیوتری
RAM
ROM
ابزار موازی
ابزار سری
وقفه خارجی
پالس خارجی
رابط سریال
رابط موازی
کنترل وقفه
TIMER
میکرو کنترلر ها
اولین خانواده میکرو کنترلر ها با نام MCS-51 توسط شرکت اینتل طراحی و ساخته شد .بعد ها شرکت های دیگری تحت مجوز اینتل شروع به تولید IC های میکرو کنترلر کردند .
از خانواده MCS-51 اولین عضو 8051 می باشد مشخصات این IC به صورت زیر است:
1 - 4 کیلو بایت ROM
2- 128 بایت RAM
3 - 4 پورت ورودی و خروجی 8 بیتی
4 - دو تایمر/شمارنده 16 بیتی
5 - رابط سریال برای ارتیاط با دیگر وسایل
6 - 64 کیلو بایت حافظه کد خارجی و 64 کیلو بایت هم حافظه داده خارجی را می تواند آدرس دهی کند
7 - پردازنده بولی برای انجام اعمال بیتی
8 - 210 مکان بیت آدرس پذیر
پایه ها :
این IC همانگونه که در شکل بعد می بینید دارای 40 پایه می باشد پایه 20 به زمین و پایه شماره 40 به منبع تغذیه 5 ولت متصل می شود.این میکرو کنترلر دارای 4 پورت I/O (ورودی - خروجی ) 8بیتی می باشد که 32 پایه از 40 پایه را به خود اختصاص داده اند به جز پورت شماره 1 سه پورت دیگر دو کاره هستند و علاوه بر عمل ورودی - خروجی کار دیگری را نیز بر عهده دارند.
پورت شماره صفر:
این پورت پایه های شماره 32 تا 39 را شامل می شود .در برنامه های کوچک عموما وظیفه ورودی و خروجی داده را بر عهده دارد اما در پروژه های بزرگ بایت پایین آدرس و داده را انتقال می دهد . این پورت به عنوان آدرس و داده مالتی پلکس عمل می کند که در استفاده از حافظه کد و داده خارجی کاربرد دارد .
پورت شماره 2:
(پایه های شماره 21 تا 28) همانند پورت شماره صفر یک درگاه دو منظوره است و بایت بالای آدرس را در استفاده از حافظه خارجی انتقال می دهد.
پورت شماره 3:
علاوه بر ورودی و خروجی بودن ، هر یک از پایه های آن دارای عملکرد بخصوصی هستند که در جدول زیر آمده است .
PSEN:
(پایه شماره 29) این پایه فعال صفر است ( یعنی در صورتی که به این پایه صفر منطقی بدهیم عملکرد تعریف شده برای این پایه انجام میشود).PSEN مخفف Program Storage Enable است در صورتی که از حافظه خارجی برای کد استفاده کنیم این پایه به پایه OE ( Output Enable) EPROM حاوی کد متصل می شود و میکرو کنترلر بدین ترتیب می تواند برنامه را از حافظه EPROM بخواند .
ALE:
(پایه شماره 30) این پایه هم فعال صفر است .مخفف Address Latch Enable می باشد در توضیح پورت شماره صفر گفتیم که این پورت به عنوان آدرس و داده مالتی پلکس استفاده می شود. هنگامی که ALE فعال باشد پورت شماره صفر در نیم سیکل اول آدرس را نگه می دارد و در نیم سیکل بعدی حافظه داده را نگه میدارد به عبارت دیگر این پورت در نیم سیکل اول به عنوان گذرگاه آدرس و در نیم سیکل بعدی به عنوان گذرگاه داده عمل می کند .
EA:
(پایه 31 )فعال صفرو مخفف External Access می باشد این پایه به صفر ولت یا 5 ولت متصل می شود . در صورتی که به 5 ولت وصل شود برنامه از ROM داخلی میکرو کنترلر اجرا می شود و در صورتی که به صفر ولت متصل سود برنامه از EPROM خارجی اجرا می شود.
RST:
( پایه 9) سیستم را reset می کند . در صورتی که این پایه 5 ولت به آن اعمال شود برنامه از اولین دستور مجددا اجرا می شود . این دکمه مشابه دکمه ریست کامپیوتر می باشد .
حافظه ی8051:
بانک های ثبات :
8051 دارای 8 ثبات با نام های R0-R7 می باشد دستوراتی که از این ثبات ها استفاده می کنند نسبت به دستورات مشابه خود که از انواع دیگر آدرس دهی استفاده می کنند دارای تعداد بایت کمتر و سرعت بیشتری هستند بنابراین در صورتی که از داده ای به طور متناوب در برنامه استفاده می کنیم بهتر است که این داده در یکی از ثبات های بانک ثبات قرار گیرد .
در 8051 ، 4 بانک ثبات وجود دارد که در هر لحظه از زمان می توان فقط یکی از این بانکها را فعال و از آن استفاده نمود .برای فعال کردن یک بانک ثبات از دو بیت با نامهای PSW.3, PSW.4 استفاده می کنیم ان دو بیت جزئ ثبات PSW هستند.
ثبات PSW:
مخفف Program status word یا کلمه وضعیت سیستم است . این ثبات در هر سیکل ماشین بسته به وضعیت و جواب برنامه تغییر می کند و برنامه نویس می تواند بر اساس این تغییرات منطق برنامه را تغییر دهد. PSW مشابه Flag های ریز پردازنده های سیستم های میکرو کامپیوتری می باشد.
(Program status register) psw
CY
AC
F0
RS1
RS0
OV
----
P
بیت P:
این بیت برای تنظیم توازن زوج مقدار آن صفر یا یک می شود.در صورتی که تعداد یک های داخل Accumulator فرد باشد این بیت یک می شود تا مجموع یک ها زوج باشد این یک روش ساده تشخیص تعداد فرد خطا در انتقال اطلاعات می باشد. برای مثال اگر Accumulator عدد 00000011 را در مبنای دو در خود داشته باشد چون در این مثال تعداد 1 ها دو عدد می باشد بنابراین بیت توازن صفر می شود تا تعداد یک ها زوج باقی بماند .
بیت OV:
این بیت با نام Over flow (سر ریز ( نام دارد .اگر هنگام جمع یا تفریق حسابی (اعداد علامتدار) نتیجه از +127 بیشتر یا از -127 کمتر شود این بیت 1 می شود.
بیت RS1,RS0 :این دو بیت به منظور فعال کردن یکی از چهار بانک ثبات مورداستفاده قرار می گیرد.مقدار پیش فرض این دو بیت 00 است که بانک ثبات صفر را فعال می کند .
بیت F0:
این بیت با نام پرچم صفر هم شناخته شده است .اگر نتیجه ی یک عمل حسابی صفر شود این بیت یک می شود.
بیت AC:
(بیت نقلی کمکی) در هنگام انجام عملیات حسابی در صورتی که از بیت شماره 3 به شماره 4 رقم نقلی داشته باشیم در این صورت این بیت یک می شود .
بیت CY :
(بیت نقلی) اگر در طول عملیات حسابی از بیت 7 رقم نقلی به بیت بالا تر داشته باشیم این بیت یک می باشد .
ثبات A:
Accumulator یا انباره نامیده می شود.این ثبات همه منظوره است بیشتر دستورات میکرو کنترلر با این ثبات کار می کند .بنابراین ابتدا باید داده در این ثبات قرار گیرد سپس عملیات انجام شود.
ثبات B:
جزو ثبات های عمومی است برای انجام عملیات ضرب و تقسیم به همراه ثبات A به کار می رود.
ثبات DPTR :
این ثبات یک ثبات 16 بیتی است که از دو ثبات 8 بیتی با نامهای DPL و DPH ساخته شده است و به عنوان اشاره گر داده به کار می رود در هنگام استفاده از حافظه داده خارجی کاربرد این ثبات را خواهیم دید.
برای کار با میکرو کنترلر به چه چیزی احتیاج داریم؟
اولین چیزی که در یک پروژه میکرو کنترلری برجسته تر به نظر می رسد کد نویسی است .یک برنامه نویس میکرو کنترلر باید با زبان اسمبلی آشنا باشد . البته کلمه " اسمبلی " یک کلمه عمومی است و به کلیه زبانهای سطح پایین (low level) گفته می شود در حالی که هر میکرو کنترلری یا میکرو پروسسوری اسمبلی مختص به خود را دارد یعنی اسمبلی 8051 با اسمبلی Z80 متفاوت است در میکرو پروسسور ها هم تفاوت زیادی بین اسمبلی نسل های میکرو پروسسور ها وجود دارد اسمبلی Z80 با اسمبلی پنتیوم تفاوت دارد به زبان دیگر چون معماری میکرو ها با هم متفاوت است در نتیجه اسمبلی آنها هم با هم متفاوت است .البته کسی که با اسمبلی یک میکرو آشنا باشد برنامه نویسی در یک میکروی دیگر برایش زیاد دشوار نیست . زبان های دیگری هم برای برنامه نویسی میکرو کنترلر استفاده می شوند مانند C و pascal البته این زبان ها هر کدام در یک کامپایلر به خصوص کار می کنند برای مثال کامپایلر keil هر دو زبان اسمبلی و C را پشتیبانی می کند .
با فرض اینکه ما با زبان اسمبلی 8051 آشنا هستیم برنامه خود را در ادیتور مانند keil یا Notepad می نویسیم و سپس به وسیله یک کامپایلر مانند ASM51 که کامپایلر اینتل برای 8051 است برنامه را به فایل HEX تبدیل می کنیم .( keil خود دارای کامپایلر است و فایل Hex را تولید می کند) فایل Hex درست مانند فایلهای EXE در کامپیوتر است یعنی یک فایل اجرایی برای میکرو کنترلر است . بعد از کامپایل کردن باید برنامه توسط یک پرو گرامر ( وسیله ای که IC8051 را برنامه ریزی می کند) بر روی IC قرار گیرد .
پرو گرامر ها به صورت آماده در فروشگاههای قطعات الکترونیک موجود هستند .
مبحث مهمی که در برنامه نویسی به زبان اسمبلی وجود دارد شیوه های آدرس دهی است .منظور از آدرس دهی روش دستیابی میکرو پروسسور به اطلاعات است آدرس دهی ، مبدا و مقصد داده را تعیین می کند و اینکه در جریان انتقال داده از مقصد به مبدا چه عملیاتی بایستی انجام شود .قبل از پرداختن به تشریح دستور العمل های اسمبلی 8051 ، انواع شیوه های آدرس دهی را بیان می کنیم.
در 8051 هشت نوع آدرس دهی وجود دارد :
• آدرس دهی ثبات(Register Addressing)
• آدرس دهی مستقیم (Direct Addressing)
• آدرس دهی غیر مستقیم (Indirect Addressing)
• آدرس دهی فوری (Immediate Addressing)
• آدرس دهی نسبی (Relative Addressing)
• آدرس دهی مطلق( Absolute Addressing)
• آدرس دهی طولانی (Long addressing)
• آدرس دهی دهی اندیس دار (Index Addressing)
آدرس دهی ثبات:
در 8051 هشت ثبات با نام بانک ثبات وجود دارند که این ثبات ها به صورت تک تک با نام های R0-R7 شناخته می شوند تعدادی از دستور العمل های 8051 بر روی این ثبات ها کار می کنند این دستور العمل ها را دستور های با آدرس دهی ثبات گویند.البته چند دستور دیگر هم وجود دارند که فقط بر روی یک ثبات خاص عمل میکنند مانند ثبات های A,B و ثبات DPTR(همان اشاره گر داده) و بیت C (داده نقلی) ثبات PSW( کلمه وضعیت برنامه) این دستور العمل ها هم آدرس دهی ثبات را به کار گرفته اند.
مثالی از این نوع دستورات به صورت زیر است
ADD A,R0
INC DPTR
MUL AB
DIV AB
آدرس دهی مستقیم :
گفتیم که هر بایت (8 بیت) از حافظه میکرو به وسیله عددی منحصر به فرد که شماره ردیف آن بایت است مشخص می شود این عدد منحصر به فرد آدرس نام دارد . از این جهت می گوییم منحصر به فرد زیرا هیچ دو بایت از حافظه ی میکرو دارای یک آدرس نیستند!.
با استفاده از این آدرس می توان به کلیه مکانهای حافظه دسترسی داشت .آدرس دهی مستقیم از این آدرس استفاده می کند .
علاوه بر آدرس ، بیشتر مکان های حافظه دارای نام نیز هستند.برای مثال پورت یک، هم دارای آدرس 90H است و هم نام P1 را دارد . استفاده از هردو (نام یا آدرس) در برنامه نویسی مجاز است .
در برنامه نویسی هنگامی که عددی را بدون هیچ پیشوندی می نویسند نشان دهنده استفاده از آدرس دهی مستقیم است.
آدرس دهی غیر مستقیم :
آدرس دهی غیر مستقیم نیز از آدرس بایت مورد نظر استفاده می کند .تفاوت آن با آدرس دهی مستقیم این است که در آدرس دهی غیر مستقیم آدرس مکان حافظه ابتدا در یکی از ثبات های بانک ثبات قرار می گیرد وسپس ثبات مذکور به همراه پیشوند @( At sign) در دستور العمل استفاده می شود.
کاربرد این نوع آدرس دهی برای مواقعی است که آدرس یک متغیر بایستی در زمان اجرای برنامه ، نه در زمان نوشتن کد ، محاسبه شود و نیز هنگام استفاده از مکانهای متوالی حافظه نیز باید از آدرس دهی غیر مستقیم استفاده کنیم . در موارد بالا نمی توانیم از آدرس دهی مستقیم و ثبات استفاده کنیم زیرا این دو آدرس دهی در هنگام کامپایل برنامه به آدرس مکان حافظه نیاز دارند در حالی که ما آدرس مکان حافظه را نمی دانیم .برای فهم بیشتر مطلب دو دستور زبر را در نظر بگیرید:
MOV R0,#90h
MOV @R0,A
دستور اول عدد 90 در مبنای شانزده زا در ثبات R0 قرار می دهد – به علامت #( number sign) قبل از عدد توجه کنید .عدد 90h آدرس پورت یک می باشد . دستور دوم به میکرو دستور می دهد تا محتوای ثبات A را در آدرسی که در R0 است( یا مکانی که R0 به آن اشاره می کند ) قرار بده .
جمله بالا در مفاهیم برنامه نویسی به نام اشاره گر معروف است . اشاره گر متغیری است که آدرس مکانی از حافظه را در خود نگه می دارد .در این دستور @R0 معادل همان P1 است .
آدرس دهی فوری یا بلافصل :
در صورتی که بخواهیم یک عدد ثابت – نه یک آدرس – را در مکانی از حافظه قرار دهیم از آدرس دهی فوری استفاده می کنیم .دستور اول در مثال قبلی نوعی از آدرس دهی فوری بود . مشخصه ی آدرس دهی فوری استفاده از پیشوند # قبل از عدد است .
در صورتی که در یک دستور از عددی استفاده کنیم اگر عدد بدون پیشوند باشد نوع آدرس دهی مستقیم است و در صورتی که عدد پیشوند # داشته باشد آدرس دهی فوری خواهد بود .به این دو دستور توجه کنید تا این جمله را بهتر متوجه شوید:
MOV A,#90h
MOV A,90h
دستور اول عدد 90 در مبنای شانزده را در ثبات A قرار می دهد . بعد از اجرای دستور مطمئن هستیم که محتوای ثبات A ، 90h است . دستور دوم مقداری را که در آدرس 90h حافظه است در ثبات A قرار می دهد یادآوری می کنم که 90h آدرس پورت یک است .بنابراین هر عددی که بر روی پورت یک قرار داشته باشد در درون ثبات A قرار خواهد گرفت .و ما از مقدار این عدد هیچ اطلاعی نداریم .
در برنامه نویسی میکرو می توان از مبنا های عددی مختلف ستفاده کرد . این کار با اسفاده از نوشتن عدد و نوشتن مشخصه ی عدد درست بعد از آن ، به عنوان پسوند (در سمت راست عدد) صورت می گیرد .
مشخصه ی مبنا های عددی به صورت زیر است:
B برای مبنای دودویی یا binary
D برای مبنای دهدهی یاdecimal
H برای مبنای شانزدهی یا hexadecimal
در صورتی که قصد استفاده از مبنای ده را داشته باشیم می توانیم از پسوند D صرفنظر کنیم مبنای ده پیش فرض کامپایلر است .
استفاده از تمامی مطالب سایت تنها با ذکر منبع آن به نام سایت علمی نخبگان جوان و ذکر آدرس سایت مجاز است
استفاده از نام و برند نخبگان جوان به هر نحو توسط سایر سایت ها ممنوع بوده و پیگرد قانونی دارد
vBulletin® v4.2.5, Copyright ©2000-2025, Jelsoft Enterprises Ltd.