الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف يمكنني التحكم في مقاطعة RB للـPIC16F877a

بدأه One Person في 2 أبريل 2011 · 0 رد · 1,000 مشاهدة · في الميكروكنترولر (المتحكم) و الدوائر الرقمية و المنطقية
مشاركة: واتساب X فيسبوك تيليجرام
#1

السلام عليكم ورحمة الله وبركاته

لدي مشروع بالميكروكونترولر 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;
 }

}

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…