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

أدوات الموضوع

الصورة الرمزية احمدمعاطى
احمدمعاطى
:: مهندس جيد ::
تاريخ التسجيل: Apr 2009
الدولة: مدينة الاسكندريه
المشاركات: 271
نشاط [ احمدمعاطى ]
قوة السمعة:0
قديم 21-04-2010, 03:07 AM المشاركة 1   
افتراضي الى خبراء لغة السى Twitter FaceBook Google+



ارجو من الاخوه الافاضل مساعدتى فى هذا البرنامج

كتبت البرنامج ويعمل جيدا لكن به نقطة ضعف

اننى مجبر على تسلسل كتابت البرنامج

واريد معرفة الامر ( او )

بمعنى اريد تنفيذ

شرط وله مجموعة اوامر

او

شرط اخر وله مجموعة اوامر

او

شرط اخر وله مجموعة اوامر


وهكذا الشرط الذى يتحقق ينفذ اوامره


وهذا البرناج


كود:
void main(){
TRISA=0B11110011;
TRISB=0B11111010;
maty:
portb=0b00000000;
while(PORTB.f6==1) {
if(PORTA.F0==0){PORTA.F2=1;}
if(PORTA.F0==1){PORTA.F2=0;}
if(PORTB.F4==0){PORTB.F0=1;}
if(PORTB.F4==1){PORTB.F0=0;}
if(PORTA.F1==0){PORTA.F3=1;}
if(PORTA.F1==1){PORTA.F3=0;}
if(PORTB.F5==0){PORTB.F2=1;}
if(PORTB.F5==1){PORTB.F2=0;}
}
PORTA.F3=1; delay_ms(50);
PORTB.F2=1; delay_ms(500);
while(PORTB.f7==1&&PORTA.F0==1&&PORTA.F1==1&&PORTB.F4==1&&PORTB.F5==1) {
}
PORTA.F3=0; delay_ms(5);
PORTB.F2=0; delay_ms(500);
while(PORTB.f7==1) {
if(PORTA.F0==0){PORTA.F2=1;}
if(PORTA.F0==1){PORTA.F2=0;}
if(PORTB.F4==0){PORTB.F0=1;}
if(PORTB.F4==1){PORTB.F0=0;}
if(PORTA.F1==0){PORTA.F3=1;}
if(PORTA.F1==1){PORTA.F3=0;}
if(PORTB.F5==0){PORTB.F2=1;}
if(PORTB.F5==1){PORTB.F2=0;}
}
PORTA.F2=1; delay_ms(50);
PORTB.F0=1; delay_ms(500);
while(PORTA.f4==1&&PORTB.f6==1&&PORTA.F1==1&&PORTB.F5==1&&PORTB.F4==1&&PORTA.F0==1)
{
if(PORTA.F1==0){PORTA.F3=1;}
if(PORTA.F1==1){PORTA.F3=0;}
if(PORTB.F5==0){PORTB.F2=1;}
if(PORTB.F5==1){PORTB.F2=0;}
if(PORTB.F1==0){PORTB.F0=0;}
}
PORTA=0b00000000; delay_ms(50);
PORTB=0b00000000; delay_ms(700);
while(PORTB.f7==1) {
if(PORTA.F0==0){PORTA.F2=1;}
if(PORTA.F0==1){PORTA.F2=0;}
if(PORTB.F4==0){PORTB.F0=1;}
if(PORTB.F4==1){PORTB.F0=0;}
if(PORTA.F1==0){PORTA.F3=1;}
if(PORTA.F1==1){PORTA.F3=0;}
if(PORTB.F5==0){PORTB.F2=1;}
if(PORTB.F5==1){PORTB.F2=0;}
}

PORTA.F2=1; delay_ms(50);
PORTB.F0=1; delay_ms(500);
while(PORTB.f7==1&&PORTA.F0==1&&PORTA.F1==1&&PORTB.F6==1&&PORTB.F4==1&&PORTB.F5==1&&PORTB.f3==1) {
}
PORTA=0b00000000; delay_ms(50);
PORTB=0b00000000; delay_ms(700);

goto maty;
}


