جزاك الله خير ,,,,,, وأرجو منك أخي الكريم أن تواصل الشرح بطريقة اسرع
وإلى أن تكمل الدرس أحب أن أضيف شرحي البسيط لبرنامجك
(على حسب فهمي الضيق ) :
الست سطور الأولى من البرنامج التي تظهر فيها علامات النجوم (*) هي مجرد تقديم أو توضيح بها الاسم والتاريخ والإصدار وهذه السطور لا يتم ترجمتها لأنها مسبوقة بعلامة ( ' ) هذه العلامة تفيد بأن ما سيكتب بعدها ليس من الكود الذي سيفهمه البرنامج وإنما هي مجرد ملاحظات ...
أما بالنسبة لعلامة (*) فهي للزينة أو للتنسيق فقط .
TRISB
هو المسؤول عن جعل PORTB كدخل أو كخرج و PORTB هو عبارة عن الرجول أو PINS المرقمة من RB0 ,RB1,RB2,RB3,RB3,RB5,RB6,RB7
فلو أردنا توظيف أي رجل من PORTB كدخل أو كخرج يجب علينا استخدام
TRISB
بحيث لو كانت بـ 0 ستكون خرج
لو كانت بـ 1 ستكون دخل
فمثلا لو أردنا توظيف الرجل رقم RB0 كدخل سنكتب الأمر التالي
TRISB.0=1
ولو أردنا توظيف الرجل رقم RB5 كخرج سنكتب الأمر التالي
TRISB.5=0
كلام جميل ::: ولكن نريد أن نشغل الليد LED ماهي الخطوات التي يجب اتباعها : -
1- يجب أن نوظف الرجل التي يتصل بها الليد على أنها خرج عن طريق TRISB
2- يجب أن نجعل ال PIC يخرج جهد على هذه الرجل ولكن كيف ذلك ؟؟؟
بكل بساطة عن طريق استخدام الأمر أو المسجل PORTB
فمثلا لجعل الرجل رقم RB5 تخرج كهرباء (جهد موجب) لتضيء الليد ... نكتب الأمر التالي :
PORTB.5=1
ولكن قبلها يجب أن نوظف RB5 على أنها خرج بالأمر التالي
TRISB.5=0
وإذا أردنا أن نجعل الرجل رقم RB3 تخرج ( جهد صفر ) نكتب الأمر التالي
PORTB.3=0
والآن هيا بنا نكتب برنامج يجعل الليد الموصل بالرجل رقم RB3 يضيء
كود:
TRISB.3=0
PORTB.3=1
END
ملحوظة الأمر END يجب كتابته في نهاية البرنامج
والآن لنكتب برنامج آخر يضيء الليد LED ثم يطفيه كل نصف ثانية
أي أننا سنخرج جهد موجب على الرجل الموصل بها الليد ثم ننتظر نصف ثانية ثم نخرج جهد صفري على نفس الرجل
كيف سنفعل ذلك ؟؟ كيف سنجعل الـPIC ينتظر نصف ثانية ويكرر هذه العملية
بكل بساطة
سنكتب له الأمر التالي
PAUSE 500
هذا الأمر يجعل الPIC ينتظر 500 مللي ثانية أي( نصف ثانية )
إذا مشكلة الإنتظار انتهت ولكن ماذا عن مشكلة التكرار (تكرار عمل البرنامج )
‘ذا أردنا أن نكرر عمل مجموعة من الأوامر فإننا نجعلها في بين هذين السطرين البرمجيين ..
كود:
LOOP:
هنا نكتب الأوامر أو الكود الذي نريده أن يتكرر بإستمرار
GOTO LOOP
إذا مشكلة التكرار إنتهت ولنكتب الآن برنامج يضيء الليد LED ثم ينتظر نصف ثانية ثم يطفيه ثم ينتظر نصف ثانية ويكرر هذه العملية
كود:
TRISB.0=0
LOOP:
PORTB.0=1
PAUSE 500
PORTB.0=0
PAUSE 500
GOTO LOOP
END
ملحوظة لتسهيل العمل ولتوضيح الكود يمكننا أن نسمي PORTB.0 بإسم مختلف
فنسميها مثلا باسم LED لنعلم أن الرجل رقم RB0 موصل بها LED
فلذلك نريد أن نستبدل كلمة PORTB.0 بكلمة LED هل يمكننا فعل ذلك ؟؟
نعم ... ولكن يجب عليك أن تكتب في بداية البرنامج أمر VAR أي أننا سنكتب السطر التالي
LED VAR PORTB.0
وبهذه الطريقة بدلا من أن أكتب PORTB.0=1
سوف أكتب LED =1
وبهذا نصل إلى الشكل الذي كتب به أستاذنا الفاضل المهندس علاء الدين بارك الله فيه ....
كود:
TRISB.0=0
LED VAR PORTB.0
LOOP:
LED=1
PAUSE 500
LED=0
PAUSE 500
GOTO LOOP
END
أرجو أن أكون وفقت في الشرح وأن يكون كلامي سليم وأن أكون قد ساهمت ولو بمساعدة بسيطة لـأستاذي المهندس علاء الدين
وجزاك الله عنا خير الجزاء