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

   

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



اليك هذا المثال
كود:
void main()
{
  TRISB=0B00000000;
  TRISA=0B00011111;
  PORTB=0B00000000;
  
  for(;;)

    switch (PORTA)
    {
      case (0B00000001):
        PORTB=0B00000001;
        break;
      case (0B00000010):
        PORTB=0B00000010;
        break;
      case (0B00000100):
        PORTB=0B00000100;
        break;
      case (0B00001000):
        PORTB=0B00001000;
        break;
      case (0B00010000):
        PORTB=0B11111111;
   }
   
}
في هذا المثال اذا كان جملة switch تختبر اول شرط
كود:
case (0B00000001):
اذا تحقق فانها تنفذ الجملة
كود:
      PORTB=0B00000001;
ويخرج البرنامج عن التنفيذ الى التي تاتي بعد هيكل switch اما اذا لم يتحقق الشرط الاول فانها تقل الى
كود:
    case (0B00000010):
فاذا تحققت فانها تنفذ
كود:
   PORTB=0B00000010;
وتخرج من جملة switch
وهكذا ....

اذا في اي شي غير واضح اخبرني

اعلانات

الصورة الرمزية احمدمعاطى
احمدمعاطى
:: مهندس جيد ::
تاريخ التسجيل: Apr 2009
الدولة: مدينة الاسكندريه
المشاركات: 272
نشاط [ احمدمعاطى ]
قوة السمعة:
قديم 27-04-2010, 06:03 PM المشاركة 10   
افتراضي


ارجو المعذره على تاخر الرد

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


لكن يا اخى


عند الضغط على السويتش لا يعطى اى خرج

ارجو التوضيح اكثر من فضلك

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

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

الصورة الرمزية compiler_x
compiler_x
:: مهندس متميز ::
تاريخ التسجيل: Apr 2008
الدولة: IRAQ
المشاركات: 374
نشاط [ compiler_x ]
قوة السمعة:
قديم 27-04-2010, 08:05 PM المشاركة 11   
افتراضي


ارجو المعذره على تاخر الرد


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


لكن يا اخى


عند الضغط على السويتش لا يعطى اى خرج

ارجو التوضيح اكثر من فضلك


واتمنى ان لا اثقل عليك
البرنامج انا منفذه على البروتس وكان عامل معي تمام
ومع ذلك ساحاول التوضيح
هذا المثال يقوم باختبار المنفذ A الذي عرفناه على انه منفذ دخول TRISA=0B00011111 والمنفذ B على اساس انه منفذ اخراج حسب التعريف TRISB=0B00000000 طبعا جملة for تعرفها لذا سادخل مباشرة الى جملة switch هذه الجملة تختبر المتغير بين الاقواس وهنا في البرنامج هو PORTA وبالاعتماد على قيمة PORTA فانه سيختبر هل ان قيمة PORTA تساوي الحالة الاولى والتي هي
كود:
case (0B00000001):
فاذا كان PORTA قيمته 00000001 اي انه البن RA0 عليه جهد Hi فان الشرط متحقق ، بمعنى اخر اذا تساوت قيمة المنفذ مع ما موجود بين القوس في case الاولى فان تنفيذ البرنامج سيدخل الى الجمل التي بعد هذه ال case المتحققة وينفذها الى ان تصل الى كلمة BREAK و التي تعني توقف واذهب الى نهاية جملة switch بدون المرور بالحالات الاخرى من case اي انه سينقل التنفيذ الى خارج القوس الخاص بجملة switch معلنا عن نهايتها ويعود هنا الى تكرار جملة for هذا في حال كان PORTA مساوي الى ما موجود بين القوسين في جملة case الاولى .
اما اذا لم يكن مساويا لها فانه سينتقل الى جملة case التي بعدها دون تنفيذ ما موجود في case الاولى فاذا تساوى PORTA مع ما موجود بين القوسين في جملة case الثانية فانه سينفذ والا فانه سيختبر الثالثة وهكذا ......

اما اذا لم يجد شي مطابق فانه لم ينفذ شي

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


الصورة الرمزية احمدمعاطى
احمدمعاطى
:: مهندس جيد ::
تاريخ التسجيل: Apr 2009
الدولة: مدينة الاسكندريه
المشاركات: 272
نشاط [ احمدمعاطى ]
قوة السمعة:
قديم 27-04-2010, 08:55 PM المشاركة 12   
افتراضي


شكرا اخى على اهتمامك لكن اجد مشكله فى التنفيذ


مرفق ما تم عمله ارجو مساعدتى



http://ifile.it/0fueyw4





الصورة الرمزية compiler_x
compiler_x
:: مهندس متميز ::
تاريخ التسجيل: Apr 2008
الدولة: IRAQ
المشاركات: 374
نشاط [ compiler_x ]
قوة السمعة:
قديم 27-04-2010, 09:51 PM المشاركة 13   
افتراضي


اخي لم استطع تنزيل الملف المرفق ارجوا الرفع على موقع اخر


الصورة الرمزية احمدمعاطى
احمدمعاطى
:: مهندس جيد ::
تاريخ التسجيل: Apr 2009
الدولة: مدينة الاسكندريه
المشاركات: 272
نشاط [ احمدمعاطى ]
قوة السمعة:
قديم 27-04-2010, 10:08 PM المشاركة 14   
افتراضي


شكرا اخى على اهتمامك

من هنا



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


اخي هناك خطا في تعاملك مع المنافذ فهناك pins انت معرفها على اساس انها دخول وانت في البرنامج تستخدمها ك ( دخول وخروج في نفس الوقت ) وهذا شي غير منطقي حاول ترتيب تعريفات البن الدخول فقط للدخول والخروج فقط للخروج

كما انك لم تذكر في ملف الوورد البنات pins تابعة لاي منفذ a او b ؟


الصورة الرمزية احمدمعاطى
احمدمعاطى
:: مهندس جيد ::
تاريخ التسجيل: Apr 2009
الدولة: مدينة الاسكندريه
المشاركات: 272
نشاط [ احمدمعاطى ]
قوة السمعة:
قديم 03-05-2010, 05:39 PM المشاركة 16   
افتراضي


اخي هناك خطا في تعاملك مع المنافذ فهناك pins انت معرفها على اساس انها دخول وانت في البرنامج تستخدمها ك ( دخول وخروج في نفس الوقت ) وهذا شي غير منطقي حاول ترتيب تعريفات البن الدخول فقط للدخول والخروج فقط للخروج

اخى المشروع يعمل جيدا

والمطلوب تعديل بسيط به


والدائره تم طبعها على البورد


واريد التعديل على البرنامج كما وضحت لك



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