التعديل الأخير تم بواسطة : احمدمعاطى بتاريخ 21-04-2010 الساعة 08:57 AM
اعلانات

robota
:: عضو ذهبي ::
تاريخ التسجيل: Jul 2009
الدولة: الخرطوم_السودان
المشاركات: 926
نشاط [ robota ]
قوة السمعة:102
قديم 21-04-2010, 08:06 AM المشاركة 2   
افتراضي


واريد معرفة الامر ( او )
كود:
||
بالتوفيق

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

الصورة الرمزية احمدمعاطى
احمدمعاطى
:: مهندس جيد ::
تاريخ التسجيل: Apr 2009
الدولة: مدينة الاسكندريه
المشاركات: 271
نشاط [ احمدمعاطى ]
قوة السمعة:0
قديم 21-04-2010, 08:50 AM المشاركة 3   
افتراضي


اشكرك اخى على سرعة الرد


ارجو التوضيح


الصورة الرمزية compiler_x
compiler_x
:: مهندس متميز ::
تاريخ التسجيل: Apr 2008
الدولة: IRAQ
المشاركات: 375
نشاط [ compiler_x ]
قوة السمعة:0
قديم 21-04-2010, 12:54 PM المشاركة 4   
افتراضي


السلام عليكم ما يقصدة الاخ robota هو ان علامة المقارنة المنطقية ( او ) التي تريد استعمالها نمثلها في لغة c++ بالعلامة ( || ) مثلا :

اذا اردت المقارنه هل ان a=3 او a=5
مثلا يكون الكود بالشكل

كود:
if ((a==5) || (a==3))


الصورة الرمزية احمدمعاطى
احمدمعاطى
:: مهندس جيد ::
تاريخ التسجيل: Apr 2009
الدولة: مدينة الاسكندريه
المشاركات: 271
نشاط [ احمدمعاطى ]
قوة السمعة:0
قديم 22-04-2010, 09:09 PM المشاركة 5   
افتراضي


شكرا اخى robota

شكرا اخى compiler_x

ارجو ان تتحملونى قليلا واتمنى ان لا اثقل عليكم

جربت هذا الامر ولم يعطينى ما اريد

ما اريده هو كالتالى

كود:
void main(){
TRISA=0B11110011;
TRISB=0B11111010;
maty:
portb=0b00000000;
               هذه الاوامر 
while(PORTB.f6==1) {
if(PORTA.F0==0){PORTA.F2=1;}
if(PORTA.F0==1){PORTA.F2=0;}
if(PORTB.F4==0){PORTB.F0=1;}
if(PORTB.F4==1){PORTB.F0=0;}
if(PORTA.F1==0){PORTA.F3=1;}
if(PORTA.F1==1){PORTA.F3=0;}
if(PORTB.F5==0){PORTB.F2=1;}
if(PORTB.F5==1){PORTB.F2=0;}
}
PORTA.F3=1; delay_ms(50);
PORTB.F2=1; delay_ms(500);
while(PORTB.f7==1&&PORTA.F0==1&&PORTA.F1==1&&PORTB.F4==1&&PORTB.F5==1) {
}
PORTA.F3=0; delay_ms(5);
PORTB.F2=0; delay_ms(500);

           اضع هنا امر (  او  ) هذه الاوامر

while(PORTB.f7==1) {
if(PORTA.F0==0){PORTA.F2=1;}
if(PORTA.F0==1){PORTA.F2=0;}
if(PORTB.F4==0){PORTB.F0=1;}
if(PORTB.F4==1){PORTB.F0=0;}
if(PORTA.F1==0){PORTA.F3=1;}
if(PORTA.F1==1){PORTA.F3=0;}
if(PORTB.F5==0){PORTB.F2=1;}
if(PORTB.F5==1){PORTB.F2=0;}
}
PORTA.F2=1; delay_ms(50);
PORTB.F0=1; delay_ms(500);
while(PORTA.f4==1&&PORTB.f6==1&&PORTA.F1==1&&PORTB.F5==1&&PORTB.F4==1&&PORTA.F0==1)
{
if(PORTA.F1==0){PORTA.F3=1;}
if(PORTA.F1==1){PORTA.F3=0;}
if(PORTB.F5==0){PORTB.F2=1;}
if(PORTB.F5==1){PORTB.F2=0;}
if(PORTB.F1==0){PORTB.F0=0;}
}
PORTA=0b00000000; delay_ms(50);
PORTB=0b00000000; delay_ms(700);

    اضع هنا امر (  او  ) هذه الاوامر

while(PORTB.f7==1) {
if(PORTA.F0==0){PORTA.F2=1;}
if(PORTA.F0==1){PORTA.F2=0;}
if(PORTB.F4==0){PORTB.F0=1;}
if(PORTB.F4==1){PORTB.F0=0;}
if(PORTA.F1==0){PORTA.F3=1;}
if(PORTA.F1==1){PORTA.F3=0;}
if(PORTB.F5==0){PORTB.F2=1;}
if(PORTB.F5==1){PORTB.F2=0;}
}

PORTA.F2=1; delay_ms(50);
PORTB.F0=1; delay_ms(500);
while(PORTB.f7==1&&PORTA.F0==1&&PORTA.F1==1&&PORTB.F6==1&&PORTB.F4==1&&PORTB.F5==1&&PORTB.f3==1) {
}
PORTA=0b00000000; delay_ms(50);
PORTB=0b00000000; delay_ms(700);

goto maty;
}


