دانلود تحقیق میکرو کنترلر ها

Word 182 KB 31866 41
مشخص نشده مشخص نشده کامپیوتر - IT
قیمت قدیم:۲۴,۰۰۰ تومان
قیمت: ۱۹,۸۰۰ تومان
دانلود فایل
  • بخشی از محتوا
  • وضعیت فهرست و منابع
  • اولین خانواده میکرو کنترلر ها با نام 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) سیستم را رست میکند .

    در صورتی که این پایه 5 ولت به آن اعمال شود برنامه از اولین دستور مجددا اجرا می شود .

    این دکمه مشابه دکمه ریست کامپیوتر می باشد .

    حافظه ی8051: بانک های ثبات : 8051 دارای 8 ثبات با نام های R0-R7 می باشد دستوراتی که از این ثبات ها استفاده می کنند نسبت به دستورات مشابه خود که از انواع دیگر آدرس دهی استفاده می کنند دارای تعداد بایت کمتر و سرعت بیشتری هستند بنابراین در صورتی که از داده ای به طور متناوب در برنامه استفاده می کنیم بهتر است که این داده در یکی از ثبات های بانک ثبات قرار گیرد .

    در 8051 ، 4 بانک ثبات وجود دارد که در هر لحظه از زمان می توان فقط یکی از این بانکها را فعال و از آن استفاده نمود .برای فعال کردن یک بانک ثبات از دو بیت با نامهای PSW.3, PSW.4 استفاده می کنیم ان دو بیت جزئ ثبات PSW هستند.

    ثبات PSW: مخفف Program status word یا کلمه وضعیت سیستم است .

    این ثبات در هر سیکل ماشین بسته به وضعیت و جواب برنامه تغییر می کند و برنامه نویس می تواند بر اساس این تغییرات منطق برنامه را تغییر دهد .PSW مشابه Flag های ریز پردازنده های سیستم های میکرو کامپیوتری می باشد.

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

    شکل زیر نرم افزار keil را نشان می دهد با فرض اینکه ما با زبان اسمبلی 8051 آشنا هستیم برنامه خود را در ادیتور مانند keil یا Notepad می نویسیم و سپس به وسیله یک کامپایلر مانند ASM51 که کامپایلر اینتل برای 8051 است برنامه را به فایل HEX تبدیل می کنیم .( keil خود دارای کامپایلر است و فایل Hex را تولید می کند) فایل Hex درست مانند فایلهای EXE در کامپیوتر است یعنی یک فایل اجرایی برای میکرو کنترلر است .

    بعد از کامپایل کردن باید برنامه توسط یک پرو گرامر ( وسیله ای که IC8051 را برنامه ریزی می کند) بر روی IC قرار گیرد بیت OV: این بیت با نام Over flow (سر ریز ( نام دارد .اگر هنگام جمع یا تفریق حسابی (اعداد علامتدار) نتیجه از +127 بیشتر یا از -127 کمتر شود این بیت 1 می شود.

    بعد از کامپایل کردن باید برنامه توسط یک پرو گرامر ( وسیله ای که IC8051 را برنامه ریزی می کند) بر روی IC قرار گیرد .پرو گرامر ها به صورت آماده در فروشگاههای قطعات الکترونیک موجود هستند .

    شما هم می توانید پرو گرامر خود را بسازید .در قسمت دانلود فایل سایت می توانید schematic پرو گرامر ) programmer 8051 , 8052) را download کنید و خودتان programmer را بسازید پیشنهاد می کنم حتما این کار را انجام دهید چون هم لذت کار عملی را خواهید دید و هم در هزینه صرفه جویی زیادی خواهید کرد (12 تا 15 هزار تومان!).

    تشریح دستور العمل ها برای شروع برنامه نویسی با میکرو لازم است با دستورات پر کاربرد آن آشنا شویم .

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

    دستورالعمل های 8051 را بر اساس نوع عملکرد می توان به پنج گروه تقسیم کرد.

    • دستورالعمل های محاسباتی • دستورالعمل های منطقی • دستور العمل های انتقال داده • دستور العمل های بولی • دستور العمل های انشعاب برنامه نخست دستور العمل های محاسباتی : این مجموعه دستورالعمل ها شامل دستورالعمل های جمع و تفریق و کاهش وافزایش و ضرب و تقسیم 8 بیتی می باشند.

    دستور العمل ADD برای جمع کردن یک مقدار 8 بیتی با ثبات A مورد استفاده قرار می گیرد .

    عملوند اول این دستورالعمل ثبات A (انباره) می باشد .

    این دستورالعمل در 4 مود آدرس دهی مورد استفاده قرار می گیرد.

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

    در دستورالعمل های بالا عملوند های دوم (Rn,@Rn,#data,direct) سمبل هایی هستند که نشان دهنده نوع آدرس دهی می باشند .منظور از Rn هر کدام از ثبات های بانک ثبات است ،منظور از data هر عدد ثابت 8 بیتی می تواند باشدمنظور از diret عدد یا نامی است که نشان دهنده آدرس مکانی از حافظه باشد.

    مثال: دستور اول محتویات R0 را با ثبات A جمع و دوباره در A قرار می دهد دستور دوم محتویات آدرس90h حافظه (پورت یک) را با A جمع می کند و دوباره در A قرار می دهد .دستور سوم محتویات جایی که R0 به آن اشاره می کند را با A جمع کرده و در A قرار می دهد .و دستور چهارم آنچه را که در A قرار دارد با عدد 10 دهدهی جمع می کندو نتیجه باز هم در A قرار می گیرد.

    حتما متوجه شده اید که نوع آدرس دهی در دستور اول ثبات ، دستور دوم مستقیم ، دستور سوم غیر مستقیم ، و در دستور چهارم فوری است.

    دستور دیگری برای جمع وجود دارد با سمبل ADC که مخفف ADD with Carry می باشد و به معنای جمع با رقم نقلی است عملکرد آن بدین صورت است که ابتدا مقدار بیت C (نقلی) با ثبات A جمع شده و سپسعملوند دوم هم به ثبات A اضافه می شود .

    این دستور هم مانند دستور ADD در چهار مود آدرس دهی بالا مورد استفاده قرار می گیرد.

    دستورالعمل تقسیم 8 بیتی : این دستور العمل مقدار موجود در ثبات A را بر مقدار موجود در ثبات B تقسیم می کند .

    خارج قسمت در ثبات A و باقیمانده عمل تقسیم در ثبات B ذخیره خواهد شد.

    فرض کنید که ثبات A حاوی مقدار 11 است و ثبات B حاوی مقدار 4 باشد پس از اجرای عمل تقسیم مقدار 2 در ثبات A و مقدار 3 در ثبات B ذخیره خواهد شد.

    یک دستور العمل تک عملوندی است این دستور عملوند خود را یک واحد افزایش می دهد .نکته ای که در مورداین دستور العمل باید به آن توجه کرد اینست که هیچ پرچمی بعد از اجرای دستور تغییر نخواهد کرد برای مثال اگر ثبات A حاوی مقدار #offh باشد بعد از اجرای این دستور مقدار A, 00 خواهد شد اما پرچم ov(over flow) تغییر نخواهد کرد.

    این دستور العمل در سه مود آدرس دهی ثبات ، مستقیم و غیر مستقیم عمل می کند.

    دستورالعمل کاهش: این دستور العمل یک عملوند دارد .پس از اجرای دستور از محتوای عملوند یک واحد کم می شود.

    توجه : دستور DEC DPTR وجود ندارد و باید برای کاهش DPTR دو ثبات DPLو DPH را جداگانه کاهش دهیم .

    اگر ثبات A حاوی مقدار 10 باشد پس از اجرای DEC A ثبات A حاوی مقدار 9 خواهد بود .دستور العمل ضرب : این دستور العمل محتوای ثبات A را در ثبات B ضرب می کند نتیجه ضرب بدین گونه ذخیره می شود .بایت پایین حاصلضرب در ثبات A و بایت بالای حاصلضرب در ثبات B ذخیره می شود.

    دستور العمل تفریق: دستور SUBB برای ع تفریق یک مقدار 8 بیتی از ثبات A مورد استفاده قرار می گیرد.این دستور مخفف(Sub with Barrow) است و عملوند دوم را به اضافه ی Carry از ثبات A کم می کند اگر در جریان تفریق از بیت هشتم نیاز به رقم قرضی باشد Carry یک می شود و در غیر اینصورت صفر می شود.در زیر مود های آدرس دهی عمل تفریق آمده اند .

    مجموعه دستورالعمل های منطقی : دستور العمل های منطقی بر روی تک تک بیت ها اعمال منطقی ANDو OR وXOR را انجام می دهند دستورات چرخش و شیفت بیتی هم در زمره این دستورات هستند.

    در AND کردن ، نتیجه دو بیت زمانی یک است که هر دو بیت یک باشند.در OR کردن دو بیت نتیجه دو بیت زمانی صفر است کههر دو بیت صفر باشند در XOR کردن (یای انحصاری ) نتیجه هنگامی صفر است که هر دو بیت یا صفر باشند یا یک.

    XOR برای مکمل کردن بیت ها هم به کار می رود .نتیجه XOR یک بیت با بیت 1 مکمل آن خواهد بود و نتیجه XOR یک بیت با بیت 0 خود آن بیت را نتیجه خواهد داد.

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

    دستور اسمبلی که برای And کردن مورداستفاده قرار می گیرد ANL ( And Logic) است.

    دستور آخر یک دستور بیتی است یعنی بر روی یک بیت به تنهایی عمل می کند بقیه دستورات دستورات بایتی هستند.

    مثال: فرض کنید که پورت یک حاوی مقدار #01001111b است و همچنین در ثبات A هم مقدار باینری #00001010b را داشته باشیم پس از اجرای دستور العمل ANL A,P1 نتیجه به صورت زیر خواهد بود : و این مقدار در ثبات A قرار خواهد گرفت .

    توجه : ثبات A یک ثبات بیت آدرس پذیر است یعنی می توان به تک تک بیت ها به صورت مستقیم دسترسی داشت .نام دیگری که در برنامه های اسمبلی با آن بر خورد خواهید داشت ACC است که مخفف(Accomulator یا انباره) است با استفاده از ACC به همراه یک نقطه(DOT) و شماره بیت ثبات A می توان مستقیما بر روی آن بیت اعمال منطقی را انجام داد.برای مثال ACC.7 نشانگر آخرین بیت ثبات A است .

    بیت شماره هفت ثباتA را با Carry ،AND کرده و نتیجه در Carry قرار میگیرد .

    دستورات OR کردن و XOR کردن هم ساختاری مانند دستور ANL دارند فقط برای OR از ORL و برای XOR از XRL استفاده می کنیم .

    دستور دیگری هم با نام CPL وجود دارد که کارش مکمل کردن عملوند خود است .

    دستورات چرخشی : چهار دستور RR A, RL A,RLC A ,RRC A برای عملیات چرخشی مورد استفاده قرار می گیرند.

    RL A (Rotate Left A) بیت های ثبا A را یک واحد به طرف چپ چرخش می دهد بیت شماره هفت از ثبات خارج می و دوباره وارد بیت شماره صفر می شود.اگر ثبات A حاوی #10000001b باشد: RR A ( Rotate right A) ثبات را یک واحد به راست چرخش می دهددر دستورات چرخش بیتی که خارج می شود از طرف دیگر وارد ثبات می شود.

    RRC A و RLC A هم مشابه دستورات بالا هستند با این تفاوت که بیتی که از یک طرف خارج می شود وارد بیتCarry می شود و محتوای قبلی Carry از طرف دیگر وارد ثبات می گردد.

    میکرو کنترلر ها 5 (مجموعه دستورالعمل های 2) در ادامه مبحث بررسی دستور العمل های 8051 می رسیم به مبحث دستور العمل های انتقال داده .

    دستور العمل های انتقال داده به دو دسته دستور های RAM خارجی و دستور های RAM داخلی تقسیم می شوند .برای انتقال داده RAM داخلی از دستور استفاده می شود .این دستور داده را از مبدا به مقصد انتقال می دهد بدون اینکه نیاز به استفاده از انباره باشد دستیابی به RAM داخلی توسط آدرس دهی غیر مستقیم میسر است.

    دستور دیگری که در انتقال داده به کار می رود دستور xch است که باعث می شود محتویات انباره و مکانی از حافظه عوض شود .

    دستور مشابه این دستور دستور xchd است که باعث می شود فقط بایت های پایین دو عملوند با هم عوض شوند .

    مثال: فرض کنید ثبات A حاوی مقدار #04fh است و مقدار موجود در مکان 100 حافظه #03EH است : دستور اول 100 را در R1 ذخیره می کند .

    میخواهیم که از آدرس دهی غیر مستقیم استفاده کنیم استفاده از آدرس دهی مستقیم مستلزم به کار گیری ثباتی از بانک ثبات ، به عنوان اشاره گر است .

    دستور دوم محتوای A و مکان 100 حافظه رابا هم عوض می کند یعنی مقدار 3E در ثبات A و مقدار 4F در مکان 100 حافظه قرار می گیرد .

    دستور سوم باعث می شود که بایت های پایین دو مکان ، ثبات A و مکان 100 حافظه با هم جابه جا شوند پس از اجرای دستور مقدار 4E در مکان 100 و 3F در ثبات A ذخیره می شود.

    انتقال داده در RAM خارجی: در هنگام استفاده از RAM خارجی ، برای انتقال داده از آدرس دهی غیر مستقیم استفاده می کنیم .

    در اجرای اینگونه دستورات ثبات A به عنوان عملوند اول (برای ورود داده از RAM) یا عملوند دوم ( فرستادن داده به RAM) مورداستفاده قرار می گیرد .

    دستور انتقال داده برای RAM خارجی movx است .

    که در دو سیکل ماشین اجرا می شود.

    گاهی اوقات لازم است که در هنگام نوشتن برنامه یک سری اطلاعات را در ROM میکرو قرار دهیم این اطلاعات چون در داخل ROM (Read Only Memory) هتند فقط می توانند خوانده شوند .

    ما از دستور mov برای دسترسی به RAM داخلی میکرو استفاده می کردیم و از دستور movx برای دسترسی به RAM خارجی .

    برای دسترسی به این اطلاعات که در داخل ROM قرار گرفتا اند باید از دستور movc استفاده کنیم (انتقال ثابت) .

    برنامه یا کدی که ما می نویسیم در داخل ROM میکرو ذخیره می شود و جزء حافظه ی کد است .

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

    نمونه ای از استفاده از حافظه کد برای ذخیره داده هنگام استفاده از تکنیک جدول جستجو (lookup Table) است.

    دستور العمل های بیتی: حافظه مجموعه ای از بایت ها است.و بایت از 8 بیت ساخته شده است میکرو کنترلر توانائی به کارگیری دستورات بیتی رابرای تغییر بیتها یی که بیت آدرس پذیر هستند را دارد.

    این دستورات شامل دستورات انتقال بیت ودستورات منطقی و ست کردن بیت و پاک کردن بیت و ...

    هستند.

    برای اینکه بیت مشخصی را ست کنیم (مقدار آن را هر چه باشد به یک تغییر دهیم) از دستور SETB استفاده می کنیم.

    برای پاک کردن یک بیت( صفر را در آن قرار دهیم ) از دستور استفاده می کنیم .برای مکمل کردن یک بیت مشخص (اگر مقدار آن یک باشد به صفر تبدیل می شود و برعکس) از دستور استفاده می کنیم .دستور انتقال داده بیتی همان دستور mov است .

    دستور mov را قبلا برای انتقال یک بایت از حافظه نیز به کار بردیم حال چگونه تشخیص دهیم که یک دستور mov ، یک بایت از حافظه را انتقال می دهد یا یک بیت ؟

    جواب این است: در صورتی که عملوند اول دستور یک بایت باشد یا یک ثبات، دستور mov بایتی است و هنگامی که عملوند دستور یک بیت باشد دستور، بیتی است دستور های بیتی شامل دستورات منطقی ANLو ORL نیز هستند .که همان AND و OR منطقی می باشند .با این تفاوت که این دستورات بر روی دو تک بیت عمل می کنند : دستورات بیتی منطقی دستور XRL (XOR) را ندارند.

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

    دستورات پرشی به دو دسته تقسیم می شوند : 1 – پرشهای غیر شرطی 2- پرشهای شرطی انشعاب غیر شرطی : در این گونه انشعاب ها برنامه بدون چک کردن شرطی ، به قسمت دیگری از برنامه می پرد.

    این گونه پرشها با استفاده از مشتقات JMP و CALL استفاده می شود.

    ه نوع دستور JMP ( jump) وجود دارد .

    sjmp (short jump) برای پرش کوتاه (پرش نسبی با طول 127 بایت به جلو یا عقب ) و ljmp (long Jump) برای پرش طولانی و Ajmp برای پرش با آدرس دهی مطلق .

    پرش طولانی می تواند به هر کجای برنامه باشد و محدودیت فاصله ندارد (در یک صفحه 64 کیلو بایتی)اما برای پرش مطلق باید هم آدرس مبدا و هم آدرس مقصد در یک صفحه دو کیلو بایتی باشند.

    بسته به اختلاف آدرس مبدا و مقصد و همچنین صفحه دو کیلو بایتی که آدرس وبدا در آن قرار دارد از jmp مناسب استفاده می کنیم .فرضا ممکن است که اختلاف آدرس مبدا و قصد کمتر از یک کیلو بایت باشد اما آدرس مبدا در یک صفحه دو کیلو بایتی قرار داشته باشد و آدرس مقصد در یک صفحه دو کیلو بایتی دیگر قرار داشته باشد در این حالت اگر اختلاف دو آدرس کمتر از 127 باشد از sjmp و در غیر اینصورت از ljmp استفاده می کنیم .

    صفحات دو کیلو بایتی مورد بحث از آدرس های زیر شروع می شوند (0000و800hو1000hو1800hوf800h) نوع دیگر پرشهای غیر شرطی call است دستور Call برای فراخوانی زیر برنامه ها به کار می رود.زیر برنامه ها را در مقاله ای جدا گانه به زودی برسی خواهیم کرد.

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

    اولین دستورالعملی که بررسی می کنیم دستور JNB است (jump if not bit) پرش در صورتی که بیت مشخص شده یک نباشد .دستور JB هم با شرط مخالف وجود دارد Bit نام یا آدرس یک بیت است و address بر چسب یا آدرس مقصد پرش است از این دستور برای اجرای تاخیر تا یک شدن bit مشخص ، بسیار استفاده می شود(مثلا در عملیات تایمر ) دستور بعدی DJNZ است (decrease jump if not zero) ( یک واحد کم کن و در صورتی که صفر نبود بپر.)می توان از این دستوربرای اجرای حلقه به تعداد دفعات تکرار مشخص استفاده کرد (مشابه حلقه ی for در زبانهای برنامه نویس سطح بالا) شکل دستور بدین صورت است : عملوند1 می تواند یکی از ثبات های بانک ثبات یا آدرس یک بایت از حافظه باشد.

    دستور پرش شرطی پ کاربرد دیگر دستور CJNE(compare jump if not equal)مقایسه کن و بپر در صورتی که دو عملوند برابر نباشند.

    عملوند 1 و عملوند 2 دو مقداری هستند که با هم مقایسه می شوند.و Address مکانی است که در صورت عدم تساوی دو مقدار برنامه باید از آنجا ادامه پیدا کند .این شرط برای تعیین کوچکتر یا بزرگتر بودن عملوند ها از هم ، به کار می رود .

    آموزش میکرو کنترلر8051 قسمت 6(یک مثال ) تمرین و حل مسئله برای هر درسی به ماندگاری و فهم آن مطلب بیشتر ین کمک را می کند .

    برای حل هر مسئله ای راه های گوناگون و الگوریتم های متفاوتی ممکن است و جود داشته باشد .دیدن راه حل و الگوریتم دیگر برنامه نویسان و تحلیل برنامه آنها یکی از را ههای پرورش قوه " تشخیص راه حل است".

    در این مقاله یک برنامه مقدماتی و در عین حال جالب را با هم تحلیل می کنیم.

    برنامه ای بنویسید که از 4 بیت پایین پورت 3 یک عدد در مبنای دو را دریافت کندو آن را بر روی 7 – segment یا هفت پارچه ی متصل به پورت یک نشان دهد.برای مثال در صورتی که ورودی 0101 باشد خروجی نشان داده شده بر روی 7 –segment عدد 5 باشد.

    طراحی و حل چنین مداری مستلزم آشنایی با سخت افزار نیز می باشد .ابتدا سخت افزار لازم را بیان می کنیم.

    7-segment از هفت عدد LED خطی و یک عدد LED نقطه ای با نام dp (decimal Point) ساخته شده است .همانطور که می دانید LED یک دیود است که در حالت هدایت جریان الکتریکی از خود نور ساطع می کند .شکل یک LED در مدار به صورت زیر است .

    7-segment ها به دو صورت آندمشترک و کاتد مشترک در بازار موجودند .در صورتی که 7-segment کاتد مشترک باشد یعنی قسمت منفی LED به همدیگر متصل است و قسمت مثبت یا آند آنها به صورت جدا از هم است .

    برای روشن کردن یک LED معین از 7-seg کاتد مشترک ، باید کاتد به Ground و آند به VCC متصل شود.

    7-seg آند مشترک ، آند آن مشترک بوده و قسمت کاتد LED ها جدا از هم است برای کار کردن با این نوع7-seg قسمت مشترک به VCC متصل می شود و به پایه ی متناظر با LED که می خواهیم روشن کنیم ولتاژ صفر منطقی TTL اعمال می کنیم.

    7-segment دارای 10 پایه است که 5 پایه در بالا و 5 پایه در پایین قرار دارد .پایه های وسطی بالا و پایین پایه های مشترک هستند و این دو پایه به همدیگر متصلند لذا فقط یکی ازاین پایه ها را به VCC یا GND متصل می کنیم (بسته به نوع 7-seg که آند مشترک باشد یا کاتد مشترک) و بقیه پایه ها متناظر با LED های داخل PACKAGE می باشند.هر حرف پایه متناظر با LED با حرف همنام است.

    فرض کنید که می خواهیم تا عدد 2 را روی 7-seg نشان دهیم .برای این کار لازم است تا پایه های d,e,g,b,a را روشن کنیم و بقیه پایه ها خاموش باشندحال در صورتی که 7-seg آند مشترک باشد پایه ی مشترک به 5 ولت متصل می شود و پایه ای که می خواهیم روشن کنیم به آن صفر TTL می دهیم .

    تا اینجا باید فرق بین 7-seg آند مشترک و کاتد مشترک را فهمیده باشید!

    در این مثال ما از 7-seg آند مشترک استفاده می کنیم.

    اما قسمت نرم افزاری مسئله : نکته ای که در این مسئله دیده می شود این است هیچ فرمول و رابطه ای بین عدد باینری وارد شده و مقدار نما یشی آن وجود ندارد .

    مثلا عدد 0011 برابر 3 و عدد0001111 نمایش عدد 3 بر روی 7-seg است .

    ما در این مثا از lookup table استفاده می کنیم .

    در lookup table برای هر عدد معادل نمایشی آن بر روی 7-seg را در جایی ذخیره می کنیم و سپس با استفاده از برنامه به آن دسترسی پیدا می کنیم و معادل نمایشی آن را را بر روی پورت قرار می دهیم.

    جدول را بدین صورت می نویسیم: صفر به معنی روشن بودن LED مربوطه و یک به معنی خاموش بودن LED است.

    توجه : پایه ی a را به کم ارزش ترین بیت پورت متصل کنید و پایه ی g را به پر ارزش ترین بیت پورت متصل کنید.

    تحلیل برنامه بدین صورت است : ورودی :4 بیت که نشان دهنده عدد در مبنای دو است که از پورت 3 وارد می شود.

    خروجی :8 بیت پورت یک ، که باید با روشن کردن LED های مربوطه عدد وارد شده را نشان دهد.

    پردازش : 4 بیت ورودی با کدام یک از اعداد در داخل ستون اول جدول برابر است مقدار ستون دوم آن ردیف را به پورت یک ارسال کنیم.

    کد برنامه : دستور اول محل شروع برنامه را در میکرو کنترلر تعیین می کند .در این دستور به اسمبلر دستور داده ایم تا دستورات بعدی را از آدرس 30h به بعد حافظه کد میکرو قرار دهد.

    دستور دوم به اصطلاح پورت را ورودی می کند.

    در این دستور کلیه بیت های پورت یک را set کرده ایم .

    بعد از این دستور می توانیم مقدار پورت را بخوانیم.این کار برای محافظت مدار داخلی پورت است.در یک برنامه یکبار ورودی کردن پورت کافی است .

    دستورMov A, P1 مقدار موجود بر روی پورت یک را در ثبات A قرار می دهد .چون در صورت مسئله گفته ایم که ورودی ما چهار بیت پایین پورت هستند بنابراین بوسیله دستور ANL A,#00001111b چهار بیت پایین ثبات A که همان عدد خوانده شده از پورت یک است را می کند .بنابراین عدد موجود در ثبات A همان ورودی ما بر روی پورت یک خواهد بود.

    دستور mov DPTR,#table آدرس برچسب table را در DPTR قرار می دهد .دو دستور بعدی مربوط به گرفتن داده از حافظه ی کد هستند و داده در A ذخیره می شود و سپس مقدار آن به پورت 3 فرستاده می شود .

    دستور sjmp هم باعث می شود میکرو عدد دیگری را بخواند .این دستور پرش غیر شرطی است و حلقه ی بینهایت را می سازد.

    جدول را اینگونه تعریف کرده ایم :

  • فهرست:

    ندارد.
     

    منبع:

    ندارد.

مقدمه: گرچه کامپیوترهای تنها چند دهه‎ای است که با ما همراهند با این حال تأثیر عمیق آنها بر زندگی ما به تأثیر تلفن، اتومبیل و تلویزیون رقابت می‎کند. همگی ما حضور آنها را احساس می‎‏کنیم چه برنامه‎نویسان کامپیوتر و چه دریافت کنندگان صورت حسابهای ماهیانه که توسط سیستمهای کامپیوتری بزرگ چاپ شده و توسط پست تحویل داده می‎شود. تصور ما از کامپیوتر معمولاً «داده‎پردازی» است که محاسبات ...

میکرولنترلر 8051 پایه و اساسی است برای یادگیری دیگر میکروکنترلر ها دستورات اسمبلی این میکرو نسبت به AVR خیلی کمتر هست و دارای امکانات کمتری نسبت به دیگر میکرو ها است به همین دلیل یادگیری و فهم آن خیلی راحت و آسان می باشد که برای شروع ابتدا باید مفاهیم منطق و دیجیتال را خوب فهمیده باشید و بعد از آن باید سخت افرار 8051 و RAM و ROM داخلی آن را درک کرده باشید تا بتوانید یک برنامه ...

مقدمه: آشنايي با ميکرو کنترلرهاي :AVR ميکرو کنترلر : به آي سي هايي که قابل برنامه ريزي مي باشد و عملکرد آنها از قبل تعيين شده ميکروکنترلرگويند ميکرو کنترل ها داراي ورودي - خروجي و قدرت پردازش مي باشد. بخشهاي مختلف ميکروکنترلر :

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

مقدمه گر چه کامپیوترها تنها چند دهه ای است که با ما همراهند، با این حال تأثیر عمیق آنها بر زندگی ما با تأثیر تلفن ، اتومبیل و تلویزیون رقابت می کند. همگی ما حضور آنها را احساس می کنیم، چه برنامه نویسان کامپیوتر و چه دریافت کنندگان صورت حساب های ماهیانه که توسط سیستم های کامپیوتری بزرگ چاپ شده و توسط پست تحویل داده می شود. تصور ما از کامپیوتر معمولا داده پردازی است که محاسبات ...

در اين پروژه سعي بر اين است که علاوه بر آشنايي با ميکروکنترلر AVRو محيط نرم افزاري (labview) سخت افزار،به گونه اي طراحي شود که با دريافت سيگنال آنالوگ ورودي (صوت) از ميکروفن ، از طريق واحدADC ميکرو اين سيگنال به ديجيتال تبديل شود و با توجه به برنامه

مقدمه‌اي بر ميکروکنترلر 8051 باوجود اينکه بيش از بيست سال از تولد ريز پردازنده نمي‌گذرد، تصور وسيال الکترونيکي و ... بدون آنکه کار مشکي است در سال 1971 شرکت اينتل: 8080 را به عنوان اولين ريز پردازنده موفق عرضه کرد مدت کوتاهي پس از آن، موتورولا

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

مقدمه اي بر ميکروکنترلرهاي AVR : ميکروهاي AVR داراي انعطاف پذيري غير قابل مقايسه و بي همتايي هستند.آنها قادر به ترکيب هر نوع کدي با يک معماري کارامد از طريق زبانهاي C و Assembly هستند و قادرند از طريق اين برنامه ها تمام پارامترهاي ممکن در يک سيک

مقدمه ميکروکنترلر در واقع يک ريز پردازنده تک تراشه اي است که شامل حافظه داده ، حافظه برنامه ، ورودي و خروجي سريال و موازي ، تايمرها ، وقفه هاي بيروني و داخلي مي باشد که تمامي آنها روي يک تراشه واحد مجتمع شده اند و مي توان آن را به قيمتي کم

ثبت سفارش
تعداد
عنوان محصول