أنا عملت مشروع لقياس معدل النبضات Pulse Rate واستخدمت ال PICBasic في البرمجة و كانت الدالة المستخدمة هي Count و بالتفصيل تكتب كالآتي:-
Count Pin,Period,Var
حيث أن Pin هي الرجل المستخدمة للقياس مثل PortB.0 مثلا و الـ Period هي الفترة التي سيتم القياس فيها بمعنى أنني لو اردت قياس معدل النبضات كل نصف ثانية تكون قيمتها 500 ميلي ثانية و إذا أردت قياس معدل النبضات في الثانية تكون 1000 ميلي ثانية , أما Var فهو المتغير الذي سيحفظ فية قيمة القياس.
السؤال الأول
هل هناك مثل هذة الدالة البسيطة و السهلة في لغة C لأنني أردت أن أستخدم هذة اللغة بدلا من PICBasic لعلمي أن هذة اللغة هي أقوى اللغات في البرمجة؟؟؟؟؟
السؤال الثاني
بخصوص الــ Interrupt ... هل هناك دوال للتمييز بين مصدر كل Interrupt عن الآخر أم أنة إذا حدث Interrupt مهما كان مصدرة (Timer0 أو Timer1 أو حتى خارجي ...) سيفعل الكود المكتوب داخل الــInterrupt بصرف النظر عن مصدرة .....؟؟؟؟
أرجو من الإخوة الأفاضل نجدتي و جزاكم الله خير الجزاء
|
السلام عليكم
أخي الكريم
بالنسبة للسؤال الاول ............ ممكن توضح أكتر ممكن تكتب هنا الكود كامل أو مخطط الدائرة الالكترونية ؟؟!!
بالنسبة للسؤال الثاني ............ الدالة الخاصة ب interrupt واحدة ولكن إذا كان هناك أكثر من interrupt فيجب أن تختبر نوع interrupt داخل الدالة
وإليك هذا المثال للتوضيح
1- إذا كان هناك نوع واحد في interrupt أنت تسمح به (مثلا TMR0) فسيكون شكل الدالة كالاتي
كود:
void interrupt() {
الكود الخاص بك
}//~
2- إذا كان هناك أكثر من interrupt أنت تسمح به مثلا (TMR0IF & RBIF) فسيكون شكل الدالة كلاتي
كود:
void interrupt() {
if (INTCON.TMR0IF) {
الكود الخاص بك
}
else if (INTCON.RBIF) {
الكود الخاص بك }
}//~
أتمنى أن أكون أفدتك ,,,,,,,,,,, وجزاكم الله كل خير