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

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

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



السلام عليكم




ياشباب هذا الكود سهل للغاية ولكن رغم ذلك لم أوفق بكتابته بسبب ضعفي بالبرمجة فأرجوكم ساعدوني به للضرورة.
المطلوب هو أن طرف الحساس سوف يتلقى جهد إما 1 أو 0 منطقي وعندما أطبق 5 فولت أو 0 فولت أريد أن ترسل الميكروكونترولر أمر لليد أن يعمل لثانية واحدة ثم تقف,وأنا أريد أن تضيئ الليد لمدة ثانية واحدة في حال دخول 5 فولت إلى طرف الميكروكونترولر مرة واحدة وبحال دخول 0 فولت مرة واحدة وهكذا وكتبت الكود ولكن الأمر while يجعل الليد تضيئ بشكل فلاش أي أنها تضيئ وتطفي وهكذا وأنا أريد أن تعمل لمرة واحدة فقط وأعلم أن كتابة الكود اللذي كتبته خاطئة ولكن لاأعلم كيف أقوم بكتابة هكذا كود وأنا أريد أن أستخدم هذه الدارة لكي تعلمني عندما تأتي الكهرباء وتقطع أي أن الكهرباء عندما تأتي تضيئ الليد لثانية واحدة لكي تنبهني لهذا وعندما تنطفئ الكهرباء أيضا تضيئ لثانية واحدة حتى تنبهني أن الكهرباء قد قطعت.
أرجو مساعدتي ولكم جزيل الشكر

اعلانات

الصورة الرمزية عبدالله حجازى
عبدالله حجازى
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,688
نشاط [ عبدالله حجازى ]
قوة السمعة:111
قديم 06-05-2017, 12:12 AM المشاركة 2   
افتراضي


السلام عليكم




ياشباب هذا الكود سهل للغاية ولكن رغم ذلك لم أوفق بكتابته بسبب ضعفي بالبرمجة فأرجوكم ساعدوني به للضرورة.
المطلوب هو أن طرف الحساس سوف يتلقى جهد إما 1 أو 0 منطقي وعندما أطبق 5 فولت أو 0 فولت أريد أن ترسل الميكروكونترولر أمر لليد أن يعمل لثانية واحدة ثم تقف,وأنا أريد أن تضيئ الليد لمدة ثانية واحدة في حال دخول 5 فولت إلى طرف الميكروكونترولر مرة واحدة وبحال دخول 0 فولت مرة واحدة وهكذا وكتبت الكود ولكن الأمر while يجعل الليد تضيئ بشكل فلاش أي أنها تضيئ وتطفي وهكذا وأنا أريد أن تعمل لمرة واحدة فقط وأعلم أن كتابة الكود اللذي كتبته خاطئة ولكن لاأعلم كيف أقوم بكتابة هكذا كود وأنا أريد أن أستخدم هذه الدارة لكي تعلمني عندما تأتي الكهرباء وتقطع أي أن الكهرباء عندما تأتي تضيئ الليد لثانية واحدة لكي تنبهني لهذا وعندما تنطفئ الكهرباء أيضا تضيئ لثانية واحدة حتى تنبهني أن الكهرباء قد قطعت.
أرجو مساعدتي ولكم جزيل الشكر





السلام عليكم ورحمه الله

تفضل أخي اليك الكود


كود:
    void main() {
    
  CMCON = 0b00000111; //Turn off comparator on RA port

   PORTA = 0b00000000;
   TRISA = 0b00000001;

   PORTC = 0b00000000;
   TRISC = 0b00000000; //0 = Output, 1 = Input


    
    while(1){
    
      if(PORTA.F0==1){  PORTC.F0=1;  delay_ms(1000);}
      else if (PORTA.F0==0) { PORTC.F0=0;}
    
    
    }
}


تم اضافه أوامر شرطيه للتحكم في الليد ...



تحياتي لك وبالتوفيق ..

