میکرو کنترلر80196 عضو اصلی خانواده 80196 است که شرکت ایتل از آن به عنوان MCS-51 یاد می کند.
اعضای دیگر خانواده 80196، 8052، 8031، 8751 و...
می باشد.
80196
درون 80196
در یکCPU از ثباتها ، Register به عنوان مکانی برای ذخیره سازی موقت اطلاعات مورد استفاده قرار می گیرد.
اکثر ثباتهای 80196 ، 8 بیتی هستند.
در ثباتهای 80196 فقط داده 8 بیتی می تواند قرار داد.
در دیاگرام زیر یک ثبات با 8 بیت خود به ترتیب از با ارزشترین D7 تا کم ارزشترین D0 نشان داده شده است.
D7 D6 D5 D4 D3 D2 D1 D0
تعدادی از ثباتها که بیشترین کاربرد را دارند عبارتند از:
A (انباشتگر) B ، R0، R1، R2، R3، R4، R5، R6، R7، DPTR (شانگر داده) و PC (Program counter شمارنده برنامه) که همگی 8 بیتی اند به جزء DPTR و PC .
ثبات PC یا شمارنده برنامه به آدرس دستورالعمل بعدی که اجرا خواهد شد اشاره می کند.
زمانی که CPU که عملی را از برنامه موجود در ROM واکشی می کند شمارنده برنامه افزایش یافته و به دستورالعمل بعدی اشاره می کند.
این ثبات 16 بیتی است.
به هنگام روشن شدن میکروکنترلر 80196 همگی از آدرس0000 شروع به کار می کنند.
به عبارت دیگر هنگام روشن شدن PC مقدار 0000 را در خود خواهد داشت.
پایه های 80196
در شکل زیر 32 پایه از مجموع 40 پایه در 80196 به چهار درگاه P0، P1، P2، P3 اختصاص دارند.
(شکل صفحه )
دو پایه PSEN و ALE به طور عمده توسط سیستمهای مبتنی بر 8031 به کار گرفته می شوند.
دو پایه PSEN و ALE به طور عمده توسط سیستمهای مبتنی بر 8031 به کار گرفته می شوند.
XTAL1 و XTAL2 با وجود اینکه 8052 تراشه ای است که دارای نوسانساز اما نیازمند یک ساعت خارجی برای راه اندازی آن است که بیشتر از یک کریستال نوسانساز از نوع کوارتز به ورودیهای XTAL1 (پایه 19) و XTAL2 (پایه 18) متصل می شود.
EA اعضای خانواده 80196 همگی به همراه یک ROM بر روی تراشه برای ذخیره برنامه ها ارائه می شوند در چنین مواردی باید پایه EA (پایه اکو) به VCC متصل شود در غیر این صورت پایه به GND وصل می شود.
پایه های درگاه I/O چهار درگاه P0، P1، P2، P3 هر کدام با استفاده از 8 پایه درگاههای 8 بیتی ایجاد می کنند، که تمتماً به صورت خروجی پیکربندی شده اند که اگر به صورت ورودی بخواهد مورد استفاده قرار گیرد باید به وسیله مقاومتهای متصل شده به درگاه و با برنامه، تمام بیتهای درگاه را به 1 تبدیل کرد.
MOV A,#0FFH MOV P0.A در این مثال درگاه P0 به ورودی تبدیل می شود.
نقش دوگانه درگاه 0 همانطوری که در شکل مشاهده می شود درگاه 0 برای AD0 تا AD7 نیز طراحی شده است که امکان استفاده از داده و آدرس را به درگاه می دهد.
هنگامی که 80196 یا 8031 به یک حافظهخارجی متصل است درگاه تدارک بیننده آدرس و داده برای آن است.
ALE نشان دهنده این است که آیا P0 دارای آدرس است یا داده اگر ALE صفر باشد داده و اگر ALE=1 باشد آدرس تدارک دیده می شود.
درگاه 2 برای A8 تا A15 نیز طراحی شده است.
8031 قابلیت دسترسی به 64K بایت حافظه را دارد، از این رو یک مسیر 16 بیتی آدرس دهی خواهد داشت.
8 بیت به وسیله درگاه 0 و 8 بیت دیگری به وسیله درگاه 0 دستورالعمل MOV دستورالعمل MOV داده ای را از یک مکان به مکان دیگر کپی می کند، که فرمت آن به صورت زیر است MOV Deest,Source این دستور به CPU می گوید که عملوند آن را به عملوند مقصد کپی کند.
برای مثال در دستورالعمل “MOV A,R3 “ محتویات ثبات R3 به A منتقل می شود که پس از اجرا ثبات A محتویات R3 را در بر خواهد داشت.
دستور MOV هیچ تأثیری در عملوتد منبع ندارد.
انتقال مقدار بزرگتر از ظرفیت ثبات خطا به دنبال خواهد داشت.
نکته: علامت “#” پوند نشانگر مقدار است که هر کدام از ثباتهای A و B و R0-R7 می توانند با مقدار کپی شود.
که اگر علامت “#” قرار داده نشود.
مفهوم آن بار شدن از یک مکان حافظه است.
برای مثال دستور “MOV A و 17H” به معنی انتقال محتویات مکان حافظه 17H به ثبات A است، که دمی تواند هر مقداری را در خود داشته باشد.
دستورالعمل ADD ”ADD A,Source” افزودن عملوند انباشتگر (A) است.
در دستور محاسباتی ثبات A حتماُ باید مقصد تمام عملیات محاسباتی باشد.
ORG نشان دهنده این است که برنامه ای که می خواهد شروع شود از چه خانه ای آغاز شود.
DB DB (DeFile Byte) برای تعریف داده های 8 بیتی استفاده می شود که در برنامه به اسم مشخص است.
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 مقدار25 را خواهد داشت مزیت EQV این است که اگر مقدار ثابتی در جاهای مختلفی تکرار شده باشد و برنامه نویس بخواهد تمام آنها را تغییر دهد با استفاده از EQV این کار انجام می گیرد.
END پایان برنامه را نشان می دهد.
برنامه های تأخیر برای اجرای یک دستورالعمل توسط CPU تعداد مشخص چرخه ساعت (Clock Cycles) مورد نیاز است که در خانواده 80196 با عنوان چرخه های ماشین نام برده می شود.
در 80196 طول چرخه ماشین بستگی به فرکانس تولید شده توسط کریستال نوسانسازی دارد که بر روی مدار تراشه قرار دارد.
و منبع ساعت برای 80196 می باشد.
اغلب کریستال نوسانساز 11.0592 MHZ است که یک چرخه ماشین 1/12 فرکانس کریستال را دریافت و سپس آنرا معکوس می کنند.
مثال: اگر فرکانس کریستال 11.0592 MHZ باشد چرخه ماشین 1.085 MS می باشد زیرا 1/921.6 KHZ 11.0592/12=921.6 KHZ هر دستور برای تعیین میزان تأخیر تعداد چرخه های ماشین آن دستور را در 1.085 ضرب می کنند.
مثلاً دستور “MOV R5,#3” و یک چرخه ماشین دارد که زمان اجرای آن \X\ .085 MS می باشد.
یا “MVL AB” 1.085 MS=4.34 MS ×4 برنامه ریزی تایمر 80196 دو تایمر/ شمارنده دارد، تایمر برای تولید تأخیر زمانی و شمارنده برای شمارش حوادث اتفاق افتاده کاربرد دارد.
تایمرها به وسیله فلیپ فلاپ ساخته می شوند 80196 دو تایمر دارد تایمر 0 و تایمر 1 که هر دو 16 بیتی اند.
ثبات تایمر ها به وسیله دو بایت کم ارزش و پردازش قابل دسترسی است.
کم ارزش را برای تایمر 0، TL0 و برای تایمر 1، TL1 و پردازش را برای تایمر 0، TH0 و برای تایمر 1،TH1 می نامند.
TH TL ثبات TM0D (حالت تایمر) هر دو تایمر برای تنظیم حالات کاری از ثبات TM0D استفاده می کنند.
که 8 بیت دارد، که 4 بیت کم ارزش آن برای تایمر 0 است.
تایمر0 تایمر 1 حالت عمل حالت M0 M1 حالت تایمر 13 بیتی.
8 بیت بالای تایمر (THX) 0 0 0 با 5 بیت پائینی از 8 بیت پائین تایمر (TLX) حالت تایمر 16 بیتی.
تایمر 16 بیتی که THX 0 1 1 و TLX به هم پیوسته اند.
بار شدن خودکار 8 بیتی1 0 2 حالت تایمر دو قسمتی1 1 3 حالت 1 و 0 تایمر 16 بیتی است از 0000 تا FFFF بعد از مقدار دهی TH و TL تایمر با دستور “SETB TR0” یا “SETB TR1” شروع می شود.
بعد از اینکه تایمر شروع به شمارش کرده و افزایش می کند تا به مقدار FFFF# برسد.
هنگامی که از FFFF# به 0000 بر می گردد بیت پرچم (TF) یک می شود.
که با دستور “CLR TR0” یا “CLR TR1” تایمر متوقف می شود سپس باید ثباتهای TH و TL جهت تکرار عملیات دوباره با مقادیر اصلی و TF با 0 مقدار دهی شود.
نتیجه پرچم TF برای اینکه یک می شود یا نه را می توان با دستور “JNB TFX, Target” بررسی کرد.
پیدا کردن مقادیر TH و TL فرض XTAL=11.0592 باشد.
تأخیر زمانی را بر 1.085 MS تقسیم می شود.
65536-N می شود که N مقدار دهدهی از تقسیم بالایی است.
حاصل را به مبنای 16 می بریم YYXX که TH=YY و TL=XX.
مثال: اگر XTAL=11.0592 MHZ باشد برای تأخیر زمانی 5 MS مقادیر عبارتند از: 5/1.085 ms/MS =4608 پس 65536-4608=EE00H پس TH=EE ، TL=00 حالت0 دقیقاً مشابه حالت1 است با این تفاوت که تایمر13 بیتی است که می تواند مقادیر 0000 تا1FFFH را درTH وTL نگه دارد.
حالت 2 حالت 2، 8 بیتی است پس مقادیر بین 00 تا FFH را در TH ذخیره می کند.
بعد از اینکه TH بار دهی شد،80196 یک کپی از آن را درون TL قرار می دهد.
بعد از شروع تایمر TL افزایش پیدا می کند تا به FFH برسد و از آنجا به 00 برگردد پرچم TF یک می شود.
TL به طور خودکار با مقدار اصلی اولیه که توسط ثبات TH نگهداری می شد، مقدار دهی می شود.
در ثبات TMOD دو پایه GATE و C/T نیز می باشد.
C/T اگر صفر باشد حالت تایمر و اگر یک باشد حالت شمارنده است.
هنگامی که پایه GATE یک است تایمر/ شمارنده وقتی فعال می شود که INTxیک بوده و پایه کنترل TRx تنظیم شده باشد.
ثبات TCON TR0 و TR قسمتی از ثبات 8 بیتی TCON(Timer Control) است.
که در زیر مشاهده می شود.
چهار بیت پرارزش آن برای ذخیره بیتهای TF و TR از دو تایمر 0 و تایمر 1 می باشند و چهار بیت کم ارزش آن برای کنترل وقفه می باشند.
نرم افزار مربوطه LS EQU 30H HS EQU 31H LM EQU 32H HM EQU 33H LH EQU 34H HH EQU 35H COUNT0 EQU 36H COUNT1 EQU 37H CLOCK_FLAG BIT 00H F_DOT BIT 01H ORG 00H JMP MAIN ORG 0BH JMP CHECK_TIME MAIN: MOV LS,#5 MOV HS,#5 MOV LM,#9 MOV HM,#5 MOV LH,#2 MOV HH,#1 CLR P3.3 CLR P3.2 CLR P3.1 CLR P3.0 MOV DPTR,#TABLE0 MOV IE,#82H MOV TMOD,#1 MOV TL0,#LOW(-49998) MOV TH0,#HIGH(-49998) SETB TR0 MOV COUNT0,#10 MOV COUNT1,#2 BEGIN: JNB P0.6,B_1 CALL SHOW_HOUR JMP B_2 B_1: CALL SHOW_SECOND B_2:JMP BEGIN CHECK_TIME: ; PUSH ACC MOV TL0,#LOW(-49998) MOV TH0,#HIGH(-49998) INC COUNT1 MOV R1,COUNT1 CJNE R1,#10,DDD0 MOV COUNT1,#0 CPL F_DOT DDD0: DJNZ COUNT0,Z0 MOV COUNT0,#20 CALL EDIT_TIME Z0: ;POP ACC RETI DELAY002: C4: MOV R2,#10 C3: MOV R3,#1 C2: NOP DJNZ R3,C2 DJNZ R2,C3 RET ;///////////////FOR CHECKING THE TIME SITUATION (24,60,60) EDIT_TIME: INC LS MOV A,LS CJNE A,#10,Z1 MOV LS,#0 INC HS MOV A,HS CJNE A,#6,Z1 INC LM MOV HS,#0 MOV A,LM CJNE A,#10,Z1 INC HM MOV LM,#0 MOV A,HM CJNE A,#6,Z1 MOV HM,#0 INC LH MOV A,LH CJNE A,#10,Z2 MOV LH,#0 INC HH JMP Z1 Z2: MOV A,HH CJNE A,#1,Z1 MOV A,LH CJNE A,#3,Z1 MOV HH,#0 MOV LH,#1 CPL P2.2 Z1:RET SHOW_HOUR: MOV A,HH MOVC A,@A+DPTR CLR P3.0 MOV P1,A SETB P1.7 SETB P3.3 CALL DELAY002 MOV A,LH MOVC A,@A+DPTR CLR P3.3 MOV P1,A SETB P1.7 SETB P3.2 MOV C,F_DOT MOV P1.7,C CALL DELAY002 SETB P1.7 MOV A,HM MOVC A,@A+DPTR CLR P3.2 MOV P1,A SETB P1.7 SETB P3.1 CALL DELAY002 MOV A,LM MOVC A,@A+DPTR CLR P3.1 MOV P1,A SETB P1.7 SETB P3.0 CALL DELAY002 RET SHOW_SECOND: MOV A,HS MOVC A,@A+DPTR CLR P3.0 MOV P1,A SETB P1.7 SETB P3.1 CALL DELAY002 MOV A,LS MOVC A,@A+DPTR CLR P3.1 MOV P1,A SETB P1.7 SETB P3.0 CALL DELAY002 RET TABLE0:DB 3FH,6,5BH,4FH,66H,6DH,7DH,7,7FH,6FH END توضیح نرم افزار ساعت دیجیتالی ابتدا در RAM نامگذاری صورت گرفنه است سپس میکرو به قسمت MAIN پرش می کند که با شش دستوراول مقدار 12:59:55” در سون سگمنت مقدار دهی می شود .
با دستور CLR P3.3 پایه های 10 تا13 میکرو مقدار صفر می گردد .
سپس DPTR مقدار جدول را می گیرد و اینتراپت 1 اتنخاب می شود و حالت صفر از تایمر صفر را اتخاب می کند مقدار TL0و TH0تقریبا 5 ms مقدار دهی می شود .
آنگاه تایمر روشن می شود ( با دستور SETB TR0 ) با دستور MOVE COUNTO, #10 پنجاه میلی ثانیه 10بار تکرار می شود که نیم ثانیه بدست می أید و LED از سون سگمنت مربوط به دقیقه چشمک زدن را شروع می کند BEGIN پایه P0.6 به کلید وصل شده است که اگر کلید فشار داده شود سون سگمنت ها فقط ثانیه را نشان می دهند و این سیکل تکرار می شود در غیر این صورت ساعت نشان داده می شود مقدار ساعت اصلی در قسمت EDIT_TIME است مقدار LS (مقدار 5) یک واحد افزوده می شود و در رجیستر A ریخته می شود اگر رجیستر A با مقدار 10 برابر نبود ، پاین می یابد و اگر A=10 باشد مقدار LS با صفر پر می شود .
سپس مقدار HS (مقدار 5 ) یک واحد افزوده می شود و در رجیستر A ذخیره می گردداگر به 6رسید LM زیاد می شود و HS صفر می گردد .
به همین ترتیب LM زیاد می شود سپس HMو… DELAY 002 این زیر برنامه تاخیر ایجاد می کند بدین صورت که R2را برابر 10و R3 را برابر 10 قرار می دهد سپس NOP تاخیر ایجاد می کند R3 را کم می کند (R3=0) و دو باره تاخیر ایجاد می کند بعد R2 را یکی کم کرده و R3 را برابر 1 قرار می دهد و دوباره سیکل قبلی تکرار می شود اگر R2=0 شد أنگاه زیر برنامه تمام می شود .
واحد پردازش مرکزی CPU،به عنوان «مغز» سیستم کامپیوتری،تمامی فعالیت های سیستم را اداره کرده و همه عملیات روی داده را انجام می دهد.اندیشه اسرار آمیز بودن CPU در اغلب موارد ناردست است زیرا این تراشه فقط مجموعه ای از مدارهیا منطقی است که بطور مداوم دو عمل انجام می دهند:واکنشی دستورالعمل ها و اجرای آنها،CPUتوانایی درک و اجرای دستورالعمل های را براساس مجموعه ای از کدهای دورویی دارد که هریک از این کدها نشان دهنده یک عمل ساده است.این دستورالعمل ها معمولاً حسابی (جمع،تفریق،ضرب و تقسیم)،منطقی (AND،OR،NOT و غیره)انتقال داده یا عملیات انشعاب هستند و یا مجموعه ای از کدهایی دروریی با نام مجموعه دستورالعمل ها نشان داده می شوند.
حافظه نیمه رسانا:RAM وROM برنامه ها و داده ها در حافظه ذخیره می شوند.حافظه های کامپیوتر بسیار مشوعند و اجزای همراه آنها بسیار و تکنولوژی بطور دائم و پی در پی موانع را برطرف می کند.بگونه ای که اطلاع از جدیدترین پیشرفت ها نیاز به مطالعه جامع و مداوم دارد.حافظه هایی که به طور مستقیم توسط CPU قابل دستیابی می باشند،IC های (مدار مجتمع)نیمه رسانایی هستند که RAMو ROM نامیده می شوند.دو ویژگی RAM و ROMرا از هم متمایز سازد:اول آنکه RAM حافظه خواندنی /نوشتنی است.در حالیکه ROM حافظه خواندنی است و دوم آنکه RAM فرّار است(یعنی محتویات آن هنگام عبور ولتاژ تغذیه می شود)در حالی که ROM غیرفرّار است.
ابزارهای کنترل /نظارت به کمک ابزارهای کنترل/نظارت در برخی نرم افزارها و روابط های الکترونیکی (دقیق)کامپیوترها می توانند کارهای کنترلی زیادی را بی وقفه،بدون خستگی و بسیارفراتر از توانایی انسان انجام دهند.
کاربردهایی نظیر کنترل حرارت یک ساختمان،محافظت از خانه، کنترل آسانسور،کنترل وسایل خانگی و حتی جوش دادن قطعات مختلف یک خودرو همگی با استفاده از این ابزارها امکان پذیر هستند.ابزارهای کنترل،ابزارهای خروجی یا عمل کننده هستند.آنها وقتی که با یک ولتاژ با جریان،تغذیه شوند می توانند بر جهان پیرامون خود اثر بگذارند(مثل موتورها مولدها).ابزارهای نظارت،ابزارهای ورودی یا مسگر هستند که با کمیت هایی نظیر حرارت،نور،فشار،حرکت و مانند آن،تحریک شده و آنها را به جریان یا ولتاژی که توسط CPU خوانده می شود تبدیل می کنند(مثل فتوترانزیستورها و ترمیستورها و سوئیچ ها).ولتاژ یا جریان توسط مدارهای واسطه، به یک داده دورویی تبدیل می وشد و یا برعکس و سپس نرم افزار،یک رابطه منطقی بین ورودی ها و جروجی ها برقرارمی کند.
مقایسه ریز پردازنده ها با میکروکنترلرها پیش از این خاطرنشان شد که ریز پردازنده ها CPU هایی تشکیل تک تراشه هستند و در میکروکامپیوترها به کار می روند.پس فرق میکروکنترلرها با ریز پردازنده ها چیست؟با این سؤال از سه جنبه می توان برخورد کرد:معماری سخت افزار،کاربردهای و ویژگی های مجموعه دستورالعمل ها.
معمار سخت افزار در حالی که زیز پردازنده یک CPU تک تراشه ای است،میکروکنترلر در یک تراشه واحد شامل یک CPUو بسیاری از مدرارات لازم برای یک سیستم میکروکامپیوتری کامل می باشد.
علاوه بر CPU میکروکنترلرها شامل RAM و ROM یک رابطه سریال،یک رابط سریال،یک رابط موازی،تایمر و مدارات زمانبدی البته مقدار RAMروی تراشه حتی به میزان آن در یک سیستم میکروکامپیوتری کوچک هم نمی رسد اما آن طور که خواهیم دید این مسأله محدودیتی ایجاد نمی کند زیرا کاربردهای میکروکنترلر بسیار متفاوت است.یک ویژگی مهم میکروکنترلرها،سیستم وقفه موجود در داخل آنهاست.میکروکنترلرها به عنوان ابزار های کنترل گرا اغلب برای پاسخ بی درنگ به محرکهای خارجی (وقفه ها)مورد استفاده قرار می گیرند.یعنی باید در پاسخ به یک «اتفاقی» سریعاً یک فرآیند را معدق گذاره،به فرآیند دیگر بپردازند.باز شدن در یک اجاق مایکروویو مثالی است از یک اتفاق ممکن است باعث ایجاد یک وقفه در یک سیستم میکروکنترولی شود.البته اغلب ریز پردازنده ها می توانند سیستم های وقفه قدرتمندی را به اجرا بگذارند،اما برا این کار معمولاً نیاز به اجزای خارجی دارند.مدارات روی تراشه یک میکروکنترولر شامل تمام مدارات مورد نیاز برای بکارگیری وقفه های می باشد.
«کاربردها» ریز پردازنده اغلب به عنوان CPU در سیستم های میکروکامپیوتری بکار می روند.این کاربرد دلیل طراحی آنها و جایی است که می توانند خود را به نمایش بگذارند.با این وجود میکروکنترلرها در طراحی های کوچک با کمترین اجزاء ممکن که فعالیت های کنتری گرا انجام می شد.یک میکروکنترلر می تواند در کاهش تعداد کل اجزاء کمک کند.آنچه که مورد نیاز است عبارت است از یک میکروکنترلر،تعداد کمی اجزاءپشتیبان و یک برنامه کنترلی در ROM میکروکنترلرها برای «کنترل» ابزارهای I/O در طراحی هایی با کمترین تعداد اجزاء ممکن مناسب هستند،اما ریزپردازنده ها برای «پردازش» اطلاعات در سیستم های کامپیوتری مناسبند.
«ویژگی های مجموعه دستورالعمل ها» به علت تفاوت در کاربردها،مجموعه دستورالعمل های مورد نیاز برای میکروکنترلرها تاحدودی با ریز پردازنده ها تفاوت دارد.مجموعه دستورالعمل های ریز پردازنده ها بر عمل پردازش تمرکز یافته اند و در نتیجه دارای روش های آدرس دهی قدرتمند به همراه دستورالعمل هایی برای انجام عملیات روی حجم زیاد داده می باشند.
دستورالعمل های روی چهار بیت ها،بایتها،کلمه ها یا حتی کلمه های مضاعف عمل می کنند.روش های آدرس دهی با استفاده از فاصله های نسبی و اشاره گر های آدرس امکان دسترسی به آرایه های بزرگ داده را فراهم می کنند.حالت های افزایش یک واحدی اتوماتیک و کاهش یک واحدی اتوماتیک حرکت گام به گام روی بایت ها،کلمه ها کلمه های مضاعف را درآرایه ها آسان می کنند.دستورالعمل هیا رمزی نمی توانند در داخل برنامه کاربرد اجرا شوند وبسیاری ویژگی های دیگر از این قبیل.از طرف دیگر میکروکنترلرها مجموعه دستورالعمل هایی مناسب برای کنترل ورودی ها و خروجی ها دارند.ارتباط با بسیاری از ورودی ها و خروجی ها تنها نیازمند یک بیت است.برای مثال یک موتور می تواند توسط یک سیم پیچ که توسط یک درگاه خروجی یک بیتی انرژی دریافت می کند،روشن و خاموش شود.میکروکنترلرها دستورالعمل هایی برای 1 کردن و0کردن بیت های جداگانه دارند و دیگر عملیات روی بیت ها مثل AND،OR یا XOR کردن منطقی بیت ها،پرش در ثورت ایا پاک بودن یک بیت و مانند آن ها را نیز انجام می دهند.این ضمیمه مفید بندرت در ریزپردازنده یافت می شود زیرا آنها معمولاً برای کار روی بیت ها یا واحدهای بزرگتر داده طراحی می شوند.برای کنترل و نظارت بر ابزارها (شاید توسط یک رابط تک بیتی)،میکروکنترلرها مدارات داخلی و دستورالعمل هایی برای عملیات ورودی/خروجی،زمان بندی انفاقات و فعال کردن و تعیین اولویت وقفه های ناشی از محرک های خارجی دارند.ریزپردازنده ها اغلب به مدارات اضافی (IC های رابط سریال،کنترل کننده های وقفه،تایمرها و غیره)برای انجام اعمال مشابه نیازدارند.با این همه در قدرت پردازش محض،یک میکروکنترلر هرگز به ریزپردازنده نمی رسد(اگر در بقیه موارد یکسان باشند)زیرا بخش عمده «فضای واقعی».IC میکروکنترلر صرف تهیه امکانات روی تراشه می شود البته به قیمت کاهش توان پردازش.از آنجا که فضاهای واقعی در تراشه برای میکروکنترلر اهیمت دارند دستورالعمل ها بایدبی نهایت فشرده باشند و اساساً در یک بایت پیاده سازی شوند.یکی از نکات در طراحی جادادن برنامه کنترلی در داخل ROM روی تراشه است.زیرا افزودن حتی یک ROM خارجی هزینه نهایی تولید را بسیار افزایش می دهد.به ریزدرآوردن فشرده برای مجموعه دستورالعمل های میکروکنترلر اساسی است،در حالیکه ریزپردازنده بندرت دارای ویژگی می باشند،روش های آدرس دهی قدرتمند آنها باعث به رمز درآوردن غیرفشرده دستورالعمل ها می شود.
«مفاهیم جدید» میکروکنترلر مانند دیگر فرآورده هایی که پیش از آن برای برطرف کردن موانع کار مورد ملاحظه بودند،توسط دو نیروی مکمل هم یعنی نیاز بازار و تکنولوژی جدید بوجود آمده اند.تکنولوژی جدید همان است که پیش از این ذکر شد،یعنی نیمه رساناهایی با ترانزیستورهای بیشتر در فضای کمتر که با قیمت پایین تری به صورت انبوه تولید می شوند.نیاز بازار،تقاضای صنعت و مصرف کنندگان وسایل و اسباب بازی های هوشمند می باشد.این تعریف گسترده ای است،بهترین مثال شاید داشبورد خودور باشد که شاهد تغییر «مرکز کنترل» خودرو در طی دهه گذشته بوده است.زمانی راننده ها باید با دانستن سرعت خوداکتفا می کردند،اما امروزه نمایشی از سرعت صرفه جویی شده و زمان تقریبی رسیدن را دراختیار دارند.زمانی دانستن این که یک کمربند ایمنی در شروع حرکت محکم شده است یا نه کافی بود.امروزه به ما گفته می شود که کدام کمربند ایمنی ایراد دارد- اگر دری نیمه باز بماند بموقع توسط کلمات به ما اطلاع داده می شود(شاید کمربند ایمنی لای درگیر کرده باشد) همه این موارد این مطلب را در ذهن تداعی می کنند که ریز پردازنده ها (و دراین مورد میکروکنترلر)به راه حل هایی تبدیل شده اند که به دنبال یک مسأله می گردند.به نظر می رسد که آنها در کاهش پیچیدگی مدارات فرآورده های مصرفی بسیار مؤثر عمل کرده اند بطوری که تولیدکنندگان اغلب برای افزودن امکانات اضافی اشتیاق زیادی دارند،فقط به این علت که میکروکنترلرها خیلی راحت برای فرآورده های قابل طراحی هستند.نتیجه کار،اغلب فاقد سادگی لازم می باشد.بهترین مثل ممکن ظهور فرآورده های سخنگو درسال های اخیر است.این فرآورده ها،چه خودرو،چه اسباب بازی معمولاً مثال هایی از زیاده روی ها و طراحی های اضافه برنیاز، و شاید گوشه ای از هر دهه هشتاد هستند.در آن زمان هم بسیاری معتقد بودند که همین که گردکهنگی روی این وسایل بنشیند،تنها چیزی که برای آنها باقی می ماند قابلیت کاری آنها خواهد بود.میکروکنترلرها پردازنده هایی اختصاصی هستند آنها به خودی خود در کامپیوترها به کار نمی روند بلکه در فرآورده های صنعتی و وسایل مصرفی مورد استفاده قرار می گیرند.استفاده کنندگان این فرآورده ها اغلب از وجود میکروکنترلرها کاملاً بی اطلاع هستند.از دید آنها اجزای داخلی وجود دارند اما جزو جزئیات بی اهمیت طراحی به شمار می روند.برای مثال اجاق های مایکروویو،ترموسات قابل برنامه ریزی،ترازو های الکترونیکی و حتی خودروها را می توانید در نظر بگیرید.قسمت الکترونیکی هر یک از این فرآورده ها عموماً شامل ارتباط میکروکنترلر با کلیدهای فشاری،سوئیچ ها، وسایل هشدار دهنده و لامپ های روی یک تابلو می باشد.در نتیجه به استثنای برخی امکانات اضافی،طرز استفاده آنها یا فرآورده های الکترومکانیکی قبلی تفاوتی نکرده است و میکروکنترلر آنها از دید استفاده کنندگان مخفی است.برخلاف سیستم های کامپیوتری که توسط قابلیت برنامه ریزی و دوباره برنامه ریزی شدن،باز شناخته می شوند،میکروکنترلها یک بار برای همیشه و برای یک کار برنامه ریزی می شوند.این مقایسه به یک تفاوت اساسی در معماری این دو سیستم منجر می شود.سیستم های کامپیوتری نسبت RAMبه ROM بالایی دارند و برنامه های کاربران در یک فضای نسبتاً بزرگ ROM اجرا می شوددر حالیکه روالهای ارتباط با سخت افزار در یک فضای کوچک ROM اجرا می گردد.از طرف دیگر میکروکنترلرها نسبت ROM به RAM بالایی دارند،برنامه کنترلی آنها که شاید نسبتاً بزرگ سیم باشد در ROM ذخیره می شود،در حالی که RAM فقط برای ذخیره موقت مورد استفاده قرار می گیرد.از آنجا که برنامه کنترلی برای همیشه در ROM ذخیره می شود در مرتبه میان افزار قرارمی گیرد.یعنی چیزی بین سخت افزار(مدارهای واقعی) ونرم افزار (برنامه هایی در RAMکه هنگام خاموش شدن سیستم پاک می شوند)تفاوت بین سخت افزار و نرم افزار تا حدی شبیه به تفاوت بین یک صفحه کاغذ (سخت افزار)وکلمات نوشته شده روی آن (نرم افزار)می باشد.میان افزار را می توان به صورت فرم های استانداردی که برای یک کاربرد مشخص طراحی و چاپ شده اند درنظر گرفت.
«مزیت ها و معایب:یک مثال طراحی» وظایفی که میکروکنترلرها انجام می دهند وظایف تازه ای نیستند.آنچه جدید است این است که طراحی ها با تعداد اجزای کمتری از گذشته انجام می شوند.طراحی هایی که در گذشته با استفاده از ده ها یا حتی صدها IC انجام می شوند امروزه با یک میکروکنترلر و اجزایی به تعداد از انگشتان دست قابل انجام اند.کاهش تعداد اجزاء که نتیجه مستقیم قابلیت برنامه ریزی و توانایی زیاد میکروکنترلرها درایجاد یکپارچگی می باشد،معمولاً منجر به زمان طراحی و ساخت کوتاه تر،هزینه تولید پائین تر،مصرف توان کمتر و قابلیت اطمینان بیشتر می شود.اعمال منطقی که نیازمند چندین ICمی باشند،اغلب توسط یک میکروکنترلر با اضافه کردن یک برنامه کنترلی انجام می شوند.عیب کار در سرعت است.راه حل های میکروکنترلی هرگز در سرعت به پای راه حل های مشابه با اجزای گسسته نمی رسند.در موقعیت هایی که نیاز به پاسخ های بسیار سریع به رویدادها وجود دارد که البته بندرت چنین کاربردهایی پیدا می شوند)میکروکنترلرها عکس العمل ضعیفی از خودنشان می دهند.به عنوان یک مثل،نمایش ساده ای از انجام عمل NAND با استفاده از میکروکنترلر80196 در شکل الف نشان داده شده است.به کاربردن میکروکترلر برای چنین عملی چندان مرسوم نیست،اما این امکان وجود دارد.نرم افزار باید عملیات نشان داده شده در نمودار گردشی شکل (ب) را انجام دهد.برنامه زبان اسمبلی 80196 برای این عمل منطقی به صورت زیر می باشد.
Loop: Mov c,p1,4 ; ANL c,p1,5 ; ANL c,p1,6 ; CPL c ; Mov p1,7,c ; SUMP Loop ; اگر این برنامه در یک میکروکنترلر 80196 اجرا شود بدون شک تابع NAND با سه ورودی تحقق می یابد(این مطلب را می توان با یک ولتمتر یا نوسان تحقیق کرد)تأخیر انتشار یک گذار در ورودی تا استقرار سطح منطقی درست در خروجی دست کم در مقایسه با معادل TTL آن بسیار طولانی است.
بسته به نسبت زمانی تغییر در ورودی و تشخیص این تغییر توسط برنامه،تأخیر بین 3 تا 17 میکروثانیه خواهد بود.(با فرض عملکرد استاندارد 80196 با استفاده از یک کریستال 12 مگاهرتز)در حالی که تأخیر انتشار در معادل TTL از مرتبه 10 نانو ثانیه است یعنی حدود هزار با کمتر.واضح است که در ایجاد توابع منطقی با سرعت میکروکنترلرها با مدارهای معادل TTL قابل مقایسه نیست.در بسیاری از کاربردها بویژه آنهایی که با عملکرد انسان سروکار دارند این تأخیرها با نانوثانیه اندازه گیری می شوند یا میکروثانیه و میلی ثانیه اهمیتی ندارند،هنگامی که فشار روغن در خودروی شما افت می کند آیا لازم است که ظرف چند میکروثانیه مطلع شوید؟)مثال گیت منطقی نشان می دهد که میکروکنترلرها می توانند عملیات منطقی را انجام دهند از این گذشته هر چه طراحی ها پیچیده تر باشند طراحی میکروکنترلر بیشتر خود را نشان می دهد،تعداد کم اجزاءمزیتی است که قبلاً به آن اشاره شده علاوه برآن عملیات پیش بینی نشده در برنامه کنترلی را می توان تنها با تغییر نرم افزار دگرگون کرد و این روش کمترین اثر ممکن را روی چرخه تولید خواهد گذاشت.
D7D6D5D4D3D2D1D0 D15D14D13D12D11D10D9D8D7D6D5D4D3D2D1D0 GATE4TM1M0GATECLTM1M0 TF1TR1TF0TR0IE1IT1IE0IT0