میکروکنترلر

فهرست مطالب
عنوان صفحه
مقدمه ۱
سير تكاملي ميكروكنترلرها ۴
معماري داخلي ميكروكنترلرها ۵
خانواده ۸۰۵۱ ۷
پيكر بندي پايه ها ۱۲
تايمر ۲۰
جريان و مقاومت در ميكرو كنترلرها ۲۹
عملكرد تابلو روان ۳۱
نحوه نمايش در تابلو به صورت ثابت ۳۱
روش جاروب كردن ۳۳
روش شيفت دادن ۳۶
بررسي چگونگي نمايش بر روي دات ماتريكس ۳۸
LED هاي دورنگ ۴۰

زمان روشن بودن ۴۰

مقدمه
ميكروكنترلر در واقع يك ريز پردازنده تك تراشه اي است كه شامل حافظه داده ، حافظه برنامه ، ورودي و خروجي سريال و موازي ، تايمرها ، وقفه هاي بيروني و داخلي مي باشد كه تمامي آنها روي يك تراشه واحد مجتمع شده اند و مي توان آن را به قيمتي كمتر از ۲ دلار تهيه نمود۰ بر اساس تخمين هاي زده شده به طور متوسط تعداد ۳۵ ميكرو كنترلر در وسايل خانگي يك خانواده متوسط آمريكايي وجود دارد۰ بيش از ۳۴ درصد ميكروكنترلرها در اتوماسيون اداري نظير چاپگرهاي ليزري ، دستگاه هاي نمابر تلفنهاي هوشمند و نظاير آنها به كار برده مي شوند۰ بيش از يك سوم ميكروكنترلرها در لوازم خانگي الكترونيكي به كار برده شده اند۰ در اين د

سته بندي توليداتي نظيرCD player ، تجهيزات صوتي hi-fi ، بازيهاي ويديويي ، ماشين لباسشويي ، دستگاههاي پخت و پز و نظاير آنها قرار دارند۰
بازار تجهيزات مخابراتي ،ادوات نظامي و تجهيزات مربوط به اتومبيل ها بخش باقيمانده از

سهم كاربرد ميكروكنترلرها را به خود اختصاص داده اند۰
ميكروكنترلرها به طور معمول با استفاده از زبان اسمبلي مربوطه ، برنامه ريزي مي شده اند۰ ميكروكنترلرهاي ساخت توليد كنندگان مختلف ، زبانهاي اسمبلي متفاوتي دارند۰ زبان اسمبلي شامل عبارتهاي كوتاهي براي دستورالعمل ها است به خاطر سپردن اين عبارتها مشكل است ونيز برنامه هاي تهيه شده براي يك ميكروكنترلر براي ساير انواع ديگر ميكروكنترلرها قابل استفاده نمي باشد۰ سختي كار با زبان اسمبلي به خصوص در پياده سازي پروژه هاي پيچيده ، متداولترين شكايتي است كه در رابطه با برنامه ريزي ميكروكنترلرها مطرح مي شود۰ راه حل اين مسئله ، استفاده از زبانهاي سطح بالا مي¬باشد۰ با اين كار ، عمليات برنامه ريزي ساده تر گشته ، برنامه خواناتر و انعطاف پذيرتر شده و پشتيباني از آن نيز ساده تر مي گردد۰ براي اغلب ميكرو كنترلرها كامپايلرهاي C و BASIC متفاوتي موجود مي باشند۰ كامپايلرهاي BASIC معمولا‌ً به صورت مفسر بوده و كدهاي حاصل از آنها كند مي باشند۰
يكي ديگراز معايب زبان BASIC اين است كه اغلب كامپايلرهاي BASIC ساختيافته نيستند در نتيجه برنامه سازي با آن كار دشواري مي باشد۰ در اين پروژه از يك كامپايلر حرفه اي C با تمام قابليتهاي آن جهت برنامه ريزي ميكرو كنترلر خود استفاده خواهيم كرد۰ AT89C2051 متعلق به خانواده استاندارد ميكروكنترلرهاي ۸۰۵۱ مي باشد۰ AT89C2051 يك مدار مجتمع ۲۰ پايه مي باشد كه از لحاظ كد، كاملاً سازگار با برادر بزرگترش ۸۰۵۱ است۰ اين مدار مجتمع داراي يك درگاه سريال¬، ۱۵ بيت ورودي / خروجي موازي ، ۲ عدد تايمر / شمارنده ، ۶ منبع وقفه ، ۱۲۸ بايت حافظه RAM براي داده ها و ۲ كيلو بايت حافظه فلش قابل برنامه ريزي مجدد براي ذخيره كردن برنامه مي

باشد۰ دلايل زيادي براي انتخاب AT89C2051 وجود دارد¬، از آن جمله مي توان به سازگاري كامل آن با خانواده ۸۰۵۱ و سهولت پاك كردن و برنامه ريزي مجدد آن ، اشاره كرد۰ براي اين مدار مجتمع نيازي به استفاده از اشعه ماوراء بنفش جهت پاك كردن حافظه برنامه نيست۰ حافظه را مي توان با استفاده از يك مدار برنامه ريزي كننده ارزان قيمت پاك كرده و مجدداً آن را برنامه ريزي نمود۰ از دلايل ديگر انتخاب AT89C2051 كوچكي و ارزان بودن آن است۰
سيستم هاي ميكرو كامپيوتري:

اصطلاح ميكروكامپيوتربراي توصيف سيستمي به كار مي رود كه شامل يك ريز پردازنده، حافظه برنامه، حافظه داده و يك ورودي / خروجي ( I / O ) است۰ برخي از سيستم هاي ميكرو كامپيوتري شامل اجزاء اضافي نظير تايمرها ، شمارنده ها و مبدل هاي آنالوگ به ديجيتال هستند۰ با اين تفاسير مي توان گفت كه تمام موارد ، از يك سيستم كامپيوتر بزرگ كه داراي چندين هاردديسك ، فلاپي درايو و چاپگر است ، تا يك سيستم كامپيوتري تك تراشه¬اي ، در زمره سيستم¬هاي ميكرو كامپيوتري به حساب مي¬ آيند۰

سير تكاملي ميكرو كنترلرها
اولين ميكروكنترلرها در اواسط دهه ۱۹۷۰ ساخته شدند۰ اين ميكروكنترلرها در ابتدا پردازنده هاي ماشين حساب بودند كه داراي حافظه برنامه كوچكي از نوع ROM ، حافظه داده بسيار محدود از نوع RAM و تعدادي درگاه ورودي / خروجي بودند۰
با توسعه فناوري سيليكون ، ميكروكنترلرهاي ۸ بيتي قو يتري ساخته شدند۰
در اين ميكروكنترلرها علاوه بر بهينه شدن دستور العمل ها ، تايمر/ شمارنده روي تراشه¬، امكانات وقفه و كنترل بهينه شدن خطوط I / O نيز به آنها اضافه شده است۰ حافظه موجود بر روي تراشه هنوز هم محدود مي باشد و در بسياري موارد كافي نيست۰ يكي از پيشرفتهاي قابل توجه در آن زمان، قابليت استفاده از حافظه EPROM قابل پاك شدن با اشعه ماوراء بنفش روي تراشه بود۰ اين قابليت ، زمان طراحي و پياده سازي محصول را به طور محسوسي كاهش داد و نيز براي اولين بار امكان استفاده ميكروكنترلرها را در كاربردهايي كه حجم توليد پاييني دارند ، فراهم ساخت۰
خانواده ۸۰۵۱ در اوايل دهه ۱۹۸۰ توسط شركت اينتل معرفي گرديد۰ از آن زمان تا كنون ، ۸۰۵۱ يكي از محبوبترين ميكروكنترلرها بوده و بسياري از شركتهاي ديگر نيز به توليد آن اقدام كرده اند۰ در حال حاضر مدل هاي مختلفي از ۸۰۵۱ وجود دارد كه در بسياري از آنها امكاناتي نظير مبدل آنالوگ به ديجيتال ، حجم نسبتاً بزرگ از حافظه برنامه و حافظه داده ، مدولاتور عرض پالس ( PWM ) در

