Professional Documents
Culture Documents
استاد
دکتر محمود تابنده
تهيهکننده
مهدی نيازمندان
بهار1385
مقدمه7........................................................................................................................................
فصل اول 8..................................................................................................................................
باسها و اجزای داخلی کامپيوتر 8...................................................................................................
1-1باسها و عملکردشان 8...........................................................................................................
1-1-1باس نوع يک 9.................................................................................................................
1-1-2باس نوع دو 10.................................................................................................................
1-1-3باس نوع12....................................................................................................................3
1-2ثباتها17................................................................................................................................
1-3واحد محاسبه و منطق( 18......................................................................................... )ALU
1-4رجيستر :دستورالعمل19..............................................................................................)IR( :
1-5واحد کنترل و زمانبندی 19...................................................................................................
1
فصل دوم 20................................................................................................................................
حافظهها20..................................................................................................................................:
20............................................................................................................................ROM 2-1
20.......................................................................................................................EPROM 2-2
20...................................................................................................................E2PROM 2-3
21...........................................................................................................................RAM 2-4
RAM 2-5هایاستاتيك :و ديناميک21..........................................................................................
فصل سوم21................................................................................................................................
کامپيوتر :شريف 21.......................................................................................................................
3-1بلوک دياگرام کامپيوتر شريف22..........................................................................................:
3-1-1باس داده (22...........................................................................................................)DB
3-1-2واحد محاسبه ومنطق23.......................................................................................)ALU( :
3-1-3رجيستر وضعيت23.........................................................................................................
3-1-4آکوموالتور (24..................................................................................................... )Acc
3-1-5واحد زمانبندی و کنترل 24..............................................................................................
3-1-6رجيستر دستورالعمل (25...........................................................................................)IR
3-1-7شمارنده برنامه (25.................................................................................................)PC
1-8- 3باس آدرس (25.....................................................................................................)AB
3-2دو عمل اصلی 25.......................................................................................................CPU
3-3عملکرد کامپيوتر :شريف و قالب بندي دستورالعملها27............................................................:
3-4شاخصها28.........................................................................................................................:
فصل چهارم 30............................................................................................................................
ميکرو پروسسور30..........................................................................................................8085 :
4-1پايههای 30.................................................................................................................8085
30..............................................................................................................0AD-7AD 4-1-1
30................................................................................................................. 15A-8A 4-1-2
31...............................Error! Objects cannot be created from editing field codes. 4-1-3
31..................................................................................................................READY 4-1-4
31.....................................................................................................................HOLD 4-1-5
31.................................................................................................................... HLDA 4-1-6
31....................................................................................................................... INTR 4-1-7
32...................................................................................................................... INTA 4-1-8
32.................................................................................................RST5.5 )6.5 ,7.5( 4-1-9
32....................................................................................................................TRAP 4-1-10
32..........................................................................................................RESET IN 4-1-11
32.....................................................................................................RESET OUT 4-1-12
32....................................................................................................................X1,X2 4-1-13
33.............................................................................................................CLK OUT 4-1-14
33.........................................................................................................................SID 4-1-15
4-2شاخصها33..........................................................................................................................:
4-3انواع آدرسده:ی در 34.................................................................................................8085
4-3-1روش آدرسدهي مستقيم34...............................................................................................
4-3-2روش آدرسدهي ثباتي 35..................................................................................................
2
4-3-3روش آدرسدهي فوري35.................................................................................................
4-3-4روش آدرسدهي غير مستقيم 35.........................................................................................
4-3-5روش آدرسدهي مستتر35.................................................................................................:
4-4برنامهنويس:ی در 36....................................................................................................8085
4-4-1انتقال داده36.....................................................................................................................
4-4-2گروه دستورهاي محاسباتي38............................................................................................:
4-4-3گروه شامل دستورات منطقي41.........................................................................................
4-4-4گروه دستورات :پرش 42....................................................................................................
4-4-5گروه دستورات O/I :و كنترل ماشين و 42...............................................................Stack
4-5وقفه ها 45............................................................................................................................
4-6زمانبند:ی 47.........................................................................................................................
4-6-1سيكل خواندن 47...............................................................................................................
4-6-2سيکل نوشتن 48................................................................................................................
4-6-3زمانبندی يک دستورالعمل :نمونه48....................................................................................
IC 4-5هاي جانبی 49.......................................................................................................8085
IC 4-6-1های 8755و 49.............................................................................................8355
IC 4-6-2های 8155و 50.............................................................................................8156
51........................................................................................................... )PPI( 8255 4-6-3
4-7اسکن صفحه کليد54............................................................................................................
4-8کنترل موتور پلهای56..........................................................................................................
4-9برنامة چراغ راهنما57..........................................................................................................
4-9ثابتها و آرايهها در زبان اسمبلی59......................................................................................
فصل پنجم 61...............................................................................................................................
ميکروکنترلر 61.................................................................................................................8051
5-1بررس:ی اجمالی پايههای 62..........................................................................................8051
5-1-1درگاه صفر62.................................................................................................................
5-1-2درگاه يک63...................................................................................................................
5-1-3درگاه دو 63.....................................................................................................................
5-1-4درگاه سه 63....................................................................................................................
64...................................................................................................................... PSEN 5-1-5
64.........................................................................................................................ALE 5-1-6
64.........................................................................................................................
AE 5-1-7
64.........................................................................................................................RST 5-1-8
5-1-9وروديهاي نوسانساز65..................................................................................................:
5-1-10اتصاالت تغذيه 65...........................................................................................................
5-2سازمان حافظه 66.................................................................................................................
RAM 5-2-1همه منظوره66....................................................................................................
RAM 5-2-2بيت آدرس پذير66.................................................................................................
5-2-3بانک های ثبات 67...........................................................................................................
5-2-4ثباتهای کاربرد خاص68.................................................................................................
5-3دستياب:ی به حافظه کد و داده خارجی70...................................................................................
5-4روشهای آدرس دادن71.......................................................................................................
5-4-1آدرسدهی ثبات71............................................................................................................
3
5-4-2آدرس دهی مستقيم72........................................................................................................
5-4-3آدرس دهی غير مستقيم 73.................................................................................................
5-4-4آدرس دهی فور:ی 73........................................................................................................
5-4-5آدرس دهی نسبی 74.........................................................................................................
5-4-6آدرس دهی مطلق 74........................................................................................................
5-4-7آدرس دهی طوالن:ی 75.....................................................................................................
5-4-8آدرس دهی انديس دار75...................................................................................................
5-5انواع دستورالعملها75...........................................................................................................:
5-5-2دستورالعملهای منطقی 76..................................................................................................
RAM 5-5-3-1داخلی 77.........................................................................................................
RAM 5-5-3-2خارجی 77.......................................................................................................
5-5-3-3جدولهای جستجو 78......................................................................................................
5-5-4دستورالعملهاي بولي 78.....................................................................................................
5-5-5دستورالعملهای انشعاب برنامه79.......................................................................................
5-6تايمرها79............................................................................................................................:
5-6-1ثبات حالت تايمر80...........................................................................................................
5-6-2ثبات كنترل تايمر82..........................................................................................................
5-7شروع :به كار ،توقف و كنترل تايمرها 83..............................................................................
5-8عمليات درگاه سريال 85.......................................................................................................
5-8-1حالت 85........................................................................................................................1
5-8-2حالت 86........................................................................................................................2
5-8-3حالت 86........................................................................................................................3
5-8وقفه ها 88............................................................................................................................
5-8-1سازمان وقفه 88................................................................................................................
5-8-2فعال و غير فعال کردن وقفه ها88......................................................................................
5-8-3تقدم وقفه ها89..................................................................................................................
5-8-4اجراي وقفهها90...............................................................................................................
5-8-5بيتهاي پرچم وقفهها 90.....................................................................................................
5-8-6بردارهاي :وقفه 91.............................................................................................................
فصل ششم 94...............................................................................................................................
ميکروکننده های 94...........................................................................................................AVR
6-1مقدمه94...............................................................................................................................
6-2پايه ها و سيگنال ها95..........................................................................................................
6-3امكانات موجود در 97.................................................................................................AVR
97..........................................................................................................................CPU 6-3-1
6-3-2حافظه ها 101...................................................................................................................
6-3-2-1حافظه برنامه101..........................................................................................................
6-3-3مدارات راه اندازي و كنترل 103........................................................................................
6-3-4واحدهاي جانبي (105................................................................................................)I/O
فصل هفتم107..............................................................................................................................
107................................................................................................................................. DMA
7-1مفهوم 107................................................................................................................DMA
7-2برنامه ريزي تراشه 108..................................................................................DMA 8237
4
7-3ثبات هاي كنترل داخلي 108.........................................................................................8237
7-3-1ثبات فرمان 109................................................................................................................
7-3-2ثبات وضعيت109.............................................................................................................
7-3-3ثبات مد109......................................................................................................................
7-3-4ثبات تك پوشش110...........................................................................................................
7-3-5ثبات تمام پوشش110.........................................................................................................
7-3-6ثبات موقت/پاك :كردن اصلي 110.......................................................................................
7-3-7پاك كردن ثبات پوشش 110................................................................................................
5
پيشگفتار
در اوايل دهه 60ميالدي اياالت متحده در آستانه شکل گيري تکنولوژي نويني :در
مهندسي برق بود .ترانزيستور :که کمي پس از پايان جنگ جهاني دوم توسط سه دانشمند :در
آزمايشگاههاي :كمپاني بل ابداع شده بود ،کم کم جايگزين رقيبش المپ خال مي شد.
در سال 1968رابرت نويس و گوردون مور ،دو نفر از پايه گذاران اصلي كمپاني
فيرچايلد :شرکت جديدي موسوم :به اينتل 1تاسيس نمو دند .در سال 1969يک شرکت ژاپني
سازنده ماشين حساب ,به آنها سفارش يک آي سي خاص براي ماشين حسابهاي جديد خود داد
و يک پردازنده مرکزي )CPU( :چهار بيتي بر روي يک تراشه ساخته شد و بدين ترتيب
خانواده ICهاي اينتل 4000متولد گرديد .اين روند ادامه پيدا کرد و در سال ,1972آي سي
هشت بيتي , 8008پس از آن 8085 , 8080ودر اواخر دهه 1970چند ميکروپروسسور 16
بيتي به بازار عرضه شد .
اين تحول تا امروز :ادامه داشته است و ميکروپروسسورهاي 32بيتي و 64
بيتي(پنتيوم) پا به عرصه وجود :گذاشتهاند .اکثر ميکروکامپيوتر :هاي اوليه به صورت کيت
فروخته مي شدند و براي انجام کاري خاص ,بايد به زبان ماشين برنامه ريزي :مي شدند و
قابليت توليد انبوه را نداشتند ,تا اينکه در 1982شرکت IBMبراي اولين بار شروع به فروش
کامپيوترهاي شخصي 2:نمود و امروزه شاهد جهش هاي ناباورانه اي در زمينه رشد تکنولوژي:
وقا بليت هاي کامپيوترهاي :شخصي هستيم.
گردآورنده
مقدمه
·1
Integrated Electronics
Personal Computer(PC) · 2
6
اين مجموعه به بررسي :مباني تکنولوژي :ريز پردازندهها 1مي پردازد و به عنوان يک
منبع درسي :,براي درس ساختار :و زبان ماشين در نظر گرفته شده است .تمرکز ما در اين
کتاب ،فهم اجزاء سخت افزاري يک سيستم :ميکروکامپيوتر و نقش نرم افزار در کنترل سخت
افزار است.
قسمت عمده آنچه در اين مجموعه مالحظه مي شود ,از بخش هاي مختلف چند کتاب
و نيز جزوه درس ساختار :و زبان ماشين گردآوري شده است .در اين مجموعه به بررسي
2
ميکروپروسسور :هشت بيتي" شريف" ،ميکروپروسسور :هشت بيتي , 8085ميکروکنترلر
هشت بيتي 8051و در انتها به اختصار به ميکروکنترلر AVRمي پردازيم .البته در مورد:
ميکروپروسسور" :شريف" ،به دليل آنکه صرفا :يک مدل براي يادگيري :و آشنايي اوليه است,
به سخت افزار چنداني پرداخته نمي شود .دو مورد :بعدی که از ميکروپروسسور :هاي واقعي :و
ساخت شرکت اينتل هستند بطور مفصل تر مورد :بررسی قرار :می گيرند .يادآوري مي نمايدكه
تاکيد بر ساختار :سه باسه( CPUهاي استفاده كننده از سه باس) است که در فصل هاي بعدي
بهنگام افزودن حافظه و I/Oبه کار مي آيد ،به همين منظور ,در فصل اول به معرفي :باس
مي پردازيم .همچنين ،در اين درس به آيسيهاي پشتيبان 3ويژه 8085و روشهاي I/O :ي
سري خواهيم پرداخت .همچنين ،به اختصار :به معرفي :فلسفه و توري :پايه DMAو AVR
مي پردازيم.
فصل اول
Microprocessors ·1
Microcontrollers · 2
· 3منظور مها ن Peripheralا ست.
7
3
در اين فصل ابتدا با باسها 1و زمانبندی 2عملکرد صحيح آنها ,مطالبي :از قبيل سهحالته
و امکان اتصال خروجي:هاي چند گيت 4به يکديگر آشنا خواهيم شد .ادامه اين فصل به ساير
اجزاي اصلي کامپيوتر( )CPUاختصاص دارد.
باس را ميتوان يک مجموعه خط(سيم) براي انتقال داده بين يک ارسال كننده داده و يک
گيرنده تعريف :کرد .معموال خطوط سيگنالي :را كه با يكديگر :وجه مشتركي دارند پهلوي هم
گذاشته و آن را يك باس مي ناميم .به اين ترتيب باس داده ,باس آدرس و باس کنترل و غيره
را به دست ميآوريم .در يک طراحي :مناسب ,بايد مسائلي از قبيل مصونيت در مقابل نويز,
اثرهاي بارگذاري ac :و ,dcانعکاس ناشي از پالس هاي منطقي سريع و نيز تداخل بين
هاديهاي موازي بايد در نظر گرفته شوند .ولي ،از آنجا که ما در اين درس درصدد پرداختن
به جنبه الکترونيک عناصر نيستيم ،:از بحث در باره اين مسائل صرف نظر مي کنيم.
روي باس نوع ,1يک فرستنده سيگنال و يک گيرنده داريم .از آنجا که
ميکروپروسسورها :با استفاده از تكنولژي5 MOS :ساخته شده اند و توانايي :جرياندهي شان
بسيار محدود :است ,به عنوان يک قاعده کلي هرگاه بار روي باس از توانايي :جرياندهي
ميکروپروسسور :بيشتر باشد ,يا گيرنده در برد اصلي نباشد بافر الزم است .منظور از
بافرکردن باس ,اتخاذ روشي :براي اطمينان از انتقال سطوح منطقي معتبر بر روي :باس است.
شکل 1-1چند نوع بافر6 :متداول را نشان مي دهد .آي سي هايي از خانوادة TTL7
مانند 74LS245و 4LS244اين جنبه گيرا را دارند که در هر آيسي هشت بافر :وجود دارد.
Bus ·1
Timing · 2
Tri State · 3
Gate · 4
Metal Oxyde Semiconductor . 5
Buffer . 6
.Transistor Transistor Logic 7
8
معموال نه تنها بافر کردن فرستنده ,که بافر کردن ورودي :گيرنده ها نيز سودمند :است ,زيرا
اين کار مقدار بارهايي :را که مي توانند :روي باس قرار بگيرند :بسيار زياد ميکند .در مورد اين
دو آیسی در بخش 3-1-1بيشتر توضيح داده شده است.
9
در باس نوع ,2چند فرستنده و يک گيرندة سيگنال داريم .اين نوع باس را نميتوان با
گيتهاي TTLاستاندارد ساخت .شکل 2-1دليل اين امر را نشان ميدهد .تا وقتي هر دو
فرستنده ميخواهند :مقدار منطقي يکساني :روي خط قرار دهند ,اشکالي پيش نميآيد .ولي همين
که خروجي :يکي 1و يکي 0باشد ,باس وضعيت مبهمي پيدا ميکند و بدتر اينکه امکان دارد از
گيتي با خروجي 1 :جريان زيادي :وارد گيتي با خروجي 0 :شود و هر دو گيت آسيب مي ببينند.
اين وضعيت ,نزاع بر سر باس نام دارد.
10
عيب اين نوع باس اين است که نميتوان تعيين کرد که کدام فرستنده باس را صفر کرده
است .به اين ترتيب پروسسور مجبور :است وضعيت( 1خروجي ها) را بخواند :تا بتواند :وسيله
فعال کننده را بيابد ,اين روش ,همهپرسي 2:نام دارد.
باس نوع ,3يک باس دو جهته است که روي :آن چند ين فرستنده وچند گيرنده قرار
دارد.
متداولترين مثال ,باس داده 4در يك سيستم ميکروپروسسوري :است .شکل 4-1جهت
عبور داده از يک وسيله ورودي به CPUرا نشان ميدهد .توجه کنيد که تمام فرستندهها :به
صورت گيتهاي سه حالته وتمام :گيرندهها به صورت لچ 5شامل فيليپ فالپهاي D :نشان داده
شدهاند.
Status ·1
Polling · 2
Wait(State) · 3
Data Bus · 4
Latch · 5
11
لزوم سه حالته بودن فرستندهها :بايد روشن باشد .در هر زمان تنها بايد يک فرستنده,
کنترل باس را در دست داشته باشد ،اما ممکن است لزوم :لچ داشتن گيرنده چندان واضح نباشد.
چيزي که بايد به ياد داشته باشيم اين است که داده براي مدت کوتاهي روي :باس قرار :ميگيرد.
به عنوان مثال ،هنگام اجراي يک دستور :ورودي :در سيکل M1روي :باس
Decoding ·1
12
شكل 5-1بافر باس دو جهت .در هر زمان فقط يك دروازه فعال مي شود
بعضي از انواع متداول اين بافرها :در شکل 6-1نشان داده شده است .از اين ميان
74LS245براي اين کاربرد :بسيار مناسب است؛ چون اين آيسي هشت زوج سه حالته با
خطوط کنترل مجزاي Enableو انتخاب جهت 1دارد.
Direction ·1
13
شكل 6-1فرستنده گيرنده هاي متداول براي بافر :كردن باس داده
ميكروپروسسور:
همچنين در مورد لچ , 74LS373براي جدا کردن خطوط :آدرس و داده در 8085که
مالتيپلکس شدهاند الزم است( 373' .فرم اختصاري , 74LS373درادامه مورد :اين نوع
نمايش بيشتر :توضيح خواهيم داد) ,هشت فيليپ فالپ با يک ورودي :مشترک فعال باال 1دارد.
وقتي سيگنال 2ALEيک است خطوط AD0تا AD7بخش مرتبه پايين آدرس را حمل
ميکند .نيز لچ 74LS374براي اتصاالتي :از قبيل 8085به خروجيهايي مانند LEDمناسب
است .هر دو لچ ,با يک شدن ,OEخروجيهايشان امپدانس باال ميشود 373' :.داراي 20پايه
است 8 ,پايه آن به عنوان ورودي :و 8پايه به عنوان خروجي تعريف :شدهاند .عالوه بر اين 16
پايه ،يک پايه ورودي 3OEنيز وجود :دارد كه اگر فعال شود ورودي :لچ را به خروج:ي مدار
مجتمع متصل مي کند و اگر اكتيو نباشد خروجي :به حالت شناور :ميرود .پايه ديگر اين ، IC
ورودي Clock :است كه با عالمت اختصاري CLK :نمايش داده ميشود ،CLK :.ساعت
سيستم (پالس مربعي :با فركانس :ثابت) است .اين پالس مربعي :توسط يک کريستال :توليد مي
شود .اين پايهها در شكل 7-1نشان داده شده اند .اين ،ICحساس به سطح 4است يعني در طول
مدت زماني :كه CLKاكتيو است IC ،ورودي را به خروجي :منتقل ميكند 374' .مشابه '373
است ،تنها تفاوتش در اين است كه اين ،ICحساس به لبه 5است يعني زماني :كه ،CLKاز
صفر به يك ميرود :سيگنال ورودي :به خروجي :منتقل ميشود .اين پايهها در شكل 8-1نشان
داده شده اند.
ميکنيم .مثالً چرا
در اين قسمت به نامگذاري و عالمت اختصاري ICها اشارهاي
74LS373را با ' 373نشان ميدهند؟ ICها به گروه هاي مختلفي تقسيم مي شوند وهر IC
ICهايي هستند که چند حرف اول نامشان شبيه
ICهاي هم گروه
در يک گروه قرار ميگيرد :.
به هم است ولي تفاوت درحروف آخرشان است .بنابراين به جاي تكرار حروف مشابه ,عالمت
(') ميگذاريم؛ مثالً در گروه ICهايي كه با 74شروع :ميشوند ،نامهايي :از قبيل 74L ،
74LS ،74H، 74C، 74AC، 74Sو ...ديده مي شود كه هر كدام معرف خصوصيتي:
هستند.
Active High ·1
Address Latch Enable · 2
Output Enable · 3
Level Triggered · 4
Edge Triggered ·5
14
بعنوان توضيح 74LS ,که يکي از متداولترين گروههاستL ,اش به خاطر اين است كه
فعال پايين 6است يعني با صفر فعال و با يك غير فعال ميشود :و Sاش به خاطر اين است كه
Shot keyاست يعني سرعت عملکرد آن باالست .و يا 74H، High powerاست و 74C
به خاطر اين است كه از CMOSدر اين ICاستفاده شده است .به عنوان مثالي ديگر بجاي
اينكه بنويسيم 74HC 00 :مينويسيم ' 00 :و. ...
15
شکل 9-1آیسی 74ALS138
مورد ديگر (244’)74LS244است .اين قطعه شامل 8خط بافر فعال باال ميباشد.
خروجي آن سه حالته است 1 ,0 ،وحالت امپدانس باال ()Z؛ اين قطعه 8پايه ورودي و 8پايه
خروجي و 2پايه Enableدارد .پايههاي بافر :به دو گروه تقسيم بندي ميشوند ،گروه يک شامل
فعال باشد وروديها )A0-A3( :در خروجيها: است و اگر پايههاي A0,A1,A2,A3و
( )Y0-Y3ظاهر ميشوند وگرنه خروجي :ها ( )Y0-Y3به حالت Zميروند:.
فعال باشد وروديها( : است و اگر گروه دو شامل پايههاي A4,A5,A6,A7و
)A4-A7در خروجيها ( )Y4-Y7ظاهر ميشوند :وگرنه خروجي ها ( )Y4-Y7به حالت Z
ميروند .اين بافر :در شکل 10-1مشاهده ميشود.
74LS245هم يک بافر مانند 74LS244است ,با اين تفاوت که دو طرفه است.
1
1-2ثباتها
همه ميکروپروسسورها معموال داراي چندين ثبات هستند .مثال 8085شش رجيستر :همه
منظوره هشت بيتي با نامهاي B, C, D, E, Hو Lدارد .همچنين داراي دو رجيستر خاص
Register ·1
16
است ,يکي ( Aآکوموالتور 1:يا انباره) و ديگري :رجيستر ( Fرجيستر :پرچم) 2که اين دو نيز
هشت بيتي هستند .نيز دو رجيستر 16 :بيتي با نامهاي SPو PCدارد .رجيستر PCشمارنده
برنامه 3است و طول آن ( 16بيت) با باس آدرس 8085سازگار :است .شمارنده برنامه آدرس
دستورالعمل :بعدي را که CPUاز حافظه احضار ميکند ,نگه مي دارد .اين قضيه در مورد
8051و ماشين شريف هم همين طور است .رجيستر SPاشارهگر 4پشته ناميده مي شود .اين
رجيستر نيز يک آدرس 16بيتي را در خود نگه مي دارد ,ولي اين آدرس به بخش خاصي از
حافظه موسوم :به پشته اشاره مي کند .از بخش پشته ميتوان به عنوان تعداد تقريبا نامحدودي:
رجيستر خارج از آيسي استفاده کرد .البته فلسفه اصلي تعريف پشته ,حفظ آدرس برگشت
هنگامي که يک زير برنامه(سابروتين) 5صدا زده ميشود :,ميباشد.
توضيح در مورد :رجيستر Fاينکه ,در 8085اين رجيستر شامل پنج پرچم وضعيت و
سه بيت تعريف نشده است؛ در واقع اين پرچمها :فليپ فالپهاي 1 :بيتي هستند که ميتوانند :يک يا
صفر باشند .در حالت کلي بعضي دستورالعمل:هاي 8085بر تمام يا بعضي از آنها تاثير دارد و
بعضي از دستورالعملها :نيز بر هيچ کدام تاثير ندارند :.اين پنج پرچم عبارتند از:
( CYرقم نقلي) : 6اگر در جمع ,رقم نقلي توليد شود يا اجراي دستور :تفريق مستلزم رقم:
قرضي )borrow( :شود اين پرچم setدر غير اين صورت reset :مي شود.
( Pتوازن) : 7اگر تعداد بيتهاي حاصل يک عمل زوج باشد اين پرچم setدر غير اين
صورت resetمي شود.
( ACرقم نقلي کمکي) : 8اگر دستورالعملي :باعث ايجاد رقم نقلي از بيت 3به 4شود,
اين بيت setدر غير اين صورت resetخواهدشد.
( Zصفر) : 9اگر نتيجه يک دستورالعمل مقدار صفر باشد اين پرچم setدر غير اين
صورت resetمي شود.
Accumulator ·1
Flag Register · 2
Program counter · 3
Stack Pointer · 4
Subroutine · 5
Carry · 6
Parity · 7
Auxiliary Carry · 8
Zero · 9
17
( Sعالمت) : 1اگر با ارزش ترين بيت حاصل يک عمل 1باشد ,اين پرچم setدر غير
صورت resetمي شود.
وضعيت در مورد 8051 :و شريف :نيز مشابه است که در جاي خود توضيح داده خواهد
شد.
2
1-3واحد محاسبه و منطق( )ALU
واحد ALUكه به آن واحد محاسبه و منطقگويند دو ورودي ميگيرد :يکي آکوموالتور:
و ديگري :رجيستر Temp؛ پس از انجام عمل خواسته شده (كه از طريق پايههاي كنترلي به
اين واحد دستور داده ميشود) خروجي را تحويل ميدهد .اين واحد هم اعمال محاسباتي :و هم
اعمال منطقي را انجام ميدهد .مثالً براي جمع دو عدد 11و , 20يكي از اين اعداد در
آكوموالتور ذخيره مي شود و عدد ديگر به رجيستر :كمكي Tempانتقال مييابد ،:پس از
محاسبه در خروجي ALUعدد 31قرار ميگيرد:.
3
1-4رجيستر دستورالعمل ()IR
هر دستوري كه fetchميشود بصورت :يک عدد باينري است ,اين اعداد بايد تحليل
4
شوند .در اين قسمت هر دستور :ابتدا ديکد ميشود :و سپس به واحد واحد کنترل و زمانبندی
فرستاده ميشود :تا پايههاي كنترل واحدها بنا به دستوري :كه وارد CPUمي شود فعال يا غير
فعال شوند .
Sign ·1
Arithmetic Logic Unit · 2
Instruction Register · 3
Timing And Control · 4
18
تمام قسمتهاي :گفته شده تا اينجا ,ارکان اصلي يک CPUهستند .در
ميکروپروسسورهاي مختلف ممکن است اين اجزاء با هم اندکي تفاوت داشته باشند ,در
فصلهای آينده با جزئيات بيشتر ,به طور خاص با , 8085کامپيوتر :شريف و 8051آشنا
ميشويم.
فصل دوم
حافظهها
در اين بخش به اختصار :,تا اندازهای :که برای اين درس کافی باشد ,به بررسی :اجمالی
حافظهها :می پردازيم .نيز با چند آیسی پرکاربرد :و معروفتر :آشنا میشويم:.
1
ROM 2-1
حافظهاي است فقط خواندني :و مهمترين مشخصه آن غير فرار :بودن آن است .به اين
معني كه محتواي :آن حتي اگر منبع تغذيه از آن حذف شود پاك نميشودROM :.ها اغلب در
ريزكامپيوترها :براي ذخيره برنامه نرمافزارهای كنترلگرها (مثل اجاق مايكروويو ,موتور
پلهای ,نمايشگر ديجيتال و غيره) و برنامههاي كاربردي ديگر بكار ميروند.
مزيت استفاده از ROMاين است كه هر وقت منبع تغذيه اعمال شود بالفاصله در در
دسترس است و موجب ميشود تا اپراتور پس از روشن كردن سيستم :بالفاصله شروع به
استفاده از برنامه كاربرد ميكند.
19
عيب ROMاين است كه در فضاي :حافظهاي كه اشغال ميكند نميتوان چيزي نوشت.
عيب ديگرآن اين است كه ROMبه سادگي برنامهنويسي نميشود و بايد در كارخانة سازنده
برنامهنويسي :بشود.
1
EPROM 2-2
نوع با انعطاف :تر ولي گرانتر ROM :است و اين وسيله را ميتوان برنامهريزي كرد،
پاك كرد ,دوباره برنامهريزي نمود و اين كار بارها و بارها قابل تكرار است .پاككردن اين
حافظه بوسيلة اشعه ماوراء بنفش انجام میشود:.
2
E2PROM 2-3
حسن اين قطعه اين است كه بدون جدا كردن از سوكت ميتوان برنامه آن را پاك كرد.
به عالوه پاك كردن يك بايت و يا همة بايتها امكان پذير است.
3
RAM 2-4
حافظههاي خواندني / :نوشتني را عموما ً حافظه با دستيابي :تصادفي :يا RAMمينامند:.
البته ROMها نيز قابل دستيابي به دلخواه هستند .پس نام مناسبي براي آن انتخاب نشده پس
بهتر بود به جاي RAM، RWMانتخاب ميشد يعني حافظة خواندني و نوشتني .مهمترين
خصوصيت RAMقابليت انتقال آن است .برنامههاي كاربردي به سرعت از ديسك يا نوار به
RAMانتقال يافته و سپس بوسيلة ريزپردازنده اجرا ميشود:.
تنها محدوديت :مهم RAMفرّار بودن آن است .با خاموش كردن منبع تغذيه همه
اطالعات پاك ميشوند .به همين دليل لوازم :داشتن نوعي حافظه ثانويه در اغلب سيستمهاي
ريز كامپيوتر :احساس شده است ,حافظههايی :که امروزه Hardناميده میشوند.
5
RAM 2-5هایاستاتيك 4و ديناميک
RAMاستاتيك نوعي RAMاست كه از فليپ فالپ به عنوان عنصر اصلي
ذخيرهسازي :استفاده ميكند.
20
فصل
سوم
کامپيوتر شريف
در اين فصل در صدد آن هستيم که يک کامپيوتر :فرضي :به نام کامپيوتر :شريف را
معرفي کرده و اصول کار آن را به عنوان پايهاي براي آشنايي با ميکروپروسسورهاي :واقعي
تشريح نماييم.
يادآوري :ميشود کامپيوتر شريف :بر اساس يک کامپيوتر 8 :بيتي طرحريزي شده است.
همانطور :که قبال گفته شد منظور :از کامپيوتر 8بيتي کامپيوتری :استکه آکوموالتور وديتا :باس
آن 8بيتي باشد.
21
3-1-1باس داده ()DB
همانطور :که قبال گفتيم ،همة دادهها در اين CPU، 8بيتي هستند .واحد ALUكه به آن
واحد محاسبه و منطق ميگويند :دو ورودي 8 :بيتي ميگيرد (شكل ) 2-3و پس از انجام عمل
خواسته شده (كه از طريق :پايههاي كنترلي :به اين واحد دستور :داده ميشود ) خروجي 8بيتي
را تحويل ميدهد .اين واحد هم اعمال محاسباتي و هم اعمال منطقي را انجام ميدهد.
3-1-3رجيستر وضعيت
اين قسمت شامل چند بيت است که مقدار اين بيتها متاثر از نتيجه عمل محاسباتي يا
منطقي انجام شده ميتواند صفر يا يک باشد ,از روي مقادير اين بيتها -که در ادامه شرح داده
ميشوند -در نوشتن نرمافزار براي پرشهاي شرطي تصميم :ميگيريم.
22
3-1-4آکوموالتور ()Acc
Accيك رجيستر 8بيتي است .يكي از وروديهاي ALUاز طريق :اين رجيستر تأمين
ميشود .مثالً اگر بخواهيم :دو عدد 11و 20را جمع كنيم يكي از اين اعداد را در آكوموالتور:
( ورودي :ديگر )ALUانتقال مييابد .:پس از ذخيره ميکنيم وعدد ديگر به رجيسترB:
محاسبه در خروجي ,ALUعدد 31قرار ميگيرد:.
همانطور :که در فصل گذشته گفتيم اين واحد ,كنترل سيستم را بر عهده دارد .وروديهاي
اين بخش ,پالس ساعت وخروجي IRاست .بر اساس اينکه چه دستوري بايد انجام شود
سيگنالهاي مناسبي :از قبيل Memory Read, Memory Write, I/O Readوغيره ...بايد
فعال شوند .بنابراين خروجي اين واحد ,کنترل باس ( )CBرا تشکيل ميدهد.
23
3-1-6رجيستر دستورالعمل ()IR
دستوري :كه CPUبايد انجامدهد به فرم يک عدد باينري :است .اين اعداد بايد تحليل
شوند تا دستور
متناسب انجام گردد .به اين منظور ,ابتدا در اين قسمت بايد هر دستور :ديکدشود و
سپس به واحد زمانبندی :وکنترل فرستاده شود تا پايههاي كنترل واحدها بنا به
دستوري :كه برنامه به CPUميدهد فعال يا غير فعال شوند. :
اين واحد ,شمارندةآدرس حافظه است .وقتي CPU :برنامه اي را ازحافظه فراخواني
ميکند تا برنامه خط به خط اجراشود ,اين واحد که اشارهگرآدرس :حافظه است پس از خواندن
هر خط از برنامه توسط ,CPUيكي به آن اضافه ميشود و به خط بعدي برنامه اشاره ميکند.
اين رجيستر 16بيتی است ولی دقت کنيم در کامپيوتر شريف :فقط 11خط آدرس داريم.
اين باس ،باس آدرس است .اشارهگر PCبه هر آدرس كه اشاره كند ،آن آدرس روي:
باس آدرس قرر داده ميشود .:اين باس به باس آدرس خروجي وصل ميشود( .:يادآوری11 :
خط آدرس داريم)
همان طور که در شکل 3-3مشاهده مي شود CPUهميشه در حال انجام يکي از اين دو
عمل زير است:
: Fetch به معني رفتن و آوردن (يا صدا زدن) است .مثالً زماني :است كه
CPUداده اي را از حافظه ميآورد ،و يا زماني :است كه عملگرها و عملوندها به
ميشوند عمل Fetchدر حال انجام است.
CPUانتقال داده
: Execute به معني اجراکردن است ,يعني اينكه CPUدر حال اجراي
دستوري :است.
24
در حقيقت CPUهميشه در حال انجام يكي از اين دو كار است؛ Fetchزماني
است كه واحد IRيك دستورالعمل :را از حافظه ميآورد و واحد كنترل ،پايههاي كنترل را
از طريق :باس کنترل به قسمتهاي مختلف ميفرستد .سپس فاز اجرا شروع :ميشود تا
اطالعات داخل IRوارد واحد كنترل ACC , ALU ,و… شوند.
برای فهم دقيقتر اين دو مرحله ,نيازمند دانستن عملکرد صحيح کامپيوتر :شريف هستيم.
25
3-3عملکرد کامپيوتر شريف و قالب بندي دستورالعملها
در کامپيوتر شريف :از نظر تعداد بايت ,دو دسته دستورالعمل :داريم :دستورات
Memory Referenceکه دو بايتی هستند و دستورات Non-Memory Reference :که
تک بايتی هستند .همچنين يک رجيستر 8بيتی عالوه بر آکوموالتور( )Aبه نام Bدر کامپيوتر
شريف داريم که هم بعنوان يک رجيستر کمکی در کنار Aانجام وظيفه ميکند و هم در کاهش
دستورات Memory Referenceموثر :واقع میشود؛ به اين صورت :که در اکثر عمليات
محاسباتی ,عملوند دوم در رجيستر Bقرار میگيرد :.يعنی کافيست مقدار مورد نظر را با
دستور LDBاز حافظه در Bقرار دهيم و سپس عمليات مورد :نظر را بين Aو Bانجام
میدهيم .به اين ترتيب از يک دستورالعمل Non-Memory Referenceبرای قرار :دادن
بايت بعدی در Aيا Bاستفاده میشود .مالحظه میشود اگرچه اين دستور ,داده را از حافظه کد
میآورد ولی نياز به داشتن آدرس نيست ,زيرا کافی است بايت بعدی را به عنوان داده در نظر
بگيريم .در واقع آدرس بايت بعدی ) )PC+1 ,است.
به اين ترتيب مطابق :شکل 5-3سه بيت op-codeو دو بيت Address Modifier
Aاست .در حقيقت اين 8
) 01 داريم و سه بيت باقيمانده هم قسمت باالی آدرس ( A 9 ,A 8و
بيت ,رمز شدة يك دستورالعمل است كه در ادامه به تفسير آن خواهيم پرداخت .بايت بعدی نيز
Aايفای نقش میکند.به
) 0 A
(در دستورات )Memory Ref :بعنوان قسمت پايين آدرس ( - 7
اين ترتيب می توانيم 2Kbyte :حافظه را آدرسدهی :کنيم.
بيتهای 0تا 2بايت اول که قسمت باالی آدرس را مشخص میکند يک صفحه از حافظه
را نشان ميدهد .بنابراين در کامپيوتر شريف :حداکثر به يک حافظه 8صفحه ای 256بايتی
دسترسی :داريم (شکل.)6-3
26
دو بيت 3و 4كه در شكل 6-3با Xو Iنشان داده شده براي قابليتهاي :بيشتر استفاده
از آدرس است و صفر و يك بودن هر بيت مفهوم خاصي را در بر دارد که شرح آنها به قرار
زير است:
: Xاين بيت اگر صفر باشد به عنوان يک بيت از دستورالعمل :تلقي مي شود .ولي اگر
اين بيت 1شود CPU ،هشت بيت سمت راست را با ( Bيك رجيستر :كمكي مثل ACCاست
كه ميتوانيم داده را در آن هم بريزيم) جمع ........
ميكند و عدد بدست آمده را آدرس قرار ميدهد و به اين آدرس حافظه ميرود و
محتواي داخلش را در ACCميريزد:.
: Iبراي آدرس دهي غير مستقيم از اين بيت استفاده ميشود .اگر اين بيت 1
باشد 8 ،بيت قسمت آدرس ،به عنوان آدرس روي باس آدرس قرار :ميگيرد و دو بايت
دادة موجود در آدرس فوق :الذکراز حافظه خوانده ميشود ،اين اطالعات به عنوان
آدرس جديد روي :باس آدرس قرار ميگيرد و دادهي موجود در آدرس جديد بر روي
باس داده قرار :ميگيرد و بعد عمل خواستهشده روي اين داده اعمال ميشود.
3-4شاخصها
كامپيوتر :شريف داراي 2شاخص(شامل 2فليپ فالپ) است كه نتايج جانبي عمليات
ALUدر آنها ذخيره ميشوند :.اين شاخصها شامل موارد :زيراند :
يک بيت دو بر يک( ، )Carryبيت صفر(( Zeroو بيت عالمت منفي ((. Negative
27
: Carry وقتي كه عملي بر روي :دو عملوند اجرا شود اگر دو بر يک داشته
باشد بيت Carryبرابر 1ميشود و در غير اين صورت :صفر ميماند :.مثالً اگر
آکوموالتور محتوی FFH :باشد آن را با 01Hجمع كنيم 100Hحاصل ميشود .در
اين حالت بيت Carryيك ميشود:.
: Zero اگر نتيجة عملي كه در ALUانجام گرفته برابر صفر شود ،اين بيت
يك و در غير اين صورت ،مقدارش صفر ميشود:.
: Negative اگر حاصل عملي بر روي دو عملوند منفي شود اين بيت1 ،
ميشود واگر مثبت بشود صفر ميشود .به عبارت ديگر اگر حاصل عملياتي در
ALUمنفي شود ،اين نشانه يك و در غير اين صورت مقدارش صفر ميشود:.
فصل چهارم
ميکرو پروسسور 8085
28
در اين فصل ميکرو :پروسسور 8085را به طور :کامل خواهيم شناخت .روال کار به
اين صورت است که ابتدا پايههای 8085 :همچنين شاخصها :را بررسی :میکنيم ,سپس انواع
آدرسدهیها :را معرفی :مینماييم و بعد از آن برنامهنويسی 8085را به زبان اسمبلیخواهيم:
آموخت و در انتها چندين مثال کاربردی :را ,از قبيل برنامه کنترل موتور پلهای ,برنامه اسکن
کیبرد ,برنامه ارسال ديتا به چاپگروغيره را میبينيم .پرواضح است که قبل پرداختن به مثال
های متعدد بايد ICهای پشتيبانی را بشناسيم.
4-1پايههای 8085
8085از 40پايه تشكيل شده است كه هر يك را در زير به اختصارشرح ميدهيم.
0AD-7AD 4-1-1
اين 8پايه دو استفاده دارند ،هم 8بيت كم ارزش باس آدرس هستند و هم 8بيت داده
ميباشند كه بوسيلة يك ' 138مالتي پلكس ميشوند ALE .:كه شرح آن ذكر خواهد شد به پايه
فعالکننده ' 138وصل میشود .:اگر ALEصفر باشد ،اين 8بيت ديتا هستند در غير اين
صورت 8بيت پايين آدرس است.
15A-8A 4-1-2
اين پايهها خروجي مي باشند و 8بيت با ارزش آدرس باس را تشكيل ميدهند.
RW1 4-1-3
يك پاية خروجي :است و سيگنال Lowروي اين خط باعث ميشود كه اطالعات روي
باس داده در حافظه يا I/Oنوشته شود.
Write ·1
29
READY 4-1-4
يك پاية ورودي است و در خالل سيكل خواندن يا نوشتن اگر Highباشد يعني اينكه
حافظه يا مدار جانبي آمادة انتقال داده است اگر Lowباشد CPU ،صبر ميكند تا دوباره
Highشود قبل از آنكه خواندن يا نوشتنكامل شود.
HOLD 4-1-5
يك پاية ورودي است و اگر فعال باشد باعث ميشود :كه خطوط :آدرس و داده در
اختيار يك مدار جانبي قرار :گيرد .پس CPUباس را رها خواهد كرد و پس از خارج شدن از
حالت HOLDدوباره باس را در اختيار خواهد گرفت.
1
HLDA 4-1-6
يك پاية ورودي است و پس از ورود :به حالت Holdفعال خواهد شد و به معناي تأييد
سيگنال HOLDميباشد.
2
INTR 4-1-7
پاية ورودي :وقفه محسوب ميشود :و اگر فعال شود اجراي برنامة در دست اجرا
متوقف :شده و برنامة مربوط به وقفه اجرا مي شود .بحث وقفه بعداً بيان خواهد شد.
3
INTA 4-1-8
اين پايهها ورودي :هستند و مثل INTRورودي وقفة ميباشند و اولويت از 5.5به
7.5افزايش مييابد.
30
TRAP 4-1-10
يک وقفه ورودي است که نمیتوان آن را غير فعال است ,به عبارت ديگر "غير فعال
نشدنی" 1است .اين ورودي :وقفه ,باالترين اولويت را دارد.
RESET IN 4-1-11
ورودي :ميباشد و سيگنال Lowروي :اين آدرس باعث resetشدن سيستم ميگردد:.
X1,X2 4-1-13
خروجي است .اين خروجي :کالک ميكروپروسسور ,:با فركانس :نصف فركانس
كريستال براي استفاده ديگر اجزاء سيستم ميكرو :فراهم شده است.
2
SID 4-1-15
ورودي :داده سريال (تكبيتي) توسط :دستور 3RIMروي :پين SIDدر داخل بيت هفتم
( )MSBآكوموالتور قرار :ميگيرد.
31
SOD 4-1-16
1
خروجي دادة سريال (تكبيتي) توسط دستور ،2SIM :بيت هفتم آكوموالتور :روي اين
پين قرار ميگيرد:.
3
DR 4-1-17
يك پاية خروجي :است و سيگنال Lowروي اين خط باعث ميشود كه محتوي حافظه
يا I/Oروي باس داده قرار گيرد.
4-2شاخصها
همان طور كه در شكل ()1-4مشاهده ميكنيم 8بيت به عنوان بيتهاي شاخص وجود
دارند كه 5بيت آن تعريف شده و 3بيت آن تعريف :نشده است (.)X
32
يادآوری :میشود به مجموع 16بيت آکوموالتور و شاخصها PSW ,گفته میشود.
سدهي فوري
4-3-3روش آدر
مسلمآ ً بايد زمينههاي باركردن ثباتهاي همه منظوره فراهم :گردد .روش آدرسدهي
فوري :براي نوشتن يك بايت در يكي از ثباتها به كار ميرود :.مثالً A,00H MVIعدد
00Hرا در آكوموالتور ذخيره ميكند.
33
4-3-4روش آدرسدهي غير مستقيم
در اين روش جفت ثبات HLقبالً با آدرس يك خانةحافظه بار ميشود :و سپس هر يك
از دستورات :غير مستقيم ثباتي قابل استفاده است .مثالً اگر HLبا عدد 1000Hبار شده باشد
پس از اجراي دستور MOV A , M :دادة موجود :در آدرس 1000Hدر داخل ACCذخيره
ميشود.
4-4برنامهنويسی در 8085
متن برنامه و دستورالعملهاي 8085به زبان اسمبلي انجام مي شود كه زبان
قراردادي :سازندگان قطعه است .پس از اينكه ما برنامه مورد نظر ما ن را به زبان اسمبلي
نوشتيم ،اسمبلر(مترجم) برنامة اسمبلي را به 0و 1يعني زبان ماشين ترجمه ميكند ,زيرا برای
ماشين فقط 0و 1مفهوم دارد .نكتة مهمی که در برنامهنويسي توصيه میشود:رسم فلوچارت
است چرا که بوسيلة رسم فلوچارت ,برنامهنويسي :نظم گرفته و ساده ميشود.
اصوال‘ از نظر ....مجموعة دستورالعملهاي 8085 :به 5گروه زير تقسيم ميشوند:
:
انتقال داده .
گروه محاسباتي. :
گروه منطقي .
گروه پرش.
گروه عمليات روي Stack :و I/Oو كنترل ماشين.
در ادامه به شرح و آوردن چندين مثال از هر مجموعه مي پردازيم.
34
4-4-1انتقال داده
اين دستورات انتقال داده بين ثباتها و حافظه را انجام ميدهند
MVI : MVI
r,data
اين دستور مستقيما ً dataكه شامل يك بايت در حافظه هست را در ثبات ذخيره
ميكند.منظور از rهر يک از رجيسترهاي A, B, C, D, E, Hو Lميباشند .نيز اين دستور:
به صورت: :
MVI
M,data
بکار می رود و به مفهوم اين است که دادة مورد نظر ,در آدرسی که در HLقرار
دارد ذخيره شود.
MOV: MOV
r1, r2
اين دستور محتواي r2 :را در r1كپي ميكند .نيز دستور:
LXI rp,data
داده 16بيتي را در جفت رجيستر ( )rpذخيره ميكند .منظور :از rpهر يک ازجفت
ثباتهاي BC, DEو HLميباشند.
STA : STA address
اين دستور محتواي ACC :را در خانهاي از حافظه كه آدرسش در دستورالمعل :آمده
است قرار ميدهد.
مثال : 1-4ميخواهيم :در مكان 20A0Hحافظه مقدار F8Hرا بنويسيم.
:حلLXI H,20A0H
MVI M,F8 H
35
راه دوم :
LXI H,20B0H
MOV B, M
MOV M, B
HLT
36
اين دستور نيز طرز :كاري مثل قبلي بر روی DEانجام میدهد.
STAX Dو همچنين دستورهای :
STAX B
محتواي ACCرا در خانهاي از حافظه كه آدرسش در BCيا DEقرار :دارد ذخيره
ميكند.
37
اين سه دستور نيز شبيه دستوارت ADD :است ولي به جاي عمل جمع ،عمل تفريق
انجام ميشود.
Carry : -----جمع با ADC r
ACI data
ADC M
اين سه دستور نيز عمل جمع را انجام ميدهد با اين تفاوت که بيت Carryرا نيز با
داده جمع ميكند.
عمل تفريق نيز شبيه عمل جمع انجام ميشود و بيت قرض 1را نيز اثر ميدهد.
INR r دستورات کاهشی و افزايشی: :
اين دستور محتواي :ثبات rرا يكي زياد ميكند .و معادل کاهشدهنده اين دستور
DCR rميباشد.:
INR M
اين دستور محتواي :مكاني از حافظه كه آدرسش در HLقرار دارد را يكي افزايش
ميدهد و معادل كاهشدهندة اين دستور M DCR :ميباشد.:
INX rp
اين دستور محتواي :جفت ثبات rpرا يكي زياد ميكند .معادل کاهشكنندة اين دستور:
rp DCRميباشد:.
نكتة مهم اينكه دو دستور :اخير هيچ پرچمي را متأثر نميكنند.
Barrow ·1
38
دستور :2 DAA
در جمع و يا تفريق اعداد BCDنياز به دستور DAA :خواهد .اعداد BCDدر واقع،
اعداد مبناي 10هستند كه هر رقم ،بصورتباينري :كد شده است .ميكروپروسسور :در جمع دو
عدد ،آنها را باينري در نظر ميگيرد .لذا براي آنكه نتيجه درست داشته باشيم بايد تصحيح
گردد .مثالً در جمع دو عدد در مبناي BCDمثل 58و 29جواب صحيح BCD, 87است
ولي در ميكرو :جواب را به صورت 81H :خواهيم داشت و بايد 06Hبا آن جمع شود تا جواب
DAAدستورالعملي :است كه به منظو ر انجام اين كار اضافه درست به دست آيد .دستور:
شده است اين كار را انجام ميدهد و جواب صحيح BCDرا ميدهد .پس هر وقت اعداد
BCDرا جمع كرديم پس از جمع از دستور DAAاستفاده ميكنيم تا جواب صحيح بدست آيد.
مثال : 5-4پنج عدد سيمال را در حافظه ذخيره كنيد و مجموع آنها را بصورت
دسيمال در جفت ثبات BCذخيره كنيد 51 ,77 ,32 ,63(.و )42
39
INX H
JMP Loop
HNDR: INR B
RET
RAR
شبيه RALعمل ميكند و لي به سمت راست.
Compare ·1
Carry · 2
40
4-4-4گروه دستورات پرش
اين گروه دستورات :موجب انتقال كنترل برنامه به آدرس جديد ميشوند .:در اين گروه
دو نوع دستور وجود :دارد .عدهای دستور :فراخواني :زير روال و عدهای ديگر دستور پرش و
تفاوت اين دو در اين است كه در زير روال که توسط :دستور فراخواني زير روال يعنی
CALLفرا خوانده میشود دستور RET :قرار :میگيرد تا كنترل برنامه به دستور بعد از
CALLدر برنامه اصلي برگردد :.اين تكنيك اجازه ميدهد تا يك زيرروال چندين بار از
محلهاي مختلفي در برنامه مورد :استفاده قرار گيرد .جزئيات بيشتر :در ادامه خواهد آمد.
چندين دستورالعمل پرش را در اينجا عنوان ميكنيم.:
JMP address
اين دستور سه بايتي است و به آدرس 16بيتي که نام آن جلوي JMPآمده است ,پرش
ميكند.
و نيز JMPهاي شرطي وجود :دارند كه هر كدام با چککردن يك شاخص پرش
ميكنند مانند :
JNZ address
اگر شاخص ،Zeroصفر باشد به آدرس پرش ميكند و اگر شاخص ،Zeroيك باشد
به خط بعد از JNZميرود و JMPاجرا نمیشود .:موارد ديگر عبارتند از:
JZ
JNC
JC
JPO
JPE
JP
JM
اين دستورات نيز مانند دستور , JNZ :با چککردن صفر يا يك بودن شاخصها پ::رش
ميكنند.
41
PSWرا نيز ميتوان ذخيره و بازيابي :نمود .شکل نمادين زير نشان میدهد که ابتدا جفت
رجيستر BCو سپس DEبه ناحيه Stackپوش شدهاند.
42
MVI A,0
ADC H
MOV H,A
DCR C
RZ
CALL TEN ;mult HL*10
INX D
JMP Loop
TEN: PUSH B
DAD H ;HL2
PUSH H ;Saved 2HL
DAD H ;4HL
POP B ; 2 HL Save in BC
DAD B ; (2 HL)+(8HL)= 10HL
POP B
RET
در زير برنام:ة TENمش::اهده ميك::نيم كه اول B، PUSHميش::ود :و در آخر برنامه
POPميشود ،در اين زير برنامه دستور DAD H :محتواي HL :را با خ::ودش جمع ميكند
يع::ني محت::واي HLرا دو برابر ميكن::د .س::پس اين مق::دار را PUSHميكنند :و بعد دوب::اره
محت::واي HLرا با خ::ودش جمع ميكند يع::ني 4برابر ميش::ود :و بعد هم 8برابر ح::ال اگر 2
برابر يك عدد را با 8برابرش جمع كنيم حاصل 10برابر عدد فوق خواهد بود.
43
حل :بعضي وقتها الزم است در يك برنامه ت::أخير ايج::اد ك::نيم مثالً در روشن ك::ردن
LEDها بايد تأخير ايجاد ش::ود تا چشم بتواند روشن و خ::اموش ش::دنها را از هم تش::خيص ده::د.
برنامة زير را در نظر بگيريد::
DELAY: PUSHD ;12TCYCLe
MVI D,N ;7 TCYCLe
LOOP: DCR D ;4N TCYCLe
JNZ Loop ;10(N-1) +7 TCYCLe
PoP D ;10 TCYCLe
RET ;10 TCYCLe
T= (12+7+4N+10(N-1)+7+10+10)T=(14N+36)T
حال اگر بخواهيم t=1msباشد با فرض فركانس 2MHZداريم :
=T (1 2 M ) =0.510-6S
N=140.3
پس اگر Nرا برابر(( Des= 8CH 140بگيريم برنامة تأخير باال 1msخواهد بود .حال
اگر به يك تأخير بيشتر :احتي::اج داش::تيم :يا Nرا تغي::ير دهيم و يا اين برنامه را در يك حلقه ديگر
قرار ميدهيم:.
4-5وقفه ها
به هنگام اجراي هر برنامه ,در يک سيکل مانده به آخرين سيکل اجرای هر
دستورالعمل :,مرتبا ً پينهاي وقفه نمونهبرداري ميشوند .در 8085پنج منبع وقفه داريم که
پينهای مربوطه در بخش معرفي :پايههاي 8085معرفي :شدند .اگر سيگنال روي :پين فعال بود
اجراي برنامه اصلي متوقف ميشود :و زير برنامة وقفه انجام خواهد شد .در انتهای زير برنامه
پس از دستور ,RET :به برنامة اصلي باز ميگرديم و اجراي آن از سر گرفته ميشود .زير
برنامه مربوط :به هر وقفه آدرس خاصی دارد كه در زير آمدهاند :
TRAP 0024H باالترين اولويت
RST7.5 003CH
RST6.5 0034H
RST5.5 002CH
INTR NA پايينترين اولويت
برای زير برنامه INTRآدرسی وجود :ندارد .چون عملی که بايد در ازای رخدادن
اين وقفه انجام شود توسط :ابزار خارجي تعريف :ميشود.
44
وقفه هم مشابه زير برنامه باعث ميگردد كه كنترلر برنامه به محل ديگري پرش كند
و آدرس دستور بعدي در Stackذخيره شود تا هنگام اجراي دستور RETدوباره به برنامه
برگرديم :.براي فعال كردن يك وقفه خاص ميتوان بقيه وقفهها را بياثر كرده و با بار کردن
آكوموالتور با يك مقدار مناسب و اجراي دستور SIMاين كار را انجام داد.
مقدار دهي براي هر وقفه در شكل ( )3-4نشان داده شده است .سه بيت اول براي فعال كردن
وقفههاي 5.5و 6.5و 7.5است طوری که هر كدام از اين بيتها صفر باشد ،وقفه مربوطه
فعال و اگر يك باشد غير فعال است.
: MSE (Mask Set Enable) اگر اين بيت صفر باشد عمل mask
كردن بياثر ميشود:.
: R7.5 اين پايه ،مربوط :به فعال کردن Flip Flopوقفه RST7.5براي
وقفة بعدي است ،اگر اين بيت 1باشد.
: SOE (Serial Output Enable) اين بيت مربوط :به ارتباط :سريال
است.خروجي Enableسريال ميباشد:.
: SID (Serial Input Data) اين بيت نيز مربوط :به ارتباط :سريال
ميباشد .ورودي Enableسريال ميباشد:.
45
مثال : 10-4برنامهاي بنويسيد :كه اگر RST7.5فعال شدLED ،هاي متصل به
پورت 01Hرا روشن شود( .در ابتدا خاموشند).
003CH حلJMP ISR:
0050H MAIN: MVI A,00H
OUT 01H ; LED’S OFF
MVI A,1BH
SIM
EI
HERE : JMP HERE ; Wait Loop
ISR : MVI A,FFH
OUT 01H ; lED’S ON
RET
1
4-6زمانبندی
توجه به اين موضوع مهمترين مساله در كار CPUاست .براي روشن شدن قضيه,
سيكلهاي خواندن و نوشتن را با در نظر گرفتن دياگرام :زمانی آنها در اينجا تشريح
ميکنيم.
4-6-1سيكل خواندن
سيكل خواندن را در شكل ( )4-4مشاهده ميكنيم :.وقتي كه سيگنال ALEفعال ميشود
قسمت كم ارزش آدرس روي باس آدرس قرار :ميگيرد و پس از صفر شدن آن داده در باس
داده قرار ميگيرد :.خواندن فقط وقتي ميسر است كه داده آماده شده باشد( .شكل) 4-4
Timing ·1
46
شکل 5-4دياگرام زمانی :سيکل خواندن
4-6-2سيکل نوشتن
اين سيكل نيز مانند سيکل خواندن است فقط به جاي اينكه خواندن از باس داده انجام
گيرد ،بر روي باس داده مينويسيم . :اين دياگرام را در شكل ( )5-4مشاهده ميكنيد.
ميدانيم كه هر سيكل اجراي دستورالعمل :شامل چندين سيكل ماشين ايت و هر سيكل
RW يا
DR شامل چند سيكل )، CLOK (TCycleسيكلهاي :ماشين اصوالً سيكلهاي
هستند.
سيكل اول ماشين ( )M1يك سيكل Readاست كه در آن op-codeدستورالعمل
خوانده ميشود :و به IRآورده ميشود )Fetch( :و سپس ديكود ميشود :و بعد سيكلهاي
خواندن از حافظه و يا نوشتن در حافظه كه هر كدام به 3پالس ساعت نياز دارند.
براي مثال دياگرام :زماني STA 3800Hرا در نظر ميگيريم: :
فرض :
آدرس Op-Code & Data
حافظه
32 2000
00 2001
38 2002
دياگرام زماني :اين دستور در شكل ( )6-4آورده شده است.
47
IC 4-5هاي جانبی 8085
48
ميشود .طريقة ورودي :و يا خروجي تعريف :كردن پورتها به اين ترتيب است :اگر
بخواهيم يك پورت خروجي باشد بايد 00Hرا به DDRمربوطه بفرستيم و اگر بخواهيم:
ورودي :باشد بايد FFHرا به DDRآن بفرستيم.
8156شبيه 8755است ولي عالوه بر Aو Bيك پورت Cدارد كه ميتوان 4بيت
آن را به عنوان ورودي و چهار بيت ديگر آن را به عنوان خروجي :تعريف كرد .همچنين
حاوي 2kحافظه RAMو يک شمارنده 14بيتي پايين گذر وقابل برنامه ريزي ميباشد:.
بلوك دياگرام اين ICدر شكل ( ) 7-4ديده ميشود :.آدرس رجيسترها به اين ترتيب مي باشد:
Command register 20H
PORT A 21H
PORT B 20H
PORT C 23H
Timer low byte 24H
Timer High byte 25H
49
1
)PPI( 8255 4-6-3
8255يك واسط I/O :همه منظوره است كه 24خط را به صورت سازماني از سه
پورت I/Oهشت بيتي به نامهاي Aو Bو Cدر اختيار ميگذارد :.برخالف ، 8755در
8255نميتوان تك تك بيتها را به عنوان ورودي يا خروجي برنامهريزي كرد .در عوض
تمام بيتهاي پورت Aيا Bبه عنوان يك بايت برنامهريزي :ميشوند :.با وجود اين چهار بيت
پايين رتبه و باال رتبه در پورت Cبه صورت نيمبايت2هاي جداگانه قابل برنامهريزياند.
8255يك وسيلة بسيار قابل انعطاف :است كه ميتون آن را به صورت سه پورت I/Oساده
جدا از هم (مد صفر) ,دو پورت I/Oدارای خطوط؟( 3مد )1يا يک دريچه I/Oدو جهته يا
پنج خط دستدادن (مد )2برنامهريزي كرد .مدها را مخلوط :هم میتوان کرد .يک مد
Set/Resetبيت هم وجود :دارد که به کمک آن میتوان بيتهای پورت Cرا برای استفاده در
کنترل Set ,يا Resetکرد.
·1
Parallel Peripheral Interface
Nibble· 2
Handshaking · 3
50
شکل 7-4بلوک دياگرام IC :های 8755و
8355
مثال 12-4ميخواهيم برنامهاي بنويسيم كه اعداد 3و 2و 1را درسه عدد ( 7segبه
ترتيب از چپ به راست) نمايش دهد.
حل :چون هر سه 7segموازي :هستند پس ما هر بار ميتوانيم :يكي از 7segها را
روشن كنيم به اين طريق :كه داده را در پورت داده همه 7segها قرار :ميدهيم ,ولي 7segاي
51
روشن ميشود كه پاية COMآن فعال باشد .پس اگر دائم اين اعداد را به روي 7segها
بريزيم چون خيلي سريع اين كار انجام ميشود :،چشم ما قادر :به تشخيص روشن و خاموش
شدن 7segنيست و فقط کافيست به ترتيب 7segها را فعال (روشن) کنيم .توجه کنيم
segmentها فعال پايين هستند .سختافزار اين برنامه در شکل ( )8-4آمده است.
52
OUT 00H
MOV A, C
OUT 01H
RET
1
4-7اسکن صفحه کليد
همانطور :که میدانيم :صفحه کليد يکی از اساسیترين ابزارها برای وارد کردن داده به
ميکروپروسسورها :و سيستمهای کامپيوتری :است .در اينجا برای پی بردن به اساس کار يک
صفحه کليد ,اسکن يک صفحه کليد 4در 4بررسی :میشود .سختافزار اين برنامه در شکل (
)9-4آمده است.
به منظور :اقتصادی :کردن اسکن صفحه کليد ,به جای استفاده از 16خط جداگانه,
معموال از يک مدل ماتريسی 4 :در 4استفاده میشود :.هنگامی که کليدی فشرده میشود ،سطر
و ستون مربوطه از نظر الکتريکی :به هم متصل
53
INT: MVI A,FFH ;Program Port A
OUT 02H ;DDR A = Output
CMA ;Program Port B
OUT 03H ;DDR B=Input
ROW0: MVI B,00H B = Row weighting = 0
MVI A,FEH ;A = 11111110
OUT 00H ; Drive Row 0 LOW
IN 01H ;Read columns
CPI FFH ;Set Z flag if all columns HIGH
JNZ COL ;Jump to COL if any column LOW
ROW1: MVI B,04H
MVI A,FDH
OUT 00H
IN 01H
CPI FFH
JNZ COL
ROW2; MVI B,08H
MVI A,FBH
OUT 00H
IN 01H
CPI FFH
JNZ COL
ROW3: MVI B,0CH
MVI A,F7H
OUT 00H
IN 01H
CPI FFH
JNZ COL
JMP ROW0
54
COL: MVI C,00H
RRC
JNC DONE
INR C
RRC
JNC DONE
INR C
RRC
JNC DONE
INR C
DONE: XRA A
ADD B
ADD C
HLT
55
شکل 10-4شماتيک يک موتور پلهای نمونه
مثال 13-4يک موتور :پلهای را برای چرخش دائم با زاويه 15درجه توسط 8085و
8755با تاخير مناسب کنترل کنيد.
حل :سخت افزار :اين برنامه در شکل ( )11-4آمده است.
INIT: LXI SP,20C0H
MVI A,FFH
OUT 02H
MVI A,11H
STEP: OUT 00H
PUSH PSW
CALL DELAY
POP PSW
RLC
JMP STEP
..…… :DELAY
56
4-9برنام ة چراغ راهنما
چراغ راهنما همانطور :كه در شكل ( )11-4نشان داده شده است توسط :يك بايت كنترل
ميشود 3 .بيت سمت چپ مربوط به قرمز و زرد و سبز در جهت شرق به غرب و سه بيت
وسط مربوط :به قرمز :و زرد و سبز در جهت شمال به جنوب ميباشد بديهي است كه اگر شمال
به جنوب قرمز باشد ،بايد شرق به غرب سبز باشد .در ضمن دو بيت سمت راست نيز براي
پيادهها در نظر گرفته شده است.
براي بقية حالتها نيز ميتوانيم مقادير را عوض كنيم .سختافزار اين مدار در شكل (
)12-4نشان داده شده است .داده را از ميكرو :به يك ' 373انتقال ميدهيم :و ' 373را به چراغ
وصل ميکنيم .پاية Enableدر ' 373را نيز توسط 8خط آدرس ( )10Hتعيين ميكنيم:.
دقت کنيم اگر به جاي اين ANDهشت تايي ،فقط A4را به ' 373وصل كنيم
سختافزار باز هم درست كار ميكند ،ولي انعطافپذيري برنامه كم ميشود:.
57
شکل 12-4سخت افزار :مثال چراغ راهنما
: Define Storage 4-9-2اين دستور برای رزرو کردن تعداد معينی خانه خالی
حافظه بکار میرود تا برای ذخيره دادهها جای کافی باقی بماند .فرم کلی اين دستور به شکل
زير است:
58
My_Array DS 20H مثال :
در اين مثال آرايه My_Arrayعبارتست از 32خانه ( ) 20Hخالی حافظه که از
آدرس خاصی (بسته به مقدار اوليه دادن به آدرس شروع :اولين خانه آرايه توسط :دستور ORG
) شروع :میشود .به عنوان مثال اگر بخواهيم :آرايه نامبرده از آدرس 800Hشروع شود,
کافيست قبل از دستور باال ORG 800H ,نوشته شود.
4-9-4ماکرو
ماکرو در زبان اسمبلی در نقش تابع 1در زبانهای :سطح باالست .ماكرو امكانات
جديدي به ما ميدهد .در تعريف :يك ماكرو :ميتوانيم :همانند در زبانهای :سطح باال متغيرداشته
باشيم و هر جاي برنامة اصلي كه خواستيم :ماكروی مورد نظر را با پارامترهايش صدا کنيم.
حالت کلی تعريف :ماکرو از قرار زير است :
NAME Macro
)…(par1, par2,
.....
......
.....
......
ENDM
par1, par2و ...متغيرهای :ورودی :ماکرو هستند .مثال ماکروی :زير دو پارامتر در
ورودی :میگيرد و جايی که آن را صدا کنيم برنامه به محل تعريف ماکرو :پرش میکند,
Fonction ·1
59
عمليات الزم را انجام میدهد و حاصل ضرب 2در 8را بر میگرداند :
)MUL (2,8
60
فصل
پنجم
ميکروکنترلر 8051
برای انجام يک پروژه اگر بخواهيم :از يک سيستم :ميکروپروسسوری استفاده کنيم
عالوه بر ميکروپروسسور ))CPU :به ICهای جانبی هم نياز داريم که در اين صورت :بعيد
به نظر میآيد ازدحام :سيمکشی و نصب سختافزار :الزم ,عاری از اشتباه باشد .ميكروكنترلر
در يك قطعة واحد ،يك CPUو بسياري :از مدارات الزم براي يك سيستم :ميكروكامپيوتري
خود كفا را داراست .عالوه بر ،CPUميكروكنترلرها :,شامل RAMو ,ROMيك رابط
سريال ,چند رابط موازي :,تايمر و مدارات زمانبندي وقفه ميباشند كه همگي مانند شكل ()1-5
در يك مدار مجتمع قرار :دارند.
61
5-1بررسی اجمالی پايههای 8051
8051يك آي سي 40پايه است كه 32تا از اين 40پايه به عنوان خطوط :درگاهI/O 1
عمل ميكنند 32 .پاية نامبرده ،چهار گذرگاه 8بيتي را تشکيل میدهند و كاربـرد هر يك را
بررسي ميكنيم .:نقشة شماتيک ميکروکنترلر 8051 :در شکل ( )2-5آمده است.
5-1-2درگاه يک
اين 8پايه اختصاص يافته براي I/Oروی پايههای 1تا 8آي سي است و براي
ارتباط با وسايل خارجي به كار ميروند :.وظيفه ديگری برای اين درگاه در نظر گرفته نشده
است.
5-1-3درگاه دو
اين درگاه براي دو منظور :به كار ميرود؛ يا براي I/Oعمومي و يا بايت باالي
گذرگاه آدرس در طراحی :با حافظه کد خارجي . 2اين درگاه شامل پايههای 21تا 28است.
Port. 1
)External Code Memory (External ROM ·2
62
5-1-4درگاه سه
يك درگاه يک درگاه دو منظوره است و عالوه بر ارتباط I/Oي عمومي ,هر يك از
اين پايهها وظايف ديگري :نيز در رابطه با امکانات خاص 8051دارند كه در قسمتهاي :بعد
كاربرد هر يك بيان خواهدشد :.اين درگاه شامل پايههای 10تا 17آي سي است.
PSEN 5-1-5
يك سيگنال خروجي :روي پايه 29است كه حافظه کد خارجي :را فعال ميكند .اين پايه
EPROMEOخارجی :وصل ميگردد تا خواندن بايتهاي :برنامه از EPROM
يك معموالً به
ممكن شود .اين پايه فعال پايين است .هنگام اجرای برنامه از ROMداخلی PSEN ,در حالت
غير فعال (وضعيت باال ) باقی میماند:.
ALE 5-1-6
اين سيگنال همانطور :که قبال بيان شد براي مالتی پلكس كردن آدرس و داده به كار
ميرود .اين سيگنال با فركانس يك ششم فركانس نوسان ساز كار ميكند وميتواند به عنوان
يك پالس ساعت همه منظوره با فركانس 2MHZبه كار رود .سيگنال خروجی ALEروی:
پايه شماره 30تعريف :شده است.
AE 5-1-7
اين سيگنال يک سيگنال ورودي :است و روی :پايه 31قرار دارد .هنگامي كه در
وضعيت پايين باشد ROMداخلي غير فعال ميشود :و برنامهها از EPROMخارجي :اجرا
ميشوند :و اگر در وضعيت باال باشد 8051برنامه را از ROMداخلی يعنی K4يا K8
برای تغذيه
AE بايت پايين حافظه اجرا میکند .همچنين نوع EPROMدار 8051از خط
21ولت 1در برنامهريزی EPROMداخلی استفاده میکند.
V
pp ·1
63
RST 5-1-8
ورودی RST :در پاية ,9مربوط :به Resetسيستم :است و بعد از اين که حداقل به
مدت دو سيکل ماشين 2در وضعيت باال قرار گيرد ,به عنوان آغازگراصلي 8051به كار
ميرود.
5-1-9وروديهاي نوسانساز
اين دوپاية ورودي به عنوان وروديهای نوسان ساز هستند كه پالس ساعت را از
كريستال به 8051منتقل ميكنند .خازنهای :پايدارکننده نيز به صورت نشان داده شده ,مورد
MCS-51, 12مگا هرتز
MT
نياز اند .فرکانس :نامی کريستال برای اغلب ICهای خانواده
است.
64
5-1-10اتصاالت تغذيه
(V ssزمين) به V ccبه پايه 40و 8051با يک تغذيه +5ولتی کار میکند .اتصال
پايه 20وصل میشود.
5-2سازمان حافظه
اغلب ريز پردازندهها :يك فضاي :حافظه مشترک براي برنامه و داده در نظر ميگيرند:.
در 8051يک فضای :حافظه جداگانه برای برنامه (کد) و داده در نظر گرفته شده است .حافظه
کد و داده هر دو ممکن است داخلی باشند .با وجود اين هر دو با استفاده از اجزاء خارجی :تا
حد K 64بايت حافظه کد و K 64بايت حافظه داده قابل توسعه هستند .توضيحات بيشتر :در
اين باره در ادامه آمده است.
MOV A, 5FH
برای خواندن محتويات RAMداخلی در آدرس 5FHبه داخل انباره بکار میرود.
نيز دو دستور :
MOV
R0,#5FH
MOV A,@R0
همان کاری را انجام میدهند که دستور قبلی به تنهايی انجام میداد.
65
RAM 5-2-2بيت آدرس پذير
انديشه دستيابی :به بيتهای منف::رد از طريق :نرماف::زاز ,يکی از امکان::ات قدرتمند :اغلب
ميکروکنترلرها :اس::ت 210 :,8051 .مک::ان بيت آدرس پ::ذير دارد که 128مک::ان آن در آدرس
ب::ايت 20Hتا 2FHق::رار داشته و بقيه بيتها يي در ب::رخي ثباته::ای ک::اربرد خ::اص هس::تند.
بيتها ن::يز میتوانند همانند ب::ايت ها توسط يک دس::تورالعمل set, reset, AND ,و يا OR
ش::::وند .به عن::::وان مث::::ال ،ب::::رای 1ک::::ردن بيت 67Hاين دس::::تورالعمل بک::::ار میرود: :
SETB 67H
1
5-2-3بانک های ثبات
بانکهای ثبات در 32مکان پايين حافظه داخلی قرار دارند .مجموعه دستورالملهای:
8051هشت ثبات را از R0تا R7پشتيبانی میکند و به صورت :پيش فرض پس از reset
سيستم ,اين ثباتها در آدرس 00Hتا 07Hحا فظه قرار میگيرند :.مثال دستورالعمل زير
محتوی آدرس 05Hرا به داخل انباره منتقل میکند :
66
MOV A , R5
بانک ثبات فعال با تغيير بيتهای انتخاب بانک ثبات در کلمه وضعيت برنامه 1قابل
تغيير است .با فرض آن که بانک ثبات شماره 3فعال باشد دستورالعمل :زير محتوی انباره را
در مکان 18Hمینويسد :
MOV
R0 , A
67
: F0پرچم صفر است و اين پرچم در صورتي 1ميشود :كه محتواي ACC :صفر
شود.
RS0و :RS1اين دو پرچم بانكهاي ثباتي را تعيين ميكند .چون 4بانك ثبات داريم
پس به وسيلة دو بيت ميتوانيم :آنها را تعيين كنيم اگر اين دو بيت 00Hباشند بانك ثبات
صفراست واگر 01Hباشند بانك 1و اگر 10Hباشند بانك 2و اگر 11Hباشند بانك 3مورد:
نظر ميباشد.
: OVپرچم سرريز :است و پس از يك عمل جمع يا تفريق اگر يك سرريز :حسابي
اتفاق بيفتد اين بيت 1 ،ميشود.
: Pبيت توازن است و براي ساختن توازن زوج در آكوموالتور :بطور خودكار 1 :و
يا پاك ميشود يعني اگر تعداد بيتهاي «يك» در ،Accعددي فرد باشد ،اين بيت 1و گرنه
صفرخواهد بود.
5-2-4-2ثبات B
ثبات Bدر آدرس F0Hبه همراه انباره برای عمليــــات ضرب و تقسيم استفاده
میشود .دستورالعمل MUL ABمقادير هشت بيتی بدون عالمت در Aو Bرا ضرب کرده
و نتيجه 16بيتی را در ( Aبايت پايين) و ( Bبايت باال) قرار :میدهد .نيز دستورالعملDIV :
AB, Aرا بر Bتقسيم میکند و خارج قسمت را در Aو باقيمانده را در Bمیگذارد :.اين
رجيستر همچنين بعنوان يک ثبات چرکنويس همه منظوره عمل میکند .اين ثبات همچنين از
آدرس F0Hتا F7Hنيز هست.
1
5-2-4-3اشارهگر پشته
يك ثبات 8بيتي است که در آدرس 81Hقرار :دارد و حاوي آدرس دادهاي است كه
در همان هنگام در باالي پشته قرار دارد PUSH .كردن به پشته SP ،را پيش از انتقال داده
به پشته ،يك واحد افزايش ميدهد وعمل POPكردن ،داده را از پشته ميخواند و سپس SPرا
يك واحد كم ميكند .هنگام resetشدن ,اشارهگر پشته بطور :پيش فرض حاوي 07Hاست اما
ميتوان پشته را در RAMداخلي تعريف :كرد .مثال برای مقدار اوليه دادن به SPدر پشتهای
که از آدرس 60Hآغاز میشود :دستورالعمل :زير مورد استفاده قرار :میگيرد :
MOV SP , #5FH
Stack Pointer ·1
68
1
5-2-4-4اشارهگر داده
اشارهگر داده ( )DPTRکه برای دستيابی به حافظه کد يا داده خارجی استفاده میشود:,
يك ثبات 16بيتي است كه در آدرسهاي 82Hو 83Hقرار دارد.
5-2-4-5ثباتهای درگاه
درگاه های I/Oدر 8051عبارتند از درگاه صفر در آدرس , 80Hدرگاه يك در
آدرس , 90Hدرگاه دو در آدرس A0Hو درگاه سه در آدرس .B0Hهمه اين درگاهها بيت
آدرس پذيرند :.بعنوان مثال دو دستور زير معادلند :
CLR P1 . 7
CLR 97H
5-2-4-6ثباتهای تايمر
8051داراي دو تايمر 16بيتي براي شمارش است ودر آدرسهاي ( 8AHبايت
پايين) تا ( 8DHبايت باال) قرار دارند .ثباتهاي TMODو TCONنيز مربوط به تايمرها
هستند كه در ادامه بحث خواهند شد.
5-2-4-8ثباتهای وقفه
پنج منبع وقفه با دو سطح تقدم 2در 8051داريم كه اين وقفهها موقع شروع :به كار
ميکرو غير فعالاند و پس از شروع :به كار سيستم:ميتوان آنها را با نوشتن در ثبات
فعالسازی :وقفه )IE( 3در آدرس A8Hمقداردهي و فعال کرد .نيز سطح تقدم از طريق ثبات
69
تقدم وقفه ( )IPدر آدرس B8Hتعيين میشود .وقفهها در بخشهاي بعدي بطور :مشروح
بررسی ميشوند.
فعال
NESP حافظه کد خارجی :يک حافظه فقط خواندنی :است که توسط :سيگنال
میشود .هنگامی که از يک EPROMخارجی استفاده می کنيم ,درگاههای 0و 2به عنوان
درگاههای I/Oهمه منظوره در دسترس ما نيستند :.نيز حافظه داده خارجی :يک حافظه
فعال میشود :.اين دو سيگنال عملکرد ديگر
RW و
DR خواندنی -نوشتنی :است که با
پايههای P3.6و P3.7هستند.تنها راه دستيابی :به حافظه داده خارجی :دستورالعملMOVX :
( مثال به فرم ) MOVX A,@DPTR :است که از اشارهگر داده 16بيتی ( R0 ,)DPTRو
يا R1به عنوان ثبات آدرس استفاده میکند.
1
5-4-1آدرسدهی ثبات
8ثبات R0تا R7در دستورالعملهاي :مختلفي به كارگرفته شدهاند و بنا به مورد :نياز,
يكي از اين ثباتها استفاده ميشود .اين آدرسدهي :همان طور كه از شكل ( )3-5بر ميآيد 5
بيت براي نوشتن كد عملياتي است و سه بيت براي مشخص كردن ثباتهاي موردنظر :به كار
ميروند( :.چهار "بانک" برای ثباتهای کاری وجود :دارد ولی در هر زمان فقط يکی از آنها
فعال است .بانك ثبات نيز چنانچه قبالً اشاره شد توسط RS0 :و RS1انتخاب ميشود) مثال
برای جمع کردن محتويات ثبات 7با انباره ,از دستورالعمل :زير استفاده می شود :
ADD A,R7
70
کد عملياتی اين دستور 00101111Bاست .پنج بيت بااليی يعنی ,00101کد
دستورالعمل :و سه بيت پايينی يعنی ,111ثبات را مشخص میکنند.
1
5-4-2آدرس دهی مستقيم
در اين روش هر ثبات داخل 8051را ميتوان فراخواني كرد و 8بيت براي كد
عملياتي و 8بيت براي آدرسدهي به RAMبه كار ميرود :.بديهي است كه با 8بيت 256
مكان RAMقابل دسترسي :است .در قسمت 8بيت آدرس اگر هفتمين بيت صفر باشد به 128
مكان پايين RAMو اگر يك باشد به SFRاشاره دارد .به عنوان مثال دستورالعمل: :
71
محتوی :انباره را به درگاه MOV P1,A
1منتقل میکند .آدرس مستقيم درگاه )90H( 1توسط اسمبلر تعيين شده است به عنوان بايت
دوم دستورالعمل :اضافه میشود:.
1
5-4-3آدرس دهی غير مستقيم
همانطور :كه در 8085ديديم بعضي وقتها الزم است يك آدرس در طي اجراي برنامه
تعيين شود بنابراين آدرسدهي :غير مستقيم الزم است .در اين روش R0و R1به عنوان
ثباتهاي اشارهگر عمل ميكنند :و محتواي :آنها به عنوان آدرس در RAMبه كار ميرود:.
آدرس دهی غير مستقيم با يک نشانه "@" در جلو R0يا R1نمايش داده میشود :.اين روش
آدرسدهي يك بايتي است و 7بيت با ارزشتر كد عملياتي را تعيين ميكند و بيت با كمترين
ارزش براي مشخص كردن R0و R1است و اگر اين بيت صفر باشد R0 ،به عنوان آدرس و
اگر يك باشد R1 ،به عنوان آدرس به كار ميرود .به عنوان مثال اگر R1شامل 40Hو آدرس
40Hاز حافظه نيز شامل 55Hباشد ,دستورالعمل :
MOV A,@R1
55Hرا به انباره منتقل میکند.
2
5-4-4آدرس دهی فوری
هنگامي كه عملوند مبدأ به جاي محتواي :يك آدرس ،يك عدد ثابت باشد از اين روش
استفاده ميشود و در اين روش پس از عملوند اول عالمت « »#را به معناي فوري قرار:
ميدهيم .همة دستورالعملهايي كه از آدرسدهي :فوري :استفاده ميكنند ،يك دادة فوري هشت
بيتی ميخواهند به استثناء حالتی که از اشارهگر داده استفاده مي کنيم که در اين حالت يك ثابت
16بيتي نياز است مثالً :
MOV DPTR, # 8000H
و گرنه در بقيه موارد بعد از #فقط 8بيت قرار ميگيرد :.اين روش آدرسدهي دو
بايتي است ،يكي براي عملوند و يكي براي دادة فوري:.
72
1
5-4-5آدرس دهی نسبی
اين آدرس دهي فقط بوسيلة چند دستورالعمل پرش مشخص مورد :استفاده قرار
ميگيرد .آدرس نسبي ,يك عدد 8بيتي عالمتداراست که با شمارنده برنامه جمع میشود تا
آدرس دستورالعمل بعدی که بايد اجرا شود را بسازد .اين روش آدرسدهي نيز دو بايتي است
كه يك بايت براي كد دستورالعمل :و يك بايت براي آدرس نسبي در نظر گرفته شده است.
بديهي است كه ما نهايتا ً ميتوانيم :به 128خط پايينتر و يا 128خط باالتر پرش كنيم و در
برنامههاي بسيار بلند اين روش كاربردي :ندارد .به عنوان مثال اگر بر چسب THEREنشان
SJMP دهنده يک دستورالعمل :در مکان 1040Hباشد و دستورالعمل: :
THERE
در مکانهای 1000H :و 1001Hحافظه قرار :داشته باشد ,اسمبلر يک فاصله نسبی به
اندازه 3EHبه عنوان بايت دوم دستورالعمل :منظور میکند)1002H + 3EH = 1040H( .
2
5-4-6آدرس دهی مطلق
اين آدرس دهي فقط در دو دستور ACALLو AJMPاستفاده ميشود :.در اين
روش آدرسدهي كه دو بايتي است ،بايت دوم به همراه سه بيت با ارزشتر :بايت اول
(مجموعا ً 11بيت) به عنوان آدرس در صفحة 2Kبايتي تلقي ميشود :و پنج بيت با ارزش
كمنتر در بايت اول به عنوان تعيينكننده صفحة 2Kبايستي :به كار ميرود :پس با اين روش
ميتوانيم 32 :صفحة 2kبايتي را آدرس دهي كنيم .برای مثال اگر بر چسب THEREنشان
AJMP دهنده يک دستورالعمل :در آدرس 0F46Hباشد و دستورالعمل :
در مکانهای :حافظه 0900Hو 0901Hقرار :دتشته THERE
باشد ,اسمبلر دستورالعمل :را به اين شکل به رمز درمیآورد :
Byte(A10-
)A8+opcode
)Byte (A7-A0
111
10000 1ts
01100001 2
dn
بيتهايی که زير آنها خط کشيده شده 11بيت پايين از آدرس مقصد هستند.
73
1011110000پنج بيت بااليی شمارنده برنامه هنگامی که اين
0F64 H 011000 B
دستورالعمل :اجرا میشود ,تغيير نخواهد کرد .توجه داشته باشيد که هم دستورالعمل AJMPو
هم مقصد در يک صفحه K2بايتی هستند که بين آدرسهای 0800Hو 0FFFHقرار :دارد.
بنابراين 5بيت باال در آنها مشترک است.
2
5-4-8آدرس دهی انديس دار
اين روش از يك ثبات پايه (شمارنده برنامه و يا اشارهگر داده) و يك فاصلة نسبي
(انباره) براي بدست آوردن آدرس مؤثر :در دستورالعملهاي JMP :و يا MOVCاستفاده
ميكند .اين روش آدرسدهي نيز يك آدرس 16بيتي توليد ميكند .در اين روش آدرس دهي
اشارهگر داده با آكوموالتور :جمع ميشود :و حاصل به عنوان يك آدرس 16بيتي تلقي ميشود:.
مثالً دستور مقابل را در نظر بگيريد: :
MOVC A, @A+DPTR
DPTRبا انباره جمع ميشود :و آدرس الزم بدست میآيد .محتواي :اين آدرس داخل
انباره قرار :ميگيرد .عالمت @ نشان دهندة آدرسدهي :غير مستقيم است .
5-5انواع دستورالعملها
پس از بررسي :نحوههاي آدرسدهي الزم است دستورالعملهاي 8051 :را بيان كنيم.
در ادامه اين دستورالعملها :را به پنج گروه تقسيمبندي :ميكنيم و بعد هر يك از توضيح ميدهيم
:
74
1ـ دستورالعملهاي حسابي (محاسباتي :؟)
2ـ دستورالعملهاي منطقي
-3دستورالعملهاي انتقال داده
-4دستورالعملهاي :متغير بولي
-5دستورالعملهايانشعاب:
5-5-1دستورالع:ملهای حسابی
نكتة مهم در مورد اين دستورالعملها :اين است كه همه به جز اعمال ضرب و تقسيم در
يك سيكل ماشين انجام ميشوند .ضرب و تقسيم در چهار سيكل ماشين اجرا ميشوند .نيز
دستور INC DPTRدر دو سيكل ماشين انجام ميشود .اين دستورالعملها :,اعمال حسابي از
قبيل جمع و تقريق و ضرب و تقسيم و يكي اضافه كردن و يكي كم كردن را انجام ميدهند مثالً
اجراي دستور :
ADD A, #0FH
عدد 0FHرا با ACCجمع ميكند و حاصل را در ACCميريزد( :.دستور :باال كامالً با
دستور :
ADD A, #15B
معادل است ).برای توضيحات بيشتر :راجع به عمل ضرب و تقسيم به بخش 2-4-2-5مراجعه
شود.
5-5-2دستورالعملهای منطقی
اين دستورالعملها شامل عمليات منطقي هستند ,دستوراتی :از قبيل AND , OR,
XORو NOTرا ميتوان به صورت :بيت به بيت يا بايت به بايت انجام داد .مثالً دستور :
ANL A, @R1
به آدرسي كه R1اشاره ميكند ميرود و محتوايش را به صورت بيت به بيت با انباره
ANDميكند و حاصل را در انباره قرار :ميدهد ولي اگرعالمت @ را نگذاريم ،محتواي
خود R1را با محتواي انباره ANDمنطقي خواهد نمود .در اين دستوارت نيز مثل دستورات
حسابيپرچمها تأثير ميپذيرند .همچنين ،دستورالعمل:های چرخش( )RL A,RR Aانباره را
يک بيت به چپ يا راست جا به جا میکنند .به همين طريق ،دستورالعمل SWAP A :چهار
بيت باال و پايين را در انباره جا به جا میکند.
75
5-5-3دستورالعمل:هاي انتقال داده
اين دستورالعملها در دو محيط كار ميكنند :
RAM 5-5-3-1داخلی
اين دستورات داده ,را در RAMداخلي جابجا ميكنند :و در يك يا دو سيكل ماشين
اجرا ميشوند .با اين دستورات :ميتوان هر دو مكان از RAMداخلی يا SFRها را بدون
دخالت ACCجابجا كرد .فرم کلی اين دستورالعملها عبارتست از :
>MOV <destination> , <source
توجه داشته باشيد كه SFRها با آدرس دهي مستقيم قابل دسترسي :هستند .اجراي
دستورالعملی با اين ترکيب :
XCH A,
><source
باعث میشود داده درون انباره ومحتو ای بايت آدرس داده شده تعويض 1شوند .نيز
يک دستورالعمل :تعويض "رقم" به شکل :
XCHD A,@R1
همانند دستورالعمل :قبلی است ,اما تنها بيتهای پايينی ( 4بيت پايين) تعويض)
مبادله( میشوند.
RAM 5-5-3-2خارجی
Exchange ·1
76
-5-5-3جستجودر جدولها
دو دستورالعمل :انتقال داده برای خواندن جداول جستجوی :واقع در حافظه برنامه
وجود دارد .نماد مورد استفاده برای "انتقال ثابت" MOVC ,است که از شمارنده برنامه يا
اشارهگر داده به عنوان ثبات پايه و از انباره به عنوان فاصله نسبی استفاده میکند .دستورالعمل:
:
MOVC A,
@A+DPTR
میتواند يک جدول با 256ورودی :را از شمارنده صفر تا 255پشتيبانی کند .نيز
دستورالعمل :
MOVC A,
@A+PC
همان کار را میکند ,با اين تفاوت که در اين مورد :از شمارنده برنامه به عنوان آدرس
پايه استفاده شده و جدول از طريق يک زيرروال قابل دسترسی است.
5-5-4دستورالعملهاي بولي
يك پردازندة بولي كامل براي عمليات تكبيتي در 8051وجود :دارد RAM .داخلي
شامل 128امكان بيت آدرس پذير و فضاي SFR :نيز 128امكان بيت قابل آدرس دهي ديگر
را پشتيباني :ميكند .دستوراتي مثل صفر كردن ،يك كردن ،آزما يش كردن ،متمم كردن ،
ORو ANDكردن يك بيت ميتوانند بيان شوند .مثالً دستورالعمل :
SETB P1.7
بيت 7درگاه 1را يك ميكند .دقت کنيد يک پرچم داخلی به آسانی میتواند به يک پايه
درگاه منتقل شود :
MOV C, FLAG
MOV P1.0, C
در اين مثال FLAGمیتواند نام هر بيت قابل آدرس دهی در 128مکان پايين RAM
داخلی و يا فضای SFRباشد .نيز يک سری دستورالعملهايی وجود :دارد که به دستورهای:
77
تست بيت معروفند ,دستورالعملهايی از قبيل JBو JCکه ابتدا بيت مورد :نظر را تست كرده و
در صورت 1 :بودن پرش میکنند و دستورالعملهايی از قبيل JNBو JNCدر صورت 1
نبودن پرش میکنند.
5-6تايمرها
يک تايمر از يک سری فليپ فالپ "تقسيم کننده بر دو" تشکيل شده است که يک
سيگنال ورودی :را به عنوان منبع ساعت دريافت :میکنند .برای مثال يک تايمر 16بيتی از
0000Hتا FFFFHمیشمارد و پرچم سريز هنگام سريزکردن از FFFFHبه ,0000Hيک
میشود .تايمرها تقريبا در همه کاربردهای کنترگرا :بکار میروند .در 8051دو تايمر 16بيتی
هر يک با چهار نوع عملکرد وجود :دارد .کاربردهای :تايمرها عبارتند از :
-1زمانبندی فاصله:های زمانی -2 :شمارش اتفاقات -3توليد نرخ ارسال بيت برای
درگاه سريال داخلی.
تايمرهای 8051با استفاده از شش ثبات کاربرد :خاص قابل دستيابی هستند که در ادامه توضيح
داده میشوند .البته دو ثبات TCONو TMODبه ترتيب مربوط به کنترل و حالت تايمر است
78
و چهار ثبات ديگر مربوط به بايتهای باال و پايين تايمرها ( TL0, TL1, TH0و )TH1
هستند.
1
5-6-1ثبات حالت تايمر
ثبات TMODشامل دو گروه چهار بيتی است که حالت کار تايمر 0و تايمر 1را
تعيين ميکنند .شرح کامل وظايف :بيتهای اين ثبات در جدول ( )1-5آمده است .دو بيت
Mمجموعا ً 4حالت را پشتيباني ميكند : M
1 0
TMOD ·1
79
0 M 0
O
80
ساعت تايمر TL1 TH1
پرچم
سرريز
ساعت تايمر TL0 TF0
12 TF1
TH0
Fosc
شکل 3-5حالتهای تايمر(الف) حالت ( 0ب) حالت ( 1پ) حالت( 2ت) حالت 3
1
5-6-2ثبات كنترل تايمر
اين ثبات شامل بيتهاي كنترل و وضعيت تايمر 0و 1ميباشد :هر يك از بيتها براي
مواردي قابل استفاده ميباشد :.كاربرد هر بيت را در زير بيان ميكنيم.
:TCON.1پرچم لبه وقفه خارجي 0و با نام TI0خوانده ميشود:.
:TCON.2پرچم نوع وقفه خارجي 1 :و با نام IT1خوانده ميشود.
:TCON.3پرچم لبه وقفه خارجي ، 1اين بيت بعداً در قسمت وقفهها بيان خواهد شد
و با نام IE1خوانده ميشود.
:TCON.4با نام TR0خوانده ميشود :و بيت كنترل روند :شمارش در تايمر 0است.
:TCON.5اين بيت با نام TF0خوانده ميشود :و پرچم سر ريز تايمر 0ميباشد:
:TCON.6اين بيت با نام TR1خوانده ميشود و بيت كنترل روند شمارش تايمر 1
است و به صورت نرمافزاري :براي روشن يا خاموش كردن تايمر 1به كار ميرود:.
:TCON.7اين بيت كه با نام TF1خوانده ميشود پرچم سرريز تايمر يك است و اگر
در تايمر يك ،سرريز اتفاق بيفتد ،اين بيت يك ميشود:.
با تعيين هر يك از اين بيتها ميتوانيم تايمرهاي :صفر يا يك را بنا به كار بردي كه ميخوانيم به
خدمت بگيريم:.
TCON ·1
81
5-7شروع به كار ،توقف و كنترل تايمرها
همانطور :كه در شكل ( )4-5مشاهده ميشود :دو امكان مختلف براي منابع ساعت
تايمرها وجود :دارد .راحتترين راه براي شروع :به كار و متوقف :كردن تايمرها :استفاده از
بيت كنترل روند شمارش ( )TRXدر TCONميباشد كه پس از resetشدن پاك ميشود:.
پس مشاهده ميكنيم :كه تايمرها :به صورت :پيشفرض متوقف :هستند مگر اينكه ما آنها را
راهاندازي كنيم.
روش ديگر مطابق شكل ( )4-5استفاده از بيت GATEدر TMODو ورودي
INTXميباشد :و اگر ، GATEيك باشد به تايمر اجازه ميدهد كه با INTXكنترل شود.
در ادامه دو مثال بيان ميكنيم تا استفاده از تايمر بهتر بيان شود.
مثال 1-5ميخواهيم يك برنامه بنويسيم تا يك موج مربعي پيوستة KHZ 10در پاية
P1.0توليد کند.
حل :چون ميخواهيم فركانس KHZ 10 :باشد پس با usec 50مقدار صفر و usec5
0مقدار يك در پاية P1.0توليد کند و با تكرار اين كار شكل موج مطلوب بدست آيد .چون فقط
باال شمار است پس "50desـ" را به تايمر ميدهيم و وقتي صفر شد دوباره از "50dـ"
ميشماريم :تاصفر پس از حالت دو تايمر صفر استفاده ميكنيم :
ORG 0100H
MOV TMOD, # 02H ; mode 2
MOV )THO, #-50 (decimal ; TH0 = 50
82
SETB TRO ; timer0 is on
LOOP: JNB TFO, LOOP ; waif while C=0
CLR TF0 ; Clear C of timer0
CPL Pl.0 ; Send to P1.0
SJMP LOOP ; Go to Loop
END
در اين برنامه نكتة مهم دقت باالي برنامه است كه تا وقتي :كه برنامه در حال چك
كردن TF0و يا فرستادن پالس به خروجي :است ،چون تايمر خودكار :است شمارش ميكند.
مثال 2-5ميخواهيم يك موج مربعي :پيوسته KHZ 10در P1.0توليد كنيم :
حل :در اينجا چون فركانس :زياد شده پس بايد از - 500dتا صفر بشماريم :و چون
محدودة شمارش بيشتر از 256است پس از مد تايمر 16بيتي استفاده ميكنيم :
ORG 0100H
MOV TMOD, # 01H
LOOP: MOV TH0, #0FEH ; FE TH0
MOV TL0,# 0CH ; 0C TL0
SETBTR0 ; Start counter
WAIT: JNB TF0, WAIT
CLR TF0
CPL P1.0 ; out to P1.0
SJMPloop
END
در اين برنامه چون مد يك تايمر صفر به كار رفته پس بايد مدام تايمر را مقدار دهي
كنيم و هر بار كه سر ريز اتفاق افتاد خروجي را برعكس كنيم .اين برنامه دقت كمتري نسبت
به برنامة قبل دارد چون در زماني :كه برنامه مشغول راهاندازي دوبارة تايمر است تايمر
1
نميشمارد :و بايد با تنظيم كردن زمان اين خطا را از بين برد.
83
دستيابي سختافزاري به درگاه سريال از طريق پايههاي TXDو RXDاست كه
قبالً بيان شدند TXD .براي ارسال دادة سري و RXDبراي دريافت دادة سريال به كار
ميروند :.دو ثبات كاربرد خاص SBUFو SCONامكان دستيابي :نرمافزاري را به درگاه
سريال فراهم ميسازند SBUF .يك بافر 8بيتي است و درآدرس 99Hقرار :دارد .نوشتن در
SBUFدادهاي را كه بايد ارسال شود ،بار ميكند و خواندن SBUFدادة دريافتي را در
دسترس قرار ميدهد.
5-8-1حالت 1
در اين حالت SM0=1و SM1=0است و به اين حالت UARTهشت بيتي
ميگويند :.داده به صورت :آسنكرون (غير همزمان) بر روي :خروجي قرار :ميگيرد و نرخ
ارسال نيز متغير است.
ارسال آسنكرون به اين ترتيب است كه ابتدا يك بيت آغاز (هميشه ,) 0هشت بيت داده
(اول ) LSBو يك بيت پايان (هميشه )1با م ّدت زمان یک ,یک و نیم یا دو بیت فرستاده
ميشود .لذا مجموعا ً 10بيت سريال فرستاده ميشود :و دريافت :نيز به همين طريق :صورت
ميگيرد .يادآوری می شود برای عمليات دريافت ,بيت پايان به داخل RB8در SCONمنتقل
می شود .بيت آغاز در اين حالت هميشه صفر و بيت پايان هميشه يك است .اعمال پالسهاي
ساعت با تقسيم فركانس :تايمر 16و يا 32بدست ميآيد و فركانس تايمر متغير است.
منابع ساعت حالتهاي مختلف درشكل ( )5-5آمده است.
84
شکل 5-5منابع ساعت درگاه سريال (الف) حالت ( 0ب)حالت( 2پ) حالت
1و3
5-8-2حالت 2
در اين حالت SM1=1و SM0=0است و با نام UART 9بيتي با نرخ ارسال ثابت
1 1
46يباشد .در اين نوع ارسال ،يك بيت به عنوان بيت
م يا
23
خوانده ميشود :.نرخ ارسال
آغاز و دو بيت آخر به عنوان بيت پايان تلقي ميشوند .البته بيت دهم قابل برنامهريزي است كه
توازن فرد در آن گذاشتهشود تا براي تست كردن خطا در 8بيت داده به كار رود .مجموعا ً
يازده بيت سريال فرستاده يا دريافت :ميشود.
5-8-3حالت 3
در اين حالت SM1=1و SM0=1و به اين حالت UART 9بيتي با نرخ ارسال
متغير ميگويند :و مانند حالت قبل است با اين تفاوت كه نرخ ارسال ،قابل برنامهريزي است و
توسط تايمر فراهم :ميشود .اين حالت نيز در شكل ( )5-5آمده است .با استفاده از تايمرها
85
ميتوانيم :در حالتهاي 1و 3فركانس :متغيير ايجاد كنيم .در صورتي :كه در حالتهاي 0و ، 2
فركانس ورودي ثابت است.
مثال 3-5مقدار دهی اوليه درگاه سريال برای بادريت 2400در مد يک.
حل :
ORG 8100H
INIT: MOV SCON,#52H
MOV TMOD,#20H
MOV TH1,#-13
SETB
END
دو مثال بعد ,از متداولترين زيرروال :ها در سيستمهای ميکروکامپيوتری :شامل پايانه
, RS232يعنی خروج کاراکتر :و ورود :کاراکتر می باشند.
مثال 4-5زيرروال :خروج کاراکتربرای ارسال کد ASCIIهفت بيتی واقع در انباره
از طريق :درگاه سريال 8051با توازن فرد به عنوان هشتمين بيت .هنگام بازگشت از
زيرروال :,انباره بايد حاوی مقدار قبل از فراخوانی :زيرروال :باشد.
حلORG 8100H :
OUTCHR: MOV C,P
CPL C
MOV ACC.7,C
AGAIN: JNB TI,AGAIN
CLR TI
MOV SBUF,A
CLR ACC.7
RET
END
مثال 5-5زيرروال :ورودکاراکتر :که کد ASCIIهفت بيتی را به انباره از طريق
درگاه سريال 8051با توازن فرد( به عنوان هشتمين بيت) برگرداند :.هنگام بازگشت از
زيرروال :,انباره بايد حاوی مقدار قبل از فراخوانی :زيرروال :باشد.
حل :
ORG 8100H
$,INCHR: JNB RI
CLR RI
MOV A,SBUF
MOV C,P
CLR ACC.7
RET
86
END
5-8وقفه ها
وقفه حالتی است که باعث متوقف :شدن يک برنامه می شود ,که خود توسط يک
برنامه ديگر فعال می شود .وقتي CPUدر حال انجام كاري است و يك وقفه وارد ميشود:
دستور مورد :اجرا متوقفميشود :و CPUبه انجام وقفه ميپردازد :و پس از پايان وقفه به
اجراي برنامه قبلي بر ميگردد.
برنامهاي كه مربوط :به اجرای وقفه ميشود يك روال سرويس وقفه ( )ISRناميده
ميشود .مثالی از وقفه ,ورود :اطالعات توسط صفحه کليد کامپيوتر :است .نکته مهم در اين
مثال آن است که ورودی توسط :شخص بطور :غير همزمان وارد می شود ,يعنی زمان وقوع :آن
توسط نرم افزار :از قبل قابل پيش بينی و کنترل نيست و در واقع وقفه يعنی همين.
5-8-1سازمان وقفه
در 8051پنج منبع وقفه وجود :دارد ،دو وقفه تايمر ,دو وقفه خارجي :و يك وقفه درگاه
سريال .وقفهها توالي اجراي ثابت دارند ولي تقدم آنها قابل برنامهريزي :ميباشد.
87
:IE.7که با نام EAخوانده ميشود :فعال يا غير فعالكنندة كلي وقفهها است .شمايی
از اين عملکرد در شکل ( )6-5نشان داده شده است.
: I.P.0تقدم وقفه 0خارجي :و هنگامي كه سيستم resetشده باشد اين وقفه بيشترين
تقدم را دارد )PX0( .
: IP.1تقدم وقفه تايمر صفر (. )PT0
: IP.2تقدم وقفه 1خارجي. )PX1(:
: IP.3تقدم وقفه تايمر . )PT1( 1
88
: IP.4تقدم وقفه درگاه سريال (. )PS
بقية بيتها در IPتعريف :نشدهاند.
5-8-4اجراي وقفهها
هنگام وقوع يك وقفه ,عملیا ّ ت زير اجرا ميشود: :
دستورالعمل :فعلي برنامه کامل ميشود.
PCدربا ال ی پشته قرارداده ميشود:.
وقفه جاري اجرا ميشود.
وقفههاي همسطح با اين وقفه متوقف ميشوند.
PCبا آدرس شروع ، ISR :بار ميشود:.
ISRاجرا ميشود:.
و سرانجام :با دستوراعمل( RETI :برگشت از وقفه) اجرای وقفه پايان
می پذيرد:.
5-8-6بردارهاي وقفه
هنگامي كه يك وقفه مورد :پذيرش قرار ميگيرد ،عدد بار شده در PCبردار :وقفه
ناميده ميشود :كه در واقع آدرس شروع ISR :براي منبع وقفه است .هر وقفه يك آدرس
اختصاصي :دارد و موقعي :كه فعال شود CPUبه آدرس مربوط به آن وقفه ميرود و وقفه را
اجرا ميكند .اين آدرسها به اين ترتيب هستند :
0000H Resetسيستم
در حقيقت resetبه عنوان با اولويت ترين وقفه ميباشد. :
0003H وقفه صفر خارجي :
89
0003H وقفه تايمر صفر :
0013H وقفه يك خارجي :
0013H وقفه تايمر يك :
0023H وقفه درگاه سريال :
براي هر وقفه 8بايت در نظر گرفته شده است و چنانچه برنامة ISRاز 8بايت
بيشتر باشد در اين آدرسها به يك آدرس ديگر در حافظه کد JMPميكنيم تا هم جا به اندازة
كافي براي ISRباشد و هم اينکه نقطه ورود آن برای وقفه بعدی تغيير کند .مثالً پس از reset
كردن سيستم :بايد برنامة اصلي اجرا شود و ممكن است برنامة اصلي بيشتر از 2بايت باشد ,لذا
در آدرس 0000Hبه آدرس ديگر پرش ميكنيم.:
ORG 0030H
MAIN : MOV IMOD, #12H ; timer 1 = mode 1
MOV TH0 , #-71d ; timer 0 =mode2
SETB TR0 ; -71desimal TH0
SETB TF1
MOV IE , #8AH ; Wait to interrupt
SJMP $
90
RET1
T1ISR : CLR TR1
MOV TH1, # 0FCH
; -1000d TH1, TLL
MOV TL1, # 18h
SETB TR1
CPL P1.6
RETI
مثال 7-5با استفاده از وقفه ها برنامه ای بنويسيد که بطور پيوسته مجموعه کدهای
ASCIIرا (بدون کدهای کنترلی) به پايانه درگاه سريال ارسال کند(.وقفه درگاه سريال)
حل:
ORG 0
LJMP MAIN
ORG 0023H
LJMP SPISR
ORG 0030H
MAIN: MOV TMOD,#20H
MOV TH1,#-26
SETB TR1
MOV SCON,#42H
MOV A,#20H
MOV IE,#90H
SJMP $
SPISR: CJNE A,#7FH,SKIP
MOV A,#20H
SKIP: MOV SBUF,A
INC A
CLR TI
RETI
END
مثال : 8-5با استفاده از وقفه ها ،يک کنترل کننده کوره با 8051طراحی کنيد که دما
را در 20±1درجه سانتی گراد نگه دارد( .وقفه خارجی)
حل :در حاليکه سيم پيچ درگير :است(کوره روشن است) p1.7 = 1
در حاليکه سيم پيچ آزاد است (کوره خاموش است) p1.7 = 0
91
و
TOH :متصل شده و بترتيب سيگنالهای
TNI و
1TNI 0 حس کننده ها به
، باشدT>21°C اگر : مقابل ايجاد می کنند:صورتDLOC
را به
TOH 0
92
فصل ششم
ميکروکنترلر
های AVR
6-1مقدمه
با اعالم ساخت ميكروكنترلر 8051 :در سال 1981توسط شركت اينتل ،يعني اولين
عضو خانواده ميكروكنترلرهاي ، MCS-48 TM :اين قطعات پيشرفت چشمگيري :كردند .اما
ميكروكنترلهايي :نظير خانواده 8051كه بيشترين استفاده را در دنيا داشته اند ،داراي
كمبودهايي :بودند كه از آن جمله مي توان به عدم وجود ,Watchdog Timer :نداشتن رابط
هايي نظري( TWI :زیر نویس )و عدم تنوع زياد امكانات اين خانواده از ميكروكنترلرهاي
اشاره نمود.
ميكروكنترلرهاي AVRعالوه بر اينكه تمامي اين امكانات ميكروكنترلرهاي :قبلي را
دارا هستند ،مشكالت آنها را رفع كرده و امكانات جانبي را نيز فراهم :نموده اند .اين
ميكروكنترلرهاي 8بيتي كه محصول شركت ATMELمي باشند به علت وجود كامپايلرها:
قوي به زبان ( HLL )High Level Languagesمورد استقبال و استفاده زيادي :قرار گرفته
اند.
ATMELميكروكنترلرهاي AVRخود را به سه دسته تقسيم كرد:
Classis AVR .1
Tiny AVR .2
Mega AVR .3
هر سه دسته از اين ميكروكنترلرها داراي دستورالعمل ها و شكل حافظه يكساني:
هستند .تنها فرق :آنها در امكانات موجود :در آنهاست .دسته Tiny AVRداراي كمترين
امكانات و داراي كمترين تعداد پايه 1اند .در حالي كه Mega AVRدقيقا برعكس آنهاست و
Pin ·1
93
دسته Classis AVRنيز حالت مابين اين دو دسته يعني Tiny AVRو Mega AVR
است.
يكي ديگر از محاسن AVRاين است كه دستور :العمل هاي آن به صورت خوبي
سازگار با كامپايلر Cاست.
94
( AREFمعموالً ورودي) :ولتاژ مرجع خارجي :بخش مبدل آنالوگ به ديجيتال.
( ADCnورودي) :اين سيگنال ها ،كانال هاي ورودي :مدار مبدل آنالوگ به ديجيتال
مي باشند.
( ADN0ورودي :مثبت) و ( AIN 1ورودي :منفي) :اين دو سيگنال ،ورودي :مدار
مقايسه -كننده آنالوگ مي باشند.
PC0…PC7, PB0…PB7, PA0…PA7و ( ..پايه ورودي :و خروجي) :هر يك
از اين پايه ها مربوط :به يك بيت از يك پورت مي باشد .حرف اول ( )Pنشانه پورت ،حرف
دوم نشان دهنده نام پورت و حرف (عدد) سوم نشان دهنده شماره بيت در پورت مي باشد.
( INTnورودي) :سيگنال هاي كالك خارجي مدار شمارنده /تايمر شماره .n
( Tnورودي) :سيگنال هاي كالك خارجي :مدار شمارنده /تايمر شماره .n
OCnB, OCnAو ( OCnCخروجي) :اين سيگنال ها جهت ارايه شكل موج توليد
شده در شمارنده /تايمر nبه كار مي روند:.
( ICPnورودي) :اين سيگنال جهت نمونه برداري :از محتواي :شمارنده موجود در
شمارنده تايمر شماره nبه كار مي رود.
( RXDورودي) و ( TXDخروجي) :سيگنال دريافت و ارسال در مدارهايUART :
و .USART
( XCKورودي :/خروجي) :سيگنال كالك هم زماني در مدار . USARTاين سيگنال
تنها در حالت انتقال سنكرون داراي كاربرد مي باشد.
MOSi, SCKو ( MISOورودي /خروجي) :اين سيگنال ها جهت ارسال ،دريافت
و هم زماني در SPIبه كار مي روند:.
(SSورودي) :اين سيگنال كه تنها در حالت Slave SPIتعريف مي شود ،جهت
انتخاب Slaveمورد :نظر به كار مي رود.
( TCKورودي)( TMS ،ورودي)( TDI ،ورودي) و ( TDOخروجي) :اين
سيگنالها جهت همزماني ،انتخاب حالت ،ورود :و خروج داده در JTAGبه كار مي روند.
( PCINTnورودي) :اين سيگنال ها براي ايجاد وقفه (بر اثر تغيير حالت سيگنال) در
ميكروكنترلر :به كار مي روند.
( SDA, SCLورودي /خروجي) :سيگنال هاي كالك و داده در I2Cيا .TWI
95
( dwورودي /خروجي) :اين سيگنال پل ارتباطي :نرم افزارهاي :ديباگ با سيستم
debug WIREمي باشد .اين ارتباط با شكل سريال دو طرفه (و از طريق يك سيگنال
مشترك) مي باشد.
بر اساس تعريف كلي يك سيستم :پردازشي ،امكانات موجود در AVRرا ميتوان به
چهار گروه زير تقسيم كرد:
CPU
حافظه ها
مدارات راه اندازي و كنترل
واحدهاي ( I/Oورودي /خروجي)
CPU 6-3-1
6-3-1-1فضاهاي آدرس
در ساختار Harvard :براي سرعت بخشيدن به اجراي برنامه ،كد برنامه و دادههاي
مورد پردازش :در دو حافظه فيزيكي مجزا ذخيره مي گردند :و CPUبراي دسترسي :به هر يك
از اين حافظه ها از گذرگاه متفاوتي :استفاده مي كند كه به هر يك از اين بخشها «فضا» اطالق
مي شود.
6-3-1-2فضاي برنامه
96
كد برنامه كه در حافظه برنامه ذخيره شده است ،از طريق :فضايي به نام «فضاي:
برنامه» در اختيار CPUقرار مي گيرد .دستورات موجود :در حافظه برنامه از طريق :يك
سيستم Pipelineيك طبقه اجرا مي گردند ،در مدتي كه يك دستور :در حال اجرا ميباشد،
دستور بعدي از حافظه برنامه خوانده شده و در مكاني موقت (رجيستر دستور) :دخيره مي
شود .حداكثر فضاي :برنامه قابل آدرس دهي در AVRچهار مگا كلمه ( 8مگابايت) مي باشد.
6-3-1-3فضاي داده
CPUبراي دريافت :داده هاي مورد :پردازش و ذخيره نتايج حاصله ،از فضايي :به نام
«فضاي داده» استفاده مي كند .ارتباط CPU :با واحدهاي جانبي نيز كه از طريق :رد و بدل
كردن داده با اين واحدها صورت مي گيرد ،از طريق بخش ويژه اي در همين فضاي :داده انجام
مي پذيرد :.حداكثر فضاي داده قابل آدرس دهي در AVR ، 16مگابايت ميباشد .براي
افزايش كارايي ،فضاي داده به بخش كوچكتري تقسيم گرديده است كه به اختصار :در زير
مورد بررسي :قرار گرفته اند:
الف -فضاي رجيستر:
دسترسي :كامل به رجيسترهاي :عمومي از طريق :فضاي رجيستر :انجام مي گيرد.
فضاي رجيستر :در AVRشامل 32بايت ( 32رجيستر) :مي باشد .رجيسترهاي عمومي در
فضاي رجيستر :بر اساس نام رجيستر :و در فضاي داده بر اساس آدرس معادل قابل دسترسي
مي باشد.
ب -فضايI/O :
فضاي I/Oدر AVRشامل 64بايت ( 64رجيستر) :مي باشد .رجيسترهاي I/Oدر
فضاي I/Oبر اساس آدرس I/Oو در فضاي داده بر اساس آدرس معادل قابل دسترسي مي
باشند.
پ -فضايRAM :
پس از فضاي :رجيستر I/O ،و Extended I/Oدر ابتداي فضاي :بزرگ داده در
AVRحافظه داده قرار :دارد .بخشي از اين حافظه داده را SRAMداخلي به خود اختصاص
مي دهد .مابقي حافظه داده به صورت حافظه خارجي :و با نام XRAMدر دسترس خواهد
بود.
ت -رجيسترهاي عمومي
97
داده ها (اعداد) مواد اوليه و محصول :نهايي در هر سيستم پردازشي مي باشد .اين داده
ها بايد در هنگام پردازش :در مكاني مناسب در دسترس ( CPU)ALUقرار :گيرند.
در AVRتعداد 32رجيستر عمومي 8بيتي به نام هاي R0تا R31تعبيه شده است.
ث -رجيسترهاي ايندكس
براي دسترسي :به مكان هاي غيرثابت در حافظه مي توان از روش هاي مختلف آدرس
دهي غيرمستقيم استفاده كرد .در اين روشها به جاي مشخص كردن مستقيم داده و يا استفاده از
يك آدرس مشخص ،از محتواي :يك رجيستر :براي تعيين آدرس داده مورد نظر استفاده مي
شود .در AVRرجيسترهاي خاصي براي اين روش در نظر گرفته شده است كه رجيستر:
«ايندكس» ناميده مي شود.
دسترسي :به محتواي :رجيسترهاي :ايندكس از طريق :رجيسترهاي :عمومي به كار رفته
مي گيرد .رجيسترهاي ايندكس كه از نام هاي Y,Xو Zاستفاده مي كنند 16 ،بيتي انجام
بوده و هر يك از تركيب دو رجيستر :متوالي در رجيستر :عمومي تشكيل مي گردد.
ج -رجيسترهاي صفحه
با افزايش اندازه فضاهاي آدرس دهي در نمونه بزرگتر ،آدرس 16بيتي (رجيسترهاي
ايندكس و آدرس دهي مستقيم) قادر به آدرس دهي تمامي اين فضا نخواهد بود .در اين حالت
رجيستر ديگري :موسوم :به «رجيستر :صفحه» با آدرس موجود تركيب شده و عرض آن را به
24بيت افزايش مي دهد كه براي آدرس دهي تمام فضاهاي :آدرس در نظر گرفته شده در
AVRقابل استفاده مي باشد.
چ -رجيستر :وضعيت
اطالعاتي كه هر يك از آنان از يك بيت داده تشكيل شده و «فلگ» ناميده مي شود
وضعيت جاري ( CPUو )ALUرا منعكس مي سازند .اين فلگ ها در كنار يكديگر :و در
رجيستري :به نام ( SREGرجيستر وضعيت) ذخيره مي گردند:.
هر فلگ در رجيستر SREGداراي نام و كاربرد :مختص به خود بوده كه در زير به
تفكيك عنوان مي گردد:
فلگ ( Cبيت شماره صفر) :اين فلگ براي ثبت سرريز :در آخرين عمليات
محاسباتي در نظر گرفته شده است.
فلگ ( Zبيت يك) :اين فلگ نشانه صفر شدن عدد حاصل در آخرين عمليات
محاسباتي مي باشد.
98
فلگ ( Nبيت دو) :اين فلگ نشانه منفي بودن عدد حاصل (با فرض محاسبه به
روش مكمل دو) در آخرين عمليات محاسباتي مي باشد يك بودن آخرين (پر
ارزش ترين) بيت در يك عدد نشانه منفي بودن آن مي باشد.
فلگ ( Vبيت سه) اين فلگ براي ثبت سرريز( :با فرض محاسبه به روش
مكمل دو) در آخرين عمليات محاسباتي در نظر گرفته شده است .متفاوت بودن
بيت عالمت در عدد حاصل با عدد يا اعداد پيش از محاسبه نشانه سرريز :در
يك عدد عالمت دار مي باشد.
V Vمي باشد ،براي استفاده فلگ ( Sبيت چهار) :اين فلگ كه معادل با
در دستورات :شرطي در نظر گرفته شده است.
فلگ ( Hبيت پنج) :اين فلگ براي ثبت سرريز :از بيت 3به بيت 4در آخرين
عمليات محاسباتي در نظر گرفته شده است.
فلگ ( Tبيت شش) :اين فلگ به منظور :استفاده در دستورات BLD :و BST
براي انتقال بيتي در نظر گرفته شده است.
فلگ ( Iبيت هفت) اين فلگ براي ثبت وضعيت عمومي پذيرش وقفه در
CPUدر نظر گرفته شده است.
99
پشته معموال در فضاي :داده (در )SRAMداخلي و به صورت وارونه تشكيل گشته و
يك رجيستر( :اشاره گر پشته يا )Stack Pointerكه هميشه به اولين بايت آزاد در پشته اشاره
مي كند ،وظيفه ثبت TOPرا به عهده مي گيرد.
6-3-2حافظه ها
در AVRسه گونه از حافظه وجود دارد .هر يك از اين حافظه ها داراي كاربرد
مختص به خود مي باشد كه در ادامه به تفكيك بيان مي گردد.
6-3-2-1حافظه برنامه
در AVRاز يك حافظه Flashبراي ذخيره كد برنامه استفاده شده است .اين حافظه
در AVRبه دو بخش ( Applicationبخش ابتدايي حافظه برنامه) و ( Boot Leaderبخش
انتهايي حافظه برنامه) تفسيم مي شود.
الف -بخش Application
بخش Applicationكه در بخش ابتدايي حافظه برنامه قرار :دارد ،براي ذخيره كد
برنامه مورد :نظر به كار مي رود .هنگام اجراي دستورات از داخل اين بخش ،دستورSPM :
غيرفعال خواهد بود .در نتيجه اين بخش به هيچ وجه نمي تواند حاوي كد Boot Leaderباشد.
ب -بخش Boot Leader
بخش Boot Leaderكه در بخش انتهايي حافظه برنامه قرار :دارد ،براي ذخيره كد
Boot Leaderبه كار مي رود .تنها در هنگام اجراي دستورات :از داخل اين بخش ،دستور
SPMفعال خواهد بود .در نتيجه فقط اين بخش مي تواند حاوي كد Boot Leaderباشد.
دستور SPMمي تواند كل فضاي حافظه برنامه از جمله خود بخش Boot leaderرا پوشش
دهد.
100
داخلي كه با نام SRAMشناخته مي شود ،اختصاص مي يابد .در صورت :نياز به حافظه داده
بزرگتر :,مي توان از حافظه خارجي :استفاده كرد .اين حافظه با نام XMEMشناخته مي شود.
6-3-2-3حافظه E2PROM
گاهي در مدارات كنترلي :پارامترها و داده هايي وجود :دارند كه حتي در صورت :قطع
جريان تغذيه نيز بايد حفظ گردند :.داده هايي نظير تنظيمات سيستم ،پارامترهاي ورودي،
وضعيت جاري و گاهي داده هاي جمع آوري شده در حين كار .يكي از بهتيرن راه كارها براي
اين مورد استفاده از حافظه هاي E2PROMمي باشد AVR .با دارا بودن مقدار معقولي از
حافظه E2PROMدر روي :چيپ اصلي ،پاسخ مناسبي براي اين مسئله ارائه كرده است.
حافظه E2PROMموجود در AVRقابليت پذيرش 000/100سيكل نوشتن در هر صفحه و
نگهداري اطالعات به مدت بيش از 10سال را دارا ميباشد.
مدارات كنترل و راه اندازي به بخش هاي متفاوتي :تقسيم مي گردند :.وجود مدارهايي
مانند مولد كالك يا آشكارساز Power on :براي عملكرد ميكروكنترلر :الزامي مي باشد .ولي
مدارهاي ديگر ريست يا سيستم كنترل توان تنها براي بهبود :كاركرد آن به كار مي روند.
6-3-3-1مولد كالك
منابع مختلفي مي توانند :اقدام به ايجاد كالك مورد نياز سيستم :كنند .براي انتخاب منبع
كالك مورد :نظر و روش كاركرد :مولد كالك از فيوز بيت هاي CKOPT, CKSELو
CKDIV8استفاده مي شود .فركانس خروجي :مدار نوسان ساز RCداخلي را ميتوان به
كمك عدد OSCCALتنظيم كرد .يك تقسيم كننده Prescaleبراي كاهش فركانس كار
ميكروكنترلر :در نظر گرفته شده است .نسبت مستقيم در اين تقسيم كننده از طريق :عدد چهار
بيتي CLKPSانتخاب مي گردد .يك مدار PLLبراي ايجاد مضربي از فركانس كالك اصلي
در نظر گرفته شده است.
در هنگام استفاده از نوسان ساز داخلي (نوسان ساز اصلي) ،مي بايست از پايههاي
( XTALورودي) و ( XTAL 2خروجي) جهت اتصال كريستال :يا رزوناتور سراميكي :و
قطعات مربوطه استفاده كرد.
101
Reset 6-3-3-2
منابع مختلفي مي توانند :اقدام به ايجاد پالس ريست كنند .طول اين پالس توسط بخش
ويژه اي افزايش مي يابد .با برنامه ريزي فيوز :بيت هاي CKSEL, FSTRTو SUTمي
توان ميزان اين افزايش را تعيين كرد .منابع ممكن براي ايجاد سيگنال ريست به شرح زير مي
باشند.
الف – External Reset
صفر كردن پايه ريست خارجي به مدت حداقل ، 50nSباعث فعال شدن سيگنال
مي گردد .تضميني :براي ايجاد پالس ريست يا پالس هاي ورودي :كوتاه تر از اين حد ريست
وجود ندارد.
ب -آشكار ساز Power-On
با افت ولتاژ تغذيه به زير حد پايين كه براي اين منظور در نظر گرفته شده ،سيگنال
ريست فعال شده و تا زمان افزايش ولتاژ :تغذيه به حد باال در همين حالت باقي مي ماند.
پ -آشكارساز Brown-Out
اين مدار در صورت :فعال بودن با مراقبت دائم ولتاژ تغذيه ،در صورت افت ولتاژ
تغذيه به زير حد تعيين شده اقدام به ايجاد سيگنال ريست مي كند .اين سيگنال تا زمان بازگشت
ولتاژ تغذيه به حد تعيين شده ادامه مي يابد.
تJTAG Reset -
در مدت يك بودن بيت Resetدر JTAGميكروكنترلر در حالت ريست باقي ميماند.
براي آشنايي با JTAGبه مكانيزم هاي ديباگ و برنامه ريزي :در همين فصل مراجعه شود.
1
ث -تايمرنگهبان
يكي از مسائلي كه گريبان گير يك سيستم :پردازشي :مي باشد ،مسئله هنگ شدن يا
خروج كنترل از دست نرم افزار مي باشد .داليل مختلفي مي تواند باعث بروز :اين مشكل
گردد.
بدترين دليل ،بروز حالتي معروف :به Latch-Upمي باشد كه مربوط به ساختار نيمه
هادي ها مي گردد .در اين حالت كه مشكلي كامالً سخت افزاري است ،چيپ به كلي فلج مي
گردد.
102
دليل شايع ديگر که باز وجود :مشكل سخت افزاری است مربوط :به بخش تثبيت كننده
ها و فيلترهاي منبع تغذيه مي باشد.
ساده ترين دليل نيز وجود :مشكل در خود نرم افزار مي باشد .طراحي ضعيف ،ساختار:
ناقص برنامه ،عدم رعايت استاندارد :و عدم استفاده از زبان مناسب ،امكان بروز مشكالت نرم
افزاري را بيشتر مي كند.
وجود مشكل در نرم افزار :در شرايط :تست و طراحي امريست معمول .ولي وجود:
مشكل در نرم افزار نهايي مربوط :به ضعف طراح مي باشد .كه با بررسي :و خطايابي :درست
برنامه قابل رفع خواهد بود .با اين همه گاهي امكان پيش بيني تمام موارد :وجود ندارد يا ممكن
است به دليل پيچيدگي طرح نكات ريزي :از چشم طراح مخفي بماند .وجود :مشكل در بخش
سخت افزار :نيز با طراحي :درست سخت افزار :رفع خواهد شد.
پاسخ AVRبه اين نياز تايمرنگهبان مي باشد ،مكانيزمي :فوق العاده ساده و موثر :.در
اين مكانيزم نرم افزار :موظف است كه در سيكل زماني مشخصي :سالمت خود را به
تايمرنگهبان اعالم كند .اگر نرم افزار :پس از گذشت اين زمان ،به هر دليل موفق :به اعالم
سالمت خود نگردد ،تايمر نگهبان (با فرض بروز :مشكلي بحراني در سيستم) ،با ارسال
درخواست وقفه و با ايجاد سيگنال ريست كنترل را به نرم افزار باز مي گرداند.
6-3-3-3كنترل توان
روشهاي :مختلفي براي كاهش توان مصرفي چيپ در دسترس مي باشد .اين روشها بر
پايه قطع كالك بخشي از ،يا تمام مدارات موجود :در ميكروكنترلر استوار :ميباشند .با قطع
كالك ورودي به هر يك از مدارات جانبي توان مصرفي چيپ كاهش مييابد.
با يك كردن هر يك از بيت هاي PRUSART, PRTWI, PRSPI, PRTMو
PRADCمي توان كالك بخش مربوطه را قطع كرده و جريان مصرفي :آن به حداقل ممكن
كاهش داد .مدارات ارتباطي :پس از برقراري :مجدد كالك نيازمند :پيكره بندي مجدد خواهند بود.
مدارات غيروابسته به كالك I/Oدر هر يك از اين حالت ها به كار خود ادامه خواهند
داد.
103
6-3-4واحدهاي جانبي ()I/O
مدارات جانبي در AVRاز تنوع نسبتا زيادي برخورداراند .اين واحدها در مجموع
به چهار گروه عمده قابل تقسيم مي باشند:
درگاهها(پورت) ها
شمارنده /تايمرها
واحدهاي ارتباطي( :سريال)
واحدهاي آنالوگ
در ادامه به توضيح و تشريح هر يك از اين گروهها :پرداخته مي شود.
6-3-4-1پورت ها
پورت ها ساده ترين و ابتدايي ترين نوع دسترسي :نرم افزار به دنياي خاج ميباشند.
پورت ها را مي توان به شكل بيت هايي مجزا و با گروهي بهم پيوسته از بيتها مورد استفاده
قرار داد .در AVRنام پورت با حروف مشخص مي گردند :و براي نامگذاري :آنها به ترتيب
از نام هاي پورت ، Aپورت ، Bپورت Cو ..استفاده مي گردد.
6-3-4-2شمارنده /تايمر
اين مدار در ساده ترين شكل ،شمارنده اي است كه پالس ورودي :از منبع كالك را
شمرده و پس از پايان عمل شمارش نرم افزار :مربوطه را مطلع مي سازد .در خانواده ،AVR
امكانات ديگري :مثل شمارش وقايع ،ثبت زمان يك رويداد :،توليد فركانس قابل برنامه ريزي و
توليد موج PWMقابل برنامه ريزي :نيز براي شمارنده /تايمرها در نظر گرفته شده است.
شمارنده /تايمرها در AVRبه دو گروه 8و 16بيتي تقسيم مي گردند .انواع 8بيتي براي
استفاده در كاربردهاي ساده و پر سرعت و انواع 16بيتي براي استفاده در كاربردهاي :كم
سرعت و نيازمند :به بازه وسيع تر شمارشي مناسب ميباشند.
104
توجه اي بين دو طرف :ارتباط باشد ،معموالً ارتباط سريال تنها مواقعي كه فاصله قابل
روش قابل انتخاب خواهد بود .ارتباط :سريال اين ميكرو كنترلر :بسيار شبيه ميكروكنترلرهاي:
8051مي باشد.
آنچه در اين فصل ديديم آشنايی کلی با ميکروکنترلر AVR :بود .عالقه مندان می
توانند برای آشنايی بيشتر :و مفصل تر به کتابهای مرجع مراجعه کنند.
فصل هفتم
DMA
در اين قسمت مي خواهيم به طور :خيلي مختصري با اهميت و نحوه عملكرد DMA
آشنا شويم :.يادآوري مي شود مقوله DMAو بررسي كامل آن معموال به درس
ميكروپروسسور :واگذار ميشود ،اما در اينجا قصد ما آشنايي مختصر دانشجويان با فلسفه و
كاركرد اين تراشه است.
7-1مفهوم DMA
در كامپيوترها ،اغلب به انتقال حجم زيادي از بايت هاي داده بين حافظه و وسايل
جانبي نياز است .در چنين مواردي استفاده از ريزپردازنده ها براي انتقال داده بسيار كند مي
باشد زيرا داده ها بايد به CPUبرده شده و سپس به مقصد ارسال گردند :.بعالوه روند برداشت
و ديكد خود دستورالعمل ها نيز به آن اضافه مي شود .به اين دليل ،اينتل تراشه DMA 8237
را طراحي :كرد كه كارش كنار گذاشتن CPUو ايجاد ارتباط مستقيم بين وسايل جانبي و
حافظه است .مشكلي كه به در ابتدا بنظر مي رسد اين است كه هيچ گذرگاهي قادر :به
پاسخگويي :به دو حاكم بطور :همزمان نيست ،يعني گذرگاه ها در آن واحد ميتوانند بوسيله
CPUو يا DMA 8238مورد استفاده قرار :گيرند .پاسخ اين است كه هرگاه DMAنياز به
استفاده از گذرگاه براي انتقال داده داشته باشدسيگنالي به نام HOLDرا به CPUارسال
105
ميدارد و در مقابل CPU ،هم با ارسال سيگنال HLDAبه آن پاسخ مي دهد تا به اين ترتيب
به آن بفهماندكه مي تواند از گذرگاه استفاده كند.
بحث فوق مشخص مي كند كه DMAفقط انتقال اطالعات انجام ميدهد و مثل CPU
قادر به برداشت و اجراي دستورالعمل ها نيست.
مي توان به DMAبه چشم يك CPUنگاه كرد كه در آن مدار منطقي ديكدر /اجراگر
وجود ندارد .براي اينكه DMAقادر به انتقال داده باشد ،با سيگنال هاي گذرگاه كنترل IOR،
IOW، MEMRو MEMWتجهيز شده است.
كنترل كننده DMA 8237يك تراشه 40پايه است .اين تراشه داراي چهار كانال
براي انتقال داده مي باشد و هر كدام بايد براي يك وسيله بكار رود .مثال يكي براي فالپي
ديسك ،يكي براي ديسك سخت و غيره .البته در هر زمان فقط يك وسيله قادر :به استفاده از
DMAبراي انتقال داده است .در هر كانال دو سيگنال وجود :دارد ،سيگنال ورودي DREQ
(تقاضاي )DMAو سيگنال خروجي ( DACKتصديق .)DMAاز DMA 8237فقط يك
HOLDو يك HLDAوجود دارند كه به HOLDو HLDAميكروپروسسور :وصلند .به
اين معني كه چهار كانال از چهار وسيله مختلف مي توانند :تقاضاي استفاده از گذرگاه سيستم را
بنمايند ،ولي اين DMAاست كه تصميم مي گيرد كه چه كسي كنترل را به دست بگيرد.
قبل از استفاده از هر كانال ،بايد بطور :جداگانه هر كانال DMA 8237مقدار دهي
اوليه شده و ضمن آن آدرس بلوك داده (اندازه بلوك) و تعداد آن مشخص شود.
مقداردهي اوليه عبارت است از نوشتن موارد :زير در هر كانال:
-1آدرس اولين بايت بلوك داده اي كه بايد منتقل شود(آدرس :مبنا)
-2تعداد بايت هاي مورد :انتقال(تعداد كلمه)
يادآوري :مي شود انواع متعددي :از مدهاي عملكردوجود دارند كه (اين مدها و انتخاب
ها) بايد در ثباتهاي داخلي 8237برنامه ريزي شوند :.براي دستيابي :به اين ثبات ها8237 ،
SCاختيار مي گذارد و چون هر كانال نياز
در چهار پايه با آدرس A0-A3را به همراه پايه
به آدرس پايه و تعداد كلمه جداگانه اي دارد ،جمعا براي آنها هشت پورت كنار گذاشته شده
است.
106
7-3ثبات هاي كنترل داخلي 8237
از آنجا كه در اين مجموعه درصدد پرداختن به جزييات DMAو بررسي دقيق :آن
نيستيم ،لذا با معرفي (فقط معرفي) ثبات هاي موجود در اين تراشه مبحث DMAرا به پايان
مي بريم:
7-3-1ثبات فرمان
اين ثبات 8بيتي براي كنترل كار 8237استفاده مي شود.اين ثبات بوسيله CPU
برنامه ريزي :مي شود.سيگنال RESETاز CPUيا دستور پاك كردن اصلي مربوط :به
DMAآن را پاك مي كند.
7-3-2ثبات وضعيت
اين ثبات 8بيتي فقط بوسيله CPUاز طريق :همان آدرس پورت ثبات ،همانند فرمان
SCباشد .اين ثبات
مي خوانده مي شود .آدرس پورت X8Hاست كه Xبراي فعال كردن
حاوي اطالعات متعددي درباره حاالت عملياتي چهار كانال مي باشد.
7-3-3ثبات مد
اين ثبات فقط قابل نوشتن بوسيله CPUاز طريق :آدرس پورت XBHاست ،كه در آن
SCفعال مي نمايد .مدهاي انتخابي توسط اين ثبات عبارتند از:
را Xتركيب آدرسي است كه
-1مد درخواست
-2مد بلوك
-3مد تك
-4مد متوالي
107
7-3-4ثبات تك پوشش
محتوي اين ثبات تنها بوسيله CPUاز طريق آدرس پورت XAHنوشته مي شود ،كه
است .از طريق :اين ثبات است كه ورودي DREQ :از يك كانال بخصوص قابل
SC Xبراي
پوشش (غير فعال) يا غير قابل پوشش (فعال) است.
وضعيت ،فرمان ،درخواست :پوشش را پاك مي كند و DMAرا به سيكل بيكاري :مي برد.
در پايان ،براي آشنايي كامل با ،DMAمراجع درسي :كامل تر ،از جمله كتاب
"ميكروپروسسورهاي( "80X86 :نوشته :دكتر مزيدي) جهت مطالعه پيشنهاد ميشود:.
108
منابع
جزوه درسی دکتر تابنده 1-
Digital and Microprocessor Fundamentals- William Kleit 2-
کتاب ميکروکنترلر, 8051 :آی اسکات مکنزی ,ترجمه مهندس حميد رضا رضايي :نيا و 3-
مهندس پيمان
کتاب ميکروپروسسور ,جان افنبک ,ترجمه دکتر قدرت سپيدنام ,ويرايش :سوم 4-
109