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

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

الصورة الرمزية عبدالله حجازى
عبدالله حجازى
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,688
نشاط [ عبدالله حجازى ]
قوة السمعة:109
قديم 11-12-2019, 08:06 AM المشاركة 1   
افتراضي الميكروكنترول من عائلة pic وطرق برمجته بستخد ام MikroC Twitter FaceBook Google+



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

ان شاء الله في هذا الموضوع سوف نتحدث عن طريقة برمجة الميكروكنترول بستخدام لغة "C " والمترجم MikroC

وسوف نتناول أهم النقاط الأساسية المتبعة في إنشاء مشروع جديد بستخدام المتحكمات الدقيقه .. من عائلة pic ...

والأن نحضر ونجهز البرامج والأدوات لكي نمشي خطوة ب خطوة في مشوار برمجة الميكرو كنترول والوصول الى الإحتراف إن شاء الله ...

اولا يتم تنزيل برنامج المترجم mikroC PRO for PIC وسوف اضع لكم الروابط ..




رابط البرنامج.
https://www.qariya.info/vb/showthrea...E6%CA%E6%CC%CF

رابط البرنامج. اخر
http://www.qariya.info/vb/showthread.php?t=156830

رابط البرنامج. اخر
http://www.qariya.info/vb/showthread.php?t=211140

لم اجد روابط مباشرة لتحميل برنامج المحكاة proteus isis وسوف اقوم برفع هذة البرامج لكي يكون هناك توافق في نسخة البرامج لكي نسهل تجربة ومحكاة الدوائر

والأن نكمل في الأدوات المطلوبة

نحتاج مبرمجه مناسبة لبرمجة عائلة البك ميكروكنترول وتوجد هنا العديد من هذة المبرمجات في مشاركات للأخوه ..
وان شاء الله ابحث لكم عن دائرة لأنشاء مبرمجة سهلة

ايضا نحتاج الي لوحة تجارب
ميكرو pic16f877a لكي نقوم بالشرح علية أو اشرح علي أي متحكم يتوفر لديكم
منظم جهد 5 فولت 7805
10 مقاومة 10 كيلو
كرستال 4 ميجا هرتز
2 مكثف 22 بيكو فاراد
مكثف 10 ميكرو فاراد
مكثف 220ميكرو فاراد
مكثف 103 بيكو فاراد
ليدات بألوان مختلفة 5 ميلي
10 مفتاح برس ضاغط
شاشة LCD 16*2 بيكسل
شاشة 7 سيجمنت من أي نوع كاثود مشترك أو انود مشترك
حساس حرارة LM35

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




انصح كل متابع لهذا الموضوع ان يقرأ ويتعمق في المواضيع السابقه لمهندسينا الأفاضل حول شرح برمجه البك والتحدث عنها بشكل علمي ودقيق وشرح البنية الداخلية للمتحكمات
لأن لا اريد تكرار ما تم شرحه من اخوانا المهندسين الأفاضل في مشاركاتهم الرائعه ..

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


جاري رفع البرامج والتحضير لأول مشروع لك في عالم المتحكمات استعد وكون ومتأكد أن الموضوع سهل جداا أن شاء الله

بالتوفيق للجميع

احصائية الشكر والاعجاب - 5 شكراً, 0 عدم اعجاب, 5 اعجاب
شكراً F.Abdelaziz, ماجد عباس محمد, مسلم11, سعيد قادر, salah56bachir ( شكر العضو على هذه المشاركة )
اعلانات

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


في البداية تنويه أن جاري رفع البرامج وحين الإنتهاء من رفعها سوف اشارك الروابط هنا

بسم الله نبدأ في تنفيذ اول مشروع ...

خلينا نقول أننا محتاجين بناء دائرة تايمر بسيطه ... وعندما نتحدث عن التايمر يحضر في تفكيرنا المتكاملة الشهيرة 555 تايمر ..

ولكن هل نستطيع تغيير التايمر بشكل اتوماتيكي هل نستطيع ايقاف عمل التايمر بزمن محدد ومن ثم تشغيله ايضاا هل نستطيع التحكم في عرض النبضه والتردد ونربطها بشروط معينه ..

كل هذة التفاصيل سيكون الأمر صعب ومجهد لو تم بناء الدائرة بستخدام متكاملة التايمر 555 ..

ولكن الوضع مختلف تماما مع استخدامنا المتحكم ميكرو كنترول

...
نبدأ بتصميم الدائرة ..





عند محكاة الدائرة لا داعي الي وضع كرستالة ومنظم الجهد البرنامج يعمل محكاة بدونهم ..

والأن نبدأ في كتابة الكود ..

نذهب الي برنامج ميكروسي برو وننشأ مشروع جديد ونختار البك PIC16F877A ونضبط تردد الكرستالة علي 4 ميجا هرتز ..

بعد انشاء مشروع جديد تظهر هذة النافذة

وقد تم كتابة دالة البداية من قبل البرنامج نفسة وهذا الوضع الإفتراضي للبرنامج عادة بدأ هكذا ..
وفي هذة الصورة تم التعليق علي التعليمات الموجودة لكي نفهم دور كل تعليمه





والأن نشرح هذة التعليمات

كود:
  void main()
هذة هي دالة البداية وهنا يبدأ البرنامج منها وقرأة كل التعليمات اللتي تأتي بعدها نزولا لأسفل بالترتيب ..

ونأتي هنا الي كتابة كود لبرنامج تايمر للتحكم في اضاءة ليد واطفائة كل واحد سانية ..




هنا كما هوا موضح في الشرح في الصورة بدأ البرنامج بالدالة البداية أو كما تسمي الداله الرئيسيه
وبعد ذالك ينزل البرنامج لقرأة باقي التعليمات وهنا تأتي تعليمات التعريف وعادة دائما يجب كتابة كل التعريفات اللتي نحتاجها في البرنامج نكتبها مباشر بعد الداله الرئيسيه
وكما نلاحظ في هذا الأمر
كود:
   TRISB=0B00000000;
هنا يوجد 8 اصفار بعد حرف ال B وهنا كل صفر من ال 8 اصفار يتحكم في بن من لل8 بنات للبورت ( ب ) وعند كتابة 8 اصفار هنا تم تهيئه كل البورت ك خروج فولت فقط

وبعد ذالك جاء دور التعليه التالية
كود:
  PORTB=0B00000000;
. وهوا اسناد أمر مباشر للمتحكم بأن يخرج صفر فولت علي جميع ارجل البورت ( ب )

وبعد ذالك ندخل الي حلقة تكرار الكود [CODE while(1)][/CODE]. ويوجد لها قوس بداية ونهاية وتكرر كل الكود الموجود داخل القوسين الي ما لا نهايه ... ويوجد أوامر تمكننا من الخروج من هذة الحلقة والذهاب لتنفيذ كود أخر سوف نتحدث عنها في المشاريع القادمه ..

نأتي الأن الي الكود اللذي موجود داخل حلقة التكرار
كود:
  PORTB=0B00000001;
وهنا لو نلاحظ أن تم وضح واحد مكان الصفر رقم واحد وهكذا نخبر الميكرو أن يخرج 5 فولت علي البن رقم واحد للبورت ( ب ) ويأتي بعد ذالك أمر انتظار واحد سانية [CODE delay_ms(1000);][/CODE] ويمكنك التحكم في وقت الأنتظار من خلال تغيير الرقم داخل القوسين

وبعد ذالك نعطي أمر بأطفاء الليد
كود:
 PORTB=0B00000000;
                       delay_ms(1000);
ولإنتظار واحد سانية وبعد ذالك يذهب البرنامج الي بداية قوس حلقة التكرار ويتم تكرار البرنامج الي ما لا نهايه ..


كود البرنامج

كود:
                  void main()
  
              {
                     TRISB=0B00000000;
                     PORTB=0B00000000;


                     while(1)
                  
                    {

                       PORTB=0B00000001;
                       delay_ms(1000);


                       PORTB=0B00000000;
                       delay_ms(1000);
                       
                       
                   }
               
               
               }
المشروع القادم التحكم في منافذ المتحكم بأوامر شرطية


التعديل الأخير تم بواسطة : عبدالله حجازى بتاريخ 12-12-2019 الساعة 01:37 AM
احصائية الشكر والاعجاب - 2 شكراً, 0 عدم اعجاب, 2 اعجاب
شكراً مسلم11, اوشة محمود ( شكر العضو على هذه المشاركة )
اعجاب مسلم11, اوشة محمود ( أعجبته المشاركة )
اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

