تكملة
التكرار والحلقات التكرارية
بعد غياب نعود بحول الله وبتوفيقه ونتناول الحلقات التكرارية
وهى الحلقات التى تساعدنا على تكرار عدة تعليمات مرات محدده بعدد معلوم أو بشرط مشروط
عرفنا أننا يمكننا جعل البرنامج يقوم بعمل إعادة للتعليمات بتكرار لا نهائى .
مثل تحديد عنوان عن طريق أى كلمة ليست لها معنى لدى البرنامج (( أى كلمة لا تعنى أمر أو تعليمة من التعليمات يمكننا استخدامها كعنوان))
فمثلا يمكننا كتابة أى كلمة متبوعة بنقطتان رأسيتان
:Lop1
portb = $ff
(Delay_ms(500
portb = 0
(Delay_ms(500
goto Lop1
بعد اتمام التعليمات يأتى الأمر إذهب إلى العنوان (...)
وبذلك يتم تكرار ما بعد العنوان المذكور إلى ما لا نهاية .
==========================
الأمر التالى يعمل كحلقة تكرارية محدودة بعدد مرات
For var = 1 to 16
portb = $ff
(Delay_ms(500
portb = 0
(Delay_ms(500
NEXT var
هنا يتم تكرار التعليمات بعدد الرقم الموجود بداية من 1 إلى 16 حيث يمكننا وضع أى قيمة بدلا من 1 وأى قيمة بدلا من 16 ،
وفى مثالنا هذا سيأخذ المتغير var القيمة 1 ويتم تنفيذ التعليمات كاملة إلى أن يصل البرنامج للسطر NEXT فيتم وضع القيمة التالية للمتغير فتكون 2 ثم 3 ثم 4 ، .... إلى أن يصبح المتغير ذى القيمة 16 وعندها يتم تنفيذ التعليمات إلى أن يصل للسطر الموجود به NEXT
نكون بذلك قمنا بتنفيذ التعليمات عدد مرات بكتابات قليلة وبهذا لا نستهلك عدد كلمات كثيرة بتكرار التعليمات بالعدد المطلوب بل وضعناها داخل حلقة تكرارية فقط ، ووفرنا عدد الكلمات المتاح اتخدامه من المتحكم حيث أن لكل متحكم عدد كلمات محدد لا يمكن أن نتخطاه ،
كما أن لهذه الحلقة استخدامات ضرورية غير ذلك وهو تكرار مجموعة تعليمات بعدد محدد ثم تنفيذ تعليمات غيرها بعدد أيضا مثل الثوانى 60 ثانية وبعدها يتم زيادة الدقائق ثم يتم زيادة الساعات وهكذا واستخدامات عديدة سنعرفها تلقائيا عند حاجتنا فى بعض المشاريع المستقبليه.
يمكننا جعل المتغير بدلا من أن يسير 1، 2 ، 3 ، 4 ، ....
يمكننا جعله يسير هكذا 1 ، 3 ، 5 ، 7 ، 9 ، ... وهكذا بإضافة التعليمة STEP 2
كما يلى :-
FOR var = 1 to 16 STEP 2
أما إن أردنا الزيادة بمقدار 3 كل مرة : 1 ، 4 ، 7 ، ... فنكتب 3 بدلا من 2 هكذا STEP 3
ولها استخدامات أخرى لاحقا
والآن مع التطبيق :
PROGRAM LED_TEST
DIM TT1 as BYTE
:main
trisb = $00
For TT1 = 1 to 250
portb = TT1
(delay_ms(1000
next TT1
.end
فى هذا البرنامج تطبيق للحلقة التكرارية مع إظهار قيمة المتغير على المنفذ B وطبعا يجب توصيل ليدات على المنفذ بالكامل وسنقرأ القيمة الخاصة بالمتغير كل ثانية ( 1000 ميلى ثانية تساوى 1 ثانية ) والقيمة الناتجه ستكون بالنظام الثنائى ( عرفنا النظام الثنائى فى بدايات الدورة )
فى الوضع الطبيعى نجد أننا لم نكتب التعليمة التالية : STEP 1 لأن التعليمة FOR تتعامل بشكل تلقائى لكننا نكتب STEP فى حالة القفز كل مرة رقم أو أكثر !
وما دام الموضوع هكذا أن STEP تتحكم فى نوع التسلسل فإننا يمكن أن نستفيد منها فى العد التنازلى كى يتم تحميل المتغير بالقيم التالية :
بداية من : 16 ثم 15 ثم 14 ثم 13 ثم ...... 2 ثم 1
يعنى العد يكون تنازليا ، وعلى هذا فإننا نكتب التعليمة STEP -1 وطبعا عرفنا مكانها أين نكتبها كما سبق ،
ونفس الشئ إذا أردنا العد التنازلى يكون مصحوبا بالقفز رقمان فتكون هكذا : STEP -2
نكتفى بهذه الحلقة التكرارية ونكمل باقى الحلقات فى الدرس القادم إن شاء الله والسلام عليكم ورحمة الله وبركاته ،
يتتبع