بالمناسبه انا معك في التقدم وفهم لغه السي ...

وانا تحت امرك ...

بالتوفيق

احصائية الشكر والاعجاب - 1 شكراً, 0 عدم اعجاب, 0 اعجاب
شكراً عريبى محمود ( شكر العضو على هذه المشاركة )
اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

مشتاق الله
:: مهندس متميز ::
تاريخ التسجيل: Oct 2015
المشاركات: 620
نشاط [ مشتاق الله ]
قوة السمعة:0
قديم 06-05-2017, 04:52 AM المشاركة 3   
sun


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

تعديل بسيط بعد قراءة طلب الاخ محمد ,

كود:
 void main() {
  char LIGHT_FLAG = 1;
  CMCON = 0b00000111; //Turn off comparator on RA port

   PORTA = 0b00000000;
   TRISA = 0b00000001;

   PORTC = 0b00000000;
   TRISC = 0b00000000; //0 = Output, 1 = Input

  while(1){

           if( (PORTA.F0 == 1) & (LIGHT_FLAG == 1) ){  PORTC.F0=1;  delay_ms(1000); PORTC.F0=0; LIGHT_FLAG = 0; }
           if( (PORTA.F0 == 0) & (LIGHT_FLAG == 0) ){  PORTC.F0=1;  delay_ms(1000); PORTC.F0=0; LIGHT_FLAG = 1;}
  }
}
و ما توفيقى الا بالله




mohamad19
:: مهندس متواجد ::
تاريخ التسجيل: Sep 2013
الدولة: سوريا
المشاركات: 60
نشاط [ mohamad19 ]
قوة السمعة:0
قديم 06-05-2017, 10:46 AM المشاركة 4   
افتراضي


شكرا جزيلا ياشباب
مشكور كتير أخي عبد الله حجازي ماقصرت.
أخي مشتاق الله شكرا جزيلا هاذا هو الكود اللذي أريده.


A-M-S
:: مهندس جيد ::
تاريخ التسجيل: May 2014
المشاركات: 242
نشاط [ A-M-S ]
قوة السمعة:0
قديم 05-12-2017, 11:07 PM المشاركة 5   
افتراضي


السلام عليكم ورحمه الله

تفضل أخي اليك الكود


كود:
    void main() {
    
  CMCON = 0b00000111; //Turn off comparator on RA port

   PORTA = 0b00000000;
   TRISA = 0b00000001;

   PORTC = 0b00000000;
   TRISC = 0b00000000; //0 = Output, 1 = Input


    
    while(1){
    
      if(PORTA.F0==1){  PORTC.F0=1;  delay_ms(1000);}
      else if (PORTA.F0==0) { PORTC.F0=0;}
    
    
    }
}


تم اضافه أوامر شرطيه للتحكم في الليد ...



تحياتي لك وبالتوفيق ..

بالمناسبه انا معك في التقدم وفهم لغه السي ...

وانا تحت امرك ...

بالتوفيق

تسلم ايدك ما قصرت اخي .. اخي بما انه حضرتك معطاء لو تكرمت عليا بكود يعمل على البك 16f628a هذا الكود يعمل كتايمر و يقوم بتشغيل الليد لمده اربع ساعات و يطفئه لمدة ساعتين __ انا اعلم ان الكود باذن الله تعالى سيكون بسيط و انا كتبته مسبقا و اعمل عليه و لكني احس اني لم اعمله على اساس علمي حيث اني قمت بتحويل الثواني الى دقائق ثم الى ساعات delay _ms(........); , g; و لكني اريد ككتابة امر التأخير بطريقه علميه و عمليه فلا يعقل ان نحول الساعات الى دقائق ثم الى ثواني .. هل هناك طريقة اخرى لكتابة زمن التأخير؟؟و يا ريت كتابة مثال لو سمحت ..و دمتم

إضافة رد

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

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

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


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

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