طراحی مینیمم سیستم با میکرو کنترلر ۸۰۱۹۶

در سال ۱۹۸۱ شركت اينتل ميكروكنترلر ۸ بيتي خود را با نام ۸۰۱۹۶ معرفي كرد كه داراي ۱۲۸ بايت RAM، ۴ كيلو بايت ROM، دو تايمر، يك درگاه سريال و ۴ درگاه كه تماماً بر روي يك تراشه بود. ۸۰۱۹۶ يك ريزپردازنده ۸ بيتي است به اين معني كه CPU آن در هر بار مي تواند فقط بر روي ۸ بيت داده كار كند و داده هاي بزرگتر بايد به قسمتهاي ۸ بيتي شكسته شود.

پس از اينكه اينتل اجازة ساخت و فروش ۸۰۱۹۶ را با شرط حفظ سازگاري كد با ۸۰۱۹۶ به سازنده گان ديگر داد، ۸۰۱۹۶ از محبوبيت زيادي برخوردار شد.
اين نكتة بسيار مهمي است كه با وجود ويژگيهاي مختلف در سرعت و مقدار ROM به كار رفته در انواع ۸۰۱۹۶، سازگاري كامل با ۸۰۱۹۶ اصلي و دستورالعملهاي مربوطه هنوز هم وجود دارد. يعني اگر برنامه اي براي يكي از ۸۰۱۹۶ها نوشته شود مي توان آن را بر روي ۸۰۱۹۶هاي ديگر اجرا كرد. صرفنظر از سازندة ميكروكنترلر ۸۰۱۹۶٫
ويژگيهاي ۸۰۱۹۶
ROM 1 Serial Port 4kbytes
RAM 6 Interrupt Sources 28bytes
Timer 2
I/O Pins 32

ميكرو كنترلر۸۰۱۹۶ عضو اصلي خانوادة ۸۰۱۹۶ است كه شركت ايتل از آن به عنوان MCS-51 ياد مي كند.
اعضاي ديگر خانوادة ۸۰۱۹۶، ۸۰۵۲، ۸۰۳۱، ۸۷۵۱ و… مي باشد.
۸۰۱۹۶
درون ۸۰۱۹۶

در يكCPU از ثباتها ، Register به عنوان مكاني براي ذخيره سازي موقت اطلاعات مورد استفاده قرار مي گيرد. اكثر ثباتهاي ۸۰۱۹۶ ، ۸ بيتي هستند.
در ثباتهاي ۸۰۱۹۶ فقط داده ۸ بيتي مي تواند قرار داد. در دياگرام زير يك ثبات با ۸ بيت خود به ترتيب از با ارزشترين D7 تا كم ارزشترين D0 نشان داده شده است.

D7 D6 D5 D4 D3 D2 D1 D0

تعدادي از ثباتها كه بيشترين كاربرد را دارند عبارتند از:
A (انباشتگر) B ، R0، R1، R2، R3، R4، R5، R6، R7، DPTR (شانگر داده) و PC (Program counter شمارندة برنامه) كه همگي ۸ بيتي اند به جزء DPTR و PC .
ثبات PC يا شمارندة برنامه به آدرس دستورالعمل بعدي كه اجرا خواهد شد اشاره مي كند. زماني كه CPU كه عملي را از برنامة موجود در ROM واكشي مي كند شمارندة برنامه افزايش يافته و به دستورالعمل بعدي اشاره مي كند. اين ثبات ۱۶ بيتي است.
به هنگام روشن شدن ميكروكنترلر ۸۰۱۹۶ همگي از آدرس۰۰۰۰ شروع به كار مي كنند. به عبارت ديگر هنگام روشن شدن PC مقدار ۰۰۰۰ را در خود خواهد داشت.

پايه هاي ۸۰۱۹۶

در شكل زير ۳۲ پايه از مجموع ۴۰ پايه در ۸۰۱۹۶ به چهار درگاه P0، P1، P2، P3 اختصاص دارند. (شكل صفحة )
دو پايه PSEN و ALE به طور عمده توسط سيستمهاي مبتني بر ۸۰۳۱ به كار گرفته مي شوند.

XTAL1 و XTAL2
با وجود اينكه ۸۰۵۲ تراشه اي است كه داراي نوسانساز اما نيازمند يك ساعت خارجي براي راه اندازي آن است كه بيشتر از يك كريستال نوسانساز از نوع كوارتز به وروديهاي XTAL1 (پايه ۱۹) و XTAL2 (پايه ۱۸) متصل مي شود.
EA
اعضاي خانوادة ۸۰۱۹۶ همگي به همراه يك ROM بر روي تراشه براي ذخيره برنامه ها ارائه مي شوند در چنين مواردي بايد پايه EA (پايه اكو) به VCC متصل شود در غير اين صورت پايه به GND وصل مي شود.

