logo1398

با اعطای مدرک بین المللی سازمان فنی و حرفه ای

مرکز آموزش تخصصی و فوق تخصصی نصب و تعمیرات ماشین های اداری و سخت افزار کامپیوتر


ثبت نام  آنلاین    شهریه دوره ها 

چگونه میشود دوتکه برنامه را به طور همزمان در یک میکروکنترلر اجرا کرد!

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

حال نکاتی وجود دارد که می توان عمل اجرای هم زمان را شبیه سازی کرد. به طور مثال شما می خواهید یک LED را هر 20 ثانیه یک بار برای لحظه ای روشن و خاموش کنید. همزمان هم می خواهید متنی را بر روی یک LCD نمایش دهید و متن حتما باید متحرک باشد. اگر برنامه به شکل زیر باشد فکر می کنید چه اتفاقی می افتد؟
for ( حلقه ای باشد که زمان 20 ثانیه را تولید کند)
PORTA.0 = 1; //با این دستور ال ای دی روشن می شود
PORTA.0 = 0; //با این دستور ال ای دی خاموش می شود
این قسمت دستوراتی باشد که باعث شود متن روی LCD یکی به سمت راست شیفت پیدا کند.
;
PORTA.0 = 1; //با این دستور ال ای دی روشن می شود
PORTA.0 = 0; //با این دستور ال ای دی خاموش می شود
متوجه فرق این حالت با قسمت قبلی شدید؟ بله زمان تاخیر چرخش متن روی LCD از 20 ثانیه به 2 ثانیه کاهش یافت!!!! حتی شما می توانید با تکنیک های برنامه نویسی این اعمال همزمان را به حدی کوچک کنید که اصلا به چشم نیاید. ( حتی در حد میکرو ثانیه!!! )
اما میکروکنترلرهای اقلب قابلیتی دارند که کار شما را بسیار آسان می کند. شاید دوستانی باشند که روش قبل به ذهنشان نرسیده باشد ، یا اینکه نتوانند مدت زمان زیادی را صرف یافتن روشی مانند تکه برنامه قبل کنند.
این قابلیت به Intrrupt یا وقفه نام گذاری شده است. در تعریف وقفه این طور می توانم بگویم که : فرض کنید شما در حال آشپزی کردن باشید!!! شاید بپرسید آشپزی چه ارتباطی به وقفه و میکروکنترلر دارد! در همین حال تلفن شما زنگ بخورد. شما مجبور به چه کاری هستید؟ بله از آشپزی دست کشیده و به سراغ تلفن بروید و آن را پاسخ دهید. این نکته هم در اینجا گوش زد کنم که تلفن شما بی سیم نبوده و از آشپزخانه دور است. ( یعنی همزمان نمی توانید هم صحبت کنید و هم آشپزی )
کار وقفه دقیقا شبیه به زنگ خوردن تلفن است. یعنی میکروکنترلر پس از اطلاع از وقفه ، بر اساس اولویت کار ، یا باید برنامه اصلی ( آشپزی ) را رها کرده و برنامه وقفه ( پاسخ به تلفن ) را اجرا نماید. یا اینکه اگر برنامه اصلی پر اهمیت تر باشد ( غذا در حال سوختن باشد ) به وقفه ( زنگ تلفن ) توجه نکرده و به کار خود ادامه دهد.
حال راه حل مثال قبلی به این صورت است که : ما از تایمرهای داخل میکروکنترلر استفاده می نماییم و این بار وقفه تایمرها را نیز فعال می کنیم. تایمر را راه اندازی کرده و به سراغ چرخش متن روی LCD می رویم. هر زمان که 20 ثانیه به پایان رسید وقفه ایجاد شده و میکروکنترلر برنامه اصلی ( چرخش متن روی LCD ) را رها کرده و LED ها را برای لحظه ای روشن و خاموش می نماید. سپس دوباره تایمر را از نو بارگذاری کرده و وقفه را خاموش می کند و دوباره به برنامه اصلی یعنی حرکت دادن متن روی LCD باز می گردد.
توجه کنید که دستورات داخل برنامه وقفه معمولا کوتاه است. چون در این صورت باعث ایجاد خلل و تاخیر زیاد در برنامه اصلی می شود. در مثال آشپزی اگر ما مدت زمان زیادی با تلفن صحبت کنیم هم تلفن می سوزد و هم دیگر برای شام غذا نخواهیم داشت!!!
امیدوارم از این مثال رضایت کافی داشته باشید. سعی کردم این مثال را به زبان ساده بنویسم که کسانی که با برنامه نویسی هم آشنایی ندارند آن را متوجه شوند. توضیحات دیگری در مورد نحوه برنامه نویسی نمی دهم. چون می توانید کدهای اصلی را به راحتی در اینترنت جستجو کرده و آن ها را دریافت نمایید.

