رجاءاً ... اردت فقط تجربة كيفية تفعيل المقاطعة الخارجية وطريقة عملها بكتابة كود بسيط لعمل فلاش ليد على البورت A وتحديدا على RA0 واجهت شيء غريب بالنسبة لي وهو عند الضغط على احد الــSwitchs المربوطة مع اطراف الدخل RB4,5,6,7 وتغير الجهد على احد الاطراف المذكورة دخول البرنامج في المقاطعة وعدم الخروج منها اي يستمر الــLED بالـFlashing وعدم العودة الى البرنامج الاصلي ... فما هو السبب؟
كود:
void interrupt(){
porta.f0=1;
delay_ms(200);
porta.f0=0;
delay_ms(200);
intcon.RBIF=0;}
void main() {
trisa=0;
trisb=0b11110000;
porta=0;
portb=0b00000000;
intcon=0b10001000;
while(1){
portb=0b00001111;
delay_ms(400);
portb=0b00000000;
delay_ms(400);}
|
السلام عليكم اخي الكريم ...
ماهو البك المستخدم ؟؟؟؟؟
ايضأً انت لم تقم بأيقاف الانلوج على اطراف بورت a
يجب تصفير الـــ Flag في دالة الانتربت حتى يخرج منها البرنامج ولا يبقى يكرر نفس الاوامر...
فقط اذكر نوع البك المستخدم
تحياتي