المقاطعات : المقاطعة الخارجية عن طريق تطبيق نبضة على الطرف RB :

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل

المقاطعات : المقاطعة الخارجية عن طريق تطبيق نبضة على الطرف RB :

مُساهمة من طرف Admin في الخميس أبريل 30, 2015 12:12 pm

المقاطعات : المقاطعة الخارجية عن طريق تطبيق نبضة على الطرف RB :

سوف نستعرض هذا النوع من مصادر المقاطعة من خلال المثال التالى لبرنامج المقاطعة الخارجية  :
الدائرة الكهربية :







فى هذا البرنامج سوف نبين الإعدادات الأساسية للمقاطعة .
• المهمة الأصلية للبرنامج هى إنشاء عداد ثنائى تصاعدى (متزايد) على خرج المنفذ Port D  باستخدام العبارات output_d(x); x++;  .
• يتم مقاطعة هذه المهمة عند الضغط على المفتاح الضاغط المتصل بالطرف RB0 ليصبح الطرف RB0 (الخاص بالمقاطعة الخارجية) فى الحالة المنخفضة ، وفقا للعبارة ext_int_edge(H_TO_L); ، مما يجبر البرنامج على تنفيذ روتين خدمة المقاطعة الخارجية void isrext() ، والذى يتسبب فى إضاءة جميع الليدات output_d(255); لمدة ثانية واحدة delay_ms(1000); . ثم بعد ذلك يتم استئناف المهمة الأصلية تلقائيا من عند نقطة توقف التنفيذ .
• عندما يتم كشف مقاطعة الطرف RB0 خلال الحلقة الرئيسية ، يتم حفظ السياق ( محتويات السجل الحالى) قبل تنفيذ روتين خدمة المقاطعة .

البرنامج :


الكود:


// External interrupt RB0 low interrupts output count
#include <16F877A.h>
#use delay(clock = 4000000)

#int_ext             // Interrupt name
void isrext()             // Interrupt service routine
{
output_D(255);       // ISR action
delay_ms(1000);
}

void main() //*******************
{
int x;

enable_interrupts(int_ext);       // Enable named interrupt
enable_interrupts(global);       // Enable all interrupts
ext_int_edge(H_TO_L);       // Interrupt signal polarity

while(TRUE)             // loop
{
output_D(x); x++ ;
delay_ms(100);
}
}

Admin
Admin

عدد المساهمات : 935
تاريخ التسجيل : 28/01/2014

معاينة صفحة البيانات الشخصي للعضو http://fathallaabdelaziz.forumarabia.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى