حل السؤال الاول :
كود:
void flashing(char xx)
{portb=0xff;delay_ms(300);
portb=xx;delay_ms(300);
portb=0xff;delay_ms(300);
portb=xx;delay_ms(300);
}
void main()
{trisa.f0=1;trisa.f1=1;trisa.f2=1;trisa.f3=1;trisb=0;portb=0;
loop:
if(porta.f0==0){portb++;if(portb>9)portb=0;while(porta.f0==0){}}
if(porta.f1==0){flashing(portb);while(porta.f1==0){}}
if(porta.f2==0){if(portb==0)portb=10;portb--;flashing(portb);while(porta.f2==0){}}
if(porta.f3==0){portb=0;flashing(portb);while(porta.f3==0){}}
goto loop;
}
هذا ما توصلت له من حل للسؤال .
عملية الفلاش جعلتها بين الرقم الظاهر على السفن سكمنت و الصفر . لاني لم اتمكن من اطفاء السفن سكمنت .
الخطأ الثاني هو لا يجوز استخدام portb كمؤشر للدالة . هذا التصحيح جاء من الاستاذ احمد
تعمدت و ضع الكود باخطائه رغم انه يعمل لكي نستفيد من هذه الاخطاء .
يوجد خطأ اخر بسيط ارجو اكتشافه عند التشغيل على البروتوس و معالجته هنا .
من الاخطاء التي ارتكبتها و اعترض عليها الكومبايلر هي انني وضعت الكود الرئيسي قبل كود الدالة . ارجو الانتباه الى هذا الخطأ .
تم تصحيح الاخطاء