زبان برنامه نويسي اسمبلي ۸۰۵۱

۱-۵ زبان برنامه نويسي اسمبلي ۸۰۵۱

زبان برنامه نويسي اسمبلي در۸۰۵۱ به فهميدن مثال هاودستورات اسمبلر ونوشتن ديتاها وغيره نياز دارد.
يك بحث مختصردرباره ابزارهاي برنامه نويسي .اسمبلر.ارتباط دهنده هاوغيره
همچنين در آغاز اين مهم است.خواننده شايددر دسترس بودن ابزارهاو گسترش سيستم ها را چك كندوسعي كند تا برنامه هاي مثال را بر روي سطح هاي آن كار كند.بيشتر خصوصيات با هر ۸۰۵۱ توسعه يافته پشتيباني ميكنندوسيستمها شبيه هستند.بحث مختصر راجع به اين خطوط خود به يك فصل نياز دارد.

۱-۱-۵ اسمبلر ۸۰۵۱
اسمبلر يك نرم افزار براي تبديل حافظه يا كدهاي مرجع زبان اسمبلي به كد ماشين است.منبع اسم فايل گسترش يافته براي مثال:”asm ” است.احتمال دارد test.asm نام يك فايل مرجع باشد.يك مثال شاخص فايل مرجع در برنامه مثال ۱-۵ بكار رفته است.
اسمبلرها تمام حروف انگليسي را پشتيباني ميكنند.هر دو حالت پائيني و بالائي و شماره هاي از۰ تا ۹ و در نوع افزايشي”@-$-:”را نيز پشتيباني ميكند.

اصل و پايان دستورات
كلمه و دستورات كاذب هستند.اينها براي اسمبلر ۸۰۵۱ در دستور دهنده ها قرار دارند.دستور دهنده+براي نشان دادن ادرس شروع برنامه مرجع بكار ميرود.۰۱۰۰ +به اسمبلر ميگويدكه برنامه مرجع در آدرس۰۱۰۰+ برنامه حافظه شروع ميشود.همچنين آدرس ممكن است دهدهي باشد.براي مثال ۰۲۵۰+به ما ميگويد كه اسمبلر برنامه را در آدرس D250 شروع ميكند.به طور مشابه دستور دهندهENDحاكي از پايان فايل برنامه مرجع ميباشد.اين آخرين خط برنامه مرجع است واسمبلر هركدمرجع بعدازENDرا ناديده ميگيرد.بعضي اسمبلرهابه جايORGو ENDاز”.ORG”و”.END”استفاده ميكنند.
(ببينيد كه اسمبلر شما چه چيزي را پيشنهاد ميكند.)

دستوراتDB(تعيين كردن بايت)EQU(برابر شماردن)
DBدستوري است كه براي تعيينديتا بايت با ۸بيت عرض بكار ميرود.ببينيد اين دستورات در مرجع برنامه ظاهر ميشوند.
شمارهي كه به يك متغيير محول مي شود ممكن است دسيمال.باينري.هگز يا اسكي باشد.حرف به دنبال اعداد شبيه اين است.بعنوان مثالD به معني دسيمالD35به معني ۳۵ دسيمال بوده وحرفHبراي هگز بكار ميرود بايد بعد از عددبيايد: H25يعني عدد۲۵ در مبناي هگز.بطور مثال براي مبناي باينري حرف B بكار ميرود. زبان اسمبلي حساس نيست.براي نشان دادن اعداد اسكي از(;)استفاده ميشود. يك يا دو(;)ممكن است بكار رود.هر دوحالت بكار ميرود.بدين طريق اگريك رشته معني بدهددر يك برنامه ميتواند پائين تر انجام بدهد.يك اسمبلر بطور اتومات كد نظير اسكي را به اين اعداد يا كاراكترها تعيين ميكند.

دستور برابر كردن در تعين كردن يك ثبات كاربرد دارد.نشان ديتا با ثبات ارزش پيوسته دارد.همچنين هرجانشان ظاهر بشودثبات نشان را تعويض كرده است.براي مثال ارزشD39 نشان TEMPرا تعيين ميكندودنباله آنرا نشان ميدهد و بنا براين ميتواند به رجيسترBدر هرجائي از برنامه كپي كند.دستورEQUبه شرطي مفيد است كه يك ثبات در بيشتر جاهاي برنامه بكار برود بنابراين برنامه نويس ميتواند ارزش آنرا تغيير داده ومعني وتعريف جديدي را در اين ثبات بگذارد.اين كار در وقت برنامه نويس صرفه جوئي ميكند.تا زمانيكه از زبان اسمبلي استفاده ميكنيد بايد اينكارو بكنيد.نبايد از كلمات كم مصرف يا با نشان منطقي استفاده كنيم.براي مثالADDيك نشان منطقي در راهنماي ۸۰۵۱ است.بنابراينADDنميتواند براي يك نشان بكار رود.به طور مشابهORGياENDنيز نمي توانندبراي يك نشان بكار روند.نام اين نشان ها بايد منحصر باشد.

الگوي برنامه نويسي۸۰۵۱
برنامه ۸۰۵۱ بخش ارزش دهي خواهد داشت بنابراين برنامه اصلي و زيز برنامه ها در برنامه حافظه ديرتر نوشته خواهد شد به برنامه مثال ۲-۵ كه در زير آمده است توجه كنيد.

زمانيكه اينتراپتها مطرح شوند بيشتر اين موضوع را شرح خواهيم داد.جهت موقعيت نظير در اين اينتراپت ها در ادرس پائين برنامه حافظه قرار دارند.دستورJUMPبراي آدرس هاي شروع زير روال اينتراپت استفاده ميشود.آن زير روال هاوسرويس اينتراپت ها شايد در دستور ديگري ظاهر شوند فرا خواندن در سرويس زير روال اينتراپت ها با دستورRETIانجام ميشود.درحاليكه زير روال هاي اصلي با دستورRET بكار ميروند.

۲-۵ مديريت سيستم وابزار
بعد از نوشتن برنامه اسمبلي لازم استكه اسمبلي را منتقل كرده.متصل كنيد و بنابراين هيچ خطائي را توليد يا تحليلي را تصحيح نمي كند.اين فرايند سالم يك فايل هگز را توليد ميكند.اين يك برنامه زبان ماشين است.اين فايل هگزداخل قسمت برنامه حافظه در يك برد ميكروكنترلر منتقل ميشود .يكROM.EPROMياEEPROM.نوشتن زبان ماشين بر روي يكEPROMبه يك ابزار كه برنامه نويس EPROM را فرا ميخواند نياز دارد و آنرا پاك كند.براي پاك كردنEPROMبه امواج فرا بنفش نياز داريم ROMدر كارخانه سازنده برنامه نويسي ويشود.در اولين قسمت=مدل۵۱C89 ساخت كارخانهATMELبراي نوشتن و پاك كردن بسيار آسان است.انها به امواج فرابنفش براي پاك كردن نيازي ندارند. حالا براي تست برنامه برنامه به يك برد ميكرو كنترلر نياز داريم.اين برد مديريت برنامه را بر عهده دارد.

يك برنامه مديريت اجازه يك بار نوشتن ميدهد.اشكال زدائي و اجرا كردن برنامه بر روي يك ميكرو كنترلر ۸۰۵۱ واقعي صورت ميگيرد.

اسمبلي يكMCS-51
فايل مرجع با ضميمه(.asm)بر روي بعضي ويرايش كننده ها نوشته ميشود.يك امكان استفاده از”EDIT”يا لغت پروسسور ديگر براي فرهم كردن فايل اسكي ميباشد.شكل۱-۵ نحوه عملكرد ويرايش كننده ها را نشان ميدهد.

اين فايل مرجع ورودي يك اسمبلر است.اسمبلر يك فايل با پسوند.objتوليد مي كند.بر روي جايگاه متغير.asm اسمبلر يك فايل متغيربا.objتوليد ميكند.اين در شكل ۲-۵ نشان داده شده است.همچنين يك فايل.lstنيز توليد خواهدشد.اين.lst شامل تمام رمزگشاها.آدرس هاوخطاهاي هنگام اسمبلي ميباشد.

اين فايل اگر نياز داشته باشدشايد بعضي از ويرايشگرها را باز كند.براي اسمبل يك يك برنامه ۸۰۵۱ روي اسمبلرx_8051بايد يكX_8051.EXEرا اجراكنيم.اسمبلر ازنوع لينوكس نيز در دسترس است.براي مثالAS31 موجود ميباشد.

بعد متصل كردن به فايلهاي موضوع نياز دارد.كار يك وصل كننده در شكل۳-۵ نشان داده شده است.نرم افزار وصل كننده با”link.exe”اجرا ميشود.بعد ازوصل شدن يك فايل هگز توليد ميكند با پسوند اجرائي”.hex”در اين جايگاه يك فايل متغير.hexتوليد خواهدشد.بيشتر ممكن است يك فايل.bin براي استفاده سودمنداز.HEX2BIN فراهم كند.بيشتر سيمولاتورهاي۸۰۵۱با پسوند.binموافق هستند.

۳-۵ نرم افزار سيمولاتور در ۸۰۵۱
در اينجا نرم افزار سيمولاتور براي ۸۰۵۱ فراهم شده است.اين نرم افزاربرنامه سيمولاتوربه بورد ۸۰۵۱ نياز ندارد.اين بر روي محيط يك كامپيوتر شخصي اجرا ميشود.اين به كاربر اجازه ميدهد تا بنويسدواشكال زدائي كندويك برنامه را اجرا كند.نتيجه وحاصل چندين ثبات را مشاهده كنيد.در اينجامقداري اينترفيس هاي استاندارد مثل ۷ سگمنت.نمايشگرهاوكليدها وجود دارد.يكبار برنامه برروي سيمولاتور تست ميشود.امكان دارد برروي برد ميكروكنترلرمنتقل شود.SIM31 يك مثال از اين نوع ميباشد.ويرايش لينوكس درسيمولاتور۸۰۵۱ مثلS51امكان پذيراست.اين بسيار ضروري است كه قبل از انتقال برنامه برروي يك سخت افزار واقعي بتوانيم آنرا تست كنيم.

اين كار مقداري وقت و هزينه صرف ميكندوبه همين مقداربراي تست سخت افزار ميباشد.يكبار برنامه صحت سيمولاتور را بررسي ميكند.اين ميتواندبر روي EPROM .EEPROMوغيره منتقل كند.
اين از همه ابزارهاي توسعه كه خواهيم داشت و قراردهاي توسعه بهتر است.

فصل ۶

اينتراپت ها .تايمرها.شمارنده ها. و ارتباط سريال درMCS-51

۱-۶ اينتراپت ها
اينتراپت يك ورودي به پروسسور استكه چگونگي اتفاق افتادن يك واقعه را نشان ميدهد.بر روي جايگاه يك واقعه خروجيحالت پين ميكرو پروسسور را تغيير ميدهد.همچنين اينتراپت هااتفاق يك رويداد در اطراف ماشين مثل تايمر لبريز يا انتقال.پذيرش يك بايت در ميان پورت پورت سريال و غيره توليد ميكند.پروسسوربه يك اينتراپت با حالت جاري ماشين پاسخ ميدهدوشاخه زيربرنامه را اجرا ميكند سرويس زيرروال اينتراپت فراخوانده ميشود.زمانيكه يك اينتراپت اتفاق مي افتد.CPU به جايگاه مشترك بااينتراپت مي پرد.برنامه حافظه وشروع برنامه از اينجا ميباشد.اين جايگاه جهت(vector )ناميده مي شودواينتراپت . جهت اينتراپت ناميده ميشود.بعد از مصرف كردن اينتراپتپروسسور حالت اصلي ماشين را تعمير ميكند وبا برنامه اصلي ادامه ميدهد. سخت افزاراينتراپت يك قسمت مهم از ميكروپروسسوريا ميكرو كنترلر ميباشد.

۲-۶ اينتراپت ها درMCS-51

MCS-51 پنج جهت(vector ) اينتراپت مرجع را پشتيباني ميكند.اينتراپت خروجي صفرويك .تايمر/شمارنده صفرويك و پورت سريال اينتراپت ها را شامل ميشود.وقتي يكاينتراپت متداول ميشود برنامه شمارنده به يك واحد پشتيبان حافظه هل ميدهد.آدرس جهت در برنامه شمارنده قرار داده ميشود.جهت دادن يك مكان اختيار ميكنند.پرچم مخصوص اينتراپت بامرجع اينتراپت برابر شدند اين با يك سخت افزار پاك ميكند.درMCS-51 اين پرچم ها دربيت هايT1,R1,TF1,TF0,IE1,IE0 قرار دارند.

حالا برنامه شروع رااز روي جايگاه جهت اجرا ميكند.زيرروال اينتراپت سرويس زيرروال(ISS )رافرا ميخواند
ISS بادستورRETI پايان مي يابد.اينتراپت جايگاه جهت در ۸۰۵۱ فضاي هر۸ بيت را ميگيرد.بنابراين تكنولوژي ممكن ميسازدتا ISS رااينجا قرار دهيم.در قراردادن دستورRETI اين از ۸ بيت بيشترنيست.
در غير اينصورت ودرواقع در همه جايگاه ها يك دستورJUMP در آدرس جهت نوشته ميشود(حداكثر۳ بيت) و قسمت هاي باقيماندهISS محل بعضي جاهاي ديگر راتعيين ميكنند.آدرس هاي جهت در جدول۱-۶ به ترتيب اولويت آورده شده اند.
به اينتراپت خرجي۱ نگاه كنيد.

به ظاهر در اغاز برنامه درستقرار ميگيرد.تا زمانيكهCPU با برنامه اصلي مشغول باشداگر انتقال از ۱ به۰ درپين۱۲ رخ دهد.گنجايش جاري برنامه شمارنده بر روي پشته ذخيره ميشود وبنابراينPC باادرس جهت ۰۰۰۳H قرار ميگيرد.هر دو دستور بعدي در همين آدرس اورده شده واجرا ميشوند.حالا فقط۸ بيت براي نوشتنسرويس زيرروال اينتراپت بكار ميروندوهمانطور كه دربالا ديديد.بنابراين يك دستورJUMP معمولي در اين جايگاه جهتH 003 نوشته ميشود.سرويس اينتراپت زيرروال به جزبرنامه حافظه در بعضي جاها با دستور RETI پايان مي يابد.دستورRETI محتواي شمارنده برنامه را ازپشته گرفته وcpu دوباره اجراي برنامه را ازجاييكه برنامه اصلي اينتراپت شده است شروع ميكند.هر رويداد خارجي كه در حالت اينتراپت تغيير ايجاد كند ميتواند سرويس زيرروال اينتراپت را جابجا كند.اينتراپت خارجي شايد بتواندبا حساسيت به لبه يا سطح شكل پيدا كند.اگر اينتراپت بخواهد حساس به سطح باشد بايد در سطح پائين بماند تازمانيكه اينتراپت توليد گردد.

در جايگاه يك اينتراپت تحريك با لبه يك عبور از سطح بالا به پائين برروي پين اينتراپت كافي است.لازم است تادر SFR جايگاه و تنظيمات بيشتر مناسب باشد.فعال كننده اينتراپتIE ناميده ميشود.ثبات يك اينتراپت آغازين براي MCS-51 مي سازد.

۱-۲-۶ قالب بندي اينتراپت۸۰۵۱
ثبات IE به برنامه نويس اجازه مي دهددر صورتي كه نياز داشتاينتراپت را فعال كند.اين ثباتIE يك ثبات آدرس پذير است ودر شكل۱-۶ نشان داده شده است.بيتEA اگر پاك شده باشداجازه غير فعال كردن تمام اينتراپت هاي سالم را ميدهد.بدين گونه اين اعمال بصورت كنترل كننده هر اينتراپت هستند.اين مهارتمتوسط خواهد بود.فقط با يك بيت فرد ميتوان همه مراجع اينتراپت را كنترل كرد.براي رخ دادن جزء به جزء اينتراپت بيت EA وبيت متناسب آن بايد يك شود.براي مثال در جايگاه يك اينتراپت سريال بيتEA و ES بايد يك شوند.ES پورت سريال اينتراپت مفيد در انتقال سريال است.اگر يك شود اينتراپت هاي سريال
T1 ياR1 را فعال مي كند.بطور مشابهET0,ET1 به ترتيب براي اينتراپت تايمر ۱ وتايمر۰ هستند.
EX0,EX1 به ترتيب براي بيت فعال كننده اينتراپت خارجي ۱ و۰ هستند.برنامه مثال ۱-۶ آغاز اينتراپت خارجي۱ را نشان ميدهد.

اين دستور اينتراپت خرجي يك را فعال خواهد كرد.اگر درحال ادامه يك دستورCLREA بياوريم تمام اينتراپت هاي خارجي سالم غير فعال خواهد شد.در آغاز اينتراپت سريال شايد ثبات IE باB 10010000 پرشود.

۲-۲-۶ حق تقدم اينتراپت
بررسي جايگاه به ما ميگويد زمانيكه بيش از يك اينتراپت فعال باشد.كاربر مي تواند سطوح اينتراپت آغاز را با يك كردن يا پاك كردن بيت درSFR وفراخواني ثبات اينتراپت آغاز برنامه ريزي كند.ثباتIP يك بيت آدرس پذير است.اگر بيت فعال شود آن اينتراپت ويژه آغاز با سطح بالا خواهد داشت.

يك اينتراپت آغاز سطح بالا مي تواند يك اينتراپت اغاز سطح پائين را اينتراپت كند ولي برعكس اين ممكن نيست.حال اگر دو سطح متفاوت اينتراپت آغازين بطور همزمان درخواستشوند طبيعتا اينتراپت آغازين با سطح بالا جواب داده خواهد شد.اگر دو دستورسطح بالا همزمان درخواست شوند به اقتضاي ساختار تركيب و با توجه به جدول ۱-۶ تقدم داده خواهد شد.نوشته اين سطح را فقط براي تشخيص دادن مقداري از سطح حق تقدم درخواست شده بكار ميرود.برنامه مثال ۲-۶ اين واگذاري اينتراپت حق تقدم به تايمر اينتراپت۱ نشان مي دهد.

اولين دستور هر دواينتراپت را فعال مي كند.بطور مثال اينتراپت خراجي ۱ وتايمر۱ اينتراپت دستور SETB PT1 سطح بالاي تقدم براي تايمر اينتراپت تعيين ميكند. بنابراين اگر هر دو آنها را بطور همزمان نياز داشته باشند.بنابراين تايمر اينتراپت استفاده خواهد شد.به ره حال به ما اجازه ميدهد ببينيم چه اتفاقي مي افتد زمانيكه يك دستور بيشتردر اين برنامه ثبت شود. اين در مثال۳-۶ نشان داده شده است.
هر دو اينتراپت خارجي۱ و تايمر۱ اينتراپت مقداري حق تقدم دارند. حال اگر اينتراپت ديگر بصورت همزمان رخ دهند اينتراپت خارجي به تركيبي كه در جداول۱-۶ و۲-۶ دستور داده شده اجرا خواهند شد.

۳-۶ شمارنده ها وتايمرها
روي چيپ زمان شمار/شمارنده امكانات براي سهولت پركردن ميكروكنترلردر زمان واقعي كاربرد دارد. اينها شمارنده پالس اندازه گير فركانس پالس واندازه گيري عرض وسرعت در ثانيه وغيره هستند.براي اينكه يك تايمر وشمارنده عدد كافي داشته باشند.شايد نياز به يك طراحي مطمئن داشته باشيم.همانطور كه در قسمت اول ديده شد.۸۰۵۱ دو شانزده بيت تايمر/شمارنده دارد.قبل از بحث راجع به تايمر/شمارنده ۸۰۵۱ لازم است تفاوت بين يك تايمر و شمارنده را ببينيم.
يك زمان شمار شمارنده سيكل ماشين وبه شرط يك زمان تاخير مرجع يا يك ساعت.يك سيكل ماشين۸۰۵۱ از ۱۲ تحريك تشكيل شده يا سرعت شمارش۱۲/۱ فركانس تحريك مي باشد.در۱۲ مگا هرتز ساعت دوره معادل۱ ميكرو ثانيه خواهد بود.

حالا به ما اجازه مي دهد تا دستورات شمارنده را ببينيم.شمارنده ۸۰۵۱ پاسخ را كم ميكند تا يك گذاراز يك به صفرو اين بطور مشابه در پين خارجي(T0 ياT1 )خواهد بود.بدين گونه تايمر خروجي يك شمارش يا يك عدد براي رخ دادن يك گذار ازيك به صفر درپين خروجي ظاهر ميكند. براي حالت شمارش۸۰۵۱ دو سيكل ماشين يا۲۴ پريود تحريك ميگيرد واشاره ميكند وبه يك گذاراز پينT0 بهT1 اشاره ميكند
زمانيكه يك تايمر يا يك شمارنده ازFFFFHبهH 0000 سرريز ميكند.اين پرچم وتابع اينتراپت را يك ميكند.۱۶ بيت از تايمر براي ارزش بالايTHx وبراي ارزش پائينTLx را انتخاب ميكنند.بدين گونه TH1 بايت هاي با ارزش بالاي تايمر۱ و TL1 بايت هاي با ارزش پائين تايمر يك هستند.

حالت هاي تايمر وشمارنده
چهار حالت تايمر در۸۰۵۱ وجود دارد.يك تايمر يا شمارنده عمل يا حالت را با نوشتن SFR در جاي مقتضي انتخاب ميكنند. ثبات حالت تايمر(TMOD )ناميده ميشود.با در نظر گرفتن اينكهSFR كنترل تايمر/شمارنده را انجام ميدهد ثبات كنترل تايمر(TCON )ناميده ميشود.اين SFR ها در شكل۳-۶ و۴-۶ نشان داده شده است.
¬

حالا سؤال اين است كه چطور درست به تايمر/شمارنده به يك تايمر يا شمارندهشكل مي دهد.در شكل۴-۶ بيتTMOD وتعريف اعمال آن آمده است.

حالت صفر
در حالت صفر تايمر ۱۳ بيت عرض دارد.اين حالت براي تايمر صفر به خوبي تايمر ۱ يكسان است.زمانيكه
شمارش سرريز شود اين پرچم اينتراپت را بالا مي برد(TF1 براي تايمر۱ و TF0 براي تايمر صفر)براي شروع تايمر صفربيتTR0 درTCON نياز دارد كه داراي ارزش يك شود.اين۱۳ بيت حافظه فقط زير مجموعه كار تايمر در خانواده۸۰۴۸ دارد.
بيت بالايي (TH1)TH0 وبيت پائينتر(TL1)TL0 از ۱۳ بيت بكار ميروند.اين در شكل۵-۶ نشان داده شده است.

برنامه مثال۴-۶ در ابتدا تايمر۱ در حالت صفر است.تبديلTMOD.7 در TMOD به ۱ بايد رعايت شود.
اين يك بيتGATE است.اگر اين به ۱ تبديل شودوTR1 يك باشد.بنابراين تايمر ۱ با ورودي خروجي ازPIN13 (INT1)كنترل مي شود.اينرا ميتوانيد در شكل۷-۶ مشاهده كنيد.زمانيكه GATE صفر باشد بنابراين فقط TR1 تايمر را فعال مي كند.

حالت ۱
حالت يك شبيه حالت صفر است بجز اينكه داراي عرض ۱۶ بيت است.حالت يك همچنين براي تايمر صفرو تايمريك شبيه است.حداكثر شمارش در اين حالتFFFFH مي باشد.در واقع درتمرين اين طبيعي است كه هميشه از حالت ۱ استفاده كنيم.از آنجائيكه ۱۳ بيت عملياتي در حالت صفر متوسط خاص ندارد.ابتداتايمر در حالت ۱ ميباشد.برنامه مثال۵-۶ را نگاه كنيد.

اگر درآغاز تايمر سرريز كند ميتواند اينتراپت توليد كند . رسيدگي كردن به يك قطعه از برنامه(برنامه ريزي مثال۶- ۶) براي تايمر۱ اينتراپت آغاز ميكند. اين هميشه ايستادن قبل از رفتن به برنامه اصلي به آغاز پشته اشاره ميكند زيرا شايد ارزش كم SP07H در اصل مناسب نباشد.
همچنين اين آدرس ثبات R7 مي باشد و اگر بانك ثبات اجرا شود اين مي تواند بعضي محتويات مفيد ثبات را دوباره بنويسد.

بسادگي فقط بيت ET1 در ثبات IE را فعال مي كند و تايمر اينتراپت فعال نخواهد شد.در افزايش لازم استكه بيتEA در IE را فعال كنيم.
اين برنامه تايمر ۱ را راه اندازي ميكند وتازمانيكه آن سرريز شود تايمر۱ اينتراپت توليد ميكرد.به اين دليل شمارندهبرنامه به جايگاه ۰۰۱BH مي پرد.

حالت۲
اين حالت نيز براي تايمر ۰ و۱ شبيه است. به تايمر با يك هشت بيت شمارنده TL1 آماده شده است.TL1 براي يك كردن پرچم TF1 سرريز ميشود واينTL1 را با محتويات TH1پر مي كند.نرم افزار ميتواندTH1 را مجددا پر كند.اين حالت تايمر۰ يا تايمر۱ بدين گونه حالت پرشدن مجدد به صورت اتومات را پشتيباني ميكند.حالت۲ مكانيزم اتومات پر شدن مجدد آن در تصوير۸-۶ نشان داده شده است.
تايمر كنترل منطقي شبيه حالت ۰ يا۱ مي باشد.

حالا به ما اجازه مي دهد آغاز برنامه براي تايمر صفر در حالت۲ را بنويسيمكه در برنامه مثال۷-۶ نشان داده شده است.

برنامه بايدTMOD را بگيرد و بنابراين ارزش دوباره پرشدن اتوماتيك بايد در بايت بالاي تايمر نوشته شود.درآينده همچنين شمارش آغازين شبيهارزش دوباره پر كردن اصلي خواهد بود.اما اين زياد سخت نيست بعد از اينكه براي سرريزهاي اوليه زيادي اجرا شد.
به هر حال اين خيلي ذاتي است كه بايت بالاي تايمر با ارزش اتوماتيك پرشدن پر شود وگرنه تايمر پس از هر سرريز با۰۰H شروع خواهد كرد.

حالت۲ به صورت خيلي عادي براي سرعت علامت در ثانيه استفاده ميشود.براي حالت پورت موازي همه منظوره مي باشد يا
جائي كه به فركانس ثابت برابر نياز دارد.فركانس يا سرعت علامت در ثانيه مي تواند استفاده از ارزش دوباره پرشدن در ثبات
THx را كنترل كند.ماكزيمم تاخير كه در حالت ۲ توليد ميكند با اتومات با اتومات بار كردن دوباره باارزش۰۰H برابر خواهد بود.بدين ترتيب در ساعت ۱۲ مگاهرتز ماكزيمم تاخيري كه ايجاد خواهد كرد ۲۵۶ ميكرو ثانيه است.اگر بتوان يك دستوربر روي قلاب هر يك از پين هاي پورت بنويسيم اگر آنرا به اسيلوسكوپوصل كنيم مي توانيم يك ميدان برابر بر روي آن پين ببينيم. رسيدگي به اين برنامه يك ميدان يكنواخت۲ كيلو هرتز بر روي پين P1.0 توليد مي كند. اين در برنامه مثال۸-۶ نشان داده شده است.بصورت مشابه شمارش با ۰٫۲۵ ميلي ثانيه مجدد پر خواهدشد.در۱۲ مگاهرتزاين با۰۶H برابر خواهد بود.