سؤال
كيفية تمكين المقاطعة الخارجية من 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