الدرس السادس
الاخوة الكرام السلام عليكم ورحمة الله وبركاته
ماذا
يتناول هذا الدرس :
1. الإجابة عن الاستفسارات في الدروس السابقة .
2. المتغيرات .
3. الثوابت .
4. الكلمات التي لا تصلح للمتغيرات والثوابت .
====================
المتغيرات
لاحظ الكود التالي :
void main ()
{
trisb = 0;
portb = 0b00000001;
delay_ms (1000);
portb = 0b00000101;
delay_ms (1000);
portb = 0b00011001;
delay_ms (1000);
portb = 0b00001000;
delay_ms (1000);
}
نلاحظ ان البورت B قيمته تتغير بعد كل ثانية !
لاحظ الكود التالي ايضا
void main ()
{
Char V1;
Char V2;
Char V3;
Char V4;
V1= 0b00000001;
V2= 0b00000101;
V3= 0b00011001;
V4= 0b00001000;
trisb = 0;
portb = V1;
delay_ms (1000);
portb = V2;
delay_ms (1000);
portb = V3;
delay_ms (1000);
portb = V4;
delay_ms (1000);
}
ما هذه الاكود الملونة باللون
الاحمر ؟
انها المتغيرات !
لا ياراجل ؟!
والمصحف !
مش فاهم حاجة ؟؟
انا اقولك ........................
ما هو المتغير ؟ : هو دالة تحمل
قيمة معينة قد تكون نصية وقد تكون رقمية واثناء عمل البرنامج قد تتغير هذه القيمة
بنسب ثابتة او بطريقة عشوئية ... بس كده !
يعني ايه ؟!
ابسطهالك .... تخيل في رقم معين اول
ما البرنامج يبداء بيكون الرقم ده 15 وكل ما يمر 100 ميكرو ثانية يزيد 5 لحد ما
يبقي رقم معين ويعيد من الاول مثل اويقف خالص !
يعني ايه ؟!
ابسطهالك .... قدامك طبق كشري جيت
انا اكلته كله هتعمل ايه ؟
هخليك تجبلي غيره !
...... ده انت بخيل يارجل أمشي .
! لامؤخذه ياجماعة سرحت شوي !
سؤال مهم : اذا اتعامل مع
المتغيرات ؟
بكل بساطة بتعرف المتغير بعد كده
بتديله قيمة وهيبق جاهز للاستخدام .. بس
بعرف ازاي ؟
اول حاجة بتذكر نوعه وتكتب اسمه وبس
... زي كده ç
char Ahmed ;
char : ده نوع المتغير وفي انواع تانية هنتعرف عليها.
Ahmed : ده اسم المتغير مش اسمي انا ... زي V1 وV2 و V3 و V4 اللي في الكود اللي فوق
طيب هو لازم اسمي المتغير ؟!
سؤال غبي من شخص ذكي ... المثل
القديم قال سمي ابنك تعرف تنادي عليه ومن الاخر المتغير ده زي ابنك لازم تسميه
علشان تعرف تنادي عليه !
طيب ازاي اديله قيمة ؟
كل اللي عليك تيجي في المكان اللي
انت عاوز تديله فيه قيمة وتكتب الكود ده
Ahmed = 5;
ازاي استخدمه بقي ؟
بكل بساطة لو انت عاوز تخرج القيمة
بتاعته علي اي بورت تساوي البورت بالمتغير زي كده
Portb = Ahmed;
ايه هي انواع المتغيرات ؟ وايه
الفرق بينها ؟
انواع المتغيرات كتير والفرق بينها
ان كل متغير ليه رنج معين مينعش نزود عليه او ننقص عنه لانه لو عملنا كده مش هينفع
ازاي ؟
بص الجدول ده وانت تعرف !
طيب فيه حاجة كمان عوزني اعرفها
عن المتغيرات ؟
اه طبعا في
حاجااااااااااااااااااااااات :
1.
لازم
تعرف ان اسم المتغير مينفعش يبقي رقم .
2.
اسم
المتغير مينفعش يبداء برقم ولكن ممكن يحتوي رقم بس مش في اوله طبعا.
3.
اسم
المتغير منفعش يحتوي علي علامة خاصة زي @ او / او * او + لكن ممكن يحتوي علي علامة
( _ ) .
4.
اسم
المتغير مينفعش يبقي اسم دالة او اي امر من اوامر اللغة زي if او while .
5.
لازم
تعرف المتغيرات تحت الدالة مباشرة مش في اي مكان في الكود بس ممكن تدي للمتغير
القيمة في اي مكان .
6.
ممكن
تعطي للمتغير القيمة في نفس سطر التعريف
Char X1 = 0;
7.
ممكن
تعرف اكتر من متغير في نفس السطر بس بشرط يكونوا من نفس النوع وكمان تعطيهم قيم
وتفصل بنهم بالفصلة دي (,)
Char X1=5, V=3, Ahmed=240;
====================
الثوابت
لاحظ الكود التالي:
void main ()
{
trisb = 0;
portb = 7;
delay_ms (1000);
portb = 2;
delay_ms (1000);
portb = 7;
delay_ms (1000);
portb = 5;
delay_ms (1000);
portb = 7;
delay_ms (1000);
}
الكود السابق يحتوي علي ثلاث قيم متشابها للبورت B وهي القيمة 7 كويس
طيب فين الموضوع ؟!
الموضوع ان القيمة بتخزن بشكل مؤقت في الذاكرة رام وبالتالي بتاخد مكان منها وخصوصا لو انا هكرر
البيانات دي اكتر من مرة زي ماهنعرف بعد كده
طيب مالقيمة دي بتاخد بايت واحد
طول ماهي اقل من 255 ولا ايه ؟!
علي الرغم من ان ( طيب ) دي مش اداة استفهام بس انا
هجوبك ...
انت عندك حق بس لو الرقم زي ده مثلا 546233781 هياخد ماكان
اكبر ولو هكرره 100 مرة هتبقي المشكلة اكبر صح ولا ايه ؟
وايه الحل ؟
الحل بكل بساطة هي الثوابت والثوابت
زي المتغيرات بالضبط بعرفها واعطيها قيمة وبعد كده استخدمها وتعرفها بيكون زي
المتغيرات بالضبط بس كل الفكرة باسبق التعريف بكلمة const زي كده
Const char X1 = 7 ;
Const int V2 = 355 ;
شوف الكود اللي فات بعد وضع الثوابت
:
void main ()
{
Const char VX=7;
trisb = 0;
portb = VX;
delay_ms (1000);
portb = 2;
delay_ms (1000);
portb = VX;
delay_ms (1000);
portb = 5;
delay_ms (1000);
portb = VX;
delay_ms (1000);
}
اين تخزن الثوابت ؟
اخيرا استخدمت اداة استفهام يارجل ..... بتخزن الثوابت
في الروم اللي هي ذكرة البرنامج الاساسية وده افضل لان ذاكرة الروم اكبر بكتير من
الرام .
ملاحظات بالنسبة للثوابت :
كل الملاحظات اللي تم ذكرها مع المتغيرات تذكر مع
الثوابت .
====================
الكلمات التي لا تصلح للمتغيرات والثوابت
الكلمات التي لا يمكن استخدامها
كثوابت اومتغيرات هي الكلمات الخاصة باللغة وده جدول فيه هذه الكلمات
:
الاخوة الكرام
اعتذر عن التاخر في المشاركة والردود وكل شئ لم يلق باعجابكم وذلك لاسباب يعلمها سبحانه فاسلكم الدعاء بالتوفق
ام بعد
اتوجة بخالص الشكر لكل من شارك مع في هذه الدورة شارك بالتفكير او بالتعليق او بالاجتهاد او المتابعة
يوجد بعض التعليقات التي يجب ان اضيفها علي مشاركتكم وذلك للاستمار وهي :
- لا يوجد شخص مبتدئ واخر محترف ولكن يوجد مجتهد وغير مجتهد
- برمجة الميكروكنترلر قواعدها ليست ثابته انما انت مين يقوم بوضعها فقد يكون كودك غير مشابه لكودي ولك الاثنين يعملا بشكل صحيح.
- لا تخجل ابدا من سؤالك فانت هنا تتعلم فاذا كنت غير قادر علي مواجه اخطاء فكيف تصلحها.
- لا تكن محبطا لنفسك كن دائما مشجعا فاتذكر اني منذ فترة كنت احاول كتابة كود خاص بشاشة LCD وكان هناك اخطاء به فطلت اعمل عليه طول 50 يوم زفي النهاية فعلتها فكن مشجعا ولا تقلق ابدا
- لا تكن متعجلا سواء كنت في بداية الطريق او كنت متقدم وكن متيقن ان العلم رزق لن تحصل عليه الا باذن الله
- هل انت تحب هذا المجال ؟؟ يجب عليك ان تسال نفسك هذا السؤال فاذا كانت الاجابة نعم فاكمل واذا كانت لا نصيحة لا تكمل فمكانك ليس هنا .
- اذا اردت النجاح شارك نعم شارك .... شارك برائيك .... شارك بتعليقك .... شارك بفكر .... شارك باي شئ لا تتوقف.
- عند بداية الاعلان عن هذه الدورة كنت سانسحب وقلت اني لست بحاجة لان اقدمها ولكن سرعا ما اكتشفت اني باشد الحاجة لها ... اتعرف كيف ؟! ... كيف اطلب من الله ان يزيداني وانا لا ابخل علي عباده ؟! كن اجابيا وانشر العلم
- تعليقات الاعضاء:
- Hasan Hadi24 : قد قمت برفع ملف المشروع ساقوم بمراجته وانتظر تعليق الدرس التالي .
- Omar Aldoury24 : احسنت فالخطاء بالمقاومة والمشروع صحيح ولكن توجد ملاحظة
التعبير ;Portb=0 يجعل البورت B يساوي 0 ام الامر ;portb.f0=0 فيجعل الطرف الاول فقط هو يساوي صفر
وفي المشروع الذي قمت بعمله اي منهم سوف يؤدي الغرض فلا حاجة لكتابة الاثنين معا
اتمني ان اكون وفقت في تقديم المعلومة ولو في اساله انا موجود .
- remon romany24 : طلبت مشروع عن الاشعة تحت الحمراء ستجد في المستوي الاخير من الدورة فانتظر اذا كنت متابع ولا تعجل او يمكن البحث في اي موقع اخر ستجد اذا كنت في حاجة الي المشروع وفقك الله .
- Eng Moamer25 : طلبت رابط مباشر لبرنامج ISIS فهذا هو الرابط
انتهي الدرس
في انتظار استفساراتكم
الي اللقاء
سلام عليكم
ردحذفشكرا جزيلا اخي كريم
بالنسبه الكلمات الخاصة عند كتابتها تظهر بلون مختلف عن كود يعني يكون لونها غامق
المهم في امر يستطيع اي شخص عند كتابه كود يلاحظ انه اذا كتب احد كلمات خاصه يلاحظ لون كلمه اصبح غامق
وبالتالي اذا كان ينوي استخدامها كمتغير فيجب تغيررها لانها سوف تسبب له مشاكل وشكرا
نعم انت محق وقد تم ذكر هذه الكلمات في الدرس
حذفعندي اضافه يفضل وضع متغيرات خارج قامه الرئيسيه main لانه اذا كنت تستخدم دوال تستطيع استخدام هذه متغيرات في اي داله
ردحذفام اذا كانت ضمن داله ما فلاتستطيع استخدام متغير الا داخل داله التي فيها متغير
وعليه وبصوره عامه يفضل وضع متغيرات خارج داله الرئيسيه
سوف يتم التحدث عن هذه النقطة في شرح الدوال
حذفلو كان ينفع الواحد يعمل لايك كان عمل ع كل سطر
ردحذفبس انا مفهمتش ازاي ممكن اوصل المتحكم ب الكمبيوتر
الي هو الدرس التالت
شكرا اخي الفاضل
حذفسوف يتم التحدث عن طريق البرمجة بشئ من التفصيل عند التطبيق العملي
ربنا يوفقك لكل خير
ردحذفشرح ممتع
توكل على الله اخى الكريم بارك الله فيك وفى امثالك واعلم انه يوجد كثيرين مهمتهم الاساسيه على النت البحث عن المعلومات مثل التى عندك واعلم ان لكل مجتهد نصيب انت تجتهد وتعلم وانا اجتهد واتعلم والله الموفق
ردحذفلم افهم معنا بورت تساوي 7
ردحذفشكرا بشمهندس لو سمحت لي استفسار انا مبتدئ واصنع مشروع الة حاسبة بpic16f877 وكتبت الكود الرئيسي وكود lcd وكود keypad ولكن بعد تصليح الاكواد يظهر لي باسفل mikroc رسالة خطأ دائما error main function ماذا افعل وشكرا
ردحذفشكرا بشمهندس لو سمحت لي استفسار انا مبتدئ واصنع مشروع الة حاسبة بpic16f877 وكتبت الكود الرئيسي وكود lcd وكود keypad ولكن بعد تصليح الاكواد يظهر لي باسفل mikroc رسالة خطأ دائما error main function ماذا افعل وشكرا
ردحذفممكن ترفع الكود وان شاء الله هساعدك
حذف