خروجيها و حافظه فلش ( flash ) كه امكان پاك كردن و برنامه ريزي مجدد آن توسط سيگنال هاي الكتريكي وجود دارد ، تعبيه شده است۰
ميكروكنترلرها اكنون به سمت ۱۶ بيتي شدن در حركت هستند۰ ميكروكنترلرهاي ۱۶ بيتي، پردازنده هايي با كارآيي بالا ( نظير پردازش سيگنال هاي ديجيتال ) مي باشند كه در كنترل فرآيند هاي بلادرنگ و در مواردي كه حجم زيادي از عمليات محاسباتي مورد نياز است ، به كار برده مي شوند۰
بسياري از ميكروكنترلرها ۱۶ بيتي ، امكاناتي نظير حجم زياد حافظه برنامه و حافظه داده ، مبدل

هاي آنالوگ به ديجيتال چند كانالي ، تعداد زيادي درگاه I / O ، چندين درگاه سريال ، عملكردهاي بسيار سريع رياضي و منطقي و مجموعه دستورالعمل هاي بسيار قدرتمند با قابليت پردازش سيگنال را دارا مي باشند۰

معماري داخلي ميكرو كنترلرها
ساده¬ترين معماري ميكرو كنترلر، متشكل از يك ريزپردازنده، حافظه و درگاه ورودي/ خروجي است ۰ ريز پردازنده نيز متشكل از واحد پردازش مركزي ( CPU ) و واحد كنترل (CU ) است ۰
CPU در واقع مغز يك پردازنده است و محلي است كه در آنجا تمامي عمليات رياضي و منطقي ، انجام مي شود۰ واحد كنترل ، عمليات داخلي ريز پردازنده را كنترل مي كند و سيگنال هاي كنترلي را به ساير بخشهاي ريز پردازنده ارسال مي كند تا دستور العمل هاي مورد نظر انجام شوند۰
حافظه بخش خيلي مهمي از يك سيستم ميكروكامپيوتري است ۰ ما مي توانيم بر اساس به كار گيري حافظه آن را به دو گروه دسته بندي كنيم : حافظه برنامه و حافظه داده ۰ حافظه داده ، تمام كد برنامه را ذخيره مي كند۰ اين حافظه معمولاً از نوع حافظه فقط خواندني (ROM ) مي باشد۰ انواع ديگري از حافظه ها نظير EPROM و حافظه هاي فلش ( EPROM ) براي كاربردهايي كه حجم توليد پاييني دارند و همچنين هنگام پياده سازي برنامه به كار مي روند۰ حافظه داده از نوع حافظه خواندن / نوشتن ( RAM ) مي باشد۰ در كاربردهاي پيچيده كه به حجم بالايي از حافظه RAM نياز داريم ، امكان اضافه كردن تراشه هاي حافظه بيروني به اغلب ميكروكنترلرها وجود دارد۰
درگاههاي ورودي / خروجي ( I / O ) به سيگنال هاي ديجيتال بيروني امكان مي دهند كه با ميكروكنترلر ارتباط پيدا كند۰ درگاههاي I /O معمولاً به صورت گروههاي ۸ بيتي دسته بندي مي

شوند و به هر گروه نيز نام خاصي اطلاق مي شود۰ به عنوان مثال ، ميكروكنترلر ۸۰۵۱ داراي ۴ درگاه ورودي / خروجي ۸ بيتي مي باشد كه
P3 . P2 . P1 . P0 ناميده مي شوند ۰ در تعدادي از ميكروكنترلرها ، جهت خطوط درگاه I /O قابل برنامه ريزي مي باشد۰ لذا بيت هاي مختلف يك درگاه را مي توان به صورت ورودي يا خروجي

