|
لقد عجزت الكلمات ان تعطيق حقق هذه الدورة اكثر من رائعه
|
جزاك الله خيرا على تقديرك ومشاعرك
--------------------------------------
شرح خطوات البرنامج
------------------------
فى البداية نقوم بتعريف المنافذ ( أطراف المتحكم ) أيهما سيكون أطراف خرج وأيهما سيكون دخل
=================
أول سطر فى البرنامج نقوم بحجز المتغيرات !
طبعا نترك مكان فارغ حاليا وسيتضح لنا مع كتابة التعليمات كم متغير سنحتاجه ولذلك سنترك هذا المكان خاليا ولنبدأ من بعد عنوان البرنامج الرئيسى :main
نحدد المنفذ الأول كما فى رسم المتحكم على برنامج البروتوس فقد قمنا بتوصيل المفتاحان على منفذ B على أطراف RB0 و RB1 كما يظهر لنا على المخطط المرفق ،ومعنى ذلك أننا استخدمنا أول طرفان فى المنفذ B ولذلك كتبنا التعليمة
... = ... TRIS و نفهمها على أن معناها اجعل المنفذ ... = ...
ونعطى القيمة التى نريدها للسجل ( للمنفذ ) والقيمة تعطى بأى نظام من أنظمة العد التى ذكرناها فى البداية سواء عشرى أو سداسى عشر أو ثنائى ، كما نحب وها أنا كتبتها بالنظام الثنائى هكذا
نلاحظ إضافة العلامة المئوية قبل الرقم فى حالة الكتابة بالنظام الثنائى ، حيث أن هذه العلامة ليفهم البرنامج أنك تكتب الرقم بالنظام الثنائى وبذلك فإن الرقم الذى كتبناه وهو 11 هذا يعنى أن أول خانة فى السجل ( المنفذ ) والتى تسمى الخانة الأولى ( البت الأول ) RB0 فإننا أعطيناه قيمة 1 وأما الرقم 1 الثانى فهو خاص بالبت الثانى RB1 حيث أننا قمنا بإيضاح هذه الجزئية فى كلامنا عن البتات والسجل فى بداية الدورة ، وبهذا فإننا نعنى بالرقم 11 والمسبوق بعلامة مئوية أن قيمته تعنى واحد واحد أى دخل على البت الأول و دخل على البت الثانى ،
لأن قيمة واحد تعنى أن هذا الطرف للمتحكم ( أى هذا البت ) سيكون طرف دخل أما لو استبدلنا قيمة واحد بقمية صفر فإننا نخبر المتحكم بأن هذا الطرف ( هذا البت ) يكون خرج ، وطبعا هذا الكلام مع التعليمة السابقة ويتم كتابتها فى بداية البرنامج كخطوة من خطوات الإعدادات لأطراف المتحكم فقط ولذلك لن نحتاج أن نكتبها ثانيا أبدا خلال البرنامج .
الآن قمنا بإعداد طرفى RB0 , RB1 ليكونا طرفى إدخال . طبعا نحن لم نذكر باقى المنفذ واقتصر التحديد على بتان فقط من المنفذ لأننا لسنا فى حاجة لباقى هذا المنفذ فتجاهلنا باقى الأطراف .
------------------
يتبقى لنا أطراف الخرج وقد اخترت لها المنفذ D وسنكتب تعليمة تحديد الأطراف كخرج هكذا
ولم أضع العلامة المئوية التى تدل على استخدام العدد بالنظام الثنائى ولم أضع علامة $ والتى تعنى أن العدد بالنظام السداسى عشر ولكنى اكتفيت بوضع صفر فقط أى أنى وضعت عدد فقط وهنا سيتعامل البرنامج مع العدد بالنظام العشرى المعروف نظرا لعدم وجود علامات وهذا لا يهم فإننا هنا نريد وضع قيمة صفر فلا يهم نضع القيمة بأى نظام وللتسهيل وضع الصفر هكذا وفى هذه الحالة يفهم البرنامج أن المنفذ يساوى صفر أى أن جميع أطرافه ستكون أطراف خرج .
-------------
لإطفاء البورت D حيث أن كلمة بورت أى اجعل المنفذ يكون كذا ( اخراج فولت أو إطفاء ) وبما أننا لم نحدد طرف معين فيكون الصفر هنا لكامل المنفذ
-------------
أما هذه التعليمة
فهى لتخزين قيمة صفر فى المتغير Kk وهذا المتغير نستخدمه كما سيأتى شرحه
---------------
أما هذه التعليمة
كود:
if portb.1 = 0 then
Kk = 1
end if
فهى تعنى أنه
إذا كان البورت B البت رقم 1 = صفر نفذ ( اجعل ) Kk تساوى 1
--------------
هذه التعليمات فهى
كود:
if portb.1 and Kk = 1 then
Kk = 0
Cc = Cc + 1
if Cc > 4 then Cc = 4
end if
end if
إذا منفذ B البت رقم 1 و فى نفس الوقت المتغير Kk يساوى كل منهما ( واحد )
إذن نفذ الآتى
Kk = 0 لجعل هذا المتغير صفر كى لا يتم حساب قيمة اضافية للمتغير Cc فى حالة أن يظل المستخدم ضاغط على المفتاح حيث أنه سيتم تكرار المراقبة من خلال البرنامج
------
Cc = Cc + 1 أى أضف واحد للمتغير Cc
إذا كان Cc أكبر من 4 اجعله يساوى 4
إنهى فعل الشرط
إنهى فعل الشرط الثانى أيضا
-------------
فهمنا الآن أن KK تساوى 0 بعد أن نضغط على مفتاح الإدخال وبعد إدخال القيمة فى المتغير Cc تعود Kk لتساوى واحد كى لا يتم اضافة قيم للمتغير Cc ولكى لا يتحقق الشرط السابق ولن تعود Kk صفرا إلا بعد أن يتم تحرير المفتاح SET بهذه التعليمة القادمة :-
كود:
if portb.1 = 0 then
Kk = 1
end if
باقى البرنامج واضح جدا لمن فهم الخطوات السابقة ويحتوى على تعليمات لإخراج النتائج على ليدات
ولأى استفسار يرجى الرد كى ننتقل من هذه المرحلة وإلا سنضيف مشروع آخر من أجل تطبيق أكثر للتعليمات السابقة .