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

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

mohamad19
:: مهندس متواجد ::
تاريخ التسجيل: Sep 2013
الدولة: سوريا
المشاركات: 60
نشاط [ mohamad19 ]
قوة السمعة:0
قديم 20-03-2016, 05:00 PM المشاركة 1   
ha مساعدة في كتابة هذا الكود للميكرو 16f628a Twitter FaceBook Google+



السلام عليكم
ياشباب أنا أعمل بالمجال الإلكتروني منذ فترة وأحتاج إلى دارة تعتمد على الميكروكونترولر ولكن برمجتي ضعيفة رغم أن البرنامج بسيط وغير معقد ولكني لاأعرف بالبرمجة الكثير.
بإختصار أنا أريد أن يكون للميكروكونترولر ثلاث مداخل وثلاث مخارج والمداخل عندما يكون الفولت عليها 5 فولت أريد أن يعمل المخرج رقم واحد بعد إنقضاء ثلاث ثواني ويبقى في حالة عمل وعندما يصبح الفولت 0 على المدخل رقم واحد أريده أن يطفئ المخرج رقم واحد بعد إنقضاء ثلاث ثوان وأنا أعرف طريقة كتابة البرنامج ولكن الميكروكونترولر لايقوم بالعمل على الثلاث مداخل والمخارج معا,أقصد إذا كان المدخل رقم واحد والمخرج رقم واحد فإن باقي المداخل والمخارج لاتعمل حتى ينتهي المدخل والمخرج رقم واحد من العمل.
أقصد مثل هذا ياشباب ولكن على ثلاث مخارج وثلاث مداخل وأعتقد حسب ماأعرفه أنني بحاجة للإنتربيت حتى لاتقف الميكروكونترولر على أحد الأمور البرمجية وتتابع عملها.
كود:
if(porta.f0==1)
{delay_ms(3000),portb.f0=1;}
else{delay_ms(3000),portb.f0=0;}

اعلانات

mohamad19
:: مهندس متواجد ::
تاريخ التسجيل: Sep 2013
الدولة: سوريا
المشاركات: 60
نشاط [ mohamad19 ]
قوة السمعة:0
قديم 21-03-2016, 12:42 PM المشاركة 2   
افتراضي


ارجو الرد ياشباب للضرورة القصوى.

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

الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 10,061
نشاط [ حيدر علاج حسن ]
قوة السمعة:395
قديم 21-03-2016, 01:24 PM المشاركة 3   
افتراضي


ماذا لو تم الضغط على المفتاح الثاني اثناء اشتغال الليد الاول ؟

حيدر علاج حسن

mohamad19
:: مهندس متواجد ::
تاريخ التسجيل: Sep 2013
الدولة: سوريا
المشاركات: 60
نشاط [ mohamad19 ]
قوة السمعة:0
قديم 21-03-2016, 01:55 PM المشاركة 4   
افتراضي


شكرا لردك اخي حيدر.
اريد ان يعمل الثلاثة كل على حدة يعني مثلا اذا كان الاول يعمل وتم ضغط الثاني فالثاني يعمل ولايتوقف حتى اكتمال الامر الاول،فكرت البرنامج اخ حيدر انني اريد وصل المداخل الثلاثة وبحال عمل واحد منهم او اثنان او ثلاثة فيعمل كل مدخل ومخرج منفصل ولااريد التوقف عند اي برناج


مشتاق الله
:: مهندس متميز ::
تاريخ التسجيل: Oct 2015
المشاركات: 620
نشاط [ مشتاق الله ]
قوة السمعة:0
قديم 21-03-2016, 03:37 PM المشاركة 5   
sun


بسم الله الرحمن الرحيم

السلام عليكم و رحمة الله و بركاته

اخى اذا تم ضغط الزر الاول هل تستمر الضغط فى وضع on حتى مرور
الثلاث ثوانى , و بعدها تستمر ايضا الى ما شاء الله , ام الزر ضغطة واحدة و ترفع منها اى pushbutton اى تعطى نبضة on ثم off و بعدها يبدأ العد 3 ثوانى .

و ماذا يحدث اذا ضغطت على مفتاح on ثم بدأ العد 3 ثوانى و بعد ثانية تحول المفتاح الى off قبل ان يخرج الخرج high .



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





mohamad19
:: مهندس متواجد ::
تاريخ التسجيل: Sep 2013
الدولة: سوريا
المشاركات: 60
نشاط [ mohamad19 ]
قوة السمعة:0
قديم 21-03-2016, 05:20 PM المشاركة 6   
افتراضي


وعليكم السلام.
شكرا على اهتمامك اخي الكريم.
فعلا نسيت وضح هذه النقطة،اخي الكريم ليست بوش باان وانما كهربا دائمة يعني عند الضغط ستكون الضغطة بشكل مستمر وعند اطفاء الضغطة يعني تصبح ٠ فولت عندها ينتظر مدة ثلاث ثواني وبعدها يفصل ،ايضا اذا قمت بالضغط لمدة ثانية مثلا فلا اريد منها ان تعمل.
فكرة البرنامج انني اريد وضع دارة فعندما تاتي الكهرباء تنتظر ثلاث ثواني وبعدها تضيئ ليدة وعندما تنقطع الكهرباء تنتظر ثلاث ثواني وبعدها تفصل المخرج فتفصل الليدة.


مشتاق الله
:: مهندس متميز ::
تاريخ التسجيل: Oct 2015
المشاركات: 620
نشاط [ مشتاق الله ]
قوة السمعة:0
قديم 21-03-2016, 07:45 PM المشاركة 7   
sun


بسم الله الرحمن الرحيم

السلام عليكم و رحمة الله و بركاته

اخى الحبيب بفضل الله اليك الكود ارجو من الله ان ينفعنا بعلمه فى الدنيا و الاخرة
تم تجربته على البروتيوس و بفضل نجح .
لو احتجت اى ايضاح او تعديل الله يوفقنا لذلك .

كود:
  // MCU : 16F628A   OSCILLATOR : 4MHZ internal
 unsigned char count_00 = 0 ,count_01=0, count_10 = 0 ,count_11 = 0 , count_20=0 , count_21=1;
  //Timer2
//Prescaler 1:16; Postscaler 1:13; TMR2 Preload = 240; Actual Interrupt Time : 49.933 ms
void InitTimer2(){
  T2CON     = 0x66;
  PR2         = 240;
  TMR2IE_bit     = 1;
  INTCON     = 0xC0;
}

void Interrupt(){     // Interrupt every 49.3 ms  so counerts= 60* 49.3 = 3000 ms
  if (TMR2IF_bit){ TMR2IF_bit = 0;
  
     if (porta.B0==1){count_01++ ;count_00=0; if (count_01>=59){ portb.B0=1; count_01=0; }  }
     else { count_00++ ;count_01=0; if(count_00>=59){portb.B0=0;} }

     if (porta.B1==1){count_11++ ;count_10=0; if (count_11>=59){ portb.B1=1; count_11=0; }  }
     else { count_10++ ;count_11=0; if(count_10>=59){portb.B1=0;} }

    if (porta.B2==1){count_21++ ;count_20=0; if (count_21>=59){ portb.B2=1; count_21=0; }  }
     else { count_20++ ;count_21=0; if(count_20>=59){portb.B2=0;} }
  }
}

                      
void main() {   trisb=0;  trisa=0xff; portb=0;
InitTimer2();
CMCON |= 7 ;
  while (1){

          }
}
و ما توفيقى الا بالله
اللهم اجعله لقلوبنا ربيعا
و لنا دليلا و قائدا




التعديل الأخير تم بواسطة : مشتاق الله بتاريخ 21-03-2016 الساعة 07:48 PM
احصائية الشكر والاعجاب - 1 شكراً, 0 عدم اعجاب, 1 اعجاب
شكراً mohamad19 ( شكر العضو على هذه المشاركة )
اعجاب mohamad19 ( أعجبته المشاركة )

mohamad19
:: مهندس متواجد ::
تاريخ التسجيل: Sep 2013
الدولة: سوريا
المشاركات: 60
نشاط [ mohamad19 ]
قوة السمعة:0
قديم 21-03-2016, 08:43 PM المشاركة 8   
win ألف شكر


بصراحة لاأعرف كيف أشكرك لقد عمل الكود وبسلاسة فشكرا جزيلا لك وجعل الله هذا العمل في ميزان حسناتك.
أخي الكريم هكذا سيكون التوصيل ولايحتاج إلى وصل أي رجل أخرى من الميكرو أليس كذلك؟


أخي أنت إعتمدت طريقة العداد أليس كذلك؟
أعلم أني أثقلت عليك ولكن هل تستطيع شرح شيء بسيط للكود حتى أستطيع التعديل عليه إذا إحتجت هذا وأكون شاكر لك.
أسف على كثرة الأسئلة ولكن أريد تعلم لغة البرمجة ميكرو سي ولكن لم أجد صفحات تتحدث بعمق عن هذه اللغة وأغلب الفيديوهات المنتشرة تكون عن أشياء بسيطة باللغة فقط.

إضافة رد

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

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

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


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

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