برنامه¬ريزي نمود۰ در برخي ديگر از ميكروكنترلرها ( ازجمله ميكروكنترلرهاي خانواده ۸۰۵۱ ) درگاه¬هاي I / O به صورت دو طرفه مي باشند۰ هر خط از درگاه I / O اين گونه ميكروكنترلرها را مي توان به صورت ورودي و يا خروجي مورد استفاده قرار داد۰ معمولاً ، اين گونه خطوط خروجي ، به همراه مقاومتهاي pull-up بيروني به كار برده مي شوند ۰

خانواده ۸۰۵۱
خانواده ۸۰۵۱ يك خانواده ميكرو كامپيوتر ( ميكروكنترلر ) ۸ بيتي تك تراشه اي استاندارد است كه بسيار محبوب و عامه پسند مي باشد و توسط سازندگان مختلف با قابليت هاي متفاوت توليد مي گردد۰ آي سي استاندارد اصلي كه اولين عضو اين خانواده مي باشد ، ۸۰۵۱ است كه يك ميكروكنترلر ۴۰ پايه مي باشد۰ هم اكنون اين آي سي با پيكر بندي هاي مختلف موجود مي باشد۰ ۸۰C51 نوع CMOS و كم مصرف اين خانواده است۰ ۸۷۵۱ داراي حافظه برنامه از نوع EPROM است كه عمدتاً در هنگام پياده سازي به كار برده مي شود۰
۸۹C51 نيز داراي حافظه فلش قابل برنامه ريزي و پاك شدن (PEROM) است لذا بدون نياز به پاك كردن با اشعه ماوراء بنفش مي توان حافظه برنامه را برنامه ريزي كرد۰ ۸۰۵۲ عضو بهينه شده اين خانواده مي باشد و حافظه RAM آن بيشتر بوده و تعداد تايمر / شمارنده آن نيز بيشتر است۰ انواع مختلفي از خانواده ۴۰ پايه وجود دارد كه داراي مبدل هاي آنالوگ به ديجيتال ، مدولاتورهاي عرض پالس و نظاير آن هستند۰ در بخش پايين خانواده ۸۰۵۱ ، ميكرو كنترلرهاي ۲۰ پايه قرار دارند كه از لحاظ كد ، سازگاري كاملي با انواع ۴۰ پايه دارند۰ اين ادوات ۲۰ پايه براي كاربردهايي با پيچيدگي كمتر كه نياز به خطوط I /O كمتري دارند و نيز براي كاربردهايي كه بايد مصرف توان كمتري داشته باشند ( مثل سيستم هاي قابل حمل ) ساخته شده اند۰
آي سي هاي AT89C2051 و AT89C1051 ( ساخت شركت Atmel ) چنين ميكروكنترلرهايي هستند كه از لحاظ كد سازگاري كاملي با خانواده ۸۰۵۱ دارند و مصرف توان آنها نيز كمتر است۰ جدول ۱-۱ فهرستي از مشخصات برخي از اعضاي خانواده ۸۰۵۱ را ارائه مي كند دلايل انتخاب AT89C2051 عبارتند از قيمت ارزان ، توان مصرفي كم ، حجم كوچك (۲۰ پايه) و قابليتهاي زياد اطلاعات كاملتر در مورد اين ميكروكنترلرها را مي توانيد از برگه مشخصات آنها كه توسط سازندگا

 

ن ارائه مي شوند استخراج كنيد۰

معماري خانواده ۸۰۵۱
۸۰۵۱ يك ميكروكنترلر ۸ بيتي با مصرف كم و قابليت زياد است۰ تعداد زيادي از اعضا خانواده ۸۰۵۱ داراي معماري مشابهي هستند و هر يك از اعضا با اعضاي ديگر سازگار مي باشند۰ قابليتهاي ميكروكنترلر ۸۰۵۱ استاندارد به شرح زير مي باشد:
• ۴ كيلو بايت حافظه برنامه
• ۸ ×۲۵۶حافظه داده رم
• ۳۲ خط I /O قابل برنامه ريزي
• دو عدد تايمر / شمارنده ۱۶ بيتي
• ۶منبع وقفه
• درگاه UART سزيال قابل برنامه ريزي
• قابليت اتصال به حافظه بيروني
• بسته بندي ۴۰ پايه استاندارد
انواع داراي EPROM اين خانواده ( مثلاً ۸۷۵۱ ) براي پياده سازي و طراحي به كار برده مي شوند و حافظه برنامه آنها را مي توان توسط منبع نور ماوراء بنفش پاك كرد۰ چيدمان پايه هاي ۸۰۵۱ استاندارد ، در شكل ۱-۱ نشان داده شده است۰

آي سي AT89C2051 يكي از اعضاي ساده تر خانواده ۸۰۵۱ مي باشد و براي كاربردهايي كه پيچيدگي كمتري دارند ، طراحي شده است۰ اين آي سي داراي ۲ كيلو بايت حافظه فلش قابل برنامه ريزي (PEROM) است كه با استفاده از دستگاه برنامه ريزي كننده مناسب مي توان اين حافظه را پاك كرده ومجدداً برنامه ريزي نمود۰ AT89C2051 داراي ۱۲۸ بايت RAM و ۱۵ خط

I / O قابل برنامه ريزي است۰ كدي كه براي اين مدار مجتمع نوشته شود ، روي ۸۰۵۱ استاندارد بدون نياز به هر گونه تغييري ، كار مي كند۰ همان گونه كه در شكل ۲-۱ نشان داده مي شود ، مدار مجتمع AT89C2051 درون محفظه اي ۲۰ پايه قرار داده شده است۰

پيكر بندي پايه ها
توضيحات مربوط به پايه هاي مختلف به شرح زير مي باشد:
RST
اين پايه ورودي ريست مي باشد۰ اين ورودي بايد در شرايط عادي ، در وضعيت صفر منطقي قرار گيرد۰ قرار دادن پايه RST در وضعيت « ۱ » منطقي به مدت حداقل دو سيكل ماشين موجب ريست شدن مي شود۰ وصل كردن يك خازن و يك مقاومت بيروني به اين پايه موجب

مي شود كه آي سي در هنگام روشن شدن ريست شود ( به شكل ۳-۱ و ۴-۱ توجه كنيد )۰

P3.0
اين پايه ، يك پايه I / O دو طرفه است ( بيت صفر درگاه ۳ ) و داراي مقاومت
Pull – up داخلي است۰ اگر از اين آي سي به عنوان UART جهت دريافت داده هاي سريال استفاده شود ، آنگاه پايه مذكور به عنوان ورودي دريافت داده (RXD) عمل خواهد رد۰

P3.1
اين پايه ، يك پايه ورودي / خروجي دو طرفه است ( بيت ۱ درگاه ۳ ) و داراي مقاومت pull-up داخلي است۰ هرگاه از اين آي سي به عنوان UART براي ارسال سريال داده ها استفاده شود ، آنگاه اين پايه ، مشابه خروجي ارسال داده (TXD) عمل خواهد كرد۰

XTAL 2 و XTAL 1
براي عملكرد نوسان ساز داخلي ، بايد به اين دو پايه ، كريستال بيروني وصل شود۰ معمولاً مطابق شكل ۳-۱ و ۴-۱ دوخازن ۳۳ پيكو فارادي نيز به همراه كريستال وصل مي شوند۰ سيكل ماشين از تقسيم كردن فركانس كريستال به عدد ۱۲ به دست مي آيد ، لذا با كريستال ۱۲ مگاهرتزي ، سيكل ماشين يك ميكرو ثانيه خواهد بود۰ بسياري از دستورالعمل ها در يك سيكل ماشين انجام مي شوند۰
P3.2
اين پايه ، يك پايه ورودي / خروجي دو طرفه است (بيت ۲ درگاه ۳) و داراي مقاومت pull-up داخلي است ۰ در ضمن اين پايه ، پايه وقفه بيروني شماره صفر (INT0) نيز مي باشد۰