پايه هاي درگاه I/O
چهار درگاه P0، P1، P2، P3 هر كدام با استفاده از ۸ پايه درگاههاي ۸ بيتي ايجاد مي كنند، كه تمتماً به صورت خروجي پيكربندي شده اند كه اگر به صورت ورودي بخواهد مورد استفاده قرار گيرد بايد به وسيلة مقاومتهاي متصل شده به درگاه و با برنامه، تمام بيتهاي درگاه را به ۱ تبديل كرد.
MOV A,#0FFH
MOV P0.A
در اين مثال درگاه P0 به ورودي تبديل مي شود.

نقش دوگانه درگاه ۰
همانطوري كه در شكل مشاهده مي شود درگاه ۰ براي AD0 تا AD7 نيز طراحي شده است كه امكان استفاده از داده و آدرس را به درگاه مي دهد. هنگامي كه ۸۰۱۹۶ يا ۸۰۳۱ به يك حافظة‌خارجي متصل است درگاه تدارك بيننده آدرس و داده براي آن است. ALE نشان دهنده اين است كه آيا P0 داراي آدرس است يا داده اگر ALE صفر باشد داده و اگر ALE=1 باشد آدرس تدارك ديده مي شود.
درگاه ۲ براي A8 تا A15 نيز طراحي شده است. ۸۰۳۱ قابليت دسترسي به ۶۴K بايت حافظة را دارد، از اين رو يك مسير ۱۶ بيتي آدرس دهي خواهد داشت. ۸ بيت به وسيلة درگاه ۰ و ۸ بيت ديگري به وسيلة درگاه ۰

دستورالعمل MOV
دستورالعمل MOV داده اي را از يك مكان به مكان ديگر كپي مي كند، كه فرمت آن به صورت زير است

MOV Deest,Source
اين دستور به CPU مي گويد كه عملوند آن را به عملوند مقصد كپي كند. براي مثال در دستورالعمل “MOV A,R3 “ محتويات ثبات R3 به A منتقل مي شود كه پس از اجرا ثبات A محتويات R3 را در بر خواهد داشت. دستور MOV هيچ تأثيري در عملوتد منبع ندارد. انتقال مقدار بزرگتر از ظرفيت ثبات خطا به دنبال خواهد داشت.
نكته: علامت “#” پوند نشانگر مقدار است كه هر كدام از ثباتهاي A و B و R0-R7 مي توانند با مقدار كپي شود. كه اگر علامت “#” قرار داده نشود. مفهوم آن بار شدن از يك مكان حافظه است. براي مثال دستور “MOV A و ۱۷H” به معني انتقال محتويات مكان حافظه ۱۷H به ثبات A است، كه دمي تواند هر مقداري را در خود داشته باشد.

دستورالعمل ADD
”ADD A,Source”
افزودن عملوند انباشتگر (A) است.
در دستور محاسباتي ثبات A حتماُ بايد مقصد تمام عمليات محاسباتي باشد.

ORG
نشان دهندة اين است كه برنامه اي كه مي خواهد شروع شود از چه خانه اي آغاز شود.

DB

DB (DeFile Byte) براي تعريف داده هاي ۸ بيتي استفاده مي شود كه در برنامه به اسم مشخص است.
ORG 1000H
MY DATA : DB 1,5,7
MOV A, My Data
MOV A, My Data
در DB اعداد مي توانند به فرمهاي هگزا، اسمال باينري يا اسكي به كار رود.

EQU (Eguate)
اين دستور دهنده براي تعريف يك مقدار ثابت استفاده مي شود به نحوي كه مكاني از حافظه اشغال نمي شود و وابسته به يك مقدار با چسب است.
Count EQV 25
MSV R3,#Count
پس از اجرا ثبات R3 مقدار۲۵ را خواهد داشت مزيت EQV اين است كه اگر مقدار ثابتي در جاهاي مختلفي تكرار شده باشد و برنامه نويس بخواهد تمام آنها را تغيير دهد با استفاده از EQV اين كار انجام مي گيرد.

END
پايان برنامه را نشان مي دهد.
برنامه هاي تأخير
براي اجراي يك دستورالعمل توسط CPU تعداد مشخص چرخه ساعت (Clock Cycles) مورد نياز است كه در خانوادة ۸۰۱۹۶ با عنوان چرخه هاي ماشين نام برده مي شود. در ۸۰۱۹۶ طول چرخة ماشين بستگي به فركانس توليد شده توسط كريستال نوسانسازي دارد كه بر روي مدار تراشه قرار دارد. و منبع ساعت براي ۸۰۱۹۶ مي باشد.
اغلب كريستال نوسانساز ۱۱٫۰۵۹۲ MHZ است كه يك چرخة ماشين ۱/۱۲ فركانس كريستال را دريافت و سپس آنرا معكوس مي كنند.
مثال: اگر فركانس كريستال ۱۱٫۰۵۹۲ MHZ باشد چرخة ماشين ۱٫۰۸۵ MS مي باشد زيرا ۱/۹۲۱٫۶ KHZ 11.0592/12=921.6 KHZ
هر دستور براي تعيين ميزان تأخير تعداد چرخه هاي ماشين آن دستور را در ۱٫۰۸۵ ضرب مي كنند.
مثلاً دستور “MOV R5,#3” و يك چرخة ماشين دارد كه زمان اجراي آن \X\ .085 MS مي باشد.
يا “MVL AB” ۱٫۰۸۵ MS=4.34 MS ×۴
برنامه ريزي تايمر
۸۰۱۹۶ دو تايمر/ شمارنده دارد، تايمر براي توليد تأخير زماني و شمارنده براي شمارش حوادث اتفاق افتاده كاربرد دارد. تايمرها به وسيلة فليپ فلاپ ساخته مي شوند ۸۰۱۹۶ دو تايمر دارد تايمر ۰ و تايمر ۱ كه هر دو ۱۶ بيتي اند.
ثبات تايمر ها به وسيلة دو بايت كم ارزش و پردازش قابل دسترسي است. كم ارزش را براي تايمر ۰، TL0 و براي تايمر ۱، TL1 و پردازش را براي تايمر ۰، TH0 و براي تايمر ۱،TH1 مي نامند.
D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0

