ریزپردازنده دانشکده کامپیتر دانشگاه یزد نیمسال دم تحصیلی 96-97 ائهدهنده : پریسا استی
قفهها
کی قافتا یلخاد ای یجراخ تسا هک راک یلصا رلرتنکرکیم فقتم دنکیم ات رلرتنکرکیم ادتبا نآ یهدسیرس.دیامن رد نیا ترص یهمانرب رد لاح جا رد رلرتنکرکیم فقتم دشیم ادتبا یهمانرب طبرم سیرس جا ددرگیم سپس زاب لرتنک یهمانرب هدش فقتم زاب ددرگیم یجا همانرب زا ییاج هک هدش فقتم تسا همادا.دباییم نیدب بیترت رظن دسریم CPU نیدنچ راک نامزمه ماجنا.دهدیم اما رد عقا CPU نیب یهمانرب یلصا یاهسیرس یهمانرب درم زاین اههاگتسد چییس فلتخم.دنکیم 3
یب هکنیا رلرتنکرکیم دناتب نیدنچ هاگتسد خساپ دهد زا د شر دناتیم هدافتسا :دنک )Interrupt( ره نامز کی یهاگتسد سیرس رلرتنکرکیم زاین هتشاد دشاب کی لانگیس رلرتنکرکیم.دتسرفیم یماگنه رلرتنکرکیم تفایرد دمن همانرب رد لاح جا فقتم دیامنیم یهدسیرس.دنکیم یاهمانرب هک یب یهدسیرس تسا مان نیتر سیرس Interrupt Service ( )Routine )ISR( ای interrupt handler هدیمان.دشیم 4
5 قفه برای اینکه میکرکنترلر استفاده کند: میتاند رش د از دهد پاسخ دستگاه چندین به بتاند Polling میکرکنترلر ضعیت مکرر به صرت دستگاهها میکند. را چک هر زمان که ضعیت دستگاه نشاندهندهی نیاز به سریس باشد میدهد. سریس دستگاه به میکرکنترلر میکرکنترلر باز ضعیت کردن به چک دستگاهها میپردازد. قت CPU ندند. Polling رش مناسبی نمیباشد زیرا صرف چک کردن ضعیت دستگاههایی باید میکرکنترلر زمان زیادی از بنماید که به سریسدهی نیازی را مثال JNB TF1, HERE : یا JNB TI, HERE
6 ISR رتین سریس )ISR( قفه قفهیک هر برای رتین سریس است. نیاز قفه برنامه کردن اده برای که ایست دستگاه خاصی میشد. نشته برای مثال در پرت سری برنامهای که کاکتر دریافت شده را در جایی ذخیره نماید. بعد از اتمام سال یک کاکتر کاکتر بعدی را در SBUF ب نماید. که برنامهای یا تایمرها در مثال برای پذیرد. انجام عملی یک تایمر یک دادن سرریز رخ از پس که برنامهای در اقع رتین سریس قفه همانند یک زیربرنامه است. با این تفات که رتین سریس قفه هر زمان که یک ریداد اتفاق افتاد فراخانی میشد. اما یک زیربرنامه در جاهای مشخصی از برنامه صدا زده میشد کامال مشخص است چه زمانی صدا زده خاهد شد.
ISR ینامز هک کی شیپ دیآیم یهمانرب یلصا فقتم دشیم رلرتنکرکیم نیتر سیرس ی لاعف هدش جا دنکیم سپ زا نایاپ یهمانرب یلصا زاب ددرگیم یهمادا یهمانرب یلصا جا.دنکیم لامعم هتفگ دشیم یهمانرب یلصا حطس رد هیاپ )foreground( یهمانرب سیرس حطس رد )background( جا.ددرگیم 7
8 ISR زمانی که یک قفه پیش میآید برنامهی اصلی متقف میشد میکرکنترلر رتین سریس قفهی فعال شده را اجرا میکند پس از پایان به برنامهی اصلی باز میگردد ادامهی برنامهی اصلی را اجرا میکند. اجرای برنامه بدن قفه اجرای برنامه با قفه (a) (b)
9 قفه در 8051 INT1 پنج د قفه منبع قفه خجی دد. جد د پایه P3.2 P3.3 برای قفههای خجی INT0 است. زمان TF0 د قفه یکی برای تایمر یک یکی برای تایمر صفر هر زمان تایمر سرریز دهد یک قفه رخ میدهد. به عبتی هر زمان TF1 یک شد قفه تایمر یک فعال فعال میشد. هر میگردد تایمر صفر قفه یک شد برای قفه یک پرت سری هر زمان کاکتری دریافت یا سال گردد قفه پرت سری فعال میگردد. به عبتی هر زمان TI یا RI برابر با یک شد قفه فعال میگردد. عنان به میتان هم را ریست گرفت. نظر در قفه ششم
10 قفه در 8051 قتی میکرکنترلر ریست میشد تمام قفهها میگردند. فعال غیر هر یک از قفهها را باید با دستر فعال نمد. اگر د یا چند قفه همزمان فعال میگردند. الیتشان به تجه با قفهها شند سریسدهی الیت قفهها قابل برنامهریزی است.
11 فعال غیرفعال کردن قفهها )IE( )Interrupt Enable( هر کدام از قفهها فعالسازی اند. قفه فعالساز ثبات طریق از قابل ثبات IE به صرت در خانه شمه A8H حافظه است. پذیر آدرس بیتی دد. قر تضیحات آدرس بیت سمبل بیت شمه بیت فعال کردن یا غیر فعال کردن کل قفهها IE.7 EA Enable All AFH تعریف نشده IE.6 --- --- AEH فعال کردن قفه تایمر 2 )در )8052 ADH IE.5 ET2 Enable Timer 2 فعال کردن قفه پرت سری IE.4 ES Enable Serial Port ACH فعال کردن قفه تایمر IE.3 ET1 Enable Timer 1 ABH 1 فعال کردن قفه 1 خجی IE.2 EX1 Enable External 1 AAH فعال کردن قفه تایمر IE.1 ET0 Enable Timer 0 A9H 0 فعال کردن قفه 0 خجی IE.0 EX0 Enable External 0 A8H
12 فعال غیرفعال کرده قفهها شند. یک باید بیت د قفه کردن فعال برای یکی یکی برای برای فعال فعال کردن کردن قفهی کلیه نظر مرد قفهها EA یک تایمر قفه کردن فعال : مثال SETB ET1 SETB EA یا MOV IE, #10001000B
13 فعال غیرفعال کرده قفهها تایمر صفر کنید. قفهی خجی کنید. فعال را یک مثال : الف( قفه پرت سری ب( قفه تایمر صفر را غیر فعال کنید. فعال غیر دستر یک با را قفهها تمام ج(
تایلمع یماگنه هک کی خر دهدیم رلرتنکرکیم درا لحم ریز.دشیم یجا رتسد یلعف مامت.دشیم یاتحم یلعف PC رد هتشپ هریخذ.دشیم یب( هکنیا ناتب ادعب همانرب زا ییاج هک عطق هدش همادا ).داد تیعض مامت یاهتیب هریخذ.دنشیم لحم یتباث زا هظفاح مان رادرب شرپ.دشیم رد نیا لحم سردآ ISR اه یرادهگن.دشیم رلرتنکرکیم سردآ ISR هطبرم دریگیم سردآ( رد PC راب )دشیم نآ سردآ شرپ.دنکیم رلرتنکرکیم یهمانرب ISR ات اهتنا جا.دنکیم رد نیرخآ رتسد ISR رتسد RETI دج.دراد رد ماگنه یجا رتسد RETI سردآ یرتسد هک رلرتنکرکیم رد نآ هدرخ دب رد PC راب.دشیم رادقم یاهتیب تیعض زین زاب دندرگیم همانرب زا یناکم هک هدرخ دب جا.دشیم PC سردآ تشگرب زا د تیاب لا هتشپ رب.درادیم 14
15 بردهای قفه PC هنگامی که قفه آدرس شرع ISR رخ میدهد است. که دد. نام قفه برد میشد ب در که مقدی
16 بردهای قفه PC هنگامی که قفه آدرس شرع ISR رخ میدهد است. که دد. نام قفه برد میشد ب در که مقدی از برنامه که میشد ابتدای ROM شرع Reset را میتان شبیه قفه در نظر گرفت. هر قت میکرکنترلر ریست میشد مقد 0000H PC به اجرا شدن میکند.
17 بردهای قفه PC هنگامی که قفه آدرس شرع ISR رخ میدهد است. که دد. نام قفه برد میشد ب در که مقدی در PC ب میشد بیت پرچم قفهای که باعث میشد. یعنی TFO یا TF1 یا IE0 یا IE1 هر برای این چه قفه هنگامی که آدرس رتین قفه قفه شده به طر اتماتیک تسط سخت افز صفر کدام که قفه تلید کرده صفر میشد. Interrupt External : IE
18 بردهای قفه PC هنگامی که قفه آدرس شرع ISR رخ میدهد است. که دد. نام قفه برد میشد ب در که مقدی در مرد قفههای پرت سری TI یا RI به صرت اتماتیک صفر نمیشند. چن د منبع برای یک قفه جد دد پاک کردن بیت پرچم قفه تسط CPU باید در سریس رتین قفه ISR به صرت دستی چک صفر شند. نیست. عملی
19 طراحی برنامه با استفاده از قفه تمام بد. قفه از استفاده بدن شده نشته سری پرت تایمرها فصل در که برنامههایی در حلقههای انتظ بیتهای پرچم TI TF یا RI چک میشد. مشکل این است تمام قت CPU صرف انتظ میشد. مثال CPU منتظر دریافت یک کاکتر در پرت سری است که هیچ قت قر نیست دریافت کند! در صرت قفه از استفاده باید ساخت یابد. تغییر برنامه ORG 0000H LJMP MAIN.. ORG 0030H MAIN:.. ; reset entry point ; ISR entry point ; main program entry point ; program begins
20 طراحی برنامه با استفاده از قفه ابتدای برنامه میگیرد. 30H آدر به پرش دستر یک آدرس است. 00H تا 30H برنامهی دستر الین مربط در اصلی رتینهای به آدرس 30H سریس قر صرت میگیرد. قفهها
21 طراحی برنامه با استفاده از قفه مقعی معمال که میکرکنترلر ریست میشد در این آدرس یک دستر LJMP از آدرس 0H شرع قر دد که به مکان به اجرای برنامه میکند. ال برنامه پرش میکند. آدرس 0012H سریس رتین قفه تایمر صفر از آدرس 000BH تایمر یک نیز از 1BH تا 22H است. به همین صرت بقیه در میشد شرع مییابد. پایان 8 هر برای رتین سریس گرفته شده نظر در بایت قفه است. برنامههای اگر مربط همین 8 در میتاند باشد کچک قفه به سریس اگر برنامههای مربط به سریس قفه بزرگتر از 8 بایت باشد باید محلی از حافظه پرش کند برنامهها در آنجا نشته شد. در نشته شد. یک به قفه رتین سریس
22 رتین سریس قفه کچک بزرگ : : با ISR تایمر صفر برای مثال کچک تایمر صفر برای مثال با ISR بزرگ ORG 0H ORG 0H LJMP MAIN LJMP MAIN ORG 0BH ORG 0BH LJMP T0ISR T0ISR: ORG 30H MAIN: RETI ORG 30H T0ISR: MAIN: RETI
23 TF قفهی تایمر در حالت Polling صبر که زمانی تا میکردیم یک شد. داد. انجام دیگری ک نمیتان دیگر زمان این در در حالت قفهاین مشکل حل میشد. اگر قفهی تایمر در IE فعال باشد هر زمان که تایمر سرریز داد TF یک شد برنامهی میکرکنترلر هر جا که باشد متقف میشد PC به برد قفهی تایمر میپرد تا به قفهی تایمر سریسدهی کند. بدین صرت میکرکنترلر داشت متجه شد. سریس به نیاز تایمر که زمان هر بپردازد دیگر کهای به میتاند
ی رمیات لاثم : یاهمانرب دیسینب هک رط ررکم 8 تیب هداد زا ترپ P0 دریگب ترپ P1 لاسرا.دیامن رط مه نامز جم یعبرم اب هرد 200μs P2.1 رد داجیا.دیامن زا رمیات رفص یب داجیا جم یعبرم هدافتسا.دش ضرف دینک سناکرف رتلایسا 11.0592MHz.تسا 24
ی رمیات لاثم : یاهمانرب دیسینب هک رط ررکم 8 تیب هداد زا ترپ P0 دریگب ترپ P1 لاسرا.دیامن رط مه نامز جم یعبرم اب هرد 200μs P2.1 رد داجیا.دیامن زا رمیات رفص یب داجیا جم یعبرم هدافتسا.دش ضرف دینک سناکرف رتلایسا 11.0592MHz.تسا 25
26 مثال 1085μs برنامهی به مدت مثال قبل را طری 15μs صفر باشد. مدت به مربعی مج که کنید بازنیسی یک
27
28 مثال برنامهای بنیسید قفهی تایمر صفر که مج مربعی با فرکانس 50Hz در پین P2.1 ایجاد نماید. از استفاده کنید. فرض کنید فرکانس اسیالتر 11.0592MHz است.
29 قفه سختافزی خجی در 8051 د قفه خجی دیم. پین )P3.2( 12 پین )P3.3( 13 INT0 INT1 طراحی شدهاند. برای با 03H 13H برابر آنها قفهها برد است. برای فعال دد : جد راه د خجی قفهی شدن فعال شدن فعال شدن به سطح لبه به
30 فعال شدن قفه خجی
31 فعال شدن به سطح های INT0 یا INT1 پین باید این حالت در باشند. یک عادی در حالت اگر یک در سیگنال صفر این حالت د میکرکنترلر شد کش سیگنال صفری که در INT0 خجی )RETI( یک شد. یا را قفه متقف INT1 میدهد. رخ میکند است باید به قبل برد از قفهی خجی میپرد. اجرای آخرین دستر سریس قفهی در غیر اینصرت باز قفهی جدیدی اتفاق میافتد. level-activated level-trigged است. به این حالت فعال شدن به سطح حالت پیش فرض 8051 این مد یا میگیند
32 مثال : فرض کنید پین INT1 به یک سییچ متصل است. این سییچ همیشه در حالت یک است. قتی سییچ به حالت صفر برد میخاهیم یک LED رشن شد. LED به پایه P1.3 متصل است در حالت عادی خامش است. اگر سییچ صفر شد تا زمانی که سییچ صفر است LED باید رشن بماند.
33 نمنردی از قفهی خجی حساس به سطح تا پینهای P3.2 P3.3 در حالت عادی به عنان استفاده میشند مگر آنکه بیتهای INT0 INT1 برای اینکه قفه خجی رخ دهد : زمان شرع مقد باید قفه رتین اجرای پین INTn مقد اگر پین INTn اگر مقد پین INTn دیگر اتفاق می افتد. قبل پس از از اجرای اجرای رتین دستر به قفه RETI برای اطمینان با صفر باشد از قع قفهی نه بیشتر باید خجی مقد در مقد پینهای ردی خرجی در ثبات IE فعال شند. در حالت صفر یک رتین پین بازگردد قفه در نگه دیگر همچنان حدد داشته شد. قفه 4 صفر نخاهیم سیکل باشد معملی داشت. یک ماشین قفهی برابر
34 قفهی خجی حساس به لبه TCON برای حساس کنیم. ثبات بیتهای باید خجی قفه کردن لبه به برنامهریزی را
35 ی س با بیتها IT0 IT1 میتان قفهی خجی 0 قفه خجی 1 را حساس به سطح یا لبه کرد. اگر بیت IT صفر باشد قفهی خجی حساس به سطح صفر است اگر یک باشد حساس به لبه پایین رنده است. SETB IT1 CLR IT1
س ی 36 هکینامز یجراخ INT1 ای INT0 زا 1 0 رییغت تلاح دهدیم یاهتیب IE1 ای IE0 رظانتم اب ی یجراخ ربب اب کی دنشیم هک یهدنهدناشن عق.تسا هکینامز رتسد RETI رد نیتر سیرس جا دش تیب ریظن ی یجراخ یرازفاتخس ترص ربب رفص اب.دشیم تقد دش نیا د تیب مچرپ اهنت یب یجراخ ساسح ل لاعف.دنشیم رد ساسح یجراخ ی حطس اه هریخذ.دندرگیمن
37 قفه خجی حساس به لبه مثال : فرض کنید پین P3.3 به یک منبع تلید پالس متصل است. برنامهای بنیسید که هر پایینرندهی پالس یک مقد یک را به P1.3 بفرستد تا LED متصل به آن رشن خامش بدین صرت چراغ LED با سرعت پالسهای ردی رشن خامش میشد. زمانیکه یک لبهی پایین رنده در پین P3.3 رخ دهد بالفاصله ISR مربط به قفهی خجی 1 اجرا شده LED برای لحظهای رشن خامش میشد. لبهی شد. LED برای مدت 500μs رشن می- ماند بعد خامش میشد.
38 نمنردی از قفه خجی حساس به لبه در این حداقل حالت ردی خجی حداقل برای یک سیکل ماشین باید برای یک سیکل ماشین باید صفر باشد تا قفه ری دهد. س سپ باشد یک لبهی در پایینرنده بیتهای IE0 یا IE1 ذخیره میگردند. زمانیکه سریس رتین قفهی سختافزی صفر میشد. پایان نظیر خجی یافت بیت نظیر صرت به خجی قفهی
39 نمنردی از قفه خجی حساس به لبه نکته د : IE1 IE0 زمانی که IRS پایان مییابد ( سپ قفهی خجی صفر میشند. دستر اجرای از نظیر بیتهای )RETI بدین نیازی که معنی به CLR میکرکنترلر بیتهای کردن آماده پرچم را بعدی قفهی است قفهی خجی IEn بپذیرد. نیست. در زمانیکه ISR یکی نظیر که در حال اتفاق از قفههای خجی در حال اجراست افتادن است صرفنظر میشد. خجی قفهها تمامی از
40 تفات RET RETI را عمل یک دسترات این دی هر انجام میدهند : Pop کردن د بایت از انتهای پشته قطع شده است اجرا شد. ب کردن آن در PC ادامهی اینکه برای که مکانی از دسترات اما در RETI یک ک اضافی نیز انجام میشد : مقد پرچم قفه مربطه را صفر میکند. میکرکنترلر میتاند قفهی جدیدی دریافت بدین معنا که سریسدهی به قفه پایان یافته کند. اگر به جای RETI از RET استفاده شد در اقع بعد از قفهی ال تمامی قفهها برای آن قفه غیر فعال میشد. زیرا میکرکنترلر فکر میکند هنز در حال سریسدهی به قفهی ال است از مابقی قفهها صرفنظر میکند. پرچمهای IE0 TF1 TF0 IE1 با اجرای دستر RETI صفر میشند. RET دستر RETI از دستر به جای میتان یک جا در کجا نمد. استفاده
یرس ترپ 8051 رد اهنت کی یب مه لاسرا مه تفایرد یرس ترپ دج.دراد رگا تیب IE.4 کی دشاب ی( ترپ یرس لاعف )دشاب ره نامز هک TI ای RI کی دش رلرتنکرکیم درا دشیم 0023H سردآ ROM یهظفاح درپیم ات IRS طبرم یرس ترپ جا.دیامن ISR رد ترپ یرس دیاب یاهمچرپ TI RI کچ دنش ات میمهفب یب مادک کی زا اهنآ هدب رب ساسا نآ تایلمع درم رظن ماجنا.میهد تقد دش دیاب رد یاهتنا نیتر سیرس ترپ یرس TI ای RI ره مادک هک کی هدش دب اب رفص CLR رتسد.دمن 41
42 برنامهای بنیسید که 8051 به طر مکرر 8 بیت داده از پرت P1 بخاند در پرت P2 بنیسد همچنین یک کپی از دادهی خانده شده از P1 را به صرت سریال با سرعت bps 9600 سال نماید. فرض کنید فرکانس اسیالتر 11.0592MHz است. MOV A, P1 ; read data from port1 MOV SBUF, A ; send the first data to serial port BACK: MOV A, P1 ; read data from port1 MOV P2,A ; send it to p2 SJMP BACK ; stay in loop indefinitely
43 MOV SBUF, A RETI END ; send the next byte to serial port ; clear TI since CPU doesn t
یاهمانرب دیسینب هک 8051 رکم 8 تیب هداد زا ترپ P1 دناخب رد ترپ P2.دزیرب نینچمه رط مه نامز یاههداد تفایرد هدش زا ترپ یرس رد ترپ P0.دزیرب ضرف دینک سناکرف رتلایسا 11.0592MHz.تسا ترپ یرس اب baud 9600 rate راک.دنکیم 44
یاهمانرب دیسینب هک 8051 رکم 8 تیب هداد زا ترپ P1 دناخب رد ترپ P2.دزیرب نینچمه رط مه نامز یاههداد تفایرد هدش زا ترپ یرس رد ترپ P0.دزیرب ضرف دینک سناکرف رتلایسا 11.0592MHz.تسا ترپ یرس اب baud 9600 rate راک.دنکیم 45
برنامهای : دهد انجام را زیر کهای قفه از استفاده با که بنیسید را داده الف( به صرت سریال پرت P0 به کند دریافت با ج( دهد. انتقال ب( داده در پرت P1 را بخاند به صرت سریالی سال نماید همچنین یک کپی از آن را به پرت P2 بفرستد. فرکانس با مربعی مج یک تایمر صفر از استفاده ری P3.0 بر 5KHz 46 نماید. ایجاد فرض کنید فرکانس اسیالتر 11.0592MHz است. پرت سری با 4800 baud rate ک میکند.
47 MOV A, P1 ; read data from port1 MOV SBUF, A ; send the first data to serial port BACK: MOV A, P1 ; read data from port1 MOV P2,A ; send it to p2 SJMP BACK ; stay in loop indefinitely MOV P0, SBUF ; otherwise due to receive, send serial ; data to P0 MOV SBUF, A RETI END ; send the next byte to serial port ; clear TI since CPU doesn t
اه تیلا بیترت تیلا اه ترص شیپ ضرف هکینامز( رلرتنکرکیم تسیر )دشیم ربب تسا اب : یجراخ 0 )INT0( 0 رمیات یجراخ 1 )INT1( 1 رمیات یرس ترپ تیلا :ینعی کی نیتر )ISR( یهلیسب کی اب تیلا رتلااب دناتیم عطق دش نیتر ی دیدج جا.ددرگ یل نیتر اب تیلا رتلااب رد هکینامز یا اب تیلا رتنییاپ شیپ دیایب فقتم.دشیمن دعب زا مامتا نیتر اب تیلا رتلااب نیتر تیلا نییاپ جا.ددرگیم یهمانرب یلصا رلرتنکرکیم هک حطس رد هیاپ لاح رد تسجا اب عق ره یا فقتم.ددرگیم 48
49 الیت قفهها تمام تقاضاهای قفه در داخل سریس داده خاهد شد. میکرکنترلر نگهدی آنها به الیت ترتیب به میشد مثال : اتفاقی اگر قفههای خجی صفر تایمر صفر قفه خجی یک با هم فعال شند چه می افتد جاب : هر سه قفه در داخل میکرکنترلر ذخیره میگردند. سپس ابتدا قفهی خجی صفر سریسدهی میشد. بعد از اتمام سریس آن تایمر صفر سریسدهی میشد پس از آن قفه خجی یک.
50 الیت قفهها )IP( )Interrupt Priority( الیت قفهها تنظیم است. قفه الیت ثبات بیتهای تسط قابل آدرس B8H در ثبات IP قابل نیز بیتی به صرت قر دسترسی دد. است.
اه تیلا ناتیم اب یزیرهمانرب IP تابث نیا بیترت ضع.دمن دیاب تیب رظانتم اب ی درم رظن رد تابث تیلا کی درک ات رد حطس رتلااب رق.دریگ رگا د ای دنچ یاد تیب تیلا اهنآ کی دشاب اهنآ بیترت تیلا هیلا.دش دهاخ یهدسیرس اه 51
52 الیت قفهها 1 دای باالترین الیت مثال : باشد. 8051 جاب تنظیم گنهای به را MOV IP, #00000100B : قفهی که کنید یا IP.2 SETB در این حالت اگر سه قفهی INT0 INT1 سریس میدهد سپس به INT0 بعد.TF0 همزمان TF0 خجی فعال شند 8051 ابتدا به INT1 : قفهها الیت کنید فرض : مثال بدین صرت تنظیم شده باشند MOV IP, #00001100B ترتیب سریسدهی کنید. مشخص را قفهها به
اه تیلا رد 8051 کی اب تیلا نییاپ دناتیم طست کی اب تیلا لااب عطق.دش اما کی اب تیلا لااب طست کی اب تیلا نییاپ عطق.دشیمن مامت اه رد 8051 هریخذ.دنشیم کی اب تیلا نییاپ دیاب ات نایاپ یجا سیرس اب تیلا ربص رتلااب.دنک 53
54 مثال پرت سری در انتقال اطالعات به صرت سری فرض کردهایم بیت نهم دریافتی نشاندهنده صحت اطالعات یک بایت باشد. اگر بیت ال بایت دریافتی برابر با صفر باشد ب تی نهم حاصل XOR بیت سم پنجم است اگر بیت ال بایت دریافتی یک باشد بیت نهم حاصل AND بیت چهم هفتم خاهد بد. برنامهای بنیسید که مرتبا یک بایت از پرت سری دریافت کند با بررسی بیت نهم صحت دریافت اطالعات را چک کند. اگر بایت دریافتی صحیح باشد آن را از طریق پرت صفر سال کند اگر بایت دریافتی مخدش شده باشد عبت Error! را به صرت چشمک زن به مدت 3 ثانیه در LCD که به پرت یک متصل است نشان دهد. در زمان چشمک زدن نباید بایتی از پرت سری دریافت شد. برای نمایش چشمک زن کافی است ابتدا عبت به پرت یک سال شد پس از 0/5 ثانیه عدد صفر به پرت یک سال شد باز بعد از 0/5 ثانیه عبت سال گردد. پرت سری به صرت 9 UART بیتی با سرعت baud 9600 ک میکند. فرکانس اسیالتر 12MHZ است.
یرس ترپ لاثم لح ه : ره تیاب هک زا قیرط ترپ یرس تفایرد یم دش اب CHECK عبات کچ یم مینک هک ایآ تیاب تسرد تفایرد هدش تسا ای.هن رگا تسرد تفایرد هدشن دب ترپ یرس لاعفریغ هدرک 0رمیات یر 50000µs میظنت هدرک تراتسا یم.مینک دیاب 0رمیات هد راب زیررس دهد ات نامز 500000µs ای 0.5s ف.دسر زا R7 یب شرامش دادعت راب خر زیررس نداد هدافتسا یم.مینک R7 یتق هد دش ینعی 0.5s تشذگ لاح دیاب LCD ای نشر ای شماخ.مینک تیب 50H نانع مچرپ رد رظن یم.مریگ رگا نیا تیب کی LCD دب کاپ رفص رگا دب ترابع رب LCD یر یم.میسین نینچمه دیاب تایلمع نتشن کاپ LCD ندرک 6 راب ترص دریگ ات 3 هیناث.دشب زا R1 یب شرامش نیا دادعت راب هدافتسا یم.مینک R1 یتق 6 دشب 0رمیات فقتم یرس ترپ لاعف یم مینک ات تیاب یدعب زا قیرط یرس ترپ.دش تفایرد 55
ORG 0 LJMP MAIN ORG 0BH LJMP T0ISR ORG 23H LJMP SPISR ORG 30H MAIN: MOV SCON, #0D0H MOV TMOD, #21H MOV TH1, #-3 MOV IE, #10010010B SETB TR1 HERE: SJMP HERE ORG 100H SPISR:JB TI, TRANS RECEIVE: MOV A, SBUF MOV C, RB8 MOV 40H, C CALL CHECK CLR RI RETI TRANS: CLR TI RETI ORG 200H T0ISR: INC R7 CJNE R7, #10, EXITT0ISR LCALL TIMEREACHED EXITT0ISR: MOV TH0, #3CH MOV TL0, #0B0H RETI ORG 300H CHECK: JB ACC.1, CHECK_AND CHECK_XOR: CALL CALC_XOR SJMP RESULT CHECK_AND: CALL CALC_AND RESULT: JC BIT9ONE JNC BIT9ZERO BIT9ONE: JB 40H, CORRECT JNB 40H, N_CORRECT BIT9ZERO: JNB 40H, CORRECT JB 40H, N_CORRECT N_CORRECT: CLR ESP MOV R1, #0 CLR 50H MOV TH0, #3CH MOV TL0, #0B0H MOV R7, #0 SETB TR0 RET CORRECT: MOV P0, A RET CALC_AND: CALC_XOR: MOV C, ACC.4 ANL C, ACC.7 RET JB ACC.3, L1 MOV C, ACC.5 SJMP L2 L1: MOV C, ACC.5 CPL C L2: RET 56 مثال پرت سری ORG 400H TIMEREACHED: CLR TR0 INC R1 CJNE R1, #6, CONTINUE MOV P1, #0 SETB ESP CLR TR0 RET CONTINUE: JB 50H, CLEARLCD SHOWLCD: MOV DPTR, #DATA CLR A AGAIN: MOVC A, @A+DPTR JZ EXITTIME MOV P1, A INC A SJMP AGAIN CLEARLCD: MOV P1, #0 EXITTIME: CPL 50H SETB TR0 RET ORG 500H DATA: DB "ERROR!,0
Stopwatch لاثم میهاخیم اب هدافتسا زا رلرتنکرکیم 8051 کی stopwatch یحط.مینک نیدب ترص هک دیلک لص stopwatch عطق INT0 هیاپ رلرتنکرکیم لصتم تسا رد نامز هدرشف ندش دیلک stopwatch کی ل هدنرنییاپ رد هیاپ INT0 دجب.دیآیم میهاخیم نامز لصتم ندب دیلک stopwatch یریگهزادنا هدرک رب یر هحفص شیامن ناشن.میهد تقد یریگهزادنا نامز رد stopwatch کی یلیم هیناث تسا ینعی نامز شیامن هداد هدش رب هحفص یر شیامن ره کی یلیم هیناث یناسرزرب.دشیم نینچمه نیا تیلباق دج دراد هک اب لص ندش ددجم دیلک نامز زا همادا شرامش.دش ضرف مینکیم هحفص شیامن ترپ کی لصتم.تسا یب شیامن دادعا رب ی ر هحفص شیامن یفاک تسا دک یکسا ددع زا نیرتکچک مقر نیرتگرزب مقر بیترت ترپ کی لاسرا.مینک نینچمه هحفص شیامن ییانات شیامن اتیاهن 10 رتکاک.دراد 57
58 مثال Stopwatch ORG 0 ORG 100H ORG 200 ORG 300H LJMP MAIN EX0ISR: T0ISR: CLR TR0 INCTIME: ORG 03H LJMP EX0ISR JB 20H, STOPTIMER STARTTIMER: LCALL INCTIME LCALL SHOWTIME MOV R0, #30H AGAIN: INC @R0 ORG 0BH SETB 20H MOV TH0, #0FCH CJNE @R0, #10, EXITINC LJMP T0ISR MOV TH0, #0FCH MOV TL0, #18H MOV @R0, #0 MOV TL0, #18H SETB TR0 INC R0 ORG 30H MAIN: SETB TR0 RETI RETI SJMP AGAIN EXITINC: RET MOV R0, #30H STOPTIMER: MOV R7, #10 CLR TR0 ORG 400H L1: MOV @R0, #0 CLR 20H SHOWTIME: INC R0 DJNZ R7, L1 RETI MOV R0, #30H MOV R7, #10 CLR 20H L2: MOV A, @R0 ORL A, #30H SETB IT0 MOV P1, A SETB P3.2 MOV IE, #10000011B INC R0 DJNZ R7, L2 HERE: SJMP HERE RET