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

   

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 03-03-2011, 02:05 AM المشاركة 65   
افتراضي



السلام عليكم
اخي العزيز عبد العزيز لدي بعض الاسئلة لك
لقد كنت من المتتبعين لدورة المهندس الرائع احمد سمير فايد للبرمجة بلغة الميكرو سي والان انا اتعلم ةاقرأ من حضرتك البرمجة بلغة السي سؤالي كالاتي:
1
-هل يستطيع البيك مثل pic16f84a ان يفهم كلتا اللغتين يعني ادا اردت برمجته بالسي او الميكروسيوالفرق فقط الكومبيلر واللغة البرمجه ؟
2
-ماهو في رأيك اللغة الاكثر انتشارا ؟اعني ممكن السي لها جانب معين والميكرو لها جانب اخر؟
انا كنت متتبع شغوف والله للمهندس احمد بس الراجل كانت عندو ضروف قاهرة واعتدر عن المواصلة وربنا ييسر لو امرو ودعوة الخير معاه...

اما حضرتك جئت لتنقدنا ...والله خلص الكلام فيك.....اتمني من كل قلبي ان تواصل للنهاية,منتضر ردك ان شاء الله بارك الله فيك......مشكور

اخى الكريم

شكرا جزيلا لك

فى البداية احب ان اوجه الشكر والتقدير وفائق الاحترام لاخى المهندس احمد سمير لما قدمة ويقدمه وما سوف يقدمه ان شاء الله فهو يعتبر رائد من رواد برمجة الميكروكونترولر بلغة السى وله الفضل فى انتشار ها بين ارجاء العالم العربى وادعو الله ان تكون فى ميزان حسناته ان شاء الله .

اى مترجم مخصص لبرمجة الميكروكونترولر PIC يستطيع التعامل مع معظم عائلات الميكروكونترولر PIC بما فيها PIC16F84A .

مع تمنياتى بدوام التوفيق

اعلانات

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 03-03-2011, 02:12 AM المشاركة 66   
افتراضي


2-2 قواعد (أسس) البرمجة بلغة السى
الفكرة الرئيسية لكتابة برنامج بلغة سي هو تجزىء المشكلة الكبيرة إلى عدة أجزاء صغيرة .
لنفترض أن المطلوب :
كتابة برنامج لميكروكونترولر والذى سوف يقوم بقياس درجة الحرارة وعرض (إظهار) النتائج على شاشة عرض الكريستال السائل LCD.





يتم إجراء عملية القياس بواسطة جهاز استشعار (حساس) لدرجة الحرارة والذى يقوم بتحويل درجة الحرارة إلى جهد.
يقوم الميكروكونترولر باستخدام محوله الداخلى من تناظرى إلى رقمى فى تحويل هذا الجهد (قيمة تناظرية) إلى عدد (قيمة رقمية) والتى عندئذ ترسل إلى وحدة العرض LCD من خلال عدة موصلات .

وبناء عليه يقسم البرنامج إلى أربعة أجزاء والتى يجب عليك الذهاب خلالها (تتبعها) وفق الترتيب التالي :

1- تفعيل وإعداد المحول A/D الداخلى .
2- قياس القيمة التناظرية .
3- حساب درجة الحرارة .
4- إرسال البيانات فى الشكل المناسب لوحدة العرض LCD .

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

هيكل بناء برنامج لغة السى :

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

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 03-03-2011, 02:22 AM المشاركة 67   
افتراضي


هيكل بناء برنامج لغة السى :

الشكل التالى يبين هيكل structure برنامج بسيط مبينا عليه الأجزاء التى يتكون منها .




التعليقات COMMENTS

التعليقات هي جزء من البرنامج تستخدم لتوضيح عمل البرنامج أو تقديم مزيد من المعلومات حوله .

يتم تجاهل التعليقات ولا يتم ترجمتها لكود قابل للتنفيذ من قبل المترجم .
ببساطة يمكن للمترجم التعرف على أحرف خاصة تستخدم فى تعيين مكان بداية ونهاية التعليقات ويتجاهل تماما النص الموجود بينها عند الترجمة .
يوجد نوعان من هذه الأحرف.
واحد لتعيين التعليقات الطويلة التى تمتد لعدة خطوط من البرنامج , والأخرى لتعيين التعليقات القصيرة والتى لا تتعدى سطر واحد من البرنامج .
على الرغم من أن التعليقات لا تؤثر على تنفيذ البرنامج إلا إنها لا تقل أهمية عن أي جزء آخر من البرنامج ، واليك السبب .
غالبا ودائما ما يحتاج البرنامج المكتوب للتحسين والتعديل والتحديث والتبسيط . بدون التعليقات تكون محاولة فهم حتى أبسط البرامج هو مضيعة للوقت.


أنواع البيانات في لغة السي
يوجد عدة أنواع من البيانات التي يمكن استخدامها في البرمجة بلغة السى .

الجدول التالى يبين مدى القيم التى يمكن أن تأخذها هذه البيانات عند استخدامها في شكلها الأساسي.





بإضافة بادئة إلى أي نوع من البيانات يتغير مدى قيمه الممكنة فضلا عن عدد بايتات الذاكرة التى يحتاجها .





المتغيرات VARIABLES


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 03-03-2011, 02:26 AM المشاركة 68   
افتراضي


المتغيرات VARIABLES

أى عدد تتغير قيمته أثناء عمل البرنامج يسمى " متغير "
variable .
ببساطة إذا كان البرنامج يقوم بعملية جمع عددين ( العدد number1 والعدد number2 ) فمن الضروري أن يكون هناك قيمة تمثل نتيجة عملية الجمع sum . فى هذه الحالة كل من العدد number1 والعدد number2 وحاصل الجمع sum تكون من المتغيرات .

إعلان (تعريف) المتغيرات Declaring Variables
  • اسم المتغير يمكن أن يشمل أي من الأحرف الأبجدية A-Z (a-z) و الأرقام 0-9 و رمز الشرطة التحتية '_' .
المترجم حساس لحالة الحرف ويفرق بين الحروف الكبيرة capital والصغيرة small.
أسماء الدوال والمتغيرات عادة ما تحتوي على أحرف صغيرة في حين أن أسماء الثابت تحتوي على أحرف كبيرة.
  • يجب أن لا تبدأ أسماء المتغيرات برقم.
  • بعض الاسماء لا يمكن استخدامها كأسماء لمتغيرات لأنها محجوزة بالفعل للاستخدام من قبل المترجم نفسه. المترجم mikroC يتعرف على ما مجموعه 33 كلمة محجوزة وهى ما يلى :



المؤشرات Pointers


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 03-03-2011, 02:33 AM المشاركة 69   
افتراضي


المؤشرات Pointers
المؤشر هو متغير من نوع خاص يحفظ (يخزن) عنوان address لمتغيرات حروف .
بعبارة أخرى المؤشر 'يشير إلى' ‘points to’ متغير أخر . يتم إعلان المؤشر على النحو التالي :





من أجل تخصيص عنوان متغير لمؤشر من الضروري استخدام العلامة تساوى ' = ' وكتابة اسم المتغير يسبقه الحرف '&'.
في المثال التالي يتم إعلان المؤشر‘multiplex’ وتخصيص عنوان المخرج الأول لوحدات العرض ذات الثمانى ليدات :



لتغيير قيمة المتغير المشار إليه فإنه يكتفي بكتابة الحرف '*' أمام مؤشره وتخصيص القيمة الجديدة له كما يلى :


بالمثل من أجل قراءة قيمة المتغير المشار إاليه يكتفى بكتابة :


تغيير البتات بصورة منفردة
توجد عدة طرق لتغيير بت واحدة فقط من المتغير .
أسهل طريقة هى تحديد أسم السجل و موقع (مكان) البت أو اسمها والحالة المطلوبة كما يلى :




الإعلانات Declarations


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 03-03-2011, 02:40 AM المشاركة 70   
افتراضي


الإعلانات Declarations
يجب إعلان (تعريف) كل متغير قبل أن يتم استخدامه لأول مرة في البرنامج.
حيث أنه يتم تخزين المتغيرات في ذاكرة RAM فمن الضروري حجز حيز لها (حسب النوع , بايت أو اثنين أو أكثر ).
أنت تعلم ما هو نوع البيانات التي تكتب أو تتوقع كنتيجة لعملية ، في حين أن المترجم لا يعرف ذلك.
لا تنسى أن البرنامج يتعامل مع المتغيرات التي قمت أنت بتخصيص أسماء لها مثل gate, sum, minimum .
يتعرف المترجم عليها كسجلات فى ذاكرة RAM .
عادة يتم تخصيص تعيين) أنواع المتغيرات في بداية البرنامج.




وبصرف النظر عن الاسم والنوع فإن المتغيرات عادة ما يخصص لها قيم أبتدائية (أولية) في بداية البرنامج كذلك.
هذه الخطوة لا تدخل ضمن "ما يجب فعله" ولكنها تعتبر عادة جيدة.
الآن يبدو الشكل على النحو التالي :





يمكن تنفيذ عملية تخصيص (تعيين) القيمة الأولية وإعلان النوع فى خطوة واحدة :