P3.3
اين پايه يك پايه ورودي / خروجي دو طرفه است ( بيت ۳ درگاه ۳ ) و داراي مقاومت pull-up داخلي است۰ در ضمن اين پايه ، پايه وقفه بيروني شماره ۱ (INT1) نيز مي باشد۰
P3.4
اين پايه ، يك پايه ورودي / خروجي دو طرفه است (بيت ۴ درگاه ۳ ) و داراي مقاومت pull-up داخلي است۰ در ضمن اين پايه ورودي شمارنده صفر (T0) نيز مي باشد۰
P3.5
اين پايه ، يك پايه ورودي / خروجي دو طرفه است(بيت ۵ درگاه ۳ ) و داراي مقاومت pull-up داخلي است۰ در ضمن اين پايه ، ورودي شمارنده ۱ نيز مي باشد۰
GND
پايه زمين

P3.6
اين پايه ، يك پايه ورودي / خروجي دو طرفه است۰ اين پايه در AT89C2051 قابل دسترسي نيست۰ در آي سي ۸۰۵۱ استاندارد اين پايه ، به عنوان پايه نوشتن در حافظه (WR) بيروني نيز به كار برده مي شود۰
P3.7

اين پايه ، يك پايه ورودي / خروجي دو طرفه است ( بيت ۷ درگاه ۳ ) در آي سي ۸۰۵۱استاندارد ، اين پايه به عنوان پايه خواندن داده ها از حافظه بيروني (RD) نيز به كار برده مي شود۰

P1.0
اين پايه كه بيت صفر درگاه يك مي باشد ، يك پايه ورودي / خروجي دو طرفه مي باشد۰ در آي سي هاي ۲۰ پايه ، اين پايه داراي مقاومت pull-up داخلي نيست۰ همچنين در آي سي هاي ۲۰ پايه ، به عنوان ورودي مثبت مقايسه گر آنالوگ (AIN0) نيز به كار برده مي شود۰
P1.1
اين پايه كه بيت ۱ درگاه ۱ مي باشد ، يك پايه ورودي / خروجي دو طرفه مي باشد۰ در آي سي هاي ۲۰ پايه ، اين پايه داراي مقاومت pull-up داخلي نيست ۰ همچنين در آي سي هاي ۲۰ پايه ، به عنوان ورودي منفي مقايسه گر آنالوگ (AIN1) نيز به كار برده مي شود۰
P102 تا P1.0
اين پايه ها ، باقيمانده پايه هاي ورودي / خروجي دو طرفه درگاه۱ مي باشند ۰ اين پايه ها داراي مقاومت pull-up داخلي هستند۰
VCC
ولتاژ تغذيه
P0.0 تا P0.7
اين پايه ها ، هشت پايه ورودي / خروجي درگاه صفرآي سي ۸۰۵۱ استاندارد هستند۰ اين پايه ها داراي مقاومت pull-up داخلي نيستند۰ پايه هاي P0.0 تا P0.7 به منظور ايجاد بيت هاي پايين آدرس ) A0 تا A7 ) و داده ، در طي خواندن از حافظه برنامه بيروني و يا در طي دستيابي به حافظه داده بيروني ، به كار برده مي شوند۰

P2.0 تا P2.7
اين پايه ها ، هشت پايه ورودي / خروجي درگاه ۲ آي سي ۸۰۵۱ هستند۰ اين پايه ها داراي مقاومت pull-up هستند۰ پايه هاي P2.0 تا P2.7 به منظور ايجاد بيت هاي بالاي آدرس ( A8تا A15 ) در طي خواندن از حافظه برنامه بيروني و يا در طي دستيابي به حافظه داده بيروني ، به كار برده مي شوند۰

EA / VPP
پايه EXTERNAL ACCESS در ۸۰۵۱ استاندارد مي باشد۰ به منظور اجراي برنامه داخلي ميكروكنترلر ، پايه EA بايد به VCCوصل شود۰ همچنين در طي عمليات برنامه ريزي بايد به اين پايه ، ولتاژ برنامه ريزي كننده را اعمال كرد۰

PSEN
پايه PROGRAM STORE ENABLE در ۸۰۵۱ استاندارد موجود مي باشد۰ اين پايه در هنگامي كه ميكروكنترلرها كدها را از حافظه بيروني اجرا مي كند ، فعال مي شود۰
ALE / PROGE
پايه ADDRESS LATCH ENABLE در ۸۰۵۱ استاندارد موجود مي باشد۰ اين پايه براي ضبط بايت پايين آدرس در طي دسترسي به حافظه خارجي ، به كار برده مي شود۰

تايمر(كانتر)
همان طور كه مي دانيم تايمرها يا كانترها از يك سري فليپ فلاپ تشكيل شده اند كه مي توانند به صورت سنكرون و يا آسنكرون باشد۰ براي بررسي موضوع مدار زير را كه شمارنده آسنكرون مي باشد در نظر بگيريد كه در آن خروجي هاي Q0 الي Q3 به عنوان ارقام اصلي اين شمارنده در نظر مي گيريم كه در اين صورت خروجي اين شمارنده مي تواند از Q3Q2Q1Q0 = 0000 الي Q3Q2Q1Q0 = 1111 تغيير كرده و مجدداً با پالس بعدي كلاك ورودي خروجي شمارنده به صفر برسد اما همزمان با اين عمل چون Q3 از يك به صفر مي رسد مقدار Q4 نيز يك مي گردد ، يعني يك شدن Q4 مي تواند بيان كننده اين مطلب باشد كه شمارنده به حداكثر مقدار خود رسيده و سپس صفر شده است كه اصطلاحاً به آن سرريز شمارنده مي گويند۰ يعني در آن مدار خروجي هاي Q0 الي Q3 به عنوان ارقام شمارش و خروجي Q4 بيان كننده سرريز شمارنده مي باشد۰
اگر كلاك اعمالي به اين شمارنده يك مقدار معين و مشخص باشد در اين صورت مي توان با در نظر گرفتن مدت زمان سرريز شمارنده زمان هاي مشخص و معين ايجاد كرد يا اصطلاحاً با اين شمارنده زمان را اندازه گيري نمود كه در اين حالت از شمارنده به عنوان تايمر استفاده كرده ايم۰
اما اگر پالس اعمالي به ورودي كلاك شمارنده به وسيله عنصر خارجي ( نظير عبور يك قطعه از مقابل چشم الكترونيك و ايجاد يك پالس ورودي كلاك ) تعيين شود در اين صورت از اين مدار به صورت شمارنده يا كانتر استفاده كرده ايم۰

عملكرد تايمر( كانتر)
عملكرد هر يك از تايمرهاي ۸۰۵۱ را مي توان به صورت بلوك شكل (۲) نشان داد كه مي توان از آن ، هم به عنوان تايمر و هم شمارنده استفاده كرد۰

همان طور كه ديده مي شود شمارنده داراي ۱۶ بيت ورودي است كه با آن مي توان عدد دلخواه را ابتدا در شمارنده قرار داد و همچنين ۱۶ بيت خروجي كه عدد شمارنده را نشان مي دهد و حداكثر مقدار آن برابر FFFFH يا ۶۵۵۳۵ مي باشد و بعد از FFFFH خروجي به ۰۰۰۰H بر مي گردد و در اين لحظه بيت سرريز شمارنده فعال مي شود ( يك مي شود ) ۰
منبع ساعت يا ورودي CLOCK اين شمارنده مي تواند داخلي و با فركانس معين باشد( به وسيله اسيلاتور داخلي ميكروكنترلر ) كه در اين حالت از شمارنده به عنوان تايمر استفاده مي شود۰ اما براي حالت شمارنده ورودي كلاك به وسيله پالس هاي اعمالي توسط عنصر خارجي تأمين

مي¬شود ( نظير قطع و وصل شدن يك ميكروسوئيچ به وسيله يك قطعه يا عبور يك قطعه از مقابل چشم الكترونيكي و ايجاد پالس و اعمال آن به ورودي كلاك ) براي شمارش حوادث بيروني به عنوان كانتر استفاده مي شود۰
در حالت شمارنده فركانس اعمالي به وسيله عنصر خارجي معلوم مي شود و در نتيجه مقدفركانس اصلي سيستم ميكروپرسسوري مي باشد مثلاً اگر كريستالي كه براي ميكروپرسسور قرار گرفته است ۱۲MHZ باشد آنگاه ( در حالت تايمري ) فركانس داخلي يا كلاك شمارنده ۱MHZاست۰
در حالت تايمري با فرض فركانس ۱MHZ براي كلاك شمارنده ( فركانس سيستم ۱۲MHZ) و با فرض اينكه شمارنده در ابتدا با عدد ۵۹۵۳۶ بار شده باشد۰ مدت زمان لازم براي فعال ش

دن پرچم سرريز به صورت زير مي باشد۰
براي فعال شدن سرريز ، شمارنده بايد از عدد ۵۹۵۳۶ به ۶۵۵۳۵ ( يا FFFFH ) و سپس به ۰۰۰۰H برگردد كه در اين صورت تعداد پالس لازم براي اين تعداد شمارش برابر است با:شد (f=1MHZ) پس مدت زمان لازم براي فعال شدن بيت سرريز برابر است با:
۶۰۰۰×۱µS= 6msec
اگر فركانس اصلي سيستم ۶MHZ باشد براي توليد مدت زمان ۲۰msec ( مدت زمان لازم براي فعال شدن پرچم سرريز ) عددي كه بايد در شمارنده قرار گيرد به صوررت زير مي باشد۰
= ۶MHZ / 12 = 0.5 MHZ فركانس تايمر
= ۱/۰٫۵MHZ = 2 مدت زمان لازم براي يك پالس سرريز
= ۲۰ ms/2 µs = 1000 تعداد پالس هاي لازم براي يك پالس سرريز
يعني شمارنده بايد با عدد ( -۱۰۰۰ ) يا ( D8F0H ) پر مي شود۰

ثبات حالت تايمر (TMOD) و كنترل تايمر (TCON)
ثبات حالت تايمر (TMOD) :
اين ثبات كه جزو ثبات هاي SFR با آدرس بايت ۸۹H است بيت آدرس پذير نبوده و شامل ۸ بيت جهت تعيين وضعيت تايمرهاي شماره صفر و يك ميكروكنترلر مي باشد۰ ( ۴ بيت با ارزش براي تايمر يك و ۴ بيت كم ارزش براي تايمر صفر)
كه اكنون به به توضيح هر يك از اين بيت ها مي پردازيم:

GATE
(بيت ۷) : اگر اين بيت ۱ باشد در اين صورت تايمر فقط وقتي كه ۱NT1 فعال باشد كار مي كند (براي حالتي به كار مي رود كه بخواهيم فاصله زماني بين دو پالس را اندازه بگيريم)۰ اگر اين بيت صفر باشد كار عادي تايمر انجام مي شود۰
C/T (بيت۶): اگر اين بيت يك باشد به صورت شمارنده عمل مي كند ( كه در اين حالت فركانس مدار تايمر شماره ۱ ميكروكنترلر به وسيله عنصر خارجي تعيين مي شود ) اين فركانس به

پايه ۱۵ ميكروكنترلر ) T1 يا P3.5 ) اعمال مي گردد و اگر اين بيت صفر باشد ورودي CLOCK شمارنده به فركانس داخلي آي سي وصل شده و تايمر به صورت زمان سنج يا تايمر عمل مي كند۰ بيت¬هاي M1.M0 : به حالت شمارنده معروفند كه باعث مي شود تا تايمر يكي از ۴ حالت زير را پيدا كند۰