قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

   

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,673
نشاط [ حسن هادي محمود ]
قوة السمعة:
قديم 09-03-2016, 06:04 AM المشاركة 9   
افتراضي



الاخ حسن هادي محمــود ... لك كل الاحترام والتقديـــر

لقد استفدت من مساعدتك الكثير .. اعتقد "الله اعلم" حسب ما قمت بتجربته انه في حالة العمل في هذا النوع من المقاطعة الخارجية(RBIE) يجب استخدام اداة شرط في برنامج الـمقاطعة وتحديد الطرف الذي حصل عليه تغيير بالجهد ومن ثم تنفيذ الامر المطلــوب مابين {} حيث قمت بالعديد من المرات في ازالة هذا الشرط وجدت ان البرنامج لا يخرج من المقاطعة ويستمر بتنفيذ مابداخلها من اوامر وكأنه Loop ولا يعود الى البرنامج الاساسي حتى وبعد تصفير الــRBIF... لااعلم ما اذا كان كلامي صواب ام لا ولكني سأعتمده
السلام عليكم
نعم ضروري استخدام الشرط لانك لاتعرف اي طرف قد تغير جهده وطبعا اقصد الاطراف RB4-7
فأذا قمت بتصفير RBIF_Bit
فلن يكرر الكود وكذلك وجب تصفير flag

اعلانات

supersarmed
:: مهندس ::
تاريخ التسجيل: Jan 2011
الدولة: العراق
المشاركات: 35
نشاط [ supersarmed ]
قوة السمعة:
قديم 09-03-2016, 08:19 AM المشاركة 10   
افتراضي


تفضل هذا الكود فيه الليد الاصفر يعمل مع حصول المقاطعة اي مع المفتاح و الليد الاخضر يعمل بشكل مستقل ...
كود:
void interrupt()
{
 portb.f1=~portb.f1;
 intcon.f1=0;
 
}
void main()
 { trisb.f0=1; trisb.f1=0;trisb.f7=0;portb.f1=0;
 intcon=0b10010000;

 while(1){portb.f7=~portb.f7;
          delay_ms(500);
          }

}

[/CENTER]
شكرا جزيلا اخي حيدر على مشاركتك ... ولكن برنامج المقاطعة الذي تفضلت به هو مقاطعة خارجية على الــPort B وتحديدا RB0 وهي (INTE)وسؤالي كان بخصوص المقاطعة الخارجية للاطراف RB4-7 وهي (RBIE)... وشكرا لك مرة ثانية

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )

الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 9,848
نشاط [ حيدر علاج حسن ]
قوة السمعة:
قديم 09-03-2016, 02:53 PM المشاركة 11   
افتراضي


ليس الفرق كبير فالاختلاف فقط في اختيار المقاطعة و علمها ...
نغير قيمة المسجل فيكون
intcon=0b10001000;
ثم نغير العلم في دالة المقاطعة
intcon.f0=0;
هكذا نكون قد فعلنا المقاطعة على الاطراف b4,b5,b6,b7


الصورة الرمزية Semmoor
Semmoor
:: مهندس متميز ::
تاريخ التسجيل: Oct 2011
المشاركات: 300
نشاط [ Semmoor ]
قوة السمعة:
قديم 10-03-2016, 10:24 PM المشاركة 12   
افتراضي


https://www.youtube.com/watch?v=KDO3...yAOU37wzCNN6Ea



الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 09:52 AM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)