كود تفعيل العضوية - الابلاغ عن روابط لاتعمل - صيانة التلفزيون - الحاسبة - الأعضاء المتميزين - البرامج و المخططات - بث مباشر للقنوات الفضائية - إذاعة - تردد القنوات - بحث
|
التسجيل | اجعل كافة المشاركات مقروءة |
منتدى الإلكترونيات قسم الالكترونكس لمناقشة الافكار والمعلومات المتعلقة بالهندسة الالكترونية للمبتدئين والهواة والفنيين - Electronics |
![]() |
|
أدوات الموضوع |
![]() |
#1 |
استاذ و مشرف قسم الالكترونيات
المشاركات: 6,894
معدل تقييم المستوى: 332
|
![]() ترجمة وإعداد كتاب البرمجة بلغة السى المدمجة وتطبيقات لغة السى والميكروكونترولر PIC مع المترجم CCS C :
Embedded C Programming Techniques and Applications of C and PIC® MCUS ![]() مقدمة Introduction : ماهو الميكروكونترولر ؟ وفيما يستخدم ؟ الميكروكونترولر هو كمبيوتر صغير مدمج على شريحة مغلفة على شكل دائرة متكاملة لها أطراف للتوصيل بالأجهزة الخارجية . عندما يتم توصيله بالقدرة فإنه يبدأ فى تشغيل برنامج من ذاكرة البرنامج الداخلية ، والتى تسمى أيضا ذاكرة القراءة فقط ROM ، أو ذاكرة الفلاش Flash . ![]() يوجد الميكروكونترولر فى الأجهزة المنزلية ، ولعب الأطفال ، والسيارات ، وملحقات الكمبيوتر مثل لوحة المفاتيح أو الماوس ، كما أنه يأخذ طريقه كإلكترونيات تدعم تقريبا كل شىء إلكترونى من شاحن البطارية إلى أنظمة الرادار . ![]() ![]() ![]() لماذا الميكروكونترولر PIC ؟ أصبح الميكروكونترولر PIC الخيار الأكثر شعبية (انتشارا) للتصاميم الجديدة المعتمدة على السرعة العالية ، حتى 70 مليون تعليمة كل ثانية ، حتى كتابة هذه السطور ، فهو منخفض التكلفة ، البعض منه يصل إلى ما دون الدولار ، كما أنه يتضمن عدد كبير من الواجهات مثل اليو إس بى USB و الإثرنت Ethernet ، والإشارات التناظرية . ![]() لماذا لغة السى ؟ لغة السى هى اللغة الأكثر استخدما لبرمجة الميكروكونترولر ، السبب أنها الأقرب إلى لغة الإنسان ، فلغة السى هى فئة من لغات برمجة الكمبيوتر والتى تسمى لغات البرمجة مرتفعة المستوى. هذه اللغات تستخدم أداة تسمى مترجم (كومبيلر) compiler لتحويل ملفات نصوص لغة السى إلى ملف قابل للقراءة بمعرفة الآلة ، وهى هنا معالج الميكروكونترولر . والمترجم CCS C يستخدم لغة هى الأقرب إلى لغة الإنسان ، لذلك فهو واسع الانتشار ، ومدعوم من قبل شركة ميكروشيب المصنعة للميكروكونترولر PIC ، ومن قبل شركة لاب سنتر المصدرة لبرنامج بروتيس Proteus . القسم الأول من هذا الكتاب يؤكد على لغة السى . الخبرة السابقة بلغة برمجة سوف يساعد ولكنها ليست مطلبا ، فسوف يتم البدء باستخدام التعاريف الأولية لعناصر اللغة ، كما يتم تغطية جميع مجالات اللغة التى تطبق على الميكروكونترولر بالتفصيل . القسم الثانى من هذا الكتاب ، بدءا من الفصل الخامس عشر ، يغطى الميكروكونترولر PIC ، وملحقاته ، وكيفية استخدام تلك الملحقات مع لغة السى بالتفصيل . المعرفة المسبقة للإلكترونيات الأساسية سوف تساعد ، لكنها ليست مطلبا لفهم هذا الكتاب . الفصل الأول نظرة عامة على لغة السى وبناء (هيكل) البرنامج C Overview and Program Structure:
__________________
مقالات المهندس فتح الله عبدالعزيز التعديل الأخير تم بواسطة : F.Abdelaziz بتاريخ 16-06-2015 الساعة 09:16 AM. |
![]() |
![]() |
احصائية الشكر والاعجاب - 2 شكراً, 0 عدم اعجاب, 2 اعجاب |
|
اعلانات |
![]() |
#2 |
استاذ و مشرف قسم الالكترونيات
المشاركات: 6,894
معدل تقييم المستوى: 332
|
![]() فى انتظار الاستفسارات حول ما جاء فى المقدمة
مع تمنياتى بدوام التوفيق
__________________
مقالات المهندس فتح الله عبدالعزيز |
![]() |
![]() |
احصائية الشكر والاعجاب - 4 شكراً, 0 عدم اعجاب, 4 اعجاب |
|
اعلانات اضافية ( قم بتسجيل الدخول لاخفائها ) | |||
|
![]() |
#3 |
عضو ماسى
الدولة: القاهرة - مصر
المشاركات: 2,776
معدل تقييم المستوى: 148
|
![]() الله يجزيك خير على هذا الطرح الممتاز دائما مواضيعك رائعه بارك الله فيك مهندسنا الفاضل |
![]() |
![]() |
![]() |
#4 |
عضو ذهبي
الدولة: مصر .. محافظة دمياط
المشاركات: 1,688
معدل تقييم المستوى: 110
|
![]() بارك الله فيك وجزاك الخير
متابعين معك استاذى الغالى وكل عام وانت بخير رمضان كريم |
![]() |
![]() |
![]() |
#5 | |
مهندس متميز
![]() الدولة: Syria
المشاركات: 518
معدل تقييم المستوى: 0
|
![]() اقتباس:
المقدمة جيدة ومشجعة وبانتظار الدخول بالموضوع ولكن لي رجاء هو متابعة الموضوع للأخير مع كل الشكر والتقدير |
|
![]() |
![]() |
احصائية الشكر والاعجاب - 0 شكراً, 0 عدم اعجاب, 1 اعجاب |
![]() |
|
![]() |
#6 |
استاذ و مشرف قسم الالكترونيات
المشاركات: 6,894
معدل تقييم المستوى: 332
|
![]() شكرا لكل الأخوة المشاركين
مع تمنياتى بدوام التوفيق
__________________
مقالات المهندس فتح الله عبدالعزيز |
![]() |
![]() |
![]() |
#7 |
استاذ و مشرف قسم الالكترونيات
المشاركات: 6,894
معدل تقييم المستوى: 332
|
![]() الفصل الأول نظرة عامة على لغة السى وبناء (هيكل) البرنامج C Overview and Program Structure:
"كود المصدر" للغة السى C Source Code : فيما يلى ما يبدو عليه "كود المصدر" للغة السى : كود:
/* Chapter one sample C program for The CCS C compiler */ #include <My_PIC.H> void main (void) { int i ; for( i=1; i<=10; i=i+1 ) { output_high(PIN_C6); //Turn green LED on . delay_ms(500); output_low(PIN_C6); //Turn green LED off . delay_ms(500); } } ![]() هذا البرنامج قد يبدو مبهما جدا بالنسبة لك الآن . عند الانتهاء من قراءة هذا الكتاب والقيام بعمل التجارب ، فإن هذا البرنامج بل والبرامج الأكثر تعقيدا سوف لن تبدو مبهمة على الإطلاق . كلما قرأت الفصول القليلة القادمة ، يمكنك الرجوع إلى هذا البرنامج للتعرف على كيفية ربط الموضوعات لهذا البرنامج . الآن ، دعونا نرصد بعض الملاحظات حول المظهر العام للبرنامج . التعليقات Comments : تساعد التعليقات أى شخص (بما فيهم المبرمج نفسه) يقراء الكود الخاص بك على أن يفهم ما يقوم به البرنامج . هناك نوعان من أساليب التعليق : الإسلوب الأول : “/* put your comments here */” ، يمكن أن تمتد التعليقات لعدة أسطر ، لكنها لا تكون متداخلة. الإسلوب الثانى : “//put your comments here…… end of line” ، يمكن أن يمتد التعليق على سطر واحد فقط . يتجاهل المترجم جميع التعليقات . يمكن أن يتم استخدم كل من الإسلوبين فى نفس البرنامج . بناء (هيكل) البرنامج Program Structure : تتكون برامج لغة السى من : 1- توجيهات ما قبل معالج لغة السى C Preprocessor Directives الميزة الجديرة بالاهتمام فى لغة السى هى أن لديها ما يسمى توجيهات "قبل المعالج" preprocessor ويمكن تسميتها اختصارا توجيهات المعالج ، وهى جزء لا يتجزأ من برنامج الترجمة . يمكنك التفكير فى توجيهات المعالج باعتبارها أداة برمجية ، والتى تمر خلال الكود أولا (قبل الترجمة) وتقوم بعمل بعض التعديلات على ما يتم ترجمته فى الواقع . يبدأ توجيه المعالج بالرمز "هاش" “#” ويحتل السطر بكامله . وسوف يتم تغطيتها لاحقا بالتفصيل فى الفصل الثالث . فى المثال أعلاه ، يبدأ البرنامج بتوجيه التضمين (#include) ، وهو أمر (توجيه) للمعالج بالقيام بوضع (تضمين) جميع السطور التى يحتوى عليها الملف (e3.h) لكى تظهر فى هذا المكان ضمن الكود عند بدء الترجمة الفعلية . على سبيل المثال ، إذا قمت بإنشاء ملف يسمة delay.inc ووضعت فى هذا الملف السطر الوحيد التالى : كود:
delay_ms(500); يمكن أن يكون المعالج ميزة قوية فى لغة السى والتى تزيد من قابلية (سهولة) القراءة للبرنامج ، وتعظيم تقنية إعادة استخدام الكود ، وتساعد بشكل كبير على المحافظة على البرنامج . إذا تفحصت نموذج البرنامج المبين أعلاه ، سوف ترى أن السطر الأول هو توجيه للمعالج لتضمين الملف My_PIC.H. من الشائع جدا (بل قد يجب) أن يكون أول سطر أوامر (وليس تعليقات) فى البرنامج هو توجيه بتضمين ملف به تعريفات محددة للهاردوير الخاص بالميكروكونترولر المستخدم . كثيرا ما يستخدم الامتداد (.h) (اختصار لكلمة header) لهذا النوع من الملفات . فى حالتنا ، جميع الإعلانات (التعريفات) اللازمة للميكروكونترولر المستخدم سوف تكون موجودة فى ملف الرأس المسمى My_PIC.H . 2- الدوال Functions: الدالة هى مجموعة من التعليمات البرمجية القابلة للاستدعاء ، والتى تعرف فى بعض اللغات الأخرى بالاجراء أو بالبرنامج الفرعى . تتكون الدوال من بيانات محلية ، بمعنى أنه يمكن الوصول إليها فقط للدالة وللعبارات الموجودة ضمن هذه الدالة . فى البرنامج أعلاه ، نجد أن السطر التالى يحتوى على تعريف لدالة تسمى الدالة الرئيسية main . جميع البرامج يجب أن يكون لديها دالة واحدة فقط تسمى الدالة الرئيسية main() . هذه الدالة هى المكان الذى يبدأ من عنده تنفيذ البرنامج . عند الإشارة إلى اسم دالة ، فإنه يكون متبوعا بالقوسين () ، حتى يكون من الواضح أن هذا اسم لدالة . كلمة void (بمعنى فارغ أو خاوى) ، الموجودة قبل اسم الدالة تشير إلى أن هذه الدالة لا تعيد (تعطى) شىء نتيجة لتنفيذها ، وكلمة void الموجودة بين القوسين (void) تشير إلى أن هذه الدالة لا تأخذ شىء من القائم بالاستدعاء . القوسين {…} هى رموز لاحتواء مجموعة بينها . جميع الدوال تبدأ وتنتهى بهذه الرموز . سوف يتم تناول الدوال بالتفصيل فى الفصل السابع ، ومع ذلك ، لوضع أساس لما تكون عليه الدوال ، إليك بعض الأمثلة على استخدام الدوال : كود:
x=sin(y); //sin is a function with one argument and a return value كود:
x=sin(y*3.1415/180); //the argument may be any expression كود:
x=180*sin(y)/3.1415;// the return value may be used in an expression. 3- الإعلانات Declarations : السطر “int i" هى إعلان (تعريف) بيانات لمتغير يسمى بالمعرف “i" ، و “int” تشير إلى أن هذا المتغير هو عدد صحيح integer . فى هذه الحالة فإن المتغير “i" لا يجوز استخدامه إلا داخل الدالة الرئيسية main . إذا كان هذا السطر فوق (قبل) بداية الدالة الرئيسية (خارج الدالة الرئيسية) ، عندئذ ، يمكن الوصول إلى المتغير “i" بواسطة الدوال الأخرى . النطاق الذى يمكن الوصول خلاله إلى المتغير يسمى "نطاق المتغير" variable scope . سوف يتم تغطية النطاق بمزيد من التفصيل فى الفصل الرابع . 4- العبارات Statements والتعبيرات Expressions : سطر “for” هو عبارة statement . يتم تنفيذ العبارات فى وقت الشغيل . هذه العبارة بشكل خاص تتضمن ثلاث تعبيرات expressions هى i=1; i<=10; i=i+1 يفصل بين التعبير والآخر الفاصلة المنقوطة “;” . سوف يتم تغطية التعبيلاات فى الفصل الخامس ، وتغطية العبارات فى الفصل السادس . لمحة سريعة على عبارة “for” : ![]() يتم تنفيذ التعبير الأول “i=1” لمرة واحدة . بعد ذلك يتم تكرار ما يلى : • اختبار التعبير الثانى “i<=10” ، والخروج من الحلقة فى حالة ما إذا لم يكون صواب false . • تنفيذ العبارة التى تلى القوس “)” . • يتم تنفيذ التعبير الثالث “i=i+1” . فى هذا المثال يتم تنفيذ الأربعة أسطر لعشر مرات ، حيث يذهب المتغير “i" من القيم 1 إلى القيمة 10 ، وبعد ذلك ، عندما تكون قيمته 11 ، تتوقف الحلقة لأن التعبير “11<=10” يكون غير صواب . التعبيرات expressions هى مزيج من الثوابت ، والمتغيرات ، والعوامل ، واستدعاء الدوال . التعبيرات دائما يكون لها قيمة ناتج . من أمثلة العوامل “+ , - , * , / “ والعمل الخاص جدا “=” . فى حالتنا ، حيث أن لدينا أربعة عبارات للتنفيذ فى عبارة “for” فإننا نحتاج لضمها (تجميعها) معا بالأقواس المعرجة {…} . هذه العبارة تسمى عبارة مركبة . وقد لا تحتوى الأقواس على أى عبارات أو قد تحتوى على المزيد من العبارات . بدون هذه الأقواس ، سوف يتم استدعاء الدالة output_high() فقط لعشر مرات . بعد ذلك يتم تنفيذ السطور الثلاثة الأخرى واحد تلو الآخر . كل من السطور الأربعة فى الحلقة هو استدعاء لدالة . هذه الدوال لم يتم تعريفها عن طريق المبرمج لكنها دوال من صلب المترجم . التعبير أو التعبيرات الموجودة داخل الأقواس () للدالة المستدعاة هى بيانات يتم تمريرها إلى الدالة . هذه البيانات تسمى وسائط arguments فى الاستدعاء وتسمى بارامترات parameters فى الدالة . فى لغة السى ، الحالة الخاصة للعبارة الصحيحة (شرط صحة العبارة) هى أن أى تعبير يكون متبوعا بالفاصلة المنقوطة “;” . لاحظ أنه ليس لمجرد أن تكون العبارة صحيحة أن يعنى ذلك أنها منطقية . على سبيل المثال ، فيما يلى عبارة لغة سى صحيحة : كود:
1+2; كتابة الفاصلة المنقوطة “;” مع عدم وجود تعبير قبلها ، هو حالة خاصة لاستدعاء عبارة فارغة تسمى null statement ، وهى لا تفعل شىء . فى لغة السى ليس هناك عبارة تعيين (تخصيص) كما هو الحال فى بعض اللغات الأخرى ، بدلا من ذلك هناك "عامل التعيين" وهو علامة التساوى “=” ، على سبيل المثال : كود:
x=3; 5- الزمن (الوقت) Time : الحروف “ms” فى كلمة delay_ms تعنى ملى ثانية . وحدات الزمن التى يكثر استخدامها فى البرامج هى : • النانو ثانية 0.000,000,001 seconds . • الميكروثانية 0.000,001 seconds . • الملى ثانية 0.001 seconds . على سبيل المثال ، هناك مليون ميكروثانية فى الثانية الواحدة . 6- دقة الكتابة Typing Accuracy : دقة الكتابة تكون مهمة جدا عند إنشاء كود لغة السى . علامات الترقيم ، والتى إما أن تكتب بشكل خاطىء أو يتم حذفها ، يمكن أن تتسبب فى الكثير من الصداع بسبب عدم ترجمة البرنامج . المترجم يرى ما تكتبه بالضبط . على سبيل المثال ، إذا نسيت قوس البداية “{“ فى سطرة عبارة for ، عندئذ فإن المترجم سوف يطلق رسالة بوجود خطأ عندما يصل إلى قوس النهاية “}” بعد أربع أسطر أسفل من مكان الخطأ الفعلى . الفاصلة المنقوطة “;” التى تلى العديد من العبارات والإعلانات تكون مهمة لمساعدة المترجم لمعرفة متى ينتهى الإعلان أو العبارة . فهى لا تستخدم أبدا عند نهاية توجيه المعالج الذى يبدأ بالرمز “#” . فقد أو زيادة الفاصلة المنقوطة “;” أو القوس “{“ يمكن أن ينشىء رسائل خطأ مربكة . محرر لغة السى الجيد يسلط الضوء على مجموعة الأقواس المتوائمة “{ }” و “()” علاوة على على العناصر النحوية لمنع الأخطاء أثناء الكتابة ، وذلك بتمييزها بألوان مختلفة . 7- تنسيق النص Text Formatting : تنسيق المسافات الفارغة (البيضاء) مثل المسافات spaces و التبويبات tabs و مكان الرجوع من أول السطر ، وغيرها يتم تجاهله من قبل المترجم . التنسيق يجعل الكود قابل للقراءة . المسافة البيضاء ،الناتجة من تخطيط البرنامج بحيث يبدو أكثر تنظيما ، تعتبر شىء جيد . وهى تأتى من استخدام المسافات والتبويبات والأسطر الفارغة . تستخدم التبويبات من أجل عمل تدرجات بدلا من استخدام عدد من المسافات . عدد المسافات لكل تبويب عادة يكون قابل للضبط . ثلاثة مسافات لكل تبويب تعمل بشكل جيد . لاحظ أن الأسطر الموجودة داخل الدالة إعلاه تكون متدرجة والخطوط داخل الحلقة تكون أكثر تدرجا . التدرج ، والمسافات البيضاء الأخرى اختيارية ، ولكن ينصح بها بشدة . 8- ملاحظات التوافق Compatibility Notes : التعليق “//” هو بناء للغة C++ ، ومعتمد فقط من قبل بعض برامج الترجمة وليس كلها . معظم برامج الترجمة تكون حساسة لحالة الحروف . على سبيل المثال ، Output_High() لن يتم التعرف عليها ولكن output_high() سوف يتم التعرف عليها . فى الوضع الافتراضى المترجم CCS C يكون غير حساس لحالة الحروف . لجعله حساسا ، يجب عليك استخدام توجيه المعالج “#case” . الدوال الموجودة ضمن المترجم مثل output_high() و delay_ms() ليست من لفة السى القياسية ، حيث ينفرد بها المترجم CCS C .
__________________
مقالات المهندس فتح الله عبدالعزيز |
![]() |
![]() |
![]() |
#8 |
استاذ و مشرف قسم الالكترونيات
المشاركات: 6,894
معدل تقييم المستوى: 332
|
![]() أسئلة لمراجعة الفصل الأول مطلوب الإجابة عليها :
السؤال الأول : كمحاولة لتخفيص الفراغ الأبيض ، إى من البرامج التالية يكون صحيحا ؟ ![]() السؤال الثانى : أى من العبارات التالية يكون صحيحا ؟ ![]() السؤال الثالث : كم عدد مرات التكرار التى سوف تسببها هذه العبارة ؟ ![]() السؤال الرابع : كم عدد مرات التكرار التى سوف تسببها هذه العبارة ؟ ![]() السؤال الخامس : ما هى عناصر لغة السى يمكن أن توجد فى سطر الكود التالى ؟ ![]() السؤال السادس : أى من التعليقات التالية يكون صحيحا بالنسبة للغة السى ؟ ![]() السؤال السابع : ما الذى ينبغى أن يفعله المترجم مع السطر التالى ؟ ![]() السؤال الثامن : التعبير المفرد قد يكون أيضا : ![]() السؤال التاسع : الملف q1.inc لديه السطور التالية : ![]() مع الكود التالى ، كم عدد مرات وميض الليد ؟ ![]() السؤال العاشر : تم إنشاء الملف qq1.inc بمجرد أربع حروف فقط هى void . عندما تتم محاولة ترجمة التالى ، كم عدد الأخطاء التى يتم توليدها ؟ ![]()
__________________
مقالات المهندس فتح الله عبدالعزيز |
![]() |
![]() |
![]() |
العلامات المرجعية |
أدوات الموضوع | |
|
|