algazairi
:: مهندس ::
تاريخ التسجيل: Apr 2010
المشاركات: 1
نشاط [ algazairi ]
قوة السمعة:0
قديم 23-04-2010, 05:14 PM المشاركة 6   
افتراضي


أخي العزيز أكتب if بدل while


الصورة الرمزية compiler_x
compiler_x
:: مهندس متميز ::
تاريخ التسجيل: Apr 2008
الدولة: IRAQ
المشاركات: 375
نشاط [ compiler_x ]
قوة السمعة:0
قديم 24-04-2010, 10:04 AM المشاركة 7   
افتراضي


طيب هل تريد ان تنفذ مجموعة واحده فقط في حالة تحقق الشرط فقط ولشرط واحد ؟ ام انك تريد ان تفحص كل الشروط تباعا واي شرط يتحقق تنفذ الجمل الخاصة به ؟
فاذا كانت الحالة الثانية فهنا تستعمل جملة switch

اما اذا كانت لديك عدة شروط متحققه وبرنامجك يحتاج ان ينفذ كل شرط متحقق فهنا يجب ان يبقى البرنامج على ما هو عليه

حاول التوضيح اكثر بضرب امثلة حتى نحاول مساعدتك


التعديل الأخير تم بواسطة : compiler_x بتاريخ 24-04-2010 الساعة 10:10 AM

الصورة الرمزية احمدمعاطى
احمدمعاطى
:: مهندس جيد ::
تاريخ التسجيل: Apr 2009
الدولة: مدينة الاسكندريه
المشاركات: 271
نشاط [ احمدمعاطى ]
قوة السمعة:0
قديم 24-04-2010, 01:25 PM المشاركة 8   
افتراضي



ام انك تريد ان تفحص كل الشروط تباعا واي شرط يتحقق تنفذ الجمل الخاصة به ؟
فاذا كانت الحالة الثانية فهنا تستعمل جملة switch


شكرا اخى algazairi

شكرا اخى compiler_x

بالفعل هذا ما اريده لكن كيف استخدم جملة switch

ارجو التوضيح بمثال صغير

فانا من متابعى دروس المهندس احمد سمير

ولم ناخذ هذا الامر

ولك الشكر


التعديل الأخير تم بواسطة : احمدمعاطى بتاريخ 24-04-2010 الساعة 01:37 PM
إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


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

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025