الصورة الرمزية وليدمحمدالمخلص
وليدمحمدالمخلص
:: مهندس متواجد ::
تاريخ التسجيل: Oct 2012
الدولة: الشرقية-مصر
المشاركات: 150
نشاط [ وليدمحمدالمخلص ]
قوة السمعة:0
قديم 12-12-2019, 02:06 PM المشاركة 3   
افتراضي


في البداية تنويه أن جاري رفع البرامج وحين الإنتهاء من رفعها سوف اشارك الروابط هنا

بسم الله نبدأ في تنفيذ اول مشروع ...

خلينا نقول أننا محتاجين بناء دائرة تايمر بسيطه ... وعندما نتحدث عن التايمر يحضر في تفكيرنا المتكاملة الشهيرة 555 تايمر ..

ولكن هل نستطيع تغيير التايمر بشكل اتوماتيكي هل نستطيع ايقاف عمل التايمر بزمن محدد ومن ثم تشغيله ايضاا هل نستطيع التحكم في عرض النبضه والتردد ونربطها بشروط معينه ..

كل هذة التفاصيل سيكون الأمر صعب ومجهد لو تم بناء الدائرة بستخدام متكاملة التايمر 555 ..

ولكن الوضع مختلف تماما مع استخدامنا المتحكم ميكرو كنترول

...
نبدأ بتصميم الدائرة ..





عند محكاة الدائرة لا داعي الي وضع كرستالة ومنظم الجهد البرنامج يعمل محكاة بدونهم ..

والأن نبدأ في كتابة الكود ..

نذهب الي برنامج ميكروسي برو وننشأ مشروع جديد ونختار البك PIC16F877A ونضبط تردد الكرستالة علي 4 ميجا هرتز ..

بعد انشاء مشروع جديد تظهر هذة النافذة

وقد تم كتابة دالة البداية من قبل البرنامج نفسة وهذا الوضع الإفتراضي للبرنامج عادة بدأ هكذا ..
وفي هذة الصورة تم التعليق علي التعليمات الموجودة لكي نفهم دور كل تعليمه





والأن نشرح هذة التعليمات

كود:
  void main()
هذة هي دالة البداية وهنا يبدأ البرنامج منها وقرأة كل التعليمات اللتي تأتي بعدها نزولا لأسفل بالترتيب ..

ونأتي هنا الي كتابة كود لبرنامج تايمر للتحكم في اضاءة ليد واطفائة كل واحد سانية ..




هنا كما هوا موضح في الشرح في الصورة بدأ البرنامج بالدالة البداية أو كما تسمي الداله الرئيسيه
وبعد ذالك ينزل البرنامج لقرأة باقي التعليمات وهنا تأتي تعليمات التعريف وعادة دائما يجب كتابة كل التعريفات اللتي نحتاجها في البرنامج نكتبها مباشر بعد الداله الرئيسيه
وكما نلاحظ في هذا الأمر
كود:
   TRISB=0B00000000;
هنا يوجد 8 اصفار بعد حرف ال B وهنا كل صفر من ال 8 اصفار يتحكم في بن من لل8 بنات للبورت ( ب ) وعند كتابة 8 اصفار هنا تم تهيئه كل البورت ك خروج فولت فقط

وبعد ذالك جاء دور التعليه التالية
كود:
  PORTB=0B00000000;
. وهوا اسناد أمر مباشر للمتحكم بأن يخرج صفر فولت علي جميع ارجل البورت ( ب )

وبعد ذالك ندخل الي حلقة تكرار الكود [CODE while(1)][/CODE]. ويوجد لها قوس بداية ونهاية وتكرر كل الكود الموجود داخل القوسين الي ما لا نهايه ... ويوجد أوامر تمكننا من الخروج من هذة الحلقة والذهاب لتنفيذ كود أخر سوف نتحدث عنها في المشاريع القادمه ..

نأتي الأن الي الكود اللذي موجود داخل حلقة التكرار
كود:
  PORTB=0B00000001;
وهنا لو نلاحظ أن تم وضح واحد مكان الصفر رقم واحد وهكذا نخبر الميكرو أن يخرج 5 فولت علي البن رقم واحد للبورت ( ب ) ويأتي بعد ذالك أمر انتظار واحد سانية [CODE delay_ms(1000);][/CODE] ويمكنك التحكم في وقت الأنتظار من خلال تغيير الرقم داخل القوسين

وبعد ذالك نعطي أمر بأطفاء الليد
كود:
 PORTB=0B00000000;
                       delay_ms(1000);
ولإنتظار واحد سانية وبعد ذالك يذهب البرنامج الي بداية قوس حلقة التكرار ويتم تكرار البرنامج الي ما لا نهايه ..


كود البرنامج

كود:
                  void main()
  
              {
                     TRISB=0B00000000;
                     PORTB=0B00000000;


                     while(1)
                  
                    {

                       PORTB=0B00000001;
                       delay_ms(1000);


                       PORTB=0B00000000;
                       delay_ms(1000);
                       
                       
                   }
               
               
               }
المشروع القادم التحكم في منافذ المتحكم بأوامر شرطية
بارك الله فيك

احصائية الشكر والاعجاب - 2 شكراً, 0 عدم اعجاب, 0 اعجاب
شكراً اوشة محمود, عبدالله حجازى ( شكر العضو على هذه المشاركة )

الصورة الرمزية مسلم11
مسلم11
:: عضو ذهبي ::
تاريخ التسجيل: Jun 2009
الدولة: بلاد الشام
المشاركات: 3,789
نشاط [ مسلم11 ]
قوة السمعة:181
قديم 12-12-2019, 08:14 PM المشاركة 4   
افتراضي


السلام عليكم ورحمة الله وبركاته
شكرا لك على موضوعك هذا الذي انتظره على احر من الجمر .
من اخ فاضل اعتز به وبالله احببته ومن متابعته لا مفر .
صدوق خلوق بالعطاء والخير منهمر .
حياك الله وبارك بك 😄😄😄😄.
اخي عبد الله كنت اقرأ عن المتحكمات ولفت نظري ان الدالة void main تكون ببداية كل برنامج يعني يمكن اعتبار ان هذه الدالة اساسية وواجب كتابتها وليس لنا تدخل بها او لاتتدخل في عمل البرنامج لا في هذا المشروع او غيره مجرد عنوان ويجب التسليم به كما هو .
التعليمات tris و bort مفهومتان جيدا بارك الله بك .
ساقوم على تنفيذ المشروع على بروتس وعود اليك سريعا ان شاء الله
خالص شكري وامتناني اليك .

احصائية الشكر والاعجاب - 2 شكراً, 0 عدم اعجاب, 1 اعجاب
شكراً عبدالله حجازى, اوشة محمود ( شكر العضو على هذه المشاركة )
اعجاب عبدالله حجازى ( أعجبته المشاركة )

الصورة الرمزية عبدالله حجازى
عبدالله حجازى
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,688
نشاط [ عبدالله حجازى ]
قوة السمعة:109
قديم 13-12-2019, 02:26 AM المشاركة 5   
افتراضي السلام عليكم ورحمه الله


شكرا جزيلا اخي مسلم بارك الله فيك

بالنسبه لدالة البدايه او الدالة الرئيسيه..
بالفعل هيا من الأساسيات والبرنامج يكتبها اتوماتيك عند بداية كتابة أي برنامج جديد وتكتب هكذا كما هي ولا يمكن تغيير اسمها لأنها تعتبر تعريف للبرنامج لكي يعلم من اين يبدأ
علي عكس الدوال الفرعيه يمكننا كتابة اسمها كما نشاء بشرط عدم تكرار نفس الأسم أو استخدام رموز رياضيه في كتابة الأسم ولا نستهدم الفواصل ...

والأن نبدأ في التطوير والتعمق اكثر بستخدام الأوامر الشرطيه وهنا نتوقف قليلا لأن من أهم الأوامر في البرمجه هي الأوامر الشرطيه وسيكون هناك العديد من التطبيقات في الأوامر الشرطيه

مخطط الدائرة




كود البرنامج

كود:
 

                int  X=0;

                  void main()
  
              {
                     TRISB=0;
                     PORTB=0;

                     TRISD=1;

                     while(1)
                  
                    {
                    
                      if( PORTD.F0==1 ){X++; delay_ms(250);}
                    
                      if(X==1){ PORTB=1;   }
                      if(X==2){ PORTB=2;   }
                      if(X==3){ PORTB=4;   }
                      if(X==4){ PORTB=8;   }
                      if(X==5){ PORTB=16;  }
                      if(X==6){ PORTB=32;  }
                      if(X==7){ PORTB=64;  }
                      if(X==8){ PORTB=128; }
                      
                   }
               
               
               }

والأن نشرح الكود نبدأ من أول الكود
كود:
 int  X=0;
. هنا تم الأعلان عن متغير وأسمة. من نوع انتيجر ..

ونذهب بعد ذالك الي الدالة الرئيسيه [CODE void main()][/CODE] وقد تم شرحها هي وأمر
كود:
 TRISB=0;
                     PORTB=0;
. وهنا نلاحظ اختلاف في صيغة كتابة الأمر وهنا نحن بدأنا نكتب الكود بشكل احترافي. حسناا من أين أتي هذا الرقم وبالمناسبه هذا الرقم يسما بالنظام DECIMAL ولكي نفهم أكثر نذهب الي برنامج ميكرو سي لكي نستطيع تحويل نظام كتابة الأرقام من النظام BINARY الي نظام DECIMAL ..

لاحظ الصورة..




نستطيع تحويل نظام كتابة الأرقام من هذة القائمة لكي يكون الكود اكثر احترافية

والأن هي بنا نتعرف علي هذا الأمر الجديد وهوا تهيئة البن رقم صفر في البورت D ك دخول لكي نربطه علي المفتاح

وكتبنا أمر التهيئة بنظام DECIMAL. هكذا
كود:
   TRISD.F0=1;
ولو كتبناه بالنظام BINARY سيكون هكذا [CODE TRISD=0B00000001;][/CODE]
هل لاحظنا الإختلاف ..
نأتي الأن لتفصيل وشرح هذا الأمر
كود:
   TRISD.F0=1;
TRISD هي أمر تهيئه للبورت D وتم تحديد رقم البن اللذي نريد تهيئته ك دخل هكذا .F0=1. حرف F0 هوا للدلاله علي البن رقم صفر ولو تم تغيير الرقم صفر سوف نختار بن أخر مثلا هكذا
كود:
   TRISD.F7=1;
نلاحظ استبدلنا الرقم صفر بالرقم 7 وهكذا اخترنا البن رقم 8 للبورت D ك دخول وهذا الأمر نكتبة عادة عندما نريد تهيئه بن واحد من البورت ويمكننا تهيئة البورت بالكامل ك دخول أو خروج هكذا. .
كود:
 TRISD=255;
هنا تم تهيئة البورت D بالكامل ك دخول ويمكننا تخصيص عدد معين من البنات دخول وخروج هكذا [CODE TRISD=15;][/CODE] هنا تم تهيئة الأربع بنات من البن رقم صفر الي البن رقم 3 ك دخول وتم تهيئه بداية من البن رقم 4 الي البن 7 ك خروج .. وهكذا يمكننا تهيئه ما نشاء من دخول وخروج من بنات ولكي نسهل التحويل بين نظامين BINARY و DECIMAL نذهب الي قائمة التحويل ونختار نظام 8 بيت كما في شرح الصورة اعلاة

نذهب الأن لشرح البرنامج ...


كود:
 while(1)
                  
                    {
                    
                      if( PORTD.F0==1 ){X++; delay_ms(250);}
                    
                      if(X==1){ PORTB=1;   }
                      if(X==2){ PORTB=2;   }
                      if(X==3){ PORTB=4;   }
                      if(X==4){ PORTB=8;   }
                      if(X==5){ PORTB=16;  }
                      if(X==6){ PORTB=32;  }
                      if(X==7){ PORTB=64;  }
                      if(X==8){ PORTB=128; }
                      
                   }

اتفقنا في الشرح السابج للتجربة الأولي وعرفنا دور علقة التكرار
كود:
 while(1)
ويمكننا أن نجعلها حلقة مربوطه بشرط معين سوف نتكلم عنها في مواضيع قادمه انشاء الله

نشرح حلقة الشرط.
كود:
  if( PORTD.F0==1 ){X++; delay_ms(250);}
