السلام عليكم ورحمة الله وبركاته
لدي مشروع بالميكروكونترولر PIC16F877a ويتطلب المشروع التحكم في مقاطعتين TMR1IE و RBIE البت 7 اي عند الضغط على الزر المتصل بـ RB7 من المفترض حدوث مقاطعة RBIE أنا عملت فعلت المقاطعتين وعملت جملة شرطية للتحقق من حالة الـflags للمقاطعتين وجعلت RB7 Input لكي يستقبل المقاطعة وعملت كاونتر ليعد عدد مرات الضغط على RB7 لأنه إذا ضغط مرة هناك إجراء وإذا ضغط مرة ثانية هناك إجراء آخر وإذا ضغط مرة ثالثة فهناك إجراء آخر فهل الكود هذا صحيح لأنه لم يعمل بالشكل المطلوب عند إرساله للميكروكنترولر
/***************************************************************************************/
// INTERRUPT SERVICE ROUTINE
/***************************************************************************************/
/* This program will only run when Timer 2 overflows */
__interrupt void my_handler(void)
{
if (RBIF==1)
{
GIE = 0; // Disable all interrupts
RBIF=0;
if (RB7==1)
{
counter++;
if (counter>3)
{
counter=0;
}
if (counter==1)
{
TMR1run();
write_values();
RBIF=0;
}
else if (counter==2)
{
TMR1ON=0;
RBIF=0;
}
else if (counter==3)
{
LCD_puts("Please Enter S-T");
init_message();
RBIF=0;
}
}
}
else if (TMR1IF==1)
{
ST++;
if (ST==(x*2))
{
ST=0;
sampl_count++;
temp_total = temp_total + temp;
LDR_total = LDR_avg + coverage;
}
TMR1IF==0;
}
}