طراحی کنترلر، مدارت دلخواه، پروژه ها و تمرینات درس میکروکنترلرها
خروجی سه کاناله با کنترل سرعت به صورت مجزا، دو کلید افزایشی و کاهشی برای کنترل سرعت در هر کانال، فرکانس های مختلف و ثابت برای هر کانال، جریان خروجی بیش از 10 آمپر و ولتاژ بیش از 30 ولتدر این پروژه با استفاده از یک ساعت نجومی و محاسبات ریاضی، دو عدد سروو موتور یکی در جهت XY و دیگری در جهت Z پنل خورشیدی را به صورت اتوماتیک در موقیعتی قرار می دهید که بیشترین تابش خورشید را دریافت کند.با استفاده از میکروکنترلر Atmega8‌، سنسور دیجیتال دما DS18B20 و LCD‌ متنی شما به راحتی می توانید کولر خانه تان را توسط کنترل تلویزیون و کلید های تعبیه شده، در مد های مختلفی برنامه ریزی کنید، از ویژگی آن می توان به کاهش مصرف انرژی در کولرها آبی اشاره نمود.یک سیستم امنیتی که دارای یک کاربر اصلی می باشد و توسط این کاربر می توان کاربرهای متعددی با پسورد های مجزا تعریف نمود. می توان تا 100 کاربر و 100 پسورد مختلف را تعریف، و در قسمت ورود هر یک از اعضاء که نام کاربری و رمز عبور خود را بدرستی وارد کند یک رله به همراه LED روشن خواهد شد.این پروژه یک مدار گیرنده رادیویی 433 یا 315 مگاهرتز می باشد که قابلیت تعریف و ذخیره سازی انواع ریموت کنترل هایی از قبیل (ریموت دزدگیر ماشین، پارکینگ، بالابر و ...) را دارد. با نگه داشتن یک میکروسوئیچ و فشار دادن یکی از کلید های ریموت به مدت 1 ثانیه کد شناسایی ریموت مورد نظر آشکار و سپس در حافظه ذخیره می شود و می توان با چهار کلید ریموت (کلیدهای A,B,C,D) چهار رله را روشن و خاموش کرد.
پروژه کنترل دور موتور با PWM و جریان خروجی بالا با avr

MCP-19

پروژه کنترل دور موتور با PWM و جریان خروجی بالا با avr
پروژه کنترلر پنل خورشیدی با استفاده از ساعت نجومی

MCP-25

پروژه کنترلر پنل خورشیدی با استفاده از ساعت نجومی
پروژه کنترل اتوماتیک کولرهای آبی با ریموت کنترل و avr

MCP-4

پروژه کنترل اتوماتیک کولرهای آبی با ریموت کنترل و avr
پروژه سیستم امنیتی با قابلیت تعریف کاربر و رمز عبور با avr

MCP-12

پروژه سیستم امنیتی با قابلیت تعریف کاربر و رمز عبور با avr
پروژه ریموت کنترل 433-315 مگاهرتز 4 کاناله با قابلیت لرنینگ

MCP-27

پروژه ریموت کنترل 433-315 مگاهرتز 4 کاناله با قابلیت لرنینگ

بررسی مجدد عملکرد 8088-8086

بررسی مجدد عملکرد 8088/8086

اینک بعد از بحث های مفصلی که در مورد ساختمان داخلی و عملکرد اجزاء آن داشتیم، می توان دوباره از دیدگاه کلی به بررسی عملکرد ریزپردازنده پرداخت و جمع بندی لازم را ارائه نمود. دیدیم که 8088/8086 از دو واحد اصلی EU و BIU تشکیل یافته است. پس از آنکه ریزپردازنده شروع به کار نمود اجرای برنامه ها از یک آدرس مشخص و از قبل تعیین شده آغاز خواهد شد. (بعدا خواهیم دید که اگر ریزپردازنده در ابتدای شروع به کار باشد، پس از عمل Reset می توان کنترل اجرای برنامه را به هر آدرسی ارجاع داد و این کار به راحتی با قرار دادن دستورالعمل پرش در ناحیه اختصاصی مربوط به Reset امکان پذیر است.)

