 |
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
|
|
نشاط [ F.Abdelaziz ]
قوة السمعة:332
|
|
11-03-2011, 10:40 PM
المشاركة 1
|
|
أسرارتفاصيل منافذ الدخل والخرج وطرق التعامل معها input / output ports - المنفذ port B
سجل المنفذ PORTB وسجل التحكم فيه TRISB
المنفذ B Port ذو سعة (عرض) 8 خانات 8-bit ثنائى الاتجاه . خانات السجل TRISB تحدد وظيفة أطراف السجل Port B .
كتابة المنطق واحد (1) بالسجل TRISB يؤدى إلى إعداد الطرف المناظر بالمنفذ Port B كمدخل بينما كتابة المنطق صفر (0) يؤدى إلى إعداد الطرف كمخرج .
ستة أطراف من هذا المنفذ تعمل كمداخل تناظرية (AN) . خانات السجل ANSELH تحدد أى الأطراف تعد كمداخل تناظرية وأيها يعد كمداخل / مخارج رقمية كما يلى :
RB0 = AN12 : تتحدد بالخانة ANS12 بالسجل ANSELH .
RB1 = AN10 : تتحدد بالخانة ANS10 بالسجل ANSELH .
RB2 = AN8 : تتحدد بالخانة ANS8 بالسجل .
RB3 = AN9 : تتحدد بالخانة ANS9 بالسجل ANSELH .
RB4 = AN11 : تتحدد بالخانة ANS11 للسجل ANSELH .
RB5 = AN13 : تتحدد بالخانة ANS13 بالسجل ANSELH .
كل طرف من أطراف المنفذ Port B يمتلك وظيفة إضافية ترتبط ببعض الوحدات الطرفية الموجودة ضمن البناء الداخلى للميكروكونترولر والتى سوف نتعرض لها فيما بعد .
هذا المنفذ يمتلك عدة خصائص تميزه عن المنافذ الأخرى وتجعل أطرافه شائعة الاستخدام :- جميع أطراف المنفذ portB تمتلك (ضمن البناء الداخلى للميكروكونترولر) مقاومات "جذب لأعلى"
pull-up resistors والتى تجعله مثاليا لتوصيله بالمفاتيح الضاغطة (لوحة المفاتيح) والمفاتيح العادية والروابط الضوئية .لتوصيل هذه المقاومات بأطراف المنفذ يجب عمل set (1) للخانة المناظرة للسجل WPUB .
نظرا لأن قيمة المقاومات مرتفعة (فى حدود عدة كيلوأوم) فإن هذه المقاومات التخيلية لا تؤثر على إعداد الأطراف كمخارج ولكنها تساعد كمكمل مفيد للمداخل .
ملحوظة : بعيدا عن خانات السجل WPUB توجد خانة أخرى تؤثر على عمل جميع مقاومات الجذب أعلى . هذه الخانةهى RBPU بالسجل OPTION_REG .- عند التمكين فإن كل خانة من خانات المنفذ port B والمعدة كمدخل يمكن أن تسبب مقاطعة عن طريق تغيير الحالة المنطقية للخانة . لتمكين الخانات لتسبب مقاطعة يتم عمل set = 1 الخانة المناظرة بالسجل IOCB "المقاطعة عند تغير حالة أطراف المنفذ port B "
بفضل هذه الخواص تستخدم أطراف المنفذ port B بكثرة فى التحقق من المفاتيح الضاغطة بلوحة المفاتيح keyboard لإنها ذات تسجيل وضغط غير منتظم .
لذلك فليس هناك حاجة لعمل مسح ‘scan’ لجميع المداخل طوال الوقت .
عند إعداد الأطراف X, Y , Z كمخارج وجعلها عند المنطق واحد (1) من الضرورى فقط الانتظار حتى حدوث طلب مقاطعة والذى يصل عند ضغط أى مفتاح ضاغط .
بعد ذلك بعمل مزيج من الأصفار والأحاد لتلك المخارج يمكن التعرف على أى مفتاح تم الضغط عليه .
دعنا نفعل ذلك باستخدام mikroC :- يتم إعداد الطرف PORTB.1 كمدخل رقمى وأى تغير فى حالته المنطقية سوف يتسبب فى المقاطعة . هذا الطرف يتم تمكينه لاستخدام مقاومة الجذب لأعلى . باقى جميع أطراف المنفذ PORT B يتم إعدادها كمخارج رقمية :
- إعداد جميع أطراف المداخل / المخارج لتكون رقمية :
ANSEL ANASELH = 0 ; - تصفير جميع أطراف المنفذ PORT B :
PORTB = 0 ; - إعداد جميع أطراف المنفذ PORT B كمخارج فيما عدا الخانة الثانية PORTB.1 :
TRISB = 0b00000010 ; - تمكين مقاومات الجذب لأعلا للمنفذ PORT B :
RBOU = 0 ; - توصيل مقاومة الجذب لأعلى بالطرف الثانى PORTB.1 .
WPUB1 = 1 ; - المقاطعة عند تغيير الحالة المنطقية للطرف الثانى PORTB.1 :
IOCB1 = 1; RBIE = GIE = 1 ;
الطرف RB0/INT :
هذا الطرف هو المصدر الوحيد للمقاطعة الخارجية الحقيقية .يمكن إعداده ليتفاعل مع الأشارة ذات الحافة الصاعدة ( إنتقال من صفر إلى واحد ) أو ذات الحافة الهابطة ( إنتقال من واحد إلى صفر ) . الخانة INTEDG "حافة المقاطعة" بالسجل OPTION_REG تختار الإشارة المطلوبة .
الأطراف RB6 و RB7 :
الميكروكونترولر PIC16F887 ليس له أى أطراف خاصة للبرمجة (عملية كتابة البرنامج على ذاكرة ROM) .أطراف المنفذ والتى عادة ما تكون متاحة كأطراف مداخل / مخارج للأغراض العامة تستخدم لهذا الغرض . بدقة أكثر نتحدث عن أطراف المنفذ port B المستخدمة فى نبضات الساعة (RB6) وفى نقل البيانات (RB7) خلال تحميل البرنامج . بجانب ذلك من الضرورى توصيل جهد مصدر القدرة Vdd (5V) بالأضافة إلى جهد مناسب Vpp (12-14V) لبرمجة الذاكرة من نوع FLASH . خلال البرمجة يتم توصيل الجهد Vpp إلى الطرف MCLR . لست مضطرا أن تفكر فى جميع تفاصيل هذه العملية ولا فى أى الجهود يتم توصيله أولا لأن إلكترونيات البرمجة هى المسؤولة عن ذلك . الشىء المهم هنا هو أن البرنامج قد يتم تحميله بالميكروكونترولر حتى بعد لحامه فى مكانه بالجهاز . عادة يمكن تغيير البرنامح المحمل بنفس الطريقة . هذه الوظيفة تسمى ICSP (In-Circuit Serial Programming) " البرمجة التسلسلية بالدائرة" . من أجل استخدام هذه الوظيفة بشكل صحيح من الضروري أن نخطط لها .
من الضروري فقط تركيب موصل 5 – طرف فى الجهاز المقصود وذلك لإمداد الميكروكونترولر بجهود البرمجة اللازمة . لمنع هذه الجهود من التداخل مع إلكترونيات الجهاز الأخرى والمتصلة بأطراف الميكروكونترولر ينبغي قطع توصيل كافة الأجهزة الطرفية الإضافية خلال عملية البرمجة باستخدام مقاومات أو كبارى jumpers .
كما</SPAN> هو مبين بالشكل فأن الجهود الموصلة لسوكيت جهاز البرمجة مثل تلك المستخدمة فى عملية البرمجة بالدائرة ICSP .
السجل PORTC وسجل تحكمه TRISC
|