TH TL

ثبات TM0D (حالت تايمر)
هر دو تايمر براي تنظيم حالات كاري از ثبات TM0D استفاده مي كنند. كه ۸ بيت دارد، كه ۴ بيت كم ارزش آن براي تايمر ۰ است.
GATE 4T M1 M0 GATE CLT M1 M0

تايمر۰ تايمر ۱
حالت عمل حالت M0 M1
حالت تايمر ۱۳ بيتي. ۸ بيت بالاي تايمر (THX) 0 0 0 با ۵ بيت پائيني از ۸ بيت پائين تايمر (TLX)

حالت تايمر ۱۶ بيتي. تايمر ۱۶ بيتي كه THX 0 1 1
و TLX به هم پيوسته اند.

بار شدن خودكار ۸ بيتي۱ ۰ ۲

حالت تايمر دو قسمتي۱ ۱ ۳

حالت ۱ و ۰
تايمر ۱۶ بيتي است از ۰۰۰۰ تا FFFF
بعد از مقدار دهي TH و TL تايمر با دستور “SETB TR0” يا “SETB TR1” شروع مي شود.
بعد از اينكه تايمر شروع به شمارش كرده و افزايش مي كند تا به مقدار FFFF# برسد. هنگامي كه از FFFF# به ۰۰۰۰ بر مي گردد بيت پرچم (TF) يك مي شود. كه با دستور “CLR TR0” يا “CLR TR1” تايمر متوقف مي شود سپس بايد ثباتهاي TH و TL جهت تكرار عمليات دوباره با مقادير اصلي و TF با ۰ مقدار دهي شود.
نتيجه پرچم TF براي اينكه يك مي شود يا نه را مي توان با دستور “JNB TFX, Target” بررسي كرد.
پيدا كردن مقادير TH و TL
فرض XTAL=11.0592 باشد. تأخير زماني را بر ۱٫۰۸۵ MS تقسيم مي شود.
۶۵۵۳۶-N مي شود كه N مقدار دهدهي از تقسيم بالايي است.
حاصل را به مبناي ۱۶ مي بريم YYXX كه TH=YY و TL=XX.
مثال: اگر XTAL=11.0592 MHZ باشد براي تأخير زماني ۵ MS مقادير عبارتند از:
۵/۱٫۰۸۵ ms/MS =4608 پس ۶۵۵۳۶-۴۶۰۸=EE00H پس TH=EE ، TL=00
حالت۰ دقيقاً مشابه حالت۱ است با اين تفاوت كه تايمر۱۳ بيتي است كه مي تواند مقادير ۰۰۰۰ تا۱FFFH را درTH وTL نگه دارد.
حالت ۲
حالت ۲، ۸ بيتي است پس مقادير بين ۰۰ تا FFH را در TH ذخيره مي كند. بعد از اينكه TH بار دهي شد،۸۰۱۹۶ يك كپي از آن را درون TL قرار مي دهد. بعد از شروع تايمر TL افزايش پيدا مي كند تا به FFH برسد و از آنجا به ۰۰ برگردد پرچم TF يك مي شود. TL به طور خودكار با مقدار اصلي اوليه كه توسط ثبات TH نگهداري مي شد، مقدار دهي مي شود. در ثبات TMOD دو پايه GATE و C/T نيز مي باشد. C/T اگر صفر باشد حالت تايمر و اگر يك باشد حالت شمارنده است. هنگامي كه پايه GATE يك است تايمر/ شمارنده وقتي فعال مي شود كه INTxيك بوده و پايه كنترل TRx تنظيم شده باشد.

ثبات TCON
TR0 و TR قسمتي از ثبات ۸ بيتي TCON(Timer Control) است. كه در زير مشاهده مي شود.

TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

چهار بيت پرارزش آن براي ذخيره بيتهاي TF و TR از دو تايمر ۰ و تايمر ۱ مي باشند و چهار بيت كم ارزش آن براي كنترل وقفه مي باشند.

نرم افزار مربوطه