كود:
int i=0;
void main(){
trisb=0xff;trisc=0;trisd=0;portc=0;portd=0;
loop:
i++;delay_ms(25);
if(i>2000)portd=0;
if(portb.f0==0){while(portb.f0==0){}portd=portc;portc=1;i=0;}
if(portb.f1==0){while(portb.f1==0){}portd=portc;portc=2;i=0;}
if(portb.f2==0){while(portb.f2==0){}portd=portc;portc=3;i=0;}
if(portb.f3==0){while(portb.f3==0){}portd=portc;portc=4;i=0;}
if(portb.f4==0){while(portb.f4==0){}portd=portc;portc=5;i=0;}
goto loop;
}
1- تم تعريف المتغير I كمتغير صحيح لاستخدامه كعداد للوقت .
2- تعريف المنافذ كمداخل و مخارج .
3- داخل الحلقة التكرارية Loop بدئنا بزيادة I واحد كل مرة ثم التاخير لمدة 25 ملي ثانية .
4- اذا وصل العداد I الى القيمة 2000 فهذا يعني قد تجاوزنا دقيقة و لم نضغط على اي مفتاح فنطلب تصفير المنفذ d .
5- اذا تم الضغط على المفتاح الاول يتوقف البك عن تنفيذ اي شيء حتى نرفع يدنا من المفتاح ( هذه الخاصية تفيدنا في التعامل مع البك لانه سريع جدا و لا نستطيع اللحاق به ) . وما ان نرفع يدنا من المفتاح حتى تنتقل قيمة المنفذ C الى المنفذ D و ياخذ الاول القيمة الجديدة المشروطة مع كل مفتاح في الكود .
6- هذه العملية تتكرر 5 مرات بعدد المفاتيح .
7 - بعدها يتم الذهاب الى عبارة Loop مرة اخرى و تتكرر العملية بالكامل ..
و اي نقطة غير واضحة نعيد شرحها بكل امتنان ...