برمجة الرقاقة 8255A في النمط 2 برمجة الرقاقة 8255A في النمط 2 - اقرا معي وتعلم على الانترنت

برمجة الرقاقة 8255A في النمط 2

برمجة الرقاقة 8255A في النمط 2

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

برمجة الرقاقة 8255A - العمل في النمط 1

اليوم نأخذ برمجة الرقاقة 8255A في النمط 2:

يمكن فقط برمجة المجموعة A لتعمل في النمط 2، عندها تصبح البوابة A ثنائية الاتجاه مما يسمح لنا بإدخال وإخراج المعطيات على خطوط المعطيات نفسها للبوابة A .
تمسك البوابة في هذا النمط المعطيات المدخلة إليها من التجهيزة  الخارجية أو المخرجة عليها من المعالج. ويجري، في هذا النمط، استخدام البتات PC3-PC7 من البوابة C كإشارات تحكم أو حالة لإتمام عملية النقل بالمصافحة، بينما يمكن برمجة المغارز PC0-PC2 لتعمل كمغارز دخل أو خرج.
تبين الصورة التالية التوصيف الداخلي للدارة 8255A عندما تعمل المجموعة A في النمط 2 .

برمجة الرقاقة 8255A في النمط 2


تجري عملية إرسال المعطيات عبر البوابة A في النمط 2 كما يلي، انظر المخطط الزمني:
1-  يفحص أولا المعالج حالة OBF' فإذا كان مسويًا 1 فهذا يعني أن صوان المعطيات فارغًا، يكتب المعالج حينئذ معطياته في البوابة A والذي يؤدي إلى جعل OBF' تساوي الـ 0 .
2-   تراقب التجهيزة الخارجية أيضًا حالةOBF' لتحدد فيما إذا قام المعالج بكتابة معطيات جديدة على البوابة. عندما تكتشف التجهيزة وجود 0 على OBF' ترسل نبضة سالبة على المدخل ACK' يؤهل المستوى 0 للنبضة على المدخل ACK' صوان الخرج الثلاثي الحالات للبوابة A وتظهر بالتالي المعطيات الموجودة في الصوان على مخرج البوابة A مما يسمح للتجهيزة الخارجية بقراءتها. وتعود مخارج البوابة A إلى الحالة العائمة عندما يصبح المدخل ACK' مساويًا 1، كما تعيد النبضة على المدخل ACK' أيضًا البت OBF' إلى حالتها غير الفعالة والتي تساوي 1 .
برمجة الرقاقة 8255A في النمط 2





مثال: تعمل الإجرائية التالية على إرسال محتوى AH عبر البوابة A ثنائية الاتجاه:
MasterW           PROC NEAR
TRANS:
                         IN AL, PORTC                ; read port C
                         TEST AL, 80h                 ; check if PC7=1
                         JZ TRANS                      ; re-read port C if PC7=0
                         MOV AL, AH                   ; move AH in AL
                         OUT PORTA, AL            ; out AL into port A
                         RET
ولاستقبال معطيات عبر البوابة A في النمط 2 يجري تنفيذ ما يلي، انظر المخطط الزمني السابق:
1-  تضع أولا تجهيزة الإدخال معطياتها على البوابة، ومن ثم تولد إشارة القدح على STB' تأخذ البت IBF , نتيجة لإشارة القدح، القيمة 1 ويجري مسك المعطيات في صوان ضمن الرقاقة .8255A
2-  يتقصى المعالج برمجيًا حالة IBF حتى تصبح مساوية 1، والذي يعني وجود معطيات جديدة في صوان الدخل ينفذ المعالج حينئذ التعليمة IN لقراءة المعطيات من الصوان. يجري خلال تنفيذ تعليمة القراءة إعادة قيمة البت IBF إلى 0 ونقل المعطيات إلى AL .
مثال: تعمل الإجرائية التالية على قراءة معطيات من البوابة A ثنائية الاتجاه وتضعها في AL :
MasterR              PROC NEAR
Read:
                           IN AL, PORTC                ; read port C
                           TEST AL, 20h                 ; check if PC5=1
                           JZ Read                          ; re-read port C if PC5=0
                           IN AL, PORTA                ; read port A into AL
                           RET
يمكننا تفعيل إشارة المقاطعة INTR عبر المغرز PC3 لتبادل المعطيات بالاتجاهين بين المعالج وتجهيزة خارجية. عند وضع 1 في INTE فإنه يجري توليد مقاطعة عندما تقرأ تجهيزة خارجية المعطيات من صوان الخرج. وعند وضع 1 في INTE 2 فإنه يجري توليد مقاطعة عندما تقدح تجهيزة خارجية معطيات جديدة في صوان الدخل. يمكننا تغيير حالة البتتين INTE 1 و INTE 2 من خلال كتابة 0 أو 1 في PC6 و PC4 على الترتيب، ويتم ذلك بكتابة كلمة تحكم مناسبة في سجل التحكم مع وضع 0 في البت الأخير من الكلمة.

الى اللقاء في التدوينة القادمة بعنوان :
تواجه المبدلات مع المعالج 8088/8086



شارك الموضوع
تعليقات
محتوى قد يهمك

.