. هنا قد فهمنا كيف نختار رقم البن اللذي نريد التعامل معه هكذا PORTD.F0 وهوا تم اختيار البن رقم صفر للتعامل معها. نشرح أمر الشرط بالتفصيل. لاحظ توجد حلقتين أو قوسين قي أمر الشرط القوسين أو الجزء الأول من أمر الشرط
كود:
if( PORTD.F0==1 )
وهنا البرنامج يهتبر دوما هل تحقق الشرط أم لا. وهنا علامة == تدل علي المنطق ( لو ) ورقم واحد يدل علي الواحد منطقي والصفر طبعا يدل علي الصفر منطق وهنا أخترنا أمر تحقق الشرط بالواحد منطقي ويعبر هنا في الواقع أن لو تم تطبيق 5 فولتلاعلي البن رقم صفر في البورت PORTD نفذ الأوامر الموجوده داخل القوسين وهنا نأتي للجزء الثاني من أمر الشرط
كود:
{X++; delay_ms(250);}
. هذا الكود يقوم بذيادة المتغير X++ بواحد عند كل مرة يتحقق فيها الشرط من خلال علامة ++
وبعد ذالك ينتظر البرنامج 250 ميلي سانيه ليعطي للمستخدم فرصه ووقت كافي لكي يرفع يده من علي المفتاح لأن الميكرو يستطيع التحقق من أمر الشرط الاف المرات في السانيه الواحده وأن لم يكن وقت الإنتظار هذا غير موجود هنا لا نتوقع كم تم ذيادة المتغير كام مرة ~لأن الميكرو سريع جداا في تنفيذ الأوامر

بعد ذالك ندخل علي عدد 8 أوامر شرطيه ولكن هذة المرة تختبر قيمة المتغير X

كود:
   if(X==1){ PORTB=1;   }
وهذا الكود يقول لو X=1 أخرج 5 فولت علي البن رقم صفر للبورت B

وهنا
كود:
 if(X==2){ PORTB=2;   }
يقول هذا الكود لو X=2 أخرج علي البن رقم واحد للبورت B
5 فولت وأجعل باقي البورت = صفر

وهكذا مع باقي الأوامر الشرطيه
اعطي لك الوقت لكي تنفذ الدائرة وتخابر الكود
وهنا ملاحظة تم التعمد في عدم وضع جزء في الكود وادعوك لأستكشافة وللتسهيل عليك تذكر أن حالة البورت. B. معتمدة اعتماد كامل في خرجها للفولت علي قيمة المتغير X ادعك تستكشف ولا حرج في السؤال


التعديل الأخير تم بواسطة : عبدالله حجازى بتاريخ 13-12-2019 الساعة 02:31 AM
احصائية الشكر والاعجاب - 2 شكراً, 0 عدم اعجاب, 2 اعجاب
شكراً مسلم11, اوشة محمود ( شكر العضو على هذه المشاركة )
اعجاب مسلم11, اوشة محمود ( أعجبته المشاركة )

الصورة الرمزية عبدالله حجازى
عبدالله حجازى
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,688
نشاط [ عبدالله حجازى ]
قوة السمعة:109
قديم 13-12-2019, 02:34 AM المشاركة 6   
افتراضي


حياك الله شكراا جزيلا أخي

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

الصورة الرمزية عريبى محمود
عريبى محمود
:: ( رحمه الله عليه ) ::
تاريخ التسجيل: Jan 2009
الدولة: لا تسأل الطغاه لماذا طغو بل اسأل العبيد لماذا انحنو
المشاركات: 3,139
نشاط [ عريبى محمود ]
قوة السمعة:186
قديم 13-12-2019, 06:21 AM المشاركة 7   
x4


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

الكــــــود الناقص باالون الاحمـــــــر



كود:
int  X=0;

                  void main()
  
              {
                     TRISB=0;
                     PORTB=0;

                     TRISD=1;

                     while(1)
                  
                    {
                    
                      if( PORTD.F0==1 ){X++; delay_ms(250);}
                    
                      if(X==1){ PORTB=1;   }
                      if(X==2){ PORTB=2;   }
                      if(X==3){ PORTB=4;   }
                      if(X==4){ PORTB=8;   }
                      if(X==5){ PORTB=16;  }
                      if(X==6){ PORTB=32;  }
                      if(X==7){ PORTB=64 ;  }
                      if(X==8){ PORTB=128; X=9 ;}
                      if(X==10){ PORTB=0;  X=0; }
                   }
               
               
               }

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

الصورة الرمزية مسلم11
مسلم11
:: عضو ذهبي ::
تاريخ التسجيل: Jun 2009
الدولة: بلاد الشام
المشاركات: 3,789
نشاط [ مسلم11 ]
قوة السمعة:181
قديم 13-12-2019, 11:54 AM المشاركة 8   
افتراضي


السلام عليكم ورحمة الله وبركاته
الله الله في اخيكم .
انتظر هذه الدورة منذ زمن و قد حان وقتها واخيكم يركب دراجة صغيرة بثلاث عجلات وانتم تتمتعون بالفيراري واللمبرغيني وفاتحين على الرابع و طريقكم سهل والاشارة خضراء .😓😓😓😢😢
ارجوك ارجوك اخي عبد الله التريث قليلا فلقد حملت البرنامج الذي ارفقته ولم ينصب عندي micro c فهل اعتمد على البرنامج الموجود عندي انه نسخة سابقة عن هذا .
اريد تفريد اوامر ومعطيات هذه اللغة .
اذا الدالة void main من اساس البرنامج ونقطة بدايته .... تمام .
Tris تعيين المنافذ اما خرج او دخل .... تمام .
Port تعيين حالة المنافذ اما ان تخرج جهد ام لا ...... تمام .
Wile حلقة دوارة يتم تنفيذ الاوامر التي بداخلها مالم يشترط غير ذلك ...تمام .
الرقم (1) بعد wile ما عمله هنا .. هل لتعيين اسم لهذه التعليمة وان كان كذلك لصالح من ... اي للمعالج كي يعرفها ام للكاتب الذي يكتب البرنامج ؟؟ .
الاقواس { } واجب وضعها عند بداية البرنامج ونهايته ولا حظت ايضا وجودها عند التعليمة wile لماذا ؟؟ هل استطيع حذف الاقواس ان كان المعالج يقرأ مابين القوسين الرئيسيين الخاصيين بالدالة الرئيسية .
سؤال من باب الفضول بالنسبة لتحديد زمن التاخير 1000ms هل يفهم المعالج فقط الميلي ثانية ام يمكن كتابة الامر هكذا delay_1s وافرض مثلا انني احتاج لتنفيذ اوامر كل ٢٤ ساعة وكل اسبوع وكل شهر فمالحل .
هذا السؤال يلزمني فيما بعد ان رايت التريث بالاجابة لغاية ما فلاباس .
حياك الله وبارك بك .
حقيقة اعجبني جدا جدا اسلوبك اذ وضعت تمرينا للتمرن عليه ولكن سبق الحد الكلام واجابك باشق القرية .
مازلت هيثما عاريا لا ريش ولا حتى ما استطيع الاستعانة به لفعل شيء وانتظر من شاهين القرية الاخ عبد الله الاخذ بيدي لتعلم فن الطيران في سماء البرمجة والتحليق بها عاليا للاستمتاع بجمالها وحلاوة طعمها وشم نسيمها وقبل ذلك تقويتي على ذلك .
لا اخفيك محاولة طلب ذلك من اصدقاء عبر النت لكن مهما كانت اللغة قوية تبقى الام هي الاساس والطريق الرئيسي للعقل من اجل حسن ادراك مايحصل ويجري اعود واكرر رجائي بالتريث والتنقل رويدا رويدا بين تضاريس هذا الامر الذي انتظرته واتشوق للولوج به والولوغ لاعماقه حسب المستطاع بداخلي نار تستعر لا اجد لها منفذا بحيث احدد لها TRIS خاص بها ولا ترويضها لاجعل لها PORT الجمها به فهي كال WILE تدور باحشائي دون تعيين delay لها فتهدئها وتريحني .... ارجو ان اكون اجدت التعبير في هذا فكما يقولون الدواء من جنس الداء 😂😂😂😂😂
حياكم الله وبارك بكم


التعديل الأخير تم بواسطة : مسلم11 بتاريخ 13-12-2019 الساعة 12:22 PM
إضافة رد

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

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

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


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

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