منتديات الالكترونيات العصرية  
yoursite.com page title .

استرجاع كلمة المرور طلب كود تفعيل العضوية تفعيل العضوية
العودة   منتديات الالكترونيات العصرية > منتدى الحاكمات الدقيقة Microcontroller > منتدى المتحكمات ميكرو بلغة السي MikroC

  #1  
قديم 02-17-2013, 03:32 AM
الصورة الرمزية F.Abdelaziz
F.Abdelaziz F.Abdelaziz غير متواجد حالياً
استاذ الكترونيان
 
تاريخ التسجيل: May 2009
المشاركات: 2,782
معدل تقييم المستوى: 22
F.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to behold
افتراضي كتاب ودورة جديدة Embedded C Programming PIC والمترجم CCS PIC C

كتاب ودورة جديدة Embedded C Programming PIC والمترجم CCS PIC C













عام :

الميكروكونترولر المدمج هو كومبيوتر دقيق والذى يحتوى على معظم أجهزته المحيطة والذاكرة المطلوبة بداخل دائرة متكاملة واحدة مع وحدة المعالجة المركزية CPU . فهو بالفعل "كومبيوتر دقيق فى شريحة" .
رد مع اقتباس
  #2  
قديم 02-17-2013, 03:33 AM
الصورة الرمزية F.Abdelaziz
F.Abdelaziz F.Abdelaziz غير متواجد حالياً
استاذ الكترونيان
 
تاريخ التسجيل: May 2009
المشاركات: 2,782
معدل تقييم المستوى: 22
F.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to behold
افتراضي رد: كتاب ودورة جديدة Embedded C Programming PIC والمترجم CCS PIC C

الفصل الأول :





لغة السى المدمجة Embedded C Language :



1-1 الهدف:



عند نهاية هذا الفصل , يجب أن تكون قادرا على ما يلى :

تعريف , ووصف , ووتحديد أنواع المتغير variable والثابت , ومجالها واستخداماتها .
بناء إعلانات المتغير والثابت لجميع حجوم البيانات العددية numeric والسلاسل النصية strings.
تطبيق قوائم السرد الإحصائية enumeration على إعلانات المتغير .
تخصيص assign قيم للمتغيرات والثوابت عن طريق "عامل التخصيص" .
تقييم نتائج جميع "العوامل" المستخدمة فى لغة السى .
شرح النتائج التى تمتلكها "عبارات التحكم" عند سريان البرنامج .
إنشاء "دوال" functions والتى تشتمل على متغيرات , وعوامل , وعبارات تحكم لمهام كاملة .
تطبيق "المؤشرات" pointers , و"المصفوفات" arrays و "الهياكل" structures و "الاتحادات" unions كمتغيرات للدالة .
إنشاء برامج بلغة السى لمهام كاملة باستخدام مفاهيم هذا الفصل .
1-2 مقدمة :

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



يتم تقديم المعلومات بالترتيب الذى يحتاجه المبرمج :

إعلان declaring المتغيرات والثوابت .
المداخل / المخارج I/O البسيطة , بحيث يمكن عمل برامج للمنافذ المتوازية للميكروكونترولر .
تخصيص قيم إلى المتغيرات والثوابت وعمل عمليات حسابية مع المتغيرات .
عبارات البناء والتحكم بلغة السى لتشكيل برامج كاملة بلغة السى .
الأقسام الأخيرة تغطى المواضيع المتقدمة مثل المؤشرات , والمصفوفات , والهياكل , والاتحادات , واستخدامها فى برامج لغة السى . المفاهيم المتقدمة مثل برمجة "الزمن – الحقيقى" real time والمقاطعات تكمل الفصل .
رد مع اقتباس
  #3  
قديم 02-17-2013, 03:33 AM
الصورة الرمزية F.Abdelaziz
F.Abdelaziz F.Abdelaziz غير متواجد حالياً
استاذ الكترونيان
 
تاريخ التسجيل: May 2009
المشاركات: 2,782
معدل تقييم المستوى: 22
F.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to behold
افتراضي رد: كتاب ودورة جديدة Embedded C Programming PIC والمترجم CCS PIC C

1-3 المفاهيم الأساسية :

كتابة برنامج بلغة السى يشبه بناء منزل من الطوب البلوك : يتم وضع الأساس , يستخدم الرمل والأسمنت لعمل الطوب , يتم ترتيب هذا الطوب لعمل صف ( مدماك – طبقة) من البلوكات ثم يتم تكديس الصفوف لإنشاء البناء . فى برامج السى المدمجة , يتم وضع مجموعات من التعليمات معا لتشكيل "دوال" functions , يتم معاملة تلك الدوال كعمليات " مستوى – مرتفع " , والتى بعد ذلك يتم تجميعها لتشكيل البرنامج .

كل برنامج بلغة السى يجب أن يمتلك دالة واحدة على الأقل , هذه الدالة تسمى "الدالة الرئيسية" main() .

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

الدالة الرئيسية main() تعتبر مهمة "المستوى – المنخفض" , لأنها الدالة الأولى التى تستدعى من نظام بدء البرنامج . فى الكثير من الحالات , سوف تحتوى الدالة الرئيسية main() على قليل من العبارات فقط والتى لا تعمل شىء سوى أعداد وقيادة عمل البرنامج من أحد الدوال إلى الأخرى .

برنامج لغة السى المدمجة فى أبسط شكل له يبدو كما يلى :


كود:
void main( )

{

           While(1)         //do forever….

                       ;

}

البرنامج الموضع بأعلاه سوف يتم ترجمته ويعمل على نحو تام , ولكنك لن تتأكد من ذلك لعدم وجود بيان لنشاط من أى نوع .



كود:
#include <stdio.h>

void main( 0

{

           printf("HELLO WORLD");            /* the classic C test program..  */

           while(1)                                              //do forever..

                       ;

}


هذا البرنامج سوف يطبع الكلمات "HELLO WORLD" إلى الخرج القياسى , وهو فى الغالب المنفذ التسلسلى . الميكروكونترولر سوف يجلس وينتظر إلى الأبد أو حتى يتم إعادتة reset . وهذا يعرض واحد من أهم الاختلافات الرئيسية بين برنامج الكومبيوتر الشخصى والبرنامج المصمم للميكروكونترولر المدمج , وهو , أن تطبيقات الميكروكونترولر المدمج تحتوى على حلقة لا نهائية .الكومبيوتر الشخصى يمتلك نظام تشغيل , ونجرد تنفيذ البرنامج , يعود التحكم إلى نظام التشغيل . الميكروكونترولر المدمج لا يمتلك نظام تشغيل لذلك لا يمكن السماح بالخروج من البرنامج فى أى وقت . لذلك فإن كل تطبيق للميكروكونترولر المدمج يمتلك حلقة لا نهائية فى بنائه الداخلى فى مكان ما , مثل while(1) فى المثال أعلاه . هذا يمنع البرنامج من الهروب من الأشياء التى يقوم بفعلها ويفعل أشياء عشوائية والتى قد تكون غير مرغوب فيها . سوف يت شرح بناء while فيما بعد .

يحتوى برنامج المثال أيضا على أول "موجه" شائع الاستخدام للمترجم . الموجه #include يخبر المترجم بضم ملف يسمى stdio.h ليكون كجزء من هذا البرنامج .

الدالة printf() متوفرة من أجل المكتبة الخارجية وتكون متاحة لنا لأن تعريفها يقع بالملف stdio .

هناك بعض العناصر التى يجب تعريفها فى المثال السابق :

; فاصلة بنقطة تستخدم لبيان نهاية التعبير . التعبير فى أبسط أشكاله هو فاصلة بنقطة منفردة .
{ } تستخم هذه الأقواس لاحتواء (تطويق) بداية ونهاية محتويات الدالة . تستخدم هذه الأقواس أيضا عندما يتم معالجة سلسلة من العبارات كمجموعة (بلوك) واحدة .
"text" تستخدم علامات الاقتباس المزدوجة كعلامة على بداية ونهاية سلسلة نصية .
// أو /*….*/ تستخدم شرطة – شرطة أو شرطة – نجمة ... نجمة – شرطة للتعليقات . التعليقات هى مجرد ملاحظات المبرمج . التعليقات مهمة للغاية للقدرة على قراءة وفهم البرنامج . هذه حقيقة سواء عند قراءة البرنامج بالمبرمج نفسه فى وقت لاحق أو بشخص آخر . التعليقات المبينة بهذا النص تستخدم لشرح وظيفة كل سطر فى البرنامج .
يستخدم الرمز /*….*/ لإنشاء مجموعة (بلوك) تعليقات . بمجرد أن يجد المترجم (/*) فسوف يتجاهل النص الذى يليه , حتى إذا كانت مجموعة التعليقات فى سطور عديدة , حتى يجد (*/) .

عندما يجد المترجم الرمز (//) فسوف يتجاهل نص التعليق حتى يصل نهاية السطر فقط .
رد مع اقتباس
  #4  
قديم 02-17-2013, 03:34 AM
الصورة الرمزية F.Abdelaziz
F.Abdelaziz F.Abdelaziz غير متواجد حالياً
استاذ الكترونيان
 
تاريخ التسجيل: May 2009
المشاركات: 2,782
معدل تقييم المستوى: 22
F.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to behold
افتراضي رد: كتاب ودورة جديدة Embedded C Programming PIC والمترجم CCS PIC C

بعض التعاريف :

"معرف أو محدد الهوية" identifier : هو اسم لمتغير أولدالة يتكون من حرف أو الشرطة التحتية ( _ ) , متبوعا بتسلسل من الحروف و /أو الأرقام و / أو الشرط التحتية .
معرفات الهوية عامة تكون حساسة للحالة . يستخدم الموجه #case للتحكم فى حساسية الحالة فى المترجم CCS-PICC .
يمكن أن تكون معرفات الهوية بأى طول , لكن بعض المترجمات قد يتعرف على عدد محدود من الحروف .
الكلمات المحجوزة : يوجد كلمات معينة لها معنى خاص للمترجم وتعتبر "كلمات محجوزة" . هذه الكلمات المحجوزة يجب إدخالها فى الحالة الصغيرة ويجب عدم استخدامها بتاتا كمعرفات للهوية . الجدول التالى يبين قائمة بالكلمات المحجوزة .





المسافة البيضاء : لأن لغة السى لغة " حرة الشكل" فإن "المسافة البيضاء spaceيتم تجاهلها ما لم يتم تطويقها بأقواس . وهذ يشمل الفراغات , والتبويبات tab والسطر الجديد .
رد مع اقتباس
  #5  
قديم 02-17-2013, 03:35 AM
الصورة الرمزية F.Abdelaziz
F.Abdelaziz F.Abdelaziz غير متواجد حالياً
استاذ الكترونيان
 
تاريخ التسجيل: May 2009
المشاركات: 2,782
معدل تقييم المستوى: 22
F.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to behold
افتراضي رد: كتاب ودورة جديدة Embedded C Programming PIC والمترجم CCS PIC C

1-4 المتغيرات والثوابت :

حان وقت البحث فى البيانات المخزنة فى شكل متغيرات وثوابت . المتغيرات variables , كما فى الجبر, هى "قيم يمكن أن تتغير" . الثوابت constants ثابتة القيمة . تأتى المتغيرات والثوابت فى أشكال وأحجام كثيرة , ويتم تخزينها قى ذاكرة البرنامج فى أشكال مختلفة والتى سوف نتعرف عليها تباعا .

1-4-1 أنواع المتغير variable types :

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


كود:
unsigned char Peabody;

int dogs , cats ;

long int total_dogs_and_cats ;


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










الأنواع الافتراضية من أجل المترجم CCS-PICC للأحجام المعطاة , مدونة بالعامود "Size" بالجدول . الأنواع int1,int8,int16,int32 مخصصة للمترجم CCS-PICC .
رد مع اقتباس
  #6  
قديم 02-17-2013, 03:36 AM
الصورة الرمزية F.Abdelaziz
F.Abdelaziz F.Abdelaziz غير متواجد حالياً
استاذ الكترونيان
 
تاريخ التسجيل: May 2009
المشاركات: 2,782
معدل تقييم المستوى: 22
F.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to behold
افتراضي رد: كتاب ودورة جديدة Embedded C Programming PIC والمترجم CCS PIC C

1-4-2 مجال المتغير :

لعلك لاحظت أنه يجب إعلان الثوابت والمتغيرات قبل استخدامها . "مجال" المتغير هو مدى القدرة على الوصول إليه داخل البرنامج . يمكن إعلان المتغير بحيث يكون مجاله إما "محلى" local أو "عمومى" global .

المتغيرات المحلية Local Variables :

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



المتغيرات العمومية Global Variables :

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

قطعة الكود التالية تبين مجال المتغيرات :



كود:
unsigned char globey ;            // a global variable 

void function_z (void)             //this is a function called from main( )

{

          unsigned int tween;               //a local variable

          tween = 12 ; //OK because tween is local

          globey = 47 ; // OK because globey is global 

          main_loc =12 ; //.This line will generate an error

                                  //because main_loc is local to main

}

 

void main( )

{

          unsigned char main_loc; // a variable local to main( ) 

          globey = 34 ; // OK because globey is global 

             tween = 12 ; // will cause an error – tween is locat to function function_z

while(1)//do forever..

{

;

}

}




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



1-4-3 الثوابت Constants :
رد مع اقتباس
  #7  
قديم 02-02-2016, 01:57 PM
F.1292 F.1292 غير متواجد حالياً
عضو جديد
 
تاريخ التسجيل: Feb 2016
المشاركات: 8
معدل تقييم المستوى: 0
F.1292 is on a distinguished road
افتراضي رد: كتاب ودورة جديدة Embedded C Programming PIC والمترجم CCS PIC C

يعطيك العافية
رد مع اقتباس
  #8  
قديم 02-14-2016, 10:52 PM
musta musta غير متواجد حالياً
عضو نشيط
 
تاريخ التسجيل: Jul 2015
المشاركات: 81
معدل تقييم المستوى: 5
musta is on a distinguished road
افتراضي رد: كتاب ودورة جديدة Embedded C Programming PIC والمترجم CCS PIC C

يعطيك العافية
رد مع اقتباس
  #9  
قديم 05-03-2016, 05:34 AM
scomido scomido غير متواجد حالياً
عضو جديد
 
تاريخ التسجيل: May 2016
المشاركات: 12
معدل تقييم المستوى: 0
scomido is on a distinguished road
افتراضي رد: كتاب ودورة جديدة Embedded C Programming PIC والمترجم CCS PIC C

مشكور
رد مع اقتباس
  #10  
قديم 05-03-2016, 05:35 AM
scomido scomido غير متواجد حالياً
عضو جديد
 
تاريخ التسجيل: May 2016
المشاركات: 12
معدل تقييم المستوى: 0
scomido is on a distinguished road
افتراضي رد: كتاب ودورة جديدة Embedded C Programming PIC والمترجم CCS PIC C

جزاك الله خيرا
رد مع اقتباس
إضافة رد

مواقع النشر (المفضلة)

أدوات الموضوع
انواع عرض الموضوع

تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة



الساعة الآن 06:07 AM.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
الحقوق محفوظة لمنتديات الاليكترونيات العصرية

Security team

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77