بخشی از مقاله

ميكروكنترلر 8051

1-1 دراين بخش اتبدا به اعضاي مختلف خانواده ميكروكنترلر 8051 و ويژگي هاي آنها نگاه مي كنيم . به علاوه خواهيم ديد كه سازندگان 8051 چه كساني هستندوچه نوع محصولي ارائه مي دهند .
تاريخچه مختصري از 8051


درسال 1981 شركت Intel ميكروكنترلربه نام 8051 را معرفي كرد . اين ميكروكنترلرداراي 128 بايت 4k , RAM بايت ROM دو تايمر ، يك پورت سريال وچهار پورت موازي ( هريك 8 بيت ) بود كه همه آنها دريك تراشه تعبيه شده بودند . زماني به آن سيستم در يك تراشه مي گفتند . 8051 يك پروسسور 8 بيت است ، يعني CPU هر بار مي تواند فقط روي 8بيت داده كار كند . داده هاي

بزرگتر از 8 بيت بايد به قطعات 8 بيت بشكنند وسپس بوسيلهCPU پردازش شوند . 8051 كلا داراي چهار پورت I/O با عرض 8 بيت است . شكل 2-1 را ملاحظه كنيد گرچه 8051 مي تواندحداكثر 64K حافظه ROM درتراشه داشته باشد ، بسياري از سازندگان فقط 4K بايت را درتراشه كار گذاشته اند .اين مطلب بعدا بطور مفصل بحث شده است .
پس از آنكه Intel بشرط حفظ سازگاري با 8051 اجازه توليد را به ديگر سازندگان داد تراشه مذكور بسيار مورد توجه قرار گرفت .اين توافق منجر به توليد انواع 8051 با سرعت هاي متفاوت مقداري ROM در تراشه بوسيله نيم دو جين سازنده شد . ما بعضي از آنها را بعدا بررسي خواهيم كرد . آنچه اهميت دارداين است كه گرچه انواع مختلف 8051 با سرعت ومقدار ROM متفاوت در تراشه موجودند ولي همه آنها با 8051 اصلي از نظر دستورات سازگارند . اين بدان معني است كه اگرشما برنامه اي براي يكي بنويسيد ، مستقل از سازنده روي ديگري هم قابل اجرا ست .
ميكروكنترلر 8051
8051 عضواصلي خانواده 8051 است Intel آن را MCS-51 مي نامد . جدول 1-1 امكانات اصلي 8051 را نشان مي دهد .
جدول 1-1 امكانات 8051
Quantity Feature


4K bytes ROM
128 bytes RAM
2 Timer
32 I/O Pins
1 Serial port


6 Interrupt sources

توجه : مقدار ROM د رتراشه حجم برنامه را نشان مي دهد .
ديگر اعضاي خانواده 8051
دو عضو ديگر از ميكروكنترلهاي خانواده 8051 با نام 8052 و 8031 نيز وجود دارند .
ميكروكنترلر 8052
8052 عضوي ديگر از خانواده 8051 است اين كنترلر همه امكانات 8051 بعلاوه 128 بايت RAM ويك تايمر اضافي را دارد به بيان ديگر ، 8052 داراي 256 بايت RAM و 3تايمر است اين كنترلر بجاي 8K,4K حافظه ROM را در تراشه داراست .جدول 2-1 ملاحظه شود .
ميكروكنترلرها و پردازنده هاي دروني
همانطور كه از جدول 4-1 ملاحظه مي شود ، 8051 زير مجموعه اي از 8052 است بنابراين همه برنامه هاي نوشته شده براي 8051 قابل اجرا بر روي 8052 نيز هستند ولي عكس آن صحيح نيست .
ميكروكنترلر 8053
ديگر عضو خانواده 8051 تراشه 8053 است .اين تراشه اغلب بنام 8051 بي ROM خوانده مي شود زيرا داراي OK بايت حافظه ROM است .براي استفاده از اين تراشه بايد يك ROM خارجي به آن اضافه كرد اين ROM خارجي حاوي برنامه اي است كه بايد برداشته شده واجرا شود .اين تراشه را با 8051 مقايسه كنيد كه در آن ROM دروني حاوي برنامه مشابهي براي برداشت و اجرا مي تواند باشد ولي به 4K بايت كد محدود است .
ROM متصل به 8031 مي تواند تا 64K بايد باشد .درروند افزايش ROM خارجي به 8031