عملکرد صف دستورالعمل ها

می دانیم که محتویات ثبات IP در هر زمان به دستورالعمل بعدی که باید از حافظه واکشی شود، اشاره می کند. بنابراین در اولین مرحله محتویات ثبات IP همراه با ثبات CS یک آدس فیزیکی حافظه را به دست خواهند داد که اولین دستورالعمل از آنجا واکشی شده و در داخل صف دستورالعمل ها قرار خواهد گرفت و پس از این عمل، مقدار IP بسته به طول دستورالعملی که واکشی شده، افزایش خواهد یافت.

از بخش سفارش طراحی هم اکنون درخواست خود را ثبت کنید
حل و تشریح کلیه تمرینات درس میکروکنترلر AVR
طراحی و ساخت مدارات دلخواه شما با میکروکنترلر AVR


صف دستورالعمل ها متشکل از یک سری ثبات است که به صورت صف FIFO عمل می کند یعنی اولین دستورالعملی که وارد این صف گردد، اول نیز از آن خارج خواهد شد. طول این صف در 8086 برابر شش بایت و در 8088 برابر چهار بایت است. تا موقعی که گذرگاه سیستم برای استفاده سایر عملیات، مورد نیاز نباشد عمل واکشی دستورالعمل ها از حافظه تا پُر شدن این صف همواره ادامه خواهد داشت و این عمل صرفنظر از اینکه آیا دستورالعمل بعدی که در حال واکشی شدن از حافظه است مورد نیاز خواهد بود یا نه، انجام می شود. یعنی تا موقعی که صف دستورالعمل ها خالی است و BIU نیز کنترل گذرگاه را بر عهده دارد، واکشی دستورالعمل ها از حافظه ادامه خواهد یافت.

از طرف دیگر به موازات آن، واحد EU دستورالعمل ها را از جلو این صف برداشته و آنها را پس از رمز گشایی اجرا خواهد نمود. اگر نیاز به انشعاب یا پرش وجود داشته باشد با اصلاح و تغییر مقدار IP (و در صورت لزوم CS) به آدرس مورد نظر، دستیابی به گذرگاه را به اطلاع واحد BIU خواهد رساند و دستورالعمل ها از محل جدید واکشی خواهند شد. البته واضح است که در این صورت دستورالعمل های قبلی (که قبلا واکشی شده و در صف قرار دارند و هنوز اجرا نشده اند) مورد نیاز نبوده و از بین خواهند رفت. و همچنین اگر نیاز به دستیابی داده وجود داشته باشد از طریق واحد BIU اخذ خواهد شد.

قبلا ذکر کردیم که دلیل این دو عمل موازی و همزمان، افزایش سرعت عملکرد و بهبود کارآیی ریزپردازنده است. البته اگرچه وقتی یک دستورالعمل انشعاب یا پرش اجرا می گردد، دستورالعمل های موجود در صف دستورالعمل ها دور ریخته می شوند و در این حالت عملا هیچ زمانی صرفه جویی نشده است ولی اگر به طور متوسط در کل طول برنامه آن را در نظر بگیریم این اعمال درصد کوچکی از زمان را به خود اختصاص می دهد.

مثلا دستورالعمل ضرب را در نظر بگیرید. این دستورالعمل برای عمل ضرب 8 بیتی حداقل نیاز به 70 پالس ساعت دارد، یعنی اجرای آن حداقل 70 پالس ساعت طول می کشد، در صورتی که خواندن یک کلمه 16 بیتی از حافظه فقط نیاز به چهار پالس ساعت دارد. یعنی در حین اجرای دستورالعمل ضرب مذکور که در واحد اجرا صورت می گیرد، واحد BIU به اندازه کافی فرصت دارد که دستورالعمل ها را از حافظه واکشی کرده و صف دستورالعمل ها را پُر کند.

بررسی عملکرد  ریزپردازنده 8088-8086
مثال 1) مقایسه ریزپردازنده 8088/8086 با ریزپردازنده مشابه و فاقد صف

