الميكروكنترول من عائلة pic وطرق برمجته بستخد ام MikroC
قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الاليقسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots
اخي الكريم لاحظت ان الاخ عريبي كتب بقية البرنامج كما سبق فهل ماكتبه كان بشكل مختصر ام هذه طريقة اخرى لكتابة البرنامج و كتبت تتمة البرنامج كما بالصورة فهل صحيح هذا .
اخي الكريم لاحظت ان الاخ عريبي كتب بقية البرنامج كما سبق فهل ماكتبه كان بشكل مختصر ام هذه طريقة اخرى لكتابة البرنامج و كتبت تتمة البرنامج كما بالصورة فهل صحيح هذا .
السلام عليكم ورحمة الله وبركاته
اخى الكريم
لابــــــد ان تتعلم الارقام الرقمية لكى تتابع وتتعلم البرمجة لانها من اسس تعلم البرمجة ....... بعد اذن الاخ عبد الله اليك ملف للارقام الرقمية اللى يهمك منه الرقم العشرى للتحويل الى البينارى
حياك الله اخي عريبي
الارقام الثنائية و الثمانية اعرفها واعلم كيفية التحويل بينها اعلم كل انظمة العد بفضل الله
والسؤال مادخل هذ الارقام هنا هل تقصد ان الارقام التي كتبتها بالحل 256...512
لابــــــد ان تتعلم الارقام الرقمية لكى تتابع وتتعلم البرمجة لانها من اسس تعلم البرمجة ....... بعد اذن الاخ عبد الله اليك ملف للارقام الرقمية اللى يهمك منه الرقم العشرى للتحويل الى البينارى
السلام عليكم ورحمة الله وبركاته
اخى الكريم
بعد اذن الاخ عبد الله ..... اليك صورة من وزن هذه الارقام لعدد مصفوفة 8 بيت (بداية الكلام من اليمين للشمال )
اذا اردنا انارة كل الليدات فيكون الرقم الذى يمثل كل الليدات هو 255 وهو حاصل جمع كل اوزان الارقام
11111111
اذا اردنا انارة اول وثانى رقم على اليمين فيكون الرقم الذى يمثلهم هو 3 وهو حاص جمع 1+2
00000011
اذا اردنا انارة اول خمس ليدات على اليمين فيكون الرقم الذى يمثلهم هو 31 (1+2+4+8+16)
00011111
وهكذا مع كل الارقام وبناءا على هذا الكلام لا يوجد رقم 512 كما ذكرت اقصى رقم هو 255 وهذا لــ8 بيت
واترك للاخ عبد الله توضيح ما يراه طبقا لرؤيتـــــــــه
هذه اطلاله بسيطة ارجو ان اكون قد وفقت فى توصيل ما اردت ان اوضحــــه
اخي الكريم لاحظت ان الاخ عريبي كتب بقية البرنامج كما سبق فهل ماكتبه كان بشكل مختصر ام هذه طريقة اخرى لكتابة البرنامج و كتبت تتمة البرنامج كما بالصورة فهل صحيح هذا .
السلام عليكم ورحمة الله وبركاته
اخى الكريم مسلم
بقية البرنامج الذى كتبته مكتوب بنفس طريقةما كتبه الاخ عبد الله ..... انتظر بقية شرح الاخ عبد الله اكيد سوف تتضح تساؤلاتك ...... وحتى لا افسد الموضـــــــوع
التعديل الأخير تم بواسطة : عريبى محمود بتاريخ 14-12-2019 الساعة 01:43 AM
وعليكم السلام ورحمة الله وبركاته
نعم اخي وضحت الرؤية واعتذر عن هذا الخطأ 😊😊
لكن اخي لماذا لم يكتب تعداد الليدات كما يلي
١_٢_٣_٤.....
انظر هذا موضوع كتبته سابقا لايوجد تعداد كما هو مكتوب
١_٢_٤_٨.....
السلام عليكم ورحمة الله وبركاته
الله الله في اخيكم .
انتظر هذه الدورة منذ زمن و قد حان وقتها واخيكم يركب دراجة صغيرة بثلاث عجلات وانتم تتمتعون بالفيراري واللمبرغيني وفاتحين على الرابع و طريقكم سهل والاشارة خضراء .😓😓😓😢😢
ارجوك ارجوك اخي عبد الله التريث قليلا فلقد حملت البرنامج الذي ارفقته ولم ينصب عندي micro c فهل اعتمد على البرنامج الموجود عندي انه نسخة سابقة عن هذا .
اريد تفريد اوامر ومعطيات هذه اللغة .
اذا الدالة void main من اساس البرنامج ونقطة بدايته .... تمام .
Tris تعيين المنافذ اما خرج او دخل .... تمام .
Port تعيين حالة المنافذ اما ان تخرج جهد ام لا ...... تمام .
Wile حلقة دوارة يتم تنفيذ الاوامر التي بداخلها مالم يشترط غير ذلك ...تمام .
الرقم (1) بعد wile ما عمله هنا .. هل لتعيين اسم لهذه التعليمة وان كان كذلك لصالح من ... اي للمعالج كي يعرفها ام للكاتب الذي يكتب البرنامج ؟؟ .
الاقواس { } واجب وضعها عند بداية البرنامج ونهايته ولا حظت ايضا وجودها عند التعليمة wile لماذا ؟؟ هل استطيع حذف الاقواس ان كان المعالج يقرأ مابين القوسين الرئيسيين الخاصيين بالدالة الرئيسية .
سؤال من باب الفضول بالنسبة لتحديد زمن التاخير 1000ms هل يفهم المعالج فقط الميلي ثانية ام يمكن كتابة الامر هكذا delay_1s وافرض مثلا انني احتاج لتنفيذ اوامر كل ٢٤ ساعة وكل اسبوع وكل شهر فمالحل .
هذا السؤال يلزمني فيما بعد ان رايت التريث بالاجابة لغاية ما فلاباس .
حياك الله وبارك بك .
حقيقة اعجبني جدا جدا اسلوبك اذ وضعت تمرينا للتمرن عليه ولكن سبق الحد الكلام واجابك باشق القرية .
مازلت هيثما عاريا لا ريش ولا حتى ما استطيع الاستعانة به لفعل شيء وانتظر من شاهين القرية الاخ عبد الله الاخذ بيدي لتعلم فن الطيران في سماء البرمجة والتحليق بها عاليا للاستمتاع بجمالها وحلاوة طعمها وشم نسيمها وقبل ذلك تقويتي على ذلك .
لا اخفيك محاولة طلب ذلك من اصدقاء عبر النت لكن مهما كانت اللغة قوية تبقى الام هي الاساس والطريق الرئيسي للعقل من اجل حسن ادراك مايحصل ويجري اعود واكرر رجائي بالتريث والتنقل رويدا رويدا بين تضاريس هذا الامر الذي انتظرته واتشوق للولوج به والولوغ لاعماقه حسب المستطاع بداخلي نار تستعر لا اجد لها منفذا بحيث احدد لها TRIS خاص بها ولا ترويضها لاجعل لها PORT الجمها به فهي كال WILE تدور باحشائي دون تعيين delay لها فتهدئها وتريحني .... ارجو ان اكون اجدت التعبير في هذا فكما يقولون الدواء من جنس الداء 😂😂😂😂😂
حياكم الله وبارك بكم
تمام التمام استيعابك جيد جداا وبستمد الأمل والطاقه من حماسك وكنت في يوم أشعر بنفس شعورك الأن حول تعلم البرمجه .. أنشاء اعطيك كل خبرتي في مجال البرمجه .. لا تقلق وانا معك خطوه خطوه لا استعجلك خد وقتك كاملا ..
بالنسبة لكلامك هذا
. اريد تفريد اوامر ومعطيات هذه اللغة .
اذا الدالة void main من اساس البرنامج ونقطة بدايته .....
تمام جداا وكلامك صحيح
.Tris تعيين المنافذ اما خرج او دخل .... تمام .
Port تعيين حالة المنافذ اما ان تخرج جهد ام لا .
جيد جدا هذا صحيح
.Wile حلقة دوارة يتم تنفيذ الاوامر التي بداخلها مالم يشترط غير ذلك ...تمام .
الرقم (1) بعد wile ما عمله هنا .. هل لتعيين اسم لهذه التعليمة وان كان كذلك لصالح من ... اي للمعالج كي يعرفها ام للكاتب الذي يكتب البرنامج ؟؟ . .
. بالنسبة لهذا الرقم واحد في حلقة التكرار فهوا من اساسيات اللغه ويكتب هكذا لكي يفهم البرنامج أن هذة الحلقه لا نهائيه ...
وتوجد طرق أخري يمكننا أن نجعل الحلقة مشروطه وخرج الرنامج منها عند حدوث أمر معين ولكن اتركها للمواضيع القادمه
.الاقواس { } واجب وضعها عند بداية البرنامج ونهايته ولا حظت ايضا وجودها عند التعليمة wile لماذا ؟؟ هل استطيع حذف الاقواس ان كان المعالج يقرأ مابين القوسين الرئيسيين الخاصيين بالدالة الرئيسية . .
نعم أخي هذة الأقواس من اساسيات اللغه وهي تكتب لكي تحدد بداية ونهايه حلقة تكرار أو دالة البداية أو دالة فرعيه أو أمر شرط ولا يمكن الإستغناء عنها لأنها كما قلت تحدد للبرنامج بداية ونهاية الهيكل وهذا الهيكل. قد يكون أمر شرط أو حلقة تكرار وهكذا
وسوف نتعمق أكثر لكي تفهم أهمية هذة الأقواس .. الميكرو كنترول هوا اله غبية ولاتفهم يجب كتابة كل شئ لكي يمشي البرنامج وينتقل من مكان لمكان كما نحدد له ..
.سؤال من باب الفضول بالنسبة لتحديد زمن التاخير 1000ms هل يفهم المعالج فقط الميلي ثانية ام يمكن كتابة الامر هكذا delay_1s وافرض مثلا انني احتاج لتنفيذ اوامر كل ٢٤ ساعة وكل اسبوع وكل شهر فمالحل . .
. يمكنك التحكم في الوقت كما تشاء وبدقة 1 علي مليون في السانية الواحدة
لاحظ هذة التعليمة [CODEdelay_ms(1);][/CODE]. هنا نتحكم في واعد علي 1000 لكل واحد سانيه. وحرف ms يدل علي اختصار. ميلي سانيه
ويمكنك التحكم بدقة أعلي مثل هكذا
كود:
delay_us(1);
. لاحظ تم استبدال حرف. ms بحرفus ويدل علي النانو سانيية 1 علي 1000000. كل مليون = واحد سانية وهذة يعتبر أقل وقت انتظار للتحكم به ..
بالنسبة للتحكم في اوقات بعد 24 ساعه أو اسبوع او شهر يمكننا فعل هذا بالإستعانه ببرنامج عداد وبعض المتغيرات مثلا نجعل متغير مسؤل عن السواني واخر عن الدقائق وأخر عن الساعات وأخر عن الإيام ..
ولكن سوف نواجه عدم دقة في التوقيت بين وقت الميكرو والوقت الحقيقي ..
ويحدث هذا دوماا عندما نستخدم عدادات للإيام .. ولأن الوقت في الميكرو غير دقيق 100% تلاحظ فرق في عداد 24 ساعة تلاحظ تأخير100 ميلي سانية صحيح ان 100 ميلي سانية ليس بالخطأ الكبير ولكن لو تكلمنا عن عداد للشهور مثلا سيكون هامش الخطأ تعدي الساعات ..
ولكن لا تقلق توجد حلول كثيرة مثل استخدام ميديول لساعة الوقت الحقيقي وربطة مع الميكرو مثل ساعات المساجد أو نستعين بصانع نبضات ساعة اليد أو المنبه ونربطه مع الميكرو
انتظرك أخي والقادم احسن
التعديل الأخير تم بواسطة : عبدالله حجازى بتاريخ 14-12-2019 الساعة 05:13 AM
الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 04:29 PM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)