مشاهده پست های بی پاسخ | مشاهده موضوعهای فعال تاریخ امروز یکشنبه 19 نوامبر, 2017 6:21 am



پاسخ به موضوع  [ 19 پست ]  برو به صفحه قبلی  1, 2, 3, 4
 آموزش گام به گام میکروکنترلر 8051 
نویسنده پیام
آواتار کاربر

عضو: جمعه 07 مارس, 2008 1:15 pm
پست ها: 18
پست آشنايي با پایه های تراشه ميكروكنترلر 8051
با بررسي شكل ملاحظه مي‏ شود كه از 40 پايه، جمعاً 32 پايه براي چهار پورت P1 ، P2 ، P3 ، P4 كنار گذاشته شده ‏اند. هر كدام از پورت‏‏ ها 8 پايه را استفاده می کنند (پورتها 8 بیتی هستند). همه پورت‏ها پس از Reset به صورت خروجي در مي ‏آيند و آماده استفاده به عنوان خروجي هستند. براي استفاده از هريك از پورت‏ها به عنوان ورودي بايد آن‏ها را برنامه ‏ريزي كرد.
ضمیمه:
8051Pins.jpg


برای مشاهده تصاویر و دانلود فایل های ضمیمه ، لازم است در سایت ثبت نام کرده و با نام کاربری خود وارد شوید. در حال حاضر ثبت نام در سایت رایگان است.

_________________

گردآورنده: المیرا جلالی
تدوین و آماده سازی مطالب : به وسیله همکاران سایت میکرو رایانه
تمام حقوق این اثر متعلق به سایت میکرورایانه است
استفاده و نقل از این مطالب فقط با ذکر نام سایت میکرو رایانه همراه با لینک آن آزاد است.


شنبه 26 آوریل, 2008 7:20 pm
مشخصات شخصی
آواتار کاربر

عضو: جمعه 07 مارس, 2008 1:15 pm
پست ها: 18
پست آشنايي با پورت‏هاي ميكرو كنترلر 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 براي وقفه و ديگر سيگنال‏ها كنار گذاشته شده‏ اند.

_________________

گردآورنده: المیرا جلالی
تدوین و آماده سازی مطالب : به وسیله همکاران سایت میکرو رایانه
تمام حقوق این اثر متعلق به سایت میکرورایانه است
استفاده و نقل از این مطالب فقط با ذکر نام سایت میکرو رایانه همراه با لینک آن آزاد است.


شنبه 26 آوریل, 2008 7:27 pm
مشخصات شخصی

عضو: جمعه 16 اکتبر, 2009 3:32 pm
پست ها: 1
پست Re: آموزش گام به گام میکروکنترلر 8051
::hand:: ::book::
عااااااااااااااااااالي بود
فداي تو
::conference:: ::conference:: ::conference::


محسن اسنكي از شوشتر
دانشجوي مهندسي كامپيوتر-نرم افزار










توضيحات بيشتر





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


جمعه 16 اکتبر, 2009 3:59 pm
مشخصات شخصی

عضو: جمعه 22 جولای, 2011 11:18 am
پست ها: 1
پست Re: آموزش گام به گام میکروکنترلر 8051
با سلام
imageها رو نشون نمیده حتی با راست کلیک و show picture


جمعه 22 جولای, 2011 11:50 am
مشخصات شخصی
مشاهده پست های قبلی:  نمایش بر اساس  
پاسخ به موضوع   [ 19 پست ]  برو به صفحه قبلی  1, 2, 3, 4

افراد آنلاین

کاربران حاضر در این تالار: - و 4 مهمان


شما نمی توانید در این تالار موضوع جدید باز کنید
شما نمی توانید در این تالار به موضوع ها پاسخ دهید
شما نمی توانید در این تالار پست های خود را ویرایش کنید
شما نمی توانید در این تالار پست های خود را حذف کنید
شما نمی توانید در این تالار ضمیمه ارسال کنید

جستجو برای:
پرش به:  
cron
استفاده و نقل از مباحث سایت، فقط با ذکر منبع و لینک سایت میکرورایانه مجاز است.
Copyright © 2006 - 2010 MicroRayaneh - Powered by phpBB © phpBB Group
Valid CSS2 Valid XHTML 1.0
طراحی سایت : میکرو رایانه