دوست عزیز، به سایت علمی نخبگان جوان خوش آمدید

مشاهده این پیام به این معنی است که شما در سایت عضو نیستید، لطفا در صورت تمایل جهت عضویت در سایت علمی نخبگان جوان اینجا کلیک کنید.

توجه داشته باشید، در صورتی که عضو سایت نباشید نمی توانید از تمامی امکانات و خدمات سایت استفاده کنید.
صفحه 2 از 2 نخستنخست 12
نمایش نتایج: از شماره 11 تا 15 , از مجموع 15

موضوع: میکروکنترلر 8051

  1. #11
    کـــــــاربر فــــعال
    رشته تحصیلی
    کامپیوتر(مهندسی نرم افزار)
    نوشته ها
    18,304
    ارسال تشکر
    4,182
    دریافت تشکر: 19,008
    قدرت امتیاز دهی
    220
    Array

    پیش فرض پاسخ : میکروکنترلر 8051

    مقدمه‏ اي بر برنامه‏ نويسي اسمبلي در 8051 cpu فقط با سیستم اعداد دودويي كار مي ‏كند و سرعت قابل توجهي دارد. برنامه ‏اي كه از 0 و 1 ساخته شده باشد، برنامه به زبان ماشين خوانده مي ‏شود. در اوايل دوران كامپيوتر، برنامه‏ را به زبان ماشين مي ‏نوشتند ولی نهايتاً زبان‏ های اسمبلي به وجود آمد كه نمادی رمزي برای دستورات كد ماشين را فراهم نمود و علاوه بر آن ديگر ويژگي آن این بود که برنامه‏ نويسي را سريع ‏تر و كم خطاتر كرد.

    برنامه‏‏ هاي زبان اسمبلي بايد به وسيله برنامه ‏اي به نام اسمبلر به كد ماشين تبديل شود. زبان‏ اسمبلي، به زبان سطح پاييني اشاره مي ‏كند زيرا مستقيماً با ساختار دروني cpu سر و كار دارد. براي برنامه‏ نويسي به زبان ماشين، برنامه ‏نويس بايد همه ثبات‏هاي cpu و سايز هر كدام را همراه با ديگر جزئيات بداند.

    زبان‏هاي basic ، pascal ، c ، c++ ، java و ديگر زبان‏ها را زبان‏هاي سطح بالا مي ‏خوانند. زيرا برنامه ‏نويس نيازي به شناخت جزئيات cpu ندارد. در حالي كه براي ترجمه يك برنامه زبان اسمبلي به كد ماشين (گاهي آن را كد مقصد يا كد عمل هم مي ‏گويند) از اسمبلر استفاده مي ‏شود. زبان‏هاي سطح بالا به وسيله كامپايلر به كد ماشين تبديل مي ‏گردند.
    شنبه : یارب العالمین 1شنبه : یا ذاالجلال والاکرام
    2شنبه : یا قاضی الحاجات 3شنبه : یاارحم الراحمین
    4شنبه : یا حی یاقیوم 5شنبه : لا اله الا الله الملک الحق المبین
    جمعه : اللهم صل علی محمد وال محمد وعجل فرجهم

  2. کاربرانی که از پست مفید آبجی سپاس کرده اند.


  3. #12
    کـــــــاربر فــــعال
    رشته تحصیلی
    کامپیوتر(مهندسی نرم افزار)
    نوشته ها
    18,304
    ارسال تشکر
    4,182
    دریافت تشکر: 19,008
    قدرت امتیاز دهی
    220
    Array

    پیش فرض پاسخ : میکروکنترلر 8051

    ساختار زبان اسمبلي در يك دستور زبان اسمبلي يك «نماد رمزي» و به دنبال آن يك يا دو عملوند قرار مي ‏گيرند. عملوندها اقلام داده ‏هايي هستند كه بايد دستكاري شوند و «نماد رمزي» فرمان‏ها به cpu مي ‏باشند و به آن دستور مي ‏دهند كه با اقلام مذكور چه كاري بكند.

    دستورات به cpu كار مورد نظر را دستور مي‏ دهند و رهنمون‏ ها (يا شبه دستورات) به اسمبلر جهت مي ‏دهند. مثلاً org به اسمبلر مي‏گويد تا كد عمل را در مكان حافظه قرار دهد (شروع برنامه) و end مي‏گويد كه انتهاي كد مبدا فرا رسيده (انتهاي برنامه). به بيان ديگر يكي از آن‏ها شروع و ديگري پايان برنامه را مشخص مي ‏كنند.

    يك دستور اسمبلي از چهار ميدان تشكيل شده است:

    1. ميدان برچسب به برنامه اجازه مي ‏دهد تا به وسيله يك نام به يك خط از كد ارجاع داده شود. ميدان برچسب نبايد داراي بيش از يك تعداد معين كاراكتر باشد.

    2. ميدان ‏هاي نماد رمزي زبان اسمبلي به همراه عملوندها كار واقعي برنامه را انجام مي‏ دهند.

    3. ميدان توضيح با يك ″؛″ آغاز مي ‏شود. توضيحات ممكن است در انتهاي هر خط و يا در يك خط جداگانه باشند. توضيحات اختياري هستند.

    4. سمیکلن : هر برچسبي كه به يك دستور اشاره كند بايد با ″:″ دنبال شود.

    نکته: برای رهنمون‏ها هيچ كد ماشيني توليد نمي شود و فقط به وسيله اسمبلر مورد استفاده قرار مي ‏گيرند، در حالي كه دستورات جهت اجرا در cpu به كد ماشين تبديل مي ‏شوند.
    شنبه : یارب العالمین 1شنبه : یا ذاالجلال والاکرام
    2شنبه : یا قاضی الحاجات 3شنبه : یاارحم الراحمین
    4شنبه : یا حی یاقیوم 5شنبه : لا اله الا الله الملک الحق المبین
    جمعه : اللهم صل علی محمد وال محمد وعجل فرجهم

  4. #13
    کـــــــاربر فــــعال
    رشته تحصیلی
    کامپیوتر(مهندسی نرم افزار)
    نوشته ها
    18,304
    ارسال تشکر
    4,182
    دریافت تشکر: 19,008
    قدرت امتیاز دهی
    220
    Array

    پیش فرض پاسخ : میکروکنترلر 8051

    اسمبل كردن و اجراي يك برنامه در 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″ به وسيله اسمبلر ايجاد مي ‏شوند.
    شنبه : یارب العالمین 1شنبه : یا ذاالجلال والاکرام
    2شنبه : یا قاضی الحاجات 3شنبه : یاارحم الراحمین
    4شنبه : یا حی یاقیوم 5شنبه : لا اله الا الله الملک الحق المبین
    جمعه : اللهم صل علی محمد وال محمد وعجل فرجهم

  5. کاربرانی که از پست مفید آبجی سپاس کرده اند.


  6. #14
    کـــــــاربر فــــعال
    رشته تحصیلی
    کامپیوتر(مهندسی نرم افزار)
    نوشته ها
    18,304
    ارسال تشکر
    4,182
    دریافت تشکر: 19,008
    قدرت امتیاز دهی
    220
    Array

    پیش فرض پاسخ : میکروکنترلر 8051

    آشنايي با پورت‏هاي ميكرو كنترلر 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 براي وقفه و ديگر سيگنال‏ها كنار گذاشته شده‏ اند.
    شنبه : یارب العالمین 1شنبه : یا ذاالجلال والاکرام
    2شنبه : یا قاضی الحاجات 3شنبه : یاارحم الراحمین
    4شنبه : یا حی یاقیوم 5شنبه : لا اله الا الله الملک الحق المبین
    جمعه : اللهم صل علی محمد وال محمد وعجل فرجهم

  7. #15
    کـــــــاربر فــــعال
    رشته تحصیلی
    کامپیوتر(مهندسی نرم افزار)
    نوشته ها
    18,304
    ارسال تشکر
    4,182
    دریافت تشکر: 19,008
    قدرت امتیاز دهی
    220
    Array

    پیش فرض پاسخ : میکروکنترلر 8051

    اولین ریز پردازنده ای که با موفقیت عملی به بازار عرضه شد محصول شرکت اینتل در سال 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 صرفنظر کنیم مبنای ده پیش فرض کامپایلر است .
    شنبه : یارب العالمین 1شنبه : یا ذاالجلال والاکرام
    2شنبه : یا قاضی الحاجات 3شنبه : یاارحم الراحمین
    4شنبه : یا حی یاقیوم 5شنبه : لا اله الا الله الملک الحق المبین
    جمعه : اللهم صل علی محمد وال محمد وعجل فرجهم

  8. 2 کاربر از پست مفید آبجی سپاس کرده اند .


صفحه 2 از 2 نخستنخست 12

اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

موضوعات مشابه

  1. آموزشی: روبات مسیر یاب - دنبال کننده خط
    توسط moji5 در انجمن رباتیک ، مکاترونیک
    پاسخ ها: 12
    آخرين نوشته: 22nd June 2011, 10:53 AM
  2. دانلود کتاب الکترونیکی آموزش سریع میکروکنترلر avr
    توسط آبجی در انجمن کتاب های مکانیک
    پاسخ ها: 0
    آخرين نوشته: 25th February 2010, 10:33 PM
  3. مقاله: معرفی میکروکنترلر 8051
    توسط diamonds55 در انجمن بخش مقالات سخت افزار
    پاسخ ها: 0
    آخرين نوشته: 13th May 2009, 08:29 AM
  4. میکروکنترلر چیست؟
    توسط ریپورتر در انجمن منابع و جزوات
    پاسخ ها: 0
    آخرين نوشته: 5th April 2009, 03:12 PM
  5. معرفی: معرفی میکروکنترلر 8051
    توسط diamonds55 در انجمن اخبار و معرفی جدیدترین سخت افزارها
    پاسخ ها: 0
    آخرين نوشته: 22nd February 2009, 05:01 AM

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •