المقاطعات الخارجية External Interrupts – شرح المعالج 8088/8086 المقاطعات الخارجية External Interrupts – شرح المعالج 8088/8086 - اقرا معي وتعلم على الانترنت

المقاطعات الخارجية External Interrupts – شرح المعالج 8088/8086


في التدوينة السابقة اخذنا  

المقاطعات الداخلية (شرح المعالج 8086) - Internal Interrupts

تعتبر تدوينة اليوم هي الاخير في مجال لغة التجميع والدوائر والموائمة والمعالجات الدقيقة وعنوانها المقاطعات الخارجية External Interrupts – شرح المعالج 8088/8086 

يحتوي المعالج 8088/8086 على ثلاث مقاطعات خارجيةإعادة تشغيل النظام RESET مقاطعة غير قابلة للحجب NMI والمقاطعة INTR .

إعادة تشغيل النظام System Reset 

يمكن اعتبار مغرز إعادة تشغيل النظام RESET إحدى مقاطعات المعالج غير القابلة للحجبعندما يكتشف المعالج 8088/8086 جبهة صاعدة موجبة على المغرز RESET فإنه ينهي كل نشاط للمعالج بانتظار أن تعود الإشارة على المغرز RESET إلى الـ عندها يصفَّر رتل التعليمات ويشحن القيم الابتدائية التالية في سجلاته الداخلية.

المقاطعات الخارجية External Interrupts – شرح المعالج 8088/8086


وبالتالي، فإن أول تعليمة ينفذها البرنامج، بعد إعادة التشغيل، تبدأ بالموقع الفيزيائي FFFF0h

المقاطعة NMI
لا يمكن حجب هذه المقاطعة وَتحدث من أجل كل جبهة صاعدة على المغرز NMI للمعالجعندما يستجيب المعالج لهذه المقاطعة فإنه ينفذ المقاطعة ذات النمط 2 تستخدم هذه المقاطعة لإعلام المعالج عن حدوث خطأ فادح في النظام مثل انقطاع الكهرباء، وبالتالي تمكِّن المعالج من تخزين المعطيات الضرورية ضمن ذاكرة EEPROM على سبيل المثاليبين الشكل التالي دارًة تولد نبضة موجبة عندما يحدث انقطاع في التيار الكهربائي.

المقاطعات الخارجية External Interrupts – شرح المعالج 8088/8086


المقاطعة INTR
يستجيب المعالج للمقاطعات على المغرز INTR إذا كان IF=1 .
يمكننا تأهيل هذه المقاطعة بتنفيذ التعليمة STI , كما يمكننا حجبها بتصفير الراية IF باستخدام التعليمة CLI عندما يستجيب المعالج لهذه المقاطعة يحجب هذه المقاطعة عن طريق تصفير IF ومن ثم يعيد تأهيلها بالتعليمة IRET مع نهاية إجرائية خدمة هذه المقاطعة.



عادًة ما تكون هذه المقاطعة مشتركة بين عدة تجهيزات محيطية في نظام صغري أو في الحاسوب الشخصي , يسند لكل تجهيزة نمط مقاطعة خاص يقرأه المعالج من مسرى المعطيات بعد الاستجابة مباشرة لهذه المقاطعة.
عندما يقرر المعالج الاستجابة لطلب مقاطعة على المغرز INTR فإنه يولد دورة آلة مسرى مقاطعة، يولد خلالها المعالج نبضة سالبة على المغرز INTR' ليعلم التجهيزة الخارجية، التي طلبت المقاطعة، أنه قد جرى الاستجابة لهذا الطلبثم يولد المعالج، مرًة أخرى، نبضة على المغرز نفسه لقراءة رقم شعاع المقاطعة الذي تضعه التجهيزة الخارجيةيجب على التجهيزة الخارجية وضع رقم شعاع المقاطعة على مسرى المعطيات D0-D7 مع بداية النبضة الثانية على المخرج INTR' انظر المخطط الزمنييمكننا استخدام أي شعاع مقاطعة من 00h وحتى  FFh ولكننا عادة ما نستخدم المقاطعات [20h-FFh] لكون المقاطعات [00h-1Fh] محجوزة إما داخليًا أو من أجل التطوير المستقبلي للمعالج.
المقاطعات الخارجية External Interrupts – شرح المعالج 8088/8086


طرق إدخال رقم شعاع المقاطعة
اولا الطريقة الأبسط
يبين الشكل التالي دارة بسيطة تعمل على وضع شعاع المقاطعة FFh على مسرى معطيات المعالج D0-D7 عند الاستجابة لطلب المقاطعة على المغرز INTR لا داعي، في هذا المثال، استخدام المخرج INTA' بما أننا وصلنا خطوط المعطيات إلى التغذية عبر مقاومات رفع فإن المعالج سوف يقرأ القيمة FFh عندما يستجيب للمقاطعة على المغرز INTR ,
المقاطعات الخارجية External Interrupts – شرح المعالج 8088/8086


ثانياً استخدام عازل ثلاثي الحالات
يبين الشكل التالي كيفية استخدام دارة عزل ثلاثي الحالات 74LS244 لتطبيق شعاع مقاطعة رقم 80h على خطوط المعطيات عندما يستجيب المعالج للمقاطعة على المغرز INTR تضع الدارة 74LS244 رقم شعاع المقاطعة على خطوط المعطيات بالتزامن مع النبضة على المخرج INTA' يمكننا من خلال البدالة DIP تغيير نمط شعاع المقاطعة بسهولة.
المقاطعات الخارجية External Interrupts – شرح المعالج 8088/8086

ثالثاً توسعة بنيان المقاطعة
بينا سابقًا طريقتين لإدخال رقم شعاع مقاطعة وحيديمكننا عمليًا توسعة عمل مقاطعة المعالج 8088/ 8086 بحيث يقبل المدخل INTR سبع مقاطعات مختلفة لكل منها رقم شعاع مقاطعة مختلف، كما في الشكل التالي.
المقاطعات الخارجية External Interrupts – شرح المعالج 8088/8086


نربط في هذا البنيان سبع مقاطعات (IR0)' – (IR6)' عبر بوابة NAND لها سبع مداخل (يمكننا استخدام الدارة المتكاملة 74LS30 لهذا الغرض) , يجري توليد طلب مقاطعة عبر المدخل INTR إذا أصبح على الأقل أحد المداخل (IR0)' – (IR6)' يساوي الـ 0 يقرأ المعالج رقم شعاع المقاطعة بالتزامن مع النبضة على المخرج INTA' تتغير قيمة شعاع المقاطعة تبعًا للمدخل الذي طلب المقاطعة .
يبين الجدول التالي رقم شعاع المقاطعة في حال وجود طلب مقاطعة واحد بآن واحد.
المقاطعات الخارجية External Interrupts – شرح المعالج 8088/8086

ولكن عندما تطلب أكثر من تجهيزة مقاطعة المعالج بآن واحد فإنه يجري توليد رقم شعاع مقاطعة جديد (غير متضمن في الجدول) على سبيل المثال، إذا جرى طلب مقاطعة على المدخلين IR0' و IR1' فإنه يجري توليد رقم شعاع المقاطعة FCH لماذا؟ (لأن جميع مداخل المقاطعة تساوي منطقي ما عدا IR0' و IR1' وبالتالي فإن قيمة شعاع المقاطعة في هذه الحالة يساوي 11111100b أو FCh ).
إذا كان للمقاطعة IR0' الأولوية الأعلى، فإنه يجب تخزين عنوان شعاع مقاطعة IR0' في الموقع FCH من جدول أشعة المقاطعاتويجب، في هذه الطريقة، استخدام النصف الأعلى من الجدول المكون من 128 موقع للأخذ بالحسبان جميع التراكيب الممكنة لطلبات المقاطعات المختلفةبالطبع هذه الطريقة ليست المثلى ومع ذلك فإن هذه الطريقة تمثل ح ً لا وسطًا بين تعقيد النظام وكلفته.

مثال:
يبين الشكل التالي مثالا على ربط لوحة مفاتيح مع الرقاقة 8255A في نظام صغري مبني حول المعالج 8086 يسبب الضغط على أي مفتاح من لوحة المفاتيح توليد مقاطعة ذات النمط 40h عبر مدخل المقاطعة INTR .
تحتل سجلات الرقاقة 8255A في هذا المثال العناوين 0504h ،0502h ،0500h و 0506h جرى استخدام الرقاقة 16L8 لفك ترميز خطوط العنونةتعمل الرقاقة 8255A بالنمط (نمط دخل مقدوح ) لذلك كلما جرى الضغط على أحد المفاتيح يصبح المخرج (PC3) INTR للرقاقة 8255A  مساويًا الـ 1 ويجري بالتالي توليد طلب مقاطعة من النمط 40h عبر المدخل INTR للمعالجيبقى المخرج INTR للرقاقة 8255A مساويًا ال حتى يقرأ المعالج ترميز ASCII للمعطيات على مدخل البوابة A نتيجة للنبضة على المخرج DAV' من لوحة المفاتيح ُتمسك البوابة A المعطيات على مداخلها كلما جرى الضغط على أحد المفاتيح وتجعل INTR=1 .
المقاطعات الخارجية External Interrupts – شرح المعالج 8088/8086


يقرأ برنامج المقاطعة التالي، في كل مرةٍ يجري فيها الضغط على أحد مفاتيح اللوحة، ترميز ASCII للمفتاح المضغوط ويضعه في المصفوفة FIFO يكتشف برنامج المقاطعة بعد قراءة 256 بايت أن المصفوفة FIFO قد امتلأت فيجب بالتالي المقاطعة على المدخل INTR للمعالج.  
; interrupt service routine to read a key from the keyboard
                       PORTA                EQU 500h
                       CNTR                   EQU 506h
                       FIFO                    DB 256 DUP (?)
                       INP                      DW ? ; SET AS OFFSET FIFO IN MAIN PROG
                      FIFOSize              DW 256
KEY               PROC FAR
                      PUSH AX
                      PUSH BX
                      PUSH DI
                      PUSH DX
                      MOV BX, INP
                        MOV DX, PORTA
                        IN AL,DX                    ; read the key
                        MOV [BX], AL
                        INC BX
                        CMP BX, FIFOSize    ;test for queue full
                       JE FULL                       ; if queue is full
                       INC WORD PTR INP
                       JMP DONE
FULL:             MOV AL, 8 ;DISABLE THE INTERRUPT
                       MOV DX, CNTR
OUT DX,AL
POP DX
POP DI
POP BX
POP AX
DONE: IRET
KEY END



هذه اخر تدوينة في هذا المجال ارجو ان يستفيد طلابنا مما قمنا بنشرة من احد الكتب في مجال الدوائر الموائمة و المعالجات الدقيقة ولغة التجميع
شارك الموضوع
تعليقات
محتوى قد يهمك

.