ميكروكنترلر ۸۰۵۱

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

درسال ۱۹۸۱ شركت Intel ميكروكنترلربه نام ۸۰۵۱ را معرفي كرد . اين ميكروكنترلرداراي ۱۲۸ بايت ۴k , RAM بايت ROM دو تايمر ، يك پورت سريال وچهار پورت موازي ( هريك ۸ بيت ) بود كه همه آنها دريك تراشه تعبيه شده بودند . زماني به آن سيستم در يك تراشه مي گفتند . ۸۰۵۱ يك پروسسور ۸ بيت است ، يعني CPU هر بار مي تواند فقط روي ۸بيت داده كار كند . داده هاي

بزرگتر از ۸ بيت بايد به قطعات ۸ بيت بشكنند وسپس بوسيلهCPU پردازش شوند . ۸۰۵۱ كلا داراي چهار پورت I/O با عرض ۸ بيت است . شكل ۲-۱ را ملاحظه كنيد گرچه ۸۰۵۱ مي تواندحداكثر ۶۴K حافظه ROM درتراشه داشته باشد ، بسياري از سازندگان فقط ۴K بايت را درتراشه كار گذاشته اند .اين مطلب بعدا بطور مفصل بحث شده است .
پس از آنكه Intel بشرط حفظ سازگاري با ۸۰۵۱ اجازه توليد را به ديگر سازندگان داد تراشه مذكور بسيار مورد توجه قرار گرفت .اين توافق منجر به توليد انواع ۸۰۵۱ با سرعت هاي متفاوت مقداري ROM در تراشه بوسيله نيم دو جين سازنده شد . ما بعضي از آنها را بعدا بررسي خواهيم كرد . آنچه اهميت دارداين است كه گرچه انواع مختلف ۸۰۵۱ با سرعت ومقدار ROM متفاوت در تراشه موجودند ولي همه آنها با ۸۰۵۱ اصلي از نظر دستورات سازگارند . اين بدان معني است كه اگرشما برنامه اي براي يكي بنويسيد ، مستقل از سازنده روي ديگري هم قابل اجرا ست .
ميكروكنترلر ۸۰۵۱
۸۰۵۱ عضواصلي خانواده ۸۰۵۱ است Intel آن را MCS-51 مي نامد . جدول ۱-۱ امكانات اصلي ۸۰۵۱ را نشان مي دهد .
جدول ۱-۱ امكانات ۸۰۵۱
Quantity Feature

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

۶ Interrupt sources

توجه : مقدار ROM د رتراشه حجم برنامه را نشان مي دهد .
ديگر اعضاي خانواده ۸۰۵۱
دو عضو ديگر از ميكروكنترلهاي خانواده ۸۰۵۱ با نام ۸۰۵۲ و ۸۰۳۱ نيز وجود دارند .
ميكروكنترلر ۸۰۵۲
۸۰۵۲ عضوي ديگر از خانواده ۸۰۵۱ است اين كنترلر همه امكانات ۸۰۵۱ بعلاوه ۱۲۸ بايت RAM ويك تايمر اضافي را دارد به بيان ديگر ، ۸۰۵۲ داراي ۲۵۶ بايت RAM و ۳تايمر است اين كنترلر بجاي ۸K,4K حافظه ROM را در تراشه داراست .جدول ۲-۱ ملاحظه شود .
ميكروكنترلرها و پردازنده هاي دروني
همانطور كه از جدول ۴-۱ ملاحظه مي شود ، ۸۰۵۱ زير مجموعه اي از ۸۰۵۲ است بنابراين همه برنامه هاي نوشته شده براي ۸۰۵۱ قابل اجرا بر روي ۸۰۵۲ نيز هستند ولي عكس آن صحيح نيست .
ميكروكنترلر ۸۰۵۳
ديگر عضو خانواده ۸۰۵۱ تراشه ۸۰۵۳ است .اين تراشه اغلب بنام ۸۰۵۱ بي ROM خوانده مي شود زيرا داراي OK بايت حافظه ROM است .براي استفاده از اين تراشه بايد يك ROM خارجي به آن اضافه كرد اين ROM خارجي حاوي برنامه اي است كه بايد برداشته شده واجرا شود .اين تراشه را با ۸۰۵۱ مقايسه كنيد كه در آن ROM دروني حاوي برنامه مشابهي براي برداشت و اجرا مي تواند باشد ولي به ۴K بايت كد محدود است .
ROM متصل به ۸۰۳۱ مي تواند تا ۶۴K بايد باشد .درروند افزايش ROM خارجي به ۸۰۳۱

دو پورت را از دست مي دهيد .بنابراين دو پورت I/O براي كاربر باقي مي ماند . براي حل اين مشكل ، مي توان دو I/Oخارجي به ۸۰۳۱ اضافه كرد . اتصال ۸۰۳۱ به حافظه وپورت هاي I/O همچون تراشه ۸۲۵۵ در فصل ۱۴ بحث شده است .همچنين انواع ۸۰۳۱ با سرعت هاي مختلف بوسيله كمپاني هاي متفاوت در دسترسند .

۸۰۳۱ ۸۰۵۲ ۸۰۵۱ Feature
OK 8K 4K ROMon –chip- program space in bytes) )

۱۲۸ ۲۵۶ ۱۲۸ RAM ( bytes)
2 3 2 Timers
32 32 32 I/O
1 1 1 Serial port
6 8 6 Interrupt sources

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

AT89C51 از شركت Atmel
اين تراشه ۸۰۵۱ رايج داراي ROM سريع مي باشد ، در طراحي هاي سريع اين نوع حافظه ايده ال است زيرا حافظه سريع مي تواند طي چند ثانيه ،درمقايسه ۲۰ دقيقه لازم براي ۸۷۵۱ پاك شود .با اين دليل AT89C51 بجاي ۸۷۵۱ بكار برده شده است .تا هنگام پاك كردن تراشه وقتي تلف نشود وبدينوسيله ساخت سيستم سريع گردد هنگام استفاده از AT89C51 براي سخت سيستم هاي مبتني بر ميكروكنترلر به سوزاننده يا برنامه ريز ROM سريع نياز داريم ، بااين وجود به پاك كننده ROM نياز نيست .توجه داشته باشيد كه در حافظه سريع بايد تمام حافظه پاك شود تا بتوان

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

جدول ۳-۱ انواع ۸۰۵۱ از Amtel
بسته بندي Vcc وقفه تايمر پايه هايI/O RAM ROM شماره قطعه
۴۰ ۵V 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 است .
محصولات مختلفي از نظرسرعت و بسته بندي توليد شده است . جدول ۴-۱ را ببينيد مثلا به AT89C51-12PCتوجه كنيد كه در آن C قبل از ۵۱ به معني CMOS است بنابراين توان مصرفي كمي دارد .
جدول ۴-۱ ۸۰۵۱ با سرعت هاي مختلف از Amell
مورد استفاده بسته بندي پايه ها سرعت شماره قطعه
تجاري پلاستيك DIP 40 12MHz At89c51-12PC
تجاري پلاستيكDIP 40 16MHz AT89C51- 16PC
تجاري پلاستيكDIP 40 20MHz AT89C51-20PC

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

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

RAM قابليت تغيير يك بايت در هر بار است . اين قابليت با ROM UV- EPو حافظه سريع كار مي كند ومي تواند از طريق پورت سريال COMيك IBM PC برنامه ريزي شود .
جدول ۵-۱ انواع ۸۰۵۱ از Dallas
بسته بندي Vcc وقفه ها تايمر ها پايه هايI/O RAM ROM شماره قطعه
۴۰ ۵V 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 از نظر سرعت و بسته بندي وجوددارد كه در جدول ۸-۱ نشان داده شده است . مثلا DS5000-8-8 داراي ۸K NV -RAM با سرعت ۸ MHz است .اغلب DS50008-12 يا -۸-۱۲ DS5000 براي پروژه هاي دانشجويي مناسب است .
جدول ۶-۱ انواع ۸۰۵۱ از Dallas
سرعت NV- RAM شماره قطعه
۸ 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از ۸۰۵۱
انواع OTP از از۸۰۵۱ منابع مختلف در دسترس قرار دارد . انواع سريع و NV- RAM معمولا براي توسعه توليد بكار برده مي شود . وقتي كه محصولي طراحي شد وبغايت اصلاح گرديد ، نوع OTP از ۸۰۵۱ براي توليد انبوه بكار برده مي شود زيرا از لحاظ قيمت بسيار ارزانتر است .
خانواده ۸۰۵۱ از Philips
محصول مهم ديگري از خانواده ۸۰۵۱ بوسيله شركت Philips ارائه شده است اين شركت از نظر نوع ، بيشترين توليد ميكروكنترلر را دارد . بسياري از محصولات آن شامل امكاناتي مثل تبديل I/O , D-A ,A-D توسعه يافته وهر دونوع OTP و حافظه سريع است .

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