ستاره غیر فعالستاره غیر فعالستاره غیر فعالستاره غیر فعالستاره غیر فعال
 

دوره های آموزشی ما

اطلاعات تماس

آدرس : تهران - میدان ولی عصر - مرکز تجارت ایرانیان - طبقه نهم - واحد پنج

ساعت کاری شرکت : 9 صبح تا 8 شب
کلاس های روز جمعه ویژه کارمندان و دوره های فشرده دایر میباشد 

phone325 3

04 92 92 88 -021

05 92 92 88 -021

91 14 847- 0912

92 14 847- 0912 

 آموزش شارژ کارتریج, اموزش شارژ کارتریج, آموزش شارژ کارتریج لیزری, آموزش شارژ کارتریج جوهر افشان, آموزش شارژ, آموزش شارز پرینتر, آموزش شارژ سامسونگ, آموزش شارژ اچ پی, آموزش شارژ کاتریج, اموزش شارژ کاتریج, آموزش شارژ کارتریج, اموزش شارژ کارتریج, آموزش شارژ کردن کارتریج, آموزش شارژ کارتریژ, آموزش شارژ کارتریج لیزری, آموزش شارژ کارتریج جوهر افشان, آموزش شارژ کارتریج پرینتر, آموزش شارژ کارتریج لیزری , آموزش شارژ کاتریج , آموزش شارژکاتریژ , آموزش شارژ انواع کارتریج , آموزش تخصصی شارژ کارتریج,آموزش شارژ پرینتر , تونر,کارتریج لیزری, آموزش تعمیرات فتوکپی,اموزش تعمیرات چاپگر,آموزش تعمیرات پرینتر,اموزش تعمیرات پرینتر, آموزش تعمیرات دستگاه کپی شارپ,آموزش تعمیر کپی آنالوگ و دیجیتال,آموزش تعمیرات دستگاه کپی ریکو,آموزش تعمیرات کپی آفیشیو,آموزش تعمیرات آنالوگ و دیجیتال,آموزش تعمیرات دستگاه کپی توشیبا آنالوگ و دیجیتال,آموزش تعمیرات دستگاه کپی,آموزش تعمیر دستگاه کپی و فتوکپی,آموزش تعمیرات کپی رنگی, دوره آموزشی,آموزش تعمیرات,آموزش تعمیرات فنی,آموزش خدمات,آموزش تعمیر,اموزش تعمیر,دوره های آموزشی,فنی کار,امید,رحمانی,امید رحمانی,دوره اموزش,اموزشگاه فنی,فنی و حرفه ای, آموزش الکترونیک, دوره آموزش الکترونیک, آموزش الکترونیک, الکترونیک پایه, آموزش الکترونیک تخصصی, طراحی برد الکترونیک،آموزش طراحی برد, مهندسی معکوس, آموزش مهندسی معکوس, آموزش الکترونیک مخصوص بازارکار, آموزش الکترونیک اس ام دی, آموزش الکترونیک smd, آموزش نقشه خوانی, آموزش کار با هیتر, الکترونیک, برق, طراحی, مدار, ای وی ار, ال ای دی, ابزار دقیق, پی ال سی, plc, اینورتر, inverter, منبع تغذیه, سوئیچینگ, رله, خازن, ماژول, smd, led, طراحی برد صنعتی, پروژه دانشگاهی, دوره تخصصی آموزش نصب دوربین مدار بسته,آموزش نصب دوربین مداربسته, دوره آموزش نصب دوربین مدار بسته,آموزش نصب دوربین های مداربسته, آموزش تخصصی نصب دوربین مدار بسته,آموزش دوربین مداربسته,آموزشگاه,آموزش,نصب, آموزش تعمیر انواع دوربین های مدار بسته,آموزش تعمیرات دوربین های مدار بسته,قوی ترین مرکز آموزش تعمیرات دوربین مخفی,بهترین مرکز آموزش تعمیر دوربین مخفی در تهران,قدرتمندترین مرکز آموزش تعمیر دوربین های مدار بسته,آموزش تعمیر تخصصی دوربین های مدار بسته