إذا كان هناك العديد من المتغيرات المراد تخصيص نفس القيمة الأولية لها يمكن تبسيط العملية كما يلى :


  • نوعالمتغيرلايصاحبه علامة '+' أو علامة '-' فى الوضع الافتراضى . على سبيل المثال يمكنكتابةchar بدلاsigned char. في هذه الحالة يعتبر (ينظر) المترجمالقيم الموجبة للمتغير.
  • إذانسيت لأى سبب إعلان نوع المتغير فإن المترجمسينظر اليه تلقائياكعدد صحيح. وهو ما يعني أنهذاالمتغيرسوفيشغلاثنينبايتمنالذاكرة وله القيم في المدى -32768 to +32767 .

الثوابت CONSTANTS


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 03-03-2011, 02:48 AM المشاركة 71   
افتراضي


الثوابت CONSTANTS
الثابت هو عدد أو حرف له قيمة ثابتة والتى لا يمكن تغييرها أثناء تنفيذ البرنامج.
وعلى عكس المتغيرات يتم تخزين الثوابت في ذاكرة البرنامج الفلاش للميكروكونترولر بغرض توفير مساحة قيمة من ذاكرة RAM .
يتعرف المترجم على الثابت باسمه مسبوقا بكلمة const .


ثوابت العدد صحيحINTEGER CONSTANTS
ثوابت العدد الصحيح يمكن أن تكون عشرية أو سداسى عشرية أو ثمانية أو ثنائية .
يتعرف المترجم على شكلها بناء على البادئة المضافة. وإذا كان العدد لا يوجد به بادئة يعتبرعدد عشرة كحالة افتراضية .
نوع الثابت يتم التعرف عليه تلقائيا من حجمه . في المثال التالي سوف يتم يعتبر تلقائيا الثابت MINIMUM كعدد صحيح نوع signed integer ويخزن فى عدد 2 بايت (16 بت) من ذاكرة البرنامج الفلاش :






ثوابت الأعداد الحقيقية FLOATING POINT CONSTANTS
ثوابت الأعداد الحقيقية تتألف من جزء صحيح ونقطة (علامة عشرية) الجزء الكسري والحرف e أو E متبوع بعدد صحيح يمثل "الأس" exponent.



في كلا المثلين : الثابت المسمى T_MAX تم إعلانه بالقيمة 32.60 . وهو ما يمكن البرنامج من مقارن درجة الحرارة المقاسة بثابت ذو معنى (أقصى درجة حرارة ) بدلا من الأعداد التى تمثله ( 32.60 ).

الثوابت الحرفية (حروف أسكى) CHARACTER CONSTANTS (ASCII CHARACTERS)
الثابت الحرفى هو حرف يوضع بين علامتي</SPAN>اقتباس مفردة ' … ' .
في المثال التالييتم الإعلان عن ثابت اسمه I_CLASS كحرفAكما يتم الإعلان عن ثابت اسمه II_CLASS كحرفB.


عند التعريف بهذه الطريقة فأن تنفيذ الأوامر بإرسال الثوابت I_CLASS و II_CLASS لوحدة العرض LCD سوف تتسبب فى عرض الحروف A و B على الترتيب .
ثوابت السلسلة النصية STRING CONSTANTS
الثابت الذى يتكون من سلسله من الحروف يسمى ثابت "السلسلة النصية" string .
يتم وضع ثابت السلسلة النصية بين علامات اقتباس مزدوجة " .... " .



فى هذا المثال : أرسال الثابت Message_1 لوحدة العرض LCD سوف يتسبب فى عرض الرسال
'press the START button' .


ثوابت التعداد أو السرد ENUMERATED CONSTANTS

ثوابت التعداد هي نوع خاص من ثوابت الأعداد الصحيحة والتي تجعل البرنامج أكثر شمولا وأسهل للمتابعة عن طريق تخصيص (تعيين) عناصر لأعداد مرتبة .
في المثال التالي العنصر الأول UPفي الأقواس المتعرجة { } يخصص له تلقائيا القيمة 0 والعنصر الثانى DOWNيخصص له القيمة 1والعنصر الثالث LEFT يخصص له القيمة 2 الخ.



عند كل ظهور للكلمات 'LEFT', 'RIGHT', 'UP' and 'DOWN' فى البرنامج فإن المترجم يستعيض عنها بالأعداد المناسبة(0-3) .
وبشكل ملموس : إذا كانت أطراف المنفذ port B أرقام 0 و 1 و 2 و 3 متصلة بالمحركات التى تقوم بجعل شىء ما يتحرك لأعلى up أو للأسفل down أو لليسار left أو لليمين right فأن أمر تشغيل محرك الحركة لليمين ‘RIGHT’ يكون كما يلي :




kiai87
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2008
الدولة: جنوب المغرب
المشاركات: 1,085
نشاط [ kiai87 ]
قوة السمعة:
قديم 03-03-2011, 06:07 AM المشاركة 72   
sun


السلام عليكم

شكرا لك استادي الكبير فتح الله وجزاك الله كل خير

كتاب جميل من استاد اجم
ل



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