در این مثال عملکرد ریزپردازنده 8088/8086 نسبت به ریزپردازندهء معمولی که فاقد صف دستورالعمل هاست ولی از نظر سرعت همانند آن است مورد مقایسه قرار می گیرد.می توان برای راحتی بحث، خود ریزپردازنده 8088/8086 را در نظر گرفت که فاقد صف دستورالعمل ها باشد. در شکل (1) نحوه عمل این دو نشان داده شده است.

 

در این شکل به عنوان مثال اجرای سه دستورالعمل در نظر گرفته شده و فرض بر آن است که ابتدا CPU در حال اجرای دستورالعملی بوده و بعد از آن عمل نوشتن انجام شده و سپس اجرای دستورالعمل دوم آغاز گردیده و بعد CPU عمل خواندن را انجام داده و سرانجام مشغول اجرای دستورالعمل سوم شده است.

همانگونه که در شکل مشخص شده، در حالت اول، یعنی ریزپردازنده بدون وجود صف دستورالعمل ها، گذرگاه آن فقط در بعضی زمان ها اشغال است و حداکثر دو اجرا صورت پذیرفته است. در حالی که در حالت دوم، یعنی وقتی ریزپردازنده دارای صف دستورالعمل ها باشد (8088/8086)، گذرگاه در تمام زمان ها اشغال بوده به طوری که یا واحد اجرا بدان نیاز داشته تا عمل خواندن و نوشتن صورت گیرد و یا آنکه واحد BIU مشغول واکشی دستورالعمل از حافظه بوده است. (لازم به ذکر است که در این مثال خاص، گذرگاه در تمام اوقات اشغال بوده است)

همانطوری که ملاحظه می شود در ریزپردازنده 8088/8086 علاوه بر آن که سه دستورالعمل مورد بحث اجرا شده، یک بایت از کدهای دستورالعمل بعدی نیز وارد صف شده و با این وجود زمان صرف شده کمتر از ریزپردازنده مشابه بدون صف است.

عملکرد ریزپردازنده 8086 در دستیابی داده 16 بیتی

این بحث خاص ریزپردازنده 8086 است و در مورد ریزپردازنده 8088 مورد ندارد. هر چند ریزپردازنده 8086 برای آدرس دهی 16 بیتی می تواند هم از آدرس های فرد و هم از آدرس های زوج شروع به آدرس دهی نماید، ولی چنانکه خواهیم دید برای آدرس دهی 16 بیتی، اگر آدرس از عدد زوج شروع شده باشد یک بار مراجعه به حافظه کافی است ولی اگر آدرس دهی از عدد فرد صورت گیرد، به ناچار دو بار باید عمل مراجعه به حافظه جهت واکشی صورت گیرد: (برای عمل نوشتن نیز همینطور است) یک بار مراجعه برای دستیابی هشت بیت کم ارزش داده و یک بار مراجعه به حافظه برای دستیابی به هشت بیت پرارزش آن. این بدان معنی است که اگر ذخیره کلمات (کلمه یعنی 16 بیت) از آدرس های زوج حافظه صورت گرفته باشد در زمان مراجعه به حافظه صرفه جویی زیادی وجود خواهد داشت.

نکته جالب توجه در واکشی دستورالعمل ها:

در مورد داده ها عملکرد ریزپردازنده 8086 به همان صورتی است که ذکر آن گذشت، ولی در واکشی دستورالعمل ها از حافظه، ریزپردازنده 8086 به طور اتوماتیک سعی در رفع این نقیصه می نماید. بدین معنی که اگر عمل واکشی دستورالعمل ها از حافظه، از آدرس های زوج انجام گیرد این عمل به طور عادی ادامه می یابد و ریزپردازنده قادر است به صورت کلمات 16 بیتی آنها را از حافظه واکشی کرده و در صف دستورالعمل ها قرار دهد و مسئله فوق در این مورد مشکلی ندارد. (توضیحات بیشتر در مقالات میکرو رایانه)ولی اگر از آدرس فرد حافظه عمل واکشی دستورالعمل انجام گیرد. (مثلا حالتی را فرض کنید که در اثر دستورالعمل پرش یا انشعاب به آدرس فرد حافظه ارجاع داده شده باشد.) در این حالت اگر عمل خواندن از حافظه همانند حالت قبل همواره به صورت کلمه به کلمه (16 بیتی) انجام گیرد، مقدار زیادی از وقت BIU تلف خواهد شد، چون دستورالعمل ها همواره از آدرس فرد واکشی شده و عملا برای هر هشت بیت نیاز به مراجعه به حافظه وجود خواهد داشت.

ریزپردازنده 8086 برای رفع این مشکل به این صورت عمل می نماید که وقتی واکشی دستورالعمل ها در اثر انشعاب یا غیره به آدرس فرد منجر شود، واحد BIU در ابتدا فقط یک بایت را واکشی می کند (به جای یک کلمه) و بعد از آن (که آدرس فرد تبدیل به آدرس زوج شد) شروع به واکشی دستورالعمل ها به صورت کلمه به کلمه می نماید. البته اگر در این حالت در صف دستورالعمل ها جایی برای وارد شدن 16 بیت نباشد تا خالی شدن آن صبر می نماید.

مثال 2) چگونگی پُر شدن صف دستورالعمل ها در ریزپردازنده 8086

این مثال مختص ریزپردازنده 8086 است و به 8088 مربوط نمی شود. فرض کنید که سه دستورالعمل توسط واحد BIU از حافظه واکشی شده و در صف دستورالعمل ها قرارگیرد. طول دستورالعمل اول را یک بایت و طول دستورالعمل دوم را دو بایت و طول دستورالعمل سوم را سه بایت در نظر بگیرید. در این صورت بسته به آنکه آدرس شروع این دستورالعمل ها در حافظه، فرد یا زوج باشد دو حالت مختلف پیش می آید که در شکل (2) نشان داده شده است.

چگونگی پُر شدن صف دستورالعمل ها در ریزپردازنده 8086

در شکل (ب) فرض شده که آدرس شروع دستورالعمل ها در حافظه، آدرس زوج باشد. در این صورت واحد BIU کدهای دستورالعمل ها را به صورت کلمه به کلمه خوانده و آنها را در صف قرار می دهد. بنابراین در اولین واکشی، هم دستورالعمل اول وارد صف خواهد شد (چون طول آن یک بایت است) و هم بایت اول از دستورالعمل دوم. در دومین واکشی بایت دوم دستورالعمل دوم و بایت اول دستورالعمل سوم وارد صف می شوند. و بالاخره در سومین واکشی دو بایت باقیمانده دستورالعمل سوم هم وارد صف می شوند.

در شکل (ج) فرض شده که آدرس شروع سه دستورالعمل مذکور در حافظه، آدرس فرد باشد. در این حالت CPU همان روشی را که بررسی کردیم اجرا می کند، یعنی ابتدا برای آنکه به آدرس زوج برسد فقط یک بایت را واکشی می کند، که در این مثال همان دستورالعمل اول نیز هست. پس از آن به آدرس های زوج دسترسی خواهد داشت و شروع به واکشی یک کلمه از آدرس زوج می نماید که در اینجا اتفاقا دو بایت مربوط به دستورالعمل دوم است. در واکشی سوم دوباره یک کلمه را از حافظه واکشی می نماید که در این مثال دو بایت اول دستورالعمل سوم است و البته هنوز دستورالعمل سه بایتی مورد نظر به طور کامل وارد صف نشده، ولی چون در صف دستورالعمل ها فقط به اندازه یک بایت جای خالی وجود دارد، واحد BIU صبر می کند تا دستورالعمل ها توسط واحد EU از صف برداشته شده و اجرا گردند و پس از خالی شدن صف (به اندازه یک بایت دیگر) کلمه بعدی را از حافظه واکشی خواهد کرد.

به این ترتیب استفاده از این روش واکشی دستورالعمل ها از حافظه، باعث افزایش سرعت واکشی دستورالعمل هایی خواهد شد که شروع آنها از آدرس فرد است. در حالت شروع از آدرس های زوج، روند به طور عادی و واکشی به صورت کلمه به کلمه انجام خواهد یافت.


