سؤال

كيفية تمكين المقاطعة الخارجية من 8051؟

هل كانت مفيدة؟

المحلول

كل من المقاطعات 8051s لها بتها في تمكين المقاطعة (IE) سجل الوظائف الخاصة (SFR) ويتم تمكينه عن طريق تعيين البت المقابل. أمثلة التعليمات البرمجية أدناه هي في التجميع 8051 وكذلك C لتقديم فكرة عامة عما يحدث.

لتمكين المقاطعة الخارجية 0 (EX0) تحتاج إلى ضبط بت 0 من IE.

SETB EX0 أو ORL IE,#01 أو MOV IE,#01

لتمكين المقاطعة الخارجية 1 (EX1) تحتاج إلى ضبط بت 3 من IE.

SETB EX1 أو ORL IE,#08 أو MOV IE,#08

ثم يجب تمكين المقاطعات على مستوى العالم عن طريق تعيين بت 7 من IE, ، وهو التمكين العالمي للتمكين/تعطيل البت (EA). إذا لزم الأمر ، يمكنك تعيين أولوية المقاطعات الخارجية إلى ارتفاع من خلال أولوية المقاطعة (IP) SFR.

SETB EA أو ORL IE,#80

مثال في ج:

#define IE (*(volatile unsigned char *)0xA8)
#define BIT(x) (1 << (x))
...
IE &= ~BIT(7); /* clear bit 7 of IE (EA) to disable interrupts */
...
IE |= BIT(0);  /* set bit 0 of IE (EX0) to enable external interrupt 0 */
...
IE |= BIT(1);  /* set bit 3 of IE (EX1) to enable external interrupt 1 */
...
IE ^= BIT(7)   /* toggle bit 7 of IE (EA) to re-enable interrupts */

أو

IE = 0x89;  /* enable both external interrupts and globally enable interrupts */

غالبًا ما يحدد بائعو برنامج التحويل البرمجي 8051 C غالبًا طرقهم الخاصة لإعداد وظائف المقاطعة. قد تحتاج إلى استشارة الوثائق الخاصة بمجمول البرمجي الخاص بك.

لتحديد وظيفة المقاطعة باستخدام برنامج التحويل البرمجي Keil C51 (رابط PDF لمذكرة التطبيق) ، يتم تحديد رقم المقاطعة وبنك التسجيل حيث يتوافق رقم المقاطعة مع عنوان ناقل مقاطعة محدد.

void my_external_interrupt_0_routine(void) interrupt 0 using 2
{
/* do something */
}

لتحديد وظيفة المقاطعة باستخدام برنامج التحويل البرمجي 8051 IAR C/C ++ (ICC8051) (رابط PDF إلى الدليل المرجعي)، ال __interrupt الكلمة الرئيسية و #pragma vector يمكن استخدام التوجيه.

#pragma vector=0x03
__interrupt void my_external_interrupt_0_routine(void)
{
/* do something */
}

إذا كنت جديدًا في 8051 ، فهناك ثروة من المعلومات المتاحة في www.8052.com. أود أن أوصي أيضا Microcontroller 8051/8052: الهندسة المعمارية ولغة التجميع وتواصل الأجهزة كتبه كريج شتاينر ، مدير المواقع ومؤلف 8052.com.

نصائح أخرى

تعليمي جيد جدا ، لقد ساعدني كثيرا. http://www.8052.com/tutint.phtml

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top