برمجة الميكروكونترولر PIC بلغة السى مع المترجم CCS C : المفاهيم الأساسية للغة السى :

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل

برمجة الميكروكونترولر PIC بلغة السى مع المترجم CCS C : المفاهيم الأساسية للغة السى :

مُساهمة من طرف Admin في الأحد أبريل 19, 2015 10:42 pm


برمجة الميكروكونترولر PIC بلغة السى مع المترجم CCS C :
المفاهيم الأساسية للغة السى :
الميزة الرئيسية لاستخدام اللغات عالية المستوى ( لغة السى فى حالتنا) هى عدم تفاعل المصمم مع الهاردوير ، ومن ثم لا يحتاج لمعرفة تفاصيل كثيرة ، وهكذا فإن المصمم يكرس وقته فى المقام الأول لحل منطق المشكلة وليس للتفاصيل الداخلية لشريحة الميكروكونترولر نفسه .

مكونات النموذج الأساسى لبرنامج لغة السى :
توجد أربعة عناصر فى برنامج لغة السى وهى :
• التعليقات Comments .
• توجيهات قبل المعالج Preprocessor Directives .
• إعلانات البيانات Data Declarations .
• الدوال Functions .

التعليقات Comments :
يتم كتابة تعليقات فى برنامج المصدر ، حيث تسمح للمبرمج أو غيره لفهم معنى ما يجرى القيام به . من المفيد عمليا كتابة تعليقات على جميع السطور لأنه بعد فترة من الزمن قد لا يتذكر حتى المبرمج نفسة كل شىء كان قد فكر فيه وقت كتابة البرنامج . يتجاهل المترجم كل شىء يتم كتابته فى شكل تعليق .
يوجد نوعان من التعليقات :
• تعليق يحتل سطر واحد ، هذا النوع يبدأ بالأحرف "// " . فى هذه الحالة يتجاهل المترجم كل ما يكتب بعد هذه الأحرف وحتى نهاية السطر المكتوبة فيه .
مثال :
x = x + 2; // Adds 2 to the variable x
• تعليق يحتل سطور عديدة ، هذا النوع يبدأ بالأحرف "/*" وينتهى بالأحرف "*/" . فى هذه الحالة يتجاهل المترجم كل ما يكتب بين أحرف البداية واحرف النهاية .
مثال :

x = x + 2;
/ * Time ++;
A = SQRT (25); * /
x = 0;
فى المثال أعلاه ، فى وقت البرمجة يتم تجاهل السطر Time ++ وكذلك السطر A=SQR (25); .

توجيهات قبل المعالج :


Admin
Admin

عدد المساهمات : 935
تاريخ التسجيل : 28/01/2014

معاينة صفحة البيانات الشخصي للعضو http://fathallaabdelaziz.forumarabia.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

توجيهات "قبل المعالج" Preprocessor

مُساهمة من طرف Admin في الإثنين أبريل 20, 2015 12:13 pm



توجيهات "قبل المعالج" Preprocessor
" قبل المعالج" هو جزء لا يتجزأ من مترجم لغة السى وظيفته التعرف على تعليمات (أوامر) المعالج وتنفيذها ، هذه التعليمات عبارة عن تعليمات خاصة والتى لا تنتمي إلى لغة السى ولكنها جزء من حزمة البرمجيات التى تأتى مع المترجم . كل أمر من أوامر "قبل المعالج"  يبدأ برمز الشباك (الهاش)  '#' . قبل ترجمة البرنامج يقوم المترجم بتنشيط (تفعيل) جزء "قبل المعالج" والذى يأمر البرمجيات للبحث عن هذه الرموز (العلامات #) ،  فإن وجد إحداها فأن "قبل المعالج" ببساطة يستبدلها بنص آخر تبعا لنوع الأمر ، حيث يمكن أن تكون محتويات ملف أو مجرد سلسلة قصيرة من الأحرف . بعد ذلك ، تبدأ عملية الترجمة . يمكن أن توجد تعليمات "قبل المعالج" في أى مكان في برنامج المصدر ، وهى تشير فقط إلى جزء من البرنامج يلى ظهورها وحتى نهاية البرنامج .
التوجيه # include
فى العديد من البرامج يتم تكرار نفس المجموعة من الأوامر لعدة مرات .  من أجل تسريع عملية كتابة البرنامج ، عادة ما يتم تجميع هذه الأوامر والإعلانات في ملفات خاصة والتي يمكن إدراجها (ضمها) بسهولة في البرنامج باستخدام هذا التوجيه .  لنكون أكثر دقة ، الأمر #include   يستورد نص بملف موجود فى مكان آخرمحدد سلفا ، بغض النظر عن ما هو عليه (أوامر ، وتعليقات و.. الخ) ، إلى البرنامج.




مثال :
لكى نخبر المترجم بنوع جهاز الميكروكونترولر المستخدم فى البرنامج نستخدم الصيغة التالية :


الكود:

#include <16F877A.H>

حيث أن الملف 16F877A.H يحتوى على التعريفات والمسميات الخاصة بالميكروكونترولر PIC16F877A .

التوجيه # define
التوجيه (الأمر)  #define  يسمح باستبدال مسميات فى هذا البرنامج بقيمها ، وبالتالى فإنه يوفر بديل نصى بسيط للمعرفات منذ لحظة التعريف وما يليها .  
مثال :

الكود:

#define  PI  3.14

عند الترجمة فإن المترجم ، بناء على هذا التوجيه ، كلما وجد التسمية PI يقوم باستبدالها بالقيمة 3.14 .  
" />

Admin
Admin

عدد المساهمات : 935
تاريخ التسجيل : 28/01/2014

معاينة صفحة البيانات الشخصي للعضو http://fathallaabdelaziz.forumarabia.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: برمجة الميكروكونترولر PIC بلغة السى مع المترجم CCS C : المفاهيم الأساسية للغة السى :

مُساهمة من طرف Admin في الإثنين أبريل 20, 2015 2:19 pm


التوجيه #fuses

يستخدم هذا التوجيه لتعيين مصهرات التكوين (التهيئة) configuration fuses فى برامج لغة السى للميكروكونترولر PIC .
مثال لصيغة التوجيه  :


الكود:

#fuses XT,PUT,NOWDT,NOPROTECT,NOBROWNOUT


الخيارات المعرفة فى ملف الرأس للميكروكونترولر PIC16F877 هى :


الكود:


Clock Type Select          LP, XT, HS, RC
Watchdog Timer Enable       WDT, NOWDT
Power Up Timer Enable       PUT, NOPUT
Program Code Protect       PROTECT, NOPROTECT
In Circuit Debugging Enable    DEBUG, NODEBUG
Brownout Reset Enable       BROWNOUT, NOBROWNOUT
Low Voltage Program Enable    LVP, NOLVP
EEPROM Write Protect       CPD, NOCPD
Program Memory Write Protect    WRT_50%, WRT_25%,
(with percentage protected)       WRT_5%, NOWRT


الحالة الافتراضية للمصهرات إذا لم يتم تضمين هذا التوجيه هى كما يلى :


الكود:

#fuses RC,WDT,NOPUT,BROWNOUT,LVP,NOCPD,NOWRT


هذه الحالة تناظر لتحديد جميع بتات سجل التكوين بالحالة المرتفعة .
ملحوظة هامة :
يمكن تأجيل تحديد بتات التكوين حتى يحين وقت البرمجة باستخدام برمجيات جهاز البرمجة .

التوجيه #use delay (clock = 4000000)

البرنامج المذكور أعلاه يستعرض دالة التأخير . إذا لم تتواجد هذه الدالة ، فإن الحلقة سوف يتم تنفيذها فى عدة ميكروثانية ، حيث أن كل تعليمة تأخذ 4 ميكروثانية عند معدل الساعة 1 ميجا هرتز ، ومن ثم فإن وميض الليد لن يمكن ملاحظته . التأخير المطلوب (بالملى ثانية) يعطى كبارامتر للدالة ، وبالرجوع لمكتبة الدالة المتاحة عند بداية البرنامج بالتوجيه #use . هذا التوجيه يخبر المترجم لإيجاد مكتبة الدالة delay_ms() . يجب إعطاء سرعة الساعة فى هذا المتجة حتى يتم حساب التأخير بشكل صحيح داخل الدالة .
هام :
علامة نهاية العبارة :
مترجم لغة السى ليس محددا بالسطر (كما هو الحال فى لغة الأسمبلى) . فمترجم لغة السى يبحث عن علامة انتهاء العبارة أو كتلة (مجموعة) العبارات . هذه العلامة هى الفاصلة المنقوطة ";" فى حالة العبارة الواحدة أو القوس المجعد "}" فى حالة كتلة العبارات .
مثال :  




الكود:

x=x+25;
x=
x+25
;

فى هذا المثال ، الطريقتان صحيحتان ، السبب علامة انتهاء العبارة ";" فلا تنسى أن تكتبها عند نهاية كل عبارة حتى لا تحصل على أخطاء عن ترجمة البرنامج  .

يوجد العديد من توجيهات قبل المعالج والتى سوف نتناولها تباعا فى حينها .

Admin
Admin

عدد المساهمات : 935
تاريخ التسجيل : 28/01/2014

معاينة صفحة البيانات الشخصي للعضو http://fathallaabdelaziz.forumarabia.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى