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

   

الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 9,848
نشاط [ حيدر علاج حسن ]
قوة السمعة:
قديم 15-04-2013, 12:43 AM المشاركة 17   
افتراضي



اسفه على التأخير انا الصقت الكود اللي مو فاهمته بموضوع المشروع المشابه بالخطأ..ثاني مرة تحصل..مفيش تركيز ^_^

CMCON=0x07;


if (PORTA.f0==0){
for(x=0;x<5;x++){portb.f2=0;delay_us(600);portb.f2 =1;delay_us(600);}
delay_ms(250);}

انا قريت الشرح مره ومرتين بس ما وصلت الفكر
اسفه اتعبتك معي
كود:
CMCON=0x07;
هذه الجملة لتحويل المنفذ A باكمله الى منفذ رقمي يمكن التعامل معه بصورة طبيعية ... و هي عبارة ثابتة

كود:
if (PORTA.f0==0)
عند الضغط على المفتاح الاول المتصل بالمنفذ ar0 فان قيمته سوف تتحول من 1 الى صفر و يتحقق الشرط و يبدا المتحكم بتنفيذ الجمل داخل عبارة الشرط

كود:
for(x=0;x<5;x++)
هذه الجملة من اجل تكوين حلقة تكرارية تتكرر خمس مرات . اي ان الكود الذي بداخلها سيتكرر خمس مرات ..

كود:
{portb.f2=0;delay_us(600);portb.f2 =1;delay_us(600
هذا الكود هو الذي سوف يتكرر خمس مرات تبعا للحلقة التي تحويه ..
في هذا الكود سيتم تغيير قيمة المنفذ ar2 من صفر الى واحد و بالعكس خمس مرات و هكذا سوف تنشا موجة مربعة مكونه من خمس نبضات سيتم عدها لاحقا من قبل البك في دائرة الاستقبال و على اساس عددها سيحدد الليد الذي سيعمل .
مثلا اذا كانوا خمس نبضات يعمل الليد الاحمر و اذا 6 نبضات يعمل الليد الاخضر و هكذا ...

كود:
delay_ms(250)
هذه الجمله تجعل البك يتوقف عن العمل لفترة 250 ملي ثانية و لا يستجيب لاي امر خلال هذه الفترة و بذلك سيمنع التداخل بين المفاتيح و و التمييز بينها في حال تم الضغط على مفتاحين بوقت واحد ...


التعديل الأخير تم بواسطة : حيدر علاج حسن بتاريخ 15-04-2013 الساعة 12:49 AM
اعلانات

الصورة الرمزية reomy
reomy
:: مهندس ::
تاريخ التسجيل: Apr 2013
المشاركات: 26
نشاط [ reomy ]
قوة السمعة:
قديم 16-04-2013, 01:14 AM المشاركة 18   
افتراضي


مشكور مهندس حيدر وصلت الفكره ..وضحة الان
في كود المستقبل TMR0 = 0;
TMR0 هل هو شي محجوز باللغة ولا متغير فقط



while(1){
while(TMR0==0){}
delay_ms(20);
switch (TMR0){
case 8: Portb.F3 = ~Portb.F3;TMR0=0;break;
case 7: Portb.F2 = ~Portb.F2;TMR0=0;break;
case 6: Portb.F1 = ~Portb.F1;TMR0=0;break;
case 5: Portb.F0 = ~Portb.F0;TMR0=0;break;
default:TMR0=0;break;

}

}
while(1);
}

اللي فهمته من الكود الموجود بالأعلى .. ما دام قيمة TMR0 =0 يضل في لوب ينتظر حتى يدخل يأتي اليه 8 او 7 او 6 او 5 نبضات

بس لو تشرح case 5: Portb.F0 = ~Portb.F0;TMR0=0;break; بالتفصيل اكون شاكره لك واخر البرنامج وضع لوب لا نهائية لماذا؟

انا ممتنه لك مهندس حيدر شكرا كثيييرا

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

الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 9,848
نشاط [ حيدر علاج حسن ]
قوة السمعة:
قديم 16-04-2013, 08:48 PM المشاركة 19   
افتراضي


هذه شرح مبسط لمعنى كل جملة ...
كود:
TMR0 = 0;     /*هذه الجملة محجوزة في الميكروسي*/

    while(1){
     while(TMR0==0){} /*لا تعمل اي شيء ما دامت قيمة التايمر صفر*/
     delay_ms(20);
            switch (TMR0) /*تحقق من قيمة التايمر*/
باقي الجمل المتشابهة تقريبا سوف نأخذ واحدة منها و نجزئها ...
ناخذ الجملة الاولى
كود:
case 8: Portb.F3 = ~Portb.F3;TMR0=0;break;
كود:
case 8:
هذه الجملة تعني اذا كانت قيمة التايمر 8 نفذ الخطوات التي بعدها مباشرة . و هذه الخطوات هي :
كود:
Portb.F3 = ~Portb.F3;
اعكس حالة الليد المتصل بالمنفذ B3 اي اذا كان بواحد اجعله صفر و العكس بالعكس ..و بذلك سنشغل الليد و نطفيه من نفس المفتاح بضغطات متكررة push on _ push off

كود:
TMR0=0;
و اجعل قيمة التايمر صفر لكي نهيئه لا ستقبال الاشارة الجديدة القادمة من المفاتيح ...

كود:
break;
اوقف عمل جملة
كود:
case 8:
للتهيئة لاستقبال امر جديد ,..

عبارة
كود:
whil(1);
التي في نهاية الكود زائدة و يمكن الاستغناء عنها


التعديل الأخير تم بواسطة : حيدر علاج حسن بتاريخ 16-04-2013 الساعة 08:56 PM

الصورة الرمزية reomy
reomy
:: مهندس ::
تاريخ التسجيل: Apr 2013
المشاركات: 26
نشاط [ reomy ]
قوة السمعة:
قديم 17-04-2013, 04:00 PM المشاركة 20   
افتراضي


مشكور مهندس حيدر اتعبناك معنا كثير ..
الله يسهل عليك كل عسير ..

شكرا جزيلا
اسعدك الله
^_^


الصورة الرمزية reomy
reomy
:: مهندس ::
تاريخ التسجيل: Apr 2013
المشاركات: 26
نشاط [ reomy ]
قوة السمعة:
قديم 30-04-2013, 04:14 AM المشاركة 21   
افتراضي


لدي مشكلة في برنامج السي ميكرو ..لا استطيع عمل build all projects بعد التعديل على الكود الموجود بالموضوع المشابه


الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 9,848
نشاط [ حيدر علاج حسن ]
قوة السمعة:
قديم 30-04-2013, 08:46 AM المشاركة 22   
افتراضي


لماذا build all projects ؟؟؟؟؟
اعملي build current project ...
و يجب ان تكون النسخة مسجلة او مكركة



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