ه تدارك ديده شده اند . بايد متذكر شد كه بعضي كمپاني ها نوع ۲۰ پايه ۸۰۵۱ راباكاهش پورت هاي I/O دررابطه باكاربردها كم تقاضا ، توليد كرده اند با اين وجود ، چون عمده۰ توليد كنندگان از تراشه هاي DIP با ۴۰ پايه استفاده مي كنند ، مابر آنها تاكيد خواهيم كرد .
با بررسي شكل ۱-۱- ديده مي شود كه از ۴۰ پايه جمعا ۳۲ پايه چهارپورت P3,P2,P1,P0 كنار گذاشته شده اند .بقيه پايه ها به PSEN, EA, RST , XTAL2 , XTAL1 , GND , Vcc اختصاص يافته اند .
شش پايه ( EA , RST , XTAL2, XTAL1, GND , Vcc ازهشت پايه فوق بوسيله همه اعضاء خانواده ۸۰۳۱,۸۰۵۱ بكار رفته اند . به بيان ديگر ، بدون توجه به اينكه از خانواده ۸۰۵۱ يا ۸۰۳۱ هستند ، آنها بايد براي بكار اندازي سيستم وصل شوند دو پايه ديگر ALE, PSENدراصل در سيستم هاي مبتني بر ۸۰۳۱ بكار مي روند . ابتدا وظيفه هرپايه را توصيف مي كنيم .پورت ها بطور جداگانه مورد بحث قرار گرفته اند .

Vcc
پايه ۴۰ ولتاژ تغذيه را براي تراشه فراهم مي كند ولتاژ منبع SV است .
GND
پايه ۲۰ زمين است .
XTAL2,XTAL1
8051 داراي يك اسيلاتور ( نوسان ساز ) درون تراشه اي است ولي برا ي راندن آن به يك ساعت كريستال نياز است . اغلب يك اسيلاتور كريستال كوارتز به ورودي هاي XTAL1 ( پايه ۱۹( و XTAL2 ( پايه ۱۸) وصل است . اسلاتور كريستال كوارتز متصل و XTAL2,XTAL1 به دو خازن ۳۰PF وصل مي باشد . يك طرف هر يك از خازن ها مثل شكل ۲-۱ ( الف ) به زمين وصل است .
بايد توجه كرد كه سرعت هاي مختلفي در خانواده ۸۰۵۱ وجود دارد . غرض ا

ز سرعت حداكثر ، فركانس متصل به XTALاست .مثلا يك تراشه ۱۲MHz بايد به فركانس ۱۲MHz يا كمتر وصل شود. بهمين ترتيب يك ميكروكنترلر ۲۰MHz نبايد به فركانسي بيش از ۲۰MHz وصل شود . وقتي كه ۸۰۵۱ به اسيلاتور كريستال وصل مي شود ومنبع تغذيه روشن مي گردد ،مي توانيم با استفاده از اسيلو سكپ فركانس را روي XTAL2 ملاحظه كنيم .
اگر مي خواهيد از منبع فركانسي بجز اسيلاتور كريستال ، مثل اسيلاتور TTL استفاده نماييد ، بايد آن را به XTAL1وصل كنيد ودر اين حال ۲ XTALطبق شكل ۲-۱ (ب) رها مي شود .
RST
پايه ۹ پايه RESET( باز نشاني ) است .اين پايه يك ورودي فعال بالاست . بعد از

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

در ROM واداشته مي شود . اين بدان معني است كه ما بايد اولين خط كه مبدا را درمكان ۰ از ROM قرار مي دهيم زير آنجا مكاني است كه CPU در آن بيدار مي شود وانتظار دارد تا اولين دستور را بيابد .
به منظور كاراتر كردن وروديRESET بايد داراي حداقل دوره ۲ سيكل ماشيني باشد . به بيان ديگر ، پالس بايد براي حداقل ۲ سيكل ماشين قبل از پائين رفتن ، در سطح بالا بماند .
در ۸۰۵۱ بك سيكل ماشين با ۱۲ پريود اسيلاتور تعريف مي شود .
EA

اعضاء خانواده ۸۰۵۱ مانند ۸۷۵۱ ۸۹C51 يا DS5000 همگي با ROM درتراشه براي ذخيره برنامه ارائه مي شوند.در اين حالت ، پايه EA به Vcc وصل گردد . براي خانواده ۸۰۳۲,۸۰۳۱ كه درآنها ROM وجود ندارد ، كد در ROM بيروني ذخيره مي شود وسپس بوسيله ۸۰۳۱/۳۲ بداخل كشيده خواهد شد . بنابراين براي ۸۰۳۱ پايهEA بايد به GND متصل گردد تا ذخيره شدن كد درخارج تراشه مشخص شود . EA كه به معني دستيابي بيروني است ، پايه شماره ۳۱ دربسته DIPميباشد . اين يك پايه ورودي است و بايد به Vcc يا GND وصل گردد .به بيان

ديگر ، نمي توان آن را آزاد رها كرد .
درفصل ۱۴ خواهيم ديد كه ۸۰۳۱ اين پايه را به همراه PSEN براي دستيابي به برنامه هاي ذخيره شده در حافظه ROM واقع در خارج ۸۰۳۱ بكار مي برد . در ۸۰۵۱ با ROM درتراشه مانند ۸۹C51,8751 يا DS5000 EAبه Vcc وصل شده كه ما آن را در بخش بعد خواهيم ديد .
پايه هايي كه تاكنون بحث شدند بدون توجه به نوع خانواده ، بايد متصل شوند دو پايه بعد عمدتا در سيستم هاي مبتني بر خانواده ۸۰۳۱ بكار مي روند .
PSEN
اين يك پايه خروجي است PSEN به معني فعال كردن برنامه ذخيره است .دريك سيستم مبتني بر ۸۰۳۱ كه در آن ROM بيروني كد برنامه را نگه دارد ، اين پايه متصل به پايه OE از ROM است فصل ۱۴را ملاحظه كنيد .
ALE
ALE ( فعال ساز لچ آدرس ) يك پايه خروجي فعال بالاست . وقتي كه ۸۰۳۱ به يك حافظه بيروني وصل مي شود ، پورت ۰ هر دو مقدار داده و آدرس را تهيه مي كند به بيان ديگر ، ۸۰۳۱ آدرس و داده را از طريق پورت ۰ مولتي پلكس مي نمايد تا بدين ترتيب در مصرف پايه ها صرفه جويي شود پايه ALE براي دي مولتي پلكس كردن آدرس و داده بكار مي رود ودر آن پايه G از ترا شه۷۴LS373 به ALE وصل مي گردد .اين مطلب در فصل ۱۴ تشريح شده است .
پايه هاي پورت I/O وعملكرد آن ها
چهار پورت P3,P2,P1,P0 هر كدام ۸ پايه را بكار مي برند تا پورت ها را ۸ بيتي سازند . همه پورت ها پس از RESET بصورت خروجي در مي آيند و آماده استفاده به عنوان خروجي هستند .براي استفاده از هر يك از اين پورت ها به عنوان ورودي ، بايد آنها را برنامه ريزي كرد اين عمل در طول اين بخش توضيح داده خواهد شد .
ابتدا هر پورت را تشريح مي كنيم .
پورت ۰
پورت ۰ جمعا ۸ پايه ( ۳۲-۳۹) را اشغال مي كند . مي توان از آن به عنوان ورودي ياخروجي استفاده كرد . براي استفاده از پايه هاي پورت ۰ به عنوان ورودي وخروجي ، هر پايه بايد از بيرون به يك مقاومت بالا كش وصل شود .دليل اين است كه پورت P0 برخلاف پورت هاي P3,P2,P1 يك درين باز است دراين باز جمله اي است كه براي تراشه هاي MOS بكار برده مي شود وشبيه كلكتور باز در تراشه هاي TTL است . در هر سيستم هنگام استفاده از۸۹C51 , 8751 يا DS5000 معمولا P0 را به مقاومت هاي بالاكش وصل مي كنيم .
باين ترتيب از مزيت پورت ۰ براي هر دو نوع ارتباط ورودي و خروجي استفاده مي شورت خروجي آرايش مي يابد .
پورت ۰ به عنوان ورودي
با مقاومت هاي متصل به پورت ۰ براي اينكه آن را به ورودي تبديل كنيم ، پورت بايد با نوشتن تمام ۱ برنامه ريزي شود .در كد زير پورت ۰ ابتدا با نوشتن ۱ ها بصورت ورودي آرايش مي يابد و سپس داده از آن پورت دريافت وبه 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
نقش دوگانه پورت ۰
همانطور كه در شكل ۱-۱- ديده شد ، پورت ۰ بصورت AD0-AD7 نشان داده شده و با اين معني است كه قابل استفاده به عنوان ورودي و خروجي است وقتي كه ۸۰۵۱/۳۱ به يك حافظه بيروني متصل مي شود .پورت ۰ هردو مقدار آدرس وداده را فراهم مي كند ۸۰۵۱ داده و آدرس را از طريق پورت ۰ مولتي پلكسي مي نمايد تا در پايه ها صرفه جويي شود ALEداده يا آدرس بدون اطلاعات درP0 را مشخص مي نمايد ، وقتي ALE=0 باشد D0-D7 داده را فراهم مي كند ،ولي اگرALE=1 باشد ، آدرس A0-A7 در دسترس است . بنابراين ALE به كمك لچ ۷۴

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

پورت ۲
پورت ۲ جمعا ۸ پايه ( از پايه ۲۱ تا ۲۹ ) را اشغال كرده است مي توان آن را به عنوان ورودي يا خروجي برنامه ريزي كرد . همچون p2,p1 هم به مقاومت هاي بالاكش نيازي ندارند زيرا داراي مقاومت هاي بالاكش دروني اند بعد از بازنشاني ، پورت ۲ بصورت پورت خروجي در مي آيد .

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

نقش دوگانه پورت ۲
درسيستم هاي مبتني بر p2,DS5000,89C51, 8751 به عنوان يكI/O ساده بكار رفته است با اين وجود در سيستم هاي مبتني بر ۸۰۳۱ پورت ۲ بايد همراه با P0 مورد استفاده قرا رمي گيرد تا آدرسي ۱۶ بيتي را براي حافظه بيروني فراهم سازد .پورت ۲ به عنوان A8-A15 نيز به درنظر گرفته مي شود . با اين ترتيب اين پورت نقشي دوگانه دارد . چون ۸۰۳۱ قادراست تا ۶۴K بايت از حافظه بيروني را آدرس دهي كند ، مسيري براي ۶ بيت آدرس نياز دارد . درحالي كه P0 هشت بيت پائين ربته را از طريق A0-A7 تهيه مي كند ، فراهم نمودن آدرس هاي A8-A15 بعهده P2 است .به بيان ديگر ، وقتي ۸۰۳۱ به حافظه بيروني وصل است ،P2 براي ۸ بيت بالاتر آدرس ۱۶ بيتي بكار رفته است .ونمي تواند براي I/Oبكار رود .
از بحث فوق ،نتيجه مي گيريم كه در سيستم هاي مبتني بر۸۹C51 يا DS5000 سه پورت P2,P1,P0 را براي عمليات I/O در اختيار داريم .اين مقدار ورودي – خروجي براي بسياري از ميكروكنترلرها كفايت مي كند همانطور كه در زير خواهيم ديد پورت ۳ براي وقفه ها وديگر سيگنال ها كنا رگذاشته شده است.
پورت ۳

پورت ۳ هم ۸ پايه ، از پايه ۱۰ الي ۱۷ را اشغال مي كند .مي توان آن را به عنوان ورودي وخروجي بكار برد .P3 همچون P2,P1 نيازي به مقاومت هاي بالاكش را ندارد .گرچه پورت ۳ پس از باز نشاني بصورت پورت خروجي درمي آيد ، ولي اين ، يك طريق معمولي در استفاده از آن نيست .پورت داراي توانمندي اضافي ديگري در تهيه بعضي از سيگنال هاي مهم خارجي

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

برنامه ريزي I/O دستكاري بيتي
در اين بخش ما دستورات I/O را در ۸۰۵۱ مورد بررسي بيشتر قرار مي دهيم .همچنين به دستكاري I/O بيتي توجه خاصي خواهد شد . زيرا اين از امكانات بالقوه ومورد توجه ۸۰۵۱ است بحث مفصلي از پورت هاي I/O در ۸۰۵۱ در پيوست ۲- ( پ ) آمده است .
روش هاي مختلف دستيابي به تمام ۸ بيت
در كد زير ، همچون مثال هاي قبلي ، I/O همه هشت بيت پورت ۱ دستيابي مي شود .
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
مي توانيم كد فوق را باتكنيكي بنام خواندن –اصلاح – نوشتن بنوعي ديگر بنويسيم اين روش در زير آمده است