منبع: microrayaneh.com

  منبع: www.picpars.com

  لطفا مقالات، آموزش‌ها و پروژه های خود را به آدرس ایمیل ارتباطی ایمیل نمائید تا آن را با نام خودتان در سایت منتشر کنیم.

به این مطلب امتیاز دهید

برچسب ها:
تاریخ ارسال جمعه، 15 مرداد ماه، 1389    نویسندهنویسنده: مدیریت    نظرات 2 نظر    بازدید بازدید [ 44981 ]   پرینتنسخه چاپی
فایل پی دی اف فایل پی دی اف   ارسال به دوستان ارسال به دوستان   

پروژه دربازکن الکترونیکی خانه قفل رمز با avr
کد پروژه: MCP-5
عنوان: پروژه دربازکن الکترونیکی خانه قفل رمز با avr
میکروکنترلر: AVR ==> زبان سی C (کدویژن)
قیمت: به جزئیات پروژه مراجعه نمایید
جزئیات سفارش خرید
این پروژه در اصل یک قفل امنیتی است که می توان جلوی درب اصلی منزل (در کنار آیفون) آن را نصب کرد. از امکانات آن می توان به موارد زیر اشاره نمود: نمایش دما از 125 تا 55- درجه سانتیگراد، نمایش ساعت دقیق، نمایش تاریخ شمسی همراه با روز هفته به صورت فارسی، نمایش تعداد فرصت های باقیمانده برای وارد کردن رمز صحیح، و قفل شدن سیستم به مدت 15 دقیقه در صورتی که 4 بار رمز اشتباه وارد شود. امکان تغییر رمز و تنظیم کردن ساعت و تاریج و ...
پروژه ماشین کنترلی بی سیم با avr
کد پروژه: MCP-20
عنوان: پروژه ماشین کنترلی بی سیم با avr
میکروکنترلر: AVR ==> زبان سی C (کدویژن)
قیمت: به جزئیات پروژه مراجعه نمایید
جزئیات سفارش خرید
این پروژه قادر خواهد بود که یک ماشین را به صورت بیسیم در جهات جلو و عقب و چپ و راست با سرعت دلخواه کنترل و همچین با کلید استپ ماشین را ثابت (ترمز) نماید.

مرتبط باموضوع :          مطالب بیشتر در این موضوع

 مروری بر فلش ديسک  [ چهارشنبه، 21 بهمن ماه، 1388 ] 4899 مشاهده
 ساختار سه باسه  [ چهارشنبه، 21 بهمن ماه، 1388 ] 4754 مشاهده
 سیگنال نوشتن write در ریزپردازنده های 8086 و 8088  [ جمعه، 15 مرداد ماه، 1389 ] 4377 مشاهده
 سیگنالها و پایه ها در 8088-8086  [ جمعه، 15 مرداد ماه، 1389 ] 4938 مشاهده
 ساختمان داخلی ریزپردازنده 8086/8088  [ جمعه، 15 مرداد ماه، 1389 ] 63401 مشاهده
نام شما: فتانه جوانمرد
ایمیل شما: fatanejavanmard67@yahoo.com
در مورخه : دوشنبه، 8 خرداد ماه، 1391

سایتتون خیلی پر باره . لطفا به من کمک کنید . من یه برنامه به زبان اسمبلی واسه پردازنده 8086 می خواهم. لطفا کمکم کنید . خواهش می کنم . اصلا تو اینترنت پیدا نمی شه

ارسال جوابیه

نام شما: سید محسن قاسمیان
ایمیل شما:
در مورخه : دوشنبه، 8 خرداد ماه، 1391توسط
(مشخصات کاربر SMGH-admin | ارسال پیغام شخصی)

سلام

متاسفانه کمتر کسی پیدا میشه با اسمبلی کار کنه اون هم برای 8086 و ما از این بابت شرمنده ایممخالفم

ارسال جوابیه

 
نام شما: [ کاربر جدید ]

نام شما (ضروری): 
ایمیل شما : 
نظر:
کد امنیتی
کد امنیتی

  [ بازگشت ]