دو پورت را از دست مي دهيد .بنابراين دو پورت I/O براي كاربر باقي مي ماند . براي حل اين مشكل ، مي توان دو I/Oخارجي به 8031 اضافه كرد . اتصال 8031 به حافظه وپورت هاي I/O همچون تراشه 8255 در فصل 14 بحث شده است .همچنين انواع 8031 با سرعت هاي مختلف بوسيله كمپاني هاي متفاوت در دسترسند .


8031 8052 8051 Feature
OK 8K 4K ROMon –chip- program space in bytes) )


128 256 128 RAM ( bytes)
2 3 2 Timers
32 32 32 I/O
1 1 1 Serial port
6 8 6 Interrupt sources

جدول 2-1 مقايسه اعضاي خانواده 8051
فصل اول :ميكروكنترلرهاي 8051
انواع ميكروكنترلر 8051
گرچه 8051 رايج ترين عضو خانواده 8051 است ، ولي شما قادر نخواهيد بود شماره قطعه اي بصورت 8051 ملاحظه كنيد . دليل اين است كه 8051 با حافظه هاي متفاوتي چون ROM UV-EPحافظه سريع ، NV-RAM در دسترس است كه هر يك شماره قطعه متفاوتي دارد . نوع ROM UV-EP خانواده 8051 تراشه 8751 است نوع ROM سريع بوسيله كمپاني هاي متعدد از جمله Atmel راهي بازار شده است . 8051 نوع سريع از Atmel است كه AT89C51 خوانده مي شود . نوع NV-RAM از 8051 بوسيلهDallas semiconductor بنام DS500 شناخته مي شود .همچنين نوع OTP ( يكبار قابل برنامه ريزي ) خانواده 8051 بوسيله سازندگان متعددي توليد شده است اكنون هر يك از تراشه هاي فوق را بطور خلاصه توصيف و كاربرد آنها را بيان مي كنيم .
ميكرو كنترلر 8751
تراشه 8751 فقط بايت حافظه ROM UV- EPدروني است .هنگام استفاده از اين تراشه در طراحي و پياده سازي به دستگاه برنامه نويسي ROM Pو پاك كننده براي پاك كردن ROM UV-EPدردرون 8751 قبل از برنامه نويسي نياز است .باتوجه به اين نكته كه ROM درون اين تراشه از نوع ROM UV-EPاست ،حدود 20 دقيقه براي پاك كردن آن وقت لازم است تا بتوان بعد از آن عمل برنامه نويسي را انجام داد ، اين مسئله موجب شد تا بسياري از توليد كنندگان انواع سريع و NV-RAM نوع 8751 را كه در زير بحث شده بكار ببرند .همچنين نوع سريع 8751 نيز توسط تعدادي از توليد كنندگان ساخته شده است .


AT89C51 از شركت Atmel
اين تراشه 8051 رايج داراي ROM سريع مي باشد ، در طراحي هاي سريع اين نوع حافظه ايده ال است زيرا حافظه سريع مي تواند طي چند ثانيه ،درمقايسه 20 دقيقه لازم براي 8751 پاك شود .با اين دليل AT89C51 بجاي 8751 بكار برده شده است .تا هنگام پاك كردن تراشه وقتي تلف نشود وبدينوسيله ساخت سيستم سريع گردد هنگام استفاده از AT89C51 براي سخت سيستم هاي مبتني بر ميكروكنترلر به سوزاننده يا برنامه ريز ROM سريع نياز داريم ، بااين وجود به پاك كننده ROM نياز نيست .توجه داشته باشيد كه در حافظه سريع بايد تمام حافظه پاك شود تا بتوان

د مجددا آن را برنامه نويسي كرد .پاك كردن حافظه سريع با خود سوزاننده صورت ميگيرد و با اين دليل پاك كننده جداگانه اي لازم نمي باشد .براي حذف سوزاننده ROM P Atmelروي نوعي از AT89C51 كار مي كند كه مي تواند از طريق پورت سريال COM يك IBM PC برنامه ريزي شود .

جدول 3-1 انواع 8051 از Amtel
بسته بندي Vcc وقفه تايمر پايه هايI/O RAM ROM شماره قطعه
40 5V 6 2 32 128 4K AT89C51
40 3V 6 2 32 128 4K AT89LV51
20 3V 3 1 15 64 1K AT89C1051
20 3V 6 2 15 128 2K AT89C2051
40 5V 8 3 32 128 8K AT89C52
40 3V 8 3 32 128 8K AT89LV52

توجه : C درشماره قطعه بمعني CMOS است .
محصولات مختلفي از نظرسرعت و بسته بندي توليد شده است . جدول 4-1 را ببينيد مثلا به AT89C51-12PCتوجه كنيد كه در آن C قبل از 51 به معني CMOS است بنابراين توان مصرفي كمي دارد .
جدول 4-1 8051 با سرعت هاي مختلف از Amell
مورد استفاده بسته بندي پايه ها سرعت شماره قطعه
تجاري پلاستيك DIP 40 12MHz At89c51-12PC
تجاري پلاستيكDIP 40 16MHz AT89C51- 16PC
تجاري پلاستيكDIP 40 20MHz AT89C51-20PC

12 به معني P.12MHz براي پلاستيكي بودن بسته C,DIP بمعني تجاري است كه د رمقابل M به معني نظامي بكار مي رود-12PC AT89C51 براي پروژه هاي دانشجويي مناب است .

DS5000از Dollas Semiconductor
نوع رايج ديگر از 8051 تراشه DS5000از Dollas Semiconductor است . ROM در DS5000 از نوعNV - RAM است قابليت نوشتن / خواندن NV-RAM اجازه مي دهد تا برنامه در ROM در حالي كه روي سيستم نصب است بار شود . اين كار راحتي مي توان ازطريق IBM PC انجام داد . به اين نوع برنامه نويسي ، بار كردن برنامه در سيستم DS5000 مي گويند . كه انجام آن ا زطريق پورت سريال PC آن را براي ساخت سيستم ها درخانه ايده ال مي كند . مزيت ديگر NV-

RAM قابليت تغيير يك بايت در هر بار است . اين قابليت با ROM UV- EPو حافظه سريع كار مي كند ومي تواند از طريق پورت سريال COMيك IBM PC برنامه ريزي شود .
جدول 5-1 انواع 8051 از Dallas
بسته بندي Vcc وقفه ها تايمر ها پايه هايI/O RAM ROM شماره قطعه
40 5V 6 2 32 128 8K Ds5000-8
40 5V 6 2 32 128 32K Ds5000-32
40 5V 6 2 32 128 8K DS5000T-8
40 5V 6 2 32 128 32K Ds5000t-8

 

توجه كنيد كه ساعت زمان واقعي با تايمر تفاوت دارد ساعت زمان واقعي ، زمان شبانه روز ( ساعت ، دقيقه ، ثانيه ،) و تاريخ ( سال ،ماه ، روز) را حتي اگر منبع تغذيه قطع شود توليد مي كند .
انواع مختلفي DS5000 از نظر سرعت و بسته بندي وجوددارد كه در جدول 8-1 نشان داده شده است . مثلا DS5000-8-8 داراي 8K NV -RAM با سرعت 8 MHz است .اغلب DS50008-12 يا -8-12 DS5000 براي پروژه هاي دانشجويي مناسب است .
جدول 6-1 انواع 8051 از Dallas
سرعت NV- RAM شماره قطعه
8 MHz 8K DS5000-8-8
12 MHz 8K DS5000-8-12
8 MHz 32K DS5000-32-8
8 MHz (With RTC) 32K DS5000T-32-8
12 MHz 32K DS5000-32-12
12 MHz (With RTC) 8K DS5000T-8-12


نوع OTPاز 8051
انواع OTP از از8051 منابع مختلف در دسترس قرار دارد . انواع سريع و NV- RAM معمولا براي توسعه توليد بكار برده مي شود . وقتي كه محصولي طراحي شد وبغايت اصلاح گرديد ، نوع OTP از 8051 براي توليد انبوه بكار برده مي شود زيرا از لحاظ قيمت بسيار ارزانتر است .
خانواده 8051 از Philips
محصول مهم ديگري از خانواده 8051 بوسيله شركت Philips ارائه شده است اين شركت از نظر نوع ، بيشترين توليد ميكروكنترلر را دارد . بسياري از محصولات آن شامل امكاناتي مثل تبديل I/O , D-A ,A-D توسعه يافته وهر دونوع OTP و حافظه سريع است .


اين فصل پايه هاي 8051 را توصيف كرده وسپس برنامه نويسي پورتI/O را همراه با مثال هايي ، در 8051 نشان مي دهد .
2-1 توصيف پايه هاي 8051
گرچه اعضاء خانواده 8051 ( مثل DS5000,89C51) دربسته هاي متفاوتي مثلLCC , QFP ,DIP عرضه شده اند ، همه آنها براي انواع توابع مانند WR, RD , I/O آدرس داده ووقف

ه تدارك ديده شده اند . بايد متذكر شد كه بعضي كمپاني ها نوع 20 پايه 8051 راباكاهش پورت هاي I/O دررابطه باكاربردها كم تقاضا ، توليد كرده اند با اين وجود ، چون عمده0 توليد كنندگان از تراشه هاي DIP با 40 پايه استفاده مي كنند ، مابر آنها تاكيد خواهيم كرد .
با بررسي شكل 1-1- ديده مي شود كه از 40 پايه جمعا 32 پايه چهارپورت P3,P2,P1,P0 كنار گذاشته شده اند .بقيه پايه ها به PSEN, EA, RST , XTAL2 , XTAL1 , GND , Vcc اختصاص يافته اند .
شش پايه ( EA , RST , XTAL2, XTAL1, GND , Vcc ازهشت پايه فوق بوسيله همه اعضاء خانواده 8031,8051 بكار رفته اند . به بيان ديگر ، بدون توجه به اينكه از خانواده 8051 يا 8031 هستند ، آنها بايد براي بكار اندازي سيستم وصل شوند دو پايه ديگر ALE, PSENدراصل در سيستم هاي مبتني بر 8031 بكار مي روند . ابتدا وظيفه هرپايه را توصيف مي كنيم .پورت ها بطور جداگانه مورد بحث قرار گرفته اند .

Vcc
پايه 40 ولتاژ تغذيه را براي تراشه فراهم مي كند ولتاژ منبع SV است .
GND
پايه 20 زمين است .
XTAL2,XTAL1
8051 داراي يك اسيلاتور ( نوسان ساز ) درون تراشه اي است ولي برا ي راندن آن به يك ساعت كريستال نياز است . اغلب يك اسيلاتور كريستال كوارتز به ورودي هاي XTAL1 ( پايه 19( و XTAL2 ( پايه 18) وصل است . اسلاتور كريستال كوارتز متصل و XTAL2,XTAL1 به دو خازن 30PF وصل مي باشد . يك طرف هر يك از خازن ها مثل شكل 2-1 ( الف ) به زمين وصل است .
بايد توجه كرد كه سرعت هاي مختلفي در خانواده 8051 وجود دارد . غرض ا

ز سرعت حداكثر ، فركانس متصل به XTALاست .مثلا يك تراشه 12MHz بايد به فركانس 12MHz يا كمتر وصل شود. بهمين ترتيب يك ميكروكنترلر 20MHz نبايد به فركانسي بيش از 20MHz وصل شود . وقتي كه 8051 به اسيلاتور كريستال وصل مي شود ومنبع تغذيه روشن مي گردد ،مي توانيم با استفاده از اسيلو سكپ فركانس را روي XTAL2 ملاحظه كنيم .
اگر مي خواهيد از منبع فركانسي بجز اسيلاتور كريستال ، مثل اسيلاتور TTL استفاده نماييد ، بايد آن را به XTAL1وصل كنيد ودر اين حال 2 XTALطبق شكل 2-1 (ب) رها مي شود .
RST
پايه 9 پايه RESET( باز نشاني ) است .اين پايه يك ورودي فعال بالاست . بعد از

اعمال يك پالس بالا به اين پايه ، ميكرو كنترلر باز نشانده شده وهمه فعاليت ها را رها مي كند اغلب به اين حالت ،باز نشاني به هنگام روشن شدن مي گويند . فعال كردن يك باز نشاني به هنگام روشن شدن ، موجب از دست رفتن همه مقادير در ثبات ها مي شود جدول 7-1 ليست غير كاملي از ثبات هاي 8051 و مقادير آن ها را پس از باز نشاني به هنگام روشن شدن نشان مي دهد .
جدول 7-1 مقدار RESET بعضي از ثبات هاي 8051
مقدار باز نشان ثبات
0000 P
0000 ACC
0000 B
0000 PSW
0007 SP
0000 DPTR

در ROM واداشته مي شود . اين بدان معني است كه ما بايد اولين خط كه مبدا را درمكان 0 از ROM قرار مي دهيم زير آنجا مكاني است كه CPU در آن بيدار مي شود وانتظار دارد تا اولين دستور را بيابد .
به منظور كاراتر كردن وروديRESET بايد داراي حداقل دوره 2 سيكل ماشيني باشد . به بيان ديگر ، پالس بايد براي حداقل 2 سيكل ماشين قبل از پائين رفتن ، در سطح بالا بماند .
در 8051 بك سيكل ماشين با 12 پريود اسيلاتور تعريف مي شود .
EA


اعضاء خانواده 8051 مانند 8751 89C51 يا DS5000 همگي با ROM درتراشه براي ذخيره برنامه ارائه مي شوند.در اين حالت ، پايه EA به Vcc وصل گردد . براي خانواده 8032,8031 كه درآنها ROM وجود ندارد ، كد در ROM بيروني ذخيره مي شود وسپس بوسيله 8031/32 بداخل كشيده خواهد شد . بنابراين براي 8031 پايهEA بايد به GND متصل گردد تا ذخيره شدن كد درخارج تراشه مشخص شود . EA كه به معني دستيابي بيروني است ، پايه شماره 31 دربسته DIPميباشد . اين يك پايه ورودي است و بايد به Vcc يا GND وصل گردد .به بيان

ديگر ، نمي توان آن را آزاد رها كرد .
درفصل 14 خواهيم ديد كه 8031 اين پايه را به همراه PSEN براي دستيابي به برنامه هاي ذخيره شده در حافظه ROM واقع در خارج 8031 بكار مي برد . در 8051 با ROM درتراشه مانند 89C51,8751 يا DS5000 EAبه Vcc وصل شده كه ما آن را در بخش بعد خواهيم ديد .
پايه هايي كه تاكنون بحث شدند بدون توجه به نوع خانواده ، بايد متصل شوند دو پايه بعد عمدتا در سيستم هاي مبتني بر خانواده 8031 بكار مي روند .
PSEN
اين يك پايه خروجي است PSEN به معني فعال كردن برنامه ذخيره است .دريك سيستم مبتني بر 8031 كه در آن ROM بيروني كد برنامه را نگه دارد ، اين پايه متصل به پايه OE از ROM است فصل 14را ملاحظه كنيد .
ALE
ALE ( فعال ساز لچ آدرس ) يك پايه خروجي فعال بالاست . وقتي كه 8031 به يك حافظه بيروني وصل مي شود ، پورت 0 هر دو مقدار داده و آدرس را تهيه مي كند به بيان ديگر ، 8031 آدرس و داده را از طريق پورت 0 مولتي پلكس مي نمايد تا بدين ترتيب در مصرف پايه ها صرفه جويي شود پايه ALE براي دي مولتي پلكس كردن آدرس و داده بكار مي رود ودر آن پايه G از ترا شه74LS373 به ALE وصل مي گردد .اين مطلب در فصل 14 تشريح شده است .
پايه هاي پورت I/O وعملكرد آن ها
چهار پورت P3,P2,P1,P0 هر كدام 8 پايه را بكار مي برند تا پورت ها را 8 بيتي سازند . همه پورت ها پس از RESET بصورت خروجي در مي آيند و آماده استفاده به عنوان خروجي هستند .براي استفاده از هر يك از اين پورت ها به عنوان ورودي ، بايد آنها را برنامه ريزي كرد اين عمل در طول اين بخش توضيح داده خواهد شد .
ابتدا هر پورت را تشريح مي كنيم .
پورت 0
پورت 0 جمعا 8 پايه ( 32-39) را اشغال مي كند . مي توان از آن به عنوان ورودي ياخروجي استفاده كرد . براي استفاده از پايه هاي پورت 0 به عنوان ورودي وخروجي ، هر پايه بايد از بيرون به يك مقاومت بالا كش وصل شود .دليل اين است كه پورت P0 برخلاف پورت هاي P3,P2,P1 يك درين باز است دراين باز جمله اي است كه براي تراشه هاي MOS بكار برده مي شود وشبيه كلكتور باز در تراشه هاي TTL است . در هر سيستم هنگام استفاده از89C51 , 8751 يا DS5000 معمولا P0 را به مقاومت هاي بالاكش وصل مي كنيم .
باين ترتيب از مزيت پورت 0 براي هر دو نوع ارتباط ورودي و خروجي استفاده مي شورت خروجي آرايش مي يابد .
پورت 0 به عنوان ورودي
با مقاومت هاي متصل به پورت 0 براي اينكه آن را به ورودي تبديل كنيم ، پورت بايد با نوشتن تمام 1 برنامه ريزي شود .در كد زير پورت 0 ابتدا با نوشتن 1 ها بصورت ورودي آرايش مي يابد و سپس داده از آن پورت دريافت وبه P1 ارسال گردد .
MOV A#OFFH .A= FF hex
MOV P0.A .Make p0 an input port
By writing all ls to it
BACK : MOV A. P0 get data from p0
MOV P1 a send it to port 1
SJMP BACK keep doing it
نقش دوگانه پورت 0
همانطور كه در شكل 1-1- ديده شد ، پورت 0 بصورت AD0-AD7 نشان داده شده و با اين معني است كه قابل استفاده به عنوان ورودي و خروجي است وقتي كه 8051/31 به يك حافظه بيروني متصل مي شود .پورت 0 هردو مقدار آدرس وداده را فراهم مي كند 8051 داده و آدرس را از طريق پورت 0 مولتي پلكسي مي نمايد تا در پايه ها صرفه جويي شود ALEداده يا آدرس بدون اطلاعات درP0 را مشخص مي نمايد ، وقتي ALE=0 باشد D0-D7 داده را فراهم مي كند ،ولي اگرALE=1 باشد ، آدرس A0-A7 در دسترس است . بنابراين ALE به كمك لچ 74

ls373 آدرس و داده را دي مولتي پلكس مي نمايد .
پورت 1
پورت 1 جمعا 8 پايه ( پايه هاي 1 تا 8) رااشغال مي كندمي توان از آن به عنوان ورودي ياخروجي استفاده كرد . برخلاف پورت 0 اين پورت نيازي به مقاومت هاي بالاكش ندارد زيرا داراي مقاومت بالاكش دروني است .
پورت 1 به عنوان ورودي
براي اينكه 1 ورودي شود ، بايددرهمه بيت هاي آن تمام 1 نوشت .


پورت 2
پورت 2 جمعا 8 پايه ( از پايه 21 تا 29 ) را اشغال كرده است مي توان آن را به عنوان ورودي يا خروجي برنامه ريزي كرد . همچون p2,p1 هم به مقاومت هاي بالاكش نيازي ندارند زيرا داراي مقاومت هاي بالاكش دروني اند بعد از بازنشاني ، پورت 2 بصورت پورت خروجي در مي آيد .

پورت 2 به عنوان ورودي
براي ورودي ساختن پورت 2 بايد در آن تمام 1 نوشته شود .

نقش دوگانه پورت 2
درسيستم هاي مبتني بر p2,DS5000,89C51, 8751 به عنوان يكI/O ساده بكار رفته است با اين وجود در سيستم هاي مبتني بر 8031 پورت 2 بايد همراه با P0 مورد استفاده قرا رمي گيرد تا آدرسي 16 بيتي را براي حافظه بيروني فراهم سازد .پورت 2 به عنوان A8-A15 نيز به درنظر گرفته مي شود . با اين ترتيب اين پورت نقشي دوگانه دارد . چون 8031 قادراست تا 64K بايت از حافظه بيروني را آدرس دهي كند ، مسيري براي 6 بيت آدرس نياز دارد . درحالي كه P0 هشت بيت پائين ربته را از طريق A0-A7 تهيه مي كند ، فراهم نمودن آدرس هاي A8-A15 بعهده P2 است .به بيان ديگر ، وقتي 8031 به حافظه بيروني وصل است ،P2 براي 8 بيت بالاتر آدرس 16 بيتي بكار رفته است .ونمي تواند براي I/Oبكار رود .
از بحث فوق ،نتيجه مي گيريم كه در سيستم هاي مبتني بر89C51 يا DS5000 سه پورت P2,P1,P0 را براي عمليات I/O در اختيار داريم .اين مقدار ورودي - خروجي براي بسياري از ميكروكنترلرها كفايت مي كند همانطور كه در زير خواهيم ديد پورت 3 براي وقفه ها وديگر سيگنال ها كنا رگذاشته شده است.
پورت 3


پورت 3 هم 8 پايه ، از پايه 10 الي 17 را اشغال مي كند .مي توان آن را به عنوان ورودي وخروجي بكار برد .P3 همچون P2,P1 نيازي به مقاومت هاي بالاكش را ندارد .گرچه پورت 3 پس از باز نشاني بصورت پورت خروجي درمي آيد ، ولي اين ، يك طريق معمولي در استفاده از آن نيست .پورت داراي توانمندي اضافي ديگري در تهيه بعضي از سيگنال هاي مهم خارجي

مثل وقفه هاست .
اين اطلاعات به هر دو تراشه 8031,8051 اختصاص دارد .
پايه P3.1,P3.0 براي تبادل سيگنال اطلاعات TxD , RxD بكار مي رود .
بيت P3.3, P3.2 براي وقفه هاي خارجي كنار گذاشته شده اند .بيت P3.5, P3.4 براي تايمرهاي 1,0 درنظر گرفته شده اند نهايتا P3.7, P3.6 براي تهيه سيگنال هاي RD,WR از حافظه خارجي د ر سيستم هاي مبتني 8031 كنار گذاشته شده اند .
در سيستم هاي مبتني بر 89C51,8751 يا DS5000 پايه هاي P3.7,P3.6, براي I/O بكار رفته اند و بقيه پايه ها در پورت 3 براي نقش ديگرشان در نظر گرفته شده اند .


برنامه ريزي I/O دستكاري بيتي
در اين بخش ما دستورات I/O را در 8051 مورد بررسي بيشتر قرار مي دهيم .همچنين به دستكاري I/O بيتي توجه خاصي خواهد شد . زيرا اين از امكانات بالقوه ومورد توجه 8051 است بحث مفصلي از پورت هاي I/O در 8051 در پيوست 2- ( پ ) آمده است .
روش هاي مختلف دستيابي به تمام 8 بيت
در كد زير ، همچون مثال هاي قبلي ، I/O همه هشت بيت پورت 1 دستيابي مي شود .
BACK: MOV A.# 55H
MOV P1. A
ACALL DELAY
MOV A.# 0AAH
MOV P1. A
ACALL DELAY


SJMP BACKعي برنامه فوق را قبلا ديده ايم اكنون مي توانيم كد فوق را بصورت كاراتر نوشته و با دستيابي مستقيم پورت از مراجعه به انباره خودداري نمائيم .
اين نكته در زير نشان داده شده است .
BACK: MOV P1.# 55H
ACALL DELAY
MOV P1.# 0AAH
ACALL DELAY
SJMP BACK
مي توانيم كد فوق را باتكنيكي بنام خواندن –اصلاح – نوشتن بنوعي ديگر بنويسيم اين روش در زير آمده است

در متن اصلی مقاله به هم ریختگی وجود ندارد. برای مطالعه بیشتر مقاله آن را خریداری کنید