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

   

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



السلام عليكم و رحمة الله وبركاته

تابع اخي نحن منك نستفيد

والله موفق الجميع

اخى الكريم

شكرا جزيلا لك

بارك الله فيك

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

اعلانات

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


الف شكر على الموضوع الذى يستحق اكبر و انفع المواضيع على منتدانا الغالى

اخى الكريم

شكرا جزيلا لك

بارك الله فيك

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

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

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


المصفوفات ARRAYS

المصفوفة ذات البعد الواحد " مصفوفة الصف الواحد "
مجموعة المتغيرات التى لها نفس النوع ومرتبة فى شكل صف ذو ترتيب محدد إبتداء من اليسار وتتجه إلى اليمين تسمى مصفوفة الصف array أو مصفوفة ذات البعد الواحد .
مكونات المصفوفة تسمى عناصر element .

إعلان المصفوفة :
يتم إعلان المصفوفة بتحديد نوعها واسمها وعدد عناصرها كما يلى :




يمكن التفكير فى المصفوفة كقائمةlist من المتغيرات التى من نفس النوع حيث يتم تخصيصها (تعيينها ) على شكل قيم ذات ترتيب متدرج يبدأ دائما من الصفر.
مثال :
للإعلان عن مصفوفة من ستة متغيرات من نوع الأعداد الصحيحة int, اسمها numbers ،نكتب :







ولمصفوفة من متغيرات نوع حروف char , باسم lettersنكتب :




تخصيص قيم لعناصر المصفوفة :

توجد طريقتان لتخصيص قيم لعناصر المصفوفة :
الطريقة الأولى :
هى الإعلان عن المصفوفة وفى نفس السطر بعدها مباشرة تخصص قيم لعناصرها بترتيب دليل كل عنصر باستخدام الأقواس {…,…,…}
مثال :




char p[3] = {3,6,9};


وهى عبارة عن مصفوفة متغيرات من نوع الحروف مكونة من المجموعة : العنصر الأولوهو p[0] بالقيمة 3 و العنصرالثانى و p[1] بالقيمة 6 و العنصرالثالث وهو p[2] بالقيمة 9 . القيمة الموجودة بين القوسين […] تمثل ترتيب العنصر فى المصفوفة وتسمى دليل العنصر index .


مثال آخر :
مصفوفة متغيرات من نوع الأعداد الصحيحة :






int arr[4] = {10,12,13,15};


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

مثال :
إعلان مصفوفة باسم calendar وتخصيص كل عنصر بعدد محدد من الأيام (تمثل أيام الشهور) :







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


الطريقة الثانية :

هى الإعلان عن المصفوفة فى سطر ثم تخصيص قيم لعناصرها فى أسطر تالية بدءا من العنصر الأول ودليله 0 وهو arr[0]إلى العنصرالرابع والأخير ودليله 3 وهو arr[3]كما يلى :









إذا لم يتم تهيئة كافة العناصر فيالمصفوفة فإنالعناصر المتبقية سوف تحتوي على قيمة 0.


الوصول إلى متغير (عنصر) ضمن مصفوفة صف :
إذا أردناالوصول إلى متغير في المصفوفة فإن الكود التالى سوف يقوم بنسخ محتويات العنصر الذى دليله 2 وهو [2] أى العنصر الثالث فى المصفوفة point إلى المتغير x.






المصفوفة ذات البعدين TWO-DIMENSIONAL ARRAY


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


المصفوفة ذات البعدين TWO-DIMENSIONAL ARRAY
وبصرف النظر عن المصفوفات ذات البعد الواحد والتي يمكن أن نفكر فيها كقائمة list، توجد أيضا فى لغة السى المصفوفات المتعددة الأبعاد .
فيما يلى شرح للمصفوفات ثنائية الأبعاد والتى تسمى ماتريكس matrices والتى يمكن أن نفكر فيها كجداول tables .

الإعلان عن المصفوفة ثنائية الأبعاد أو الماتريكس :

يتم الإعلان عن المصفوفة ثنائية الأبعاد بتحديد نوع بيانات المصفوفة واسم المصفوفة وحجم كل بعد بها .


مثال :


حيث :
التعبير number_of_rows يمثل عدد صفوف الجدول والتعبير number_of_columns يمثل عدد أعمدة الجدول .

مثال :

لإعلان مصفوفة متغيرات من نوع الحروف charاسمها two_d مكونة من 3 صفوف [3] و 5 أعمدة [5]نكتب :

char two_d[3][5];




تخصيص قيم لعناصر المصفوفة الثنائية الأبعاد :
يمكن تخصيص قيم لعناصر المصفوفة ثنائية الأبعاد خلال الإعلان عن المصفوفة .
مثال :
تخصيص قيم لمصفوفة ثنائية الأبعاد لمتغيرات من نوع الأعداد الصحيحة int اسمها Table , هذه المصفوفة بها صفين [2] وثلاثة أعمدة [3] .




مثال آخر :
يمكن تهيئة مصفوفة ثنائية الأبعادكما يلى :
int two_d[2][3] = {{ 5, 2, 1 },{ 6, 7, 8 }};




أى : إعلان declare مصفوفة ثنائية الأبعاد لمتغيرات مننوع الأعداد الصحيحة int تحتوى على 2 صف و 3 عامود و تهيئة initialize عناصرها بحيث تأخذ عناصر الصف الأولالقيم
5, 2, 1 و تأخذ عناصر الصف الثانى القيم 6, 7, 8

طريقة الوصول وتعديل قيمة متغير في المصفوفة ثنائية الأبعاد :
فى هذه الحالة نحتاجدليلين
مثال :
char ch;
ch = two_d[2][4];




· السطر الأول : إعلان متغير نوع char اسمه ch
· السطر الثانى : جعل قيمة المتغير ch بقيمةالعنصر الموجود بالصف الثالث (ذو الدلالة( 2 والعمودالخامس (ذو الدلالة4 )(نسخ محتويات عنصر بالمصفوفة إلى متغير )




مثال آخر :
two_d[0][0] = 'x';




جعل قيمة العنصر الموجود بالصف الأول والعامود الأولبالمصفوفة two_d والمعرفة سابقا على أنها مصفوفة حروف بالحرف x وعلامتى التنصيص للدلالة أنه حرف.


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


الدوال FUNCTIONS
مقدمة :
كل برنامج مكتوب بلغة سي يتكون من عدد من "الدوال"functions بعضها صغير والآخر كبير .
الفكرة الرئيسية فى البرمجة هي تقسيم البرنامج الى عدة أجزاء باستخدام هذه الدوال من أجل جعل حل المشكلة الفعلية أسهل. علاوة على ذلك فإن الدوال تمكننا من استخدام المهارات والمعارف لمبرمجين آخرين.
فعلى سبيل المثال لإرسال سلسلة نصية string لوحدة عرض LCDيكون من الأسهل بكثير استخدام جزء من برنامج مكتوب بالفعل بدلا من البدء من جديد.
تتكون الدوال منأوامرتحددما ينبغي القيام بهعلىالمتغيرات.
يمكن اعتبار عملها كعمل البرامج الفرعية subroutines .
كقاعدة عامة ،من الأفضل بكثير أن يحتوى برنامج على عدد كبير من الدوال البسيطة على أن يحتوى على عدد قليل من الدوال الكبيرة .
يتألف جسم الدالة عادة من عدة أوامر والتى يتمتنفيذها بالترتيب المحدد لها .

الإعلان عن الدالة :
كل دالة يجب إعلانها declared بشكل صحيح حتى يمكن تفسيرها بشكل صحيح أثناء عملية الترجمة .

شكل أو صيغة الدالة :



كما فى الشكل : نوع النتائج عند العودة type_of_result يليه اسم الدالة function_name ثم يذكر بين قوسين (…,…) نوع البارامترات

مثال :


div_t div (int number , int denom);

الدالة divتقوم بحساب نتيجة قسمة البسط وهو متغير نوع عدد حقيقى int numberعلى المقام وهو متغير نوع عدد حقيقى int denom . الدالة تعود بنوع يسمى div_t

لاحظ أن الدالة لا تحتاج بالضرورة لبارامترات ولكن يجب أن يكون بها أقواس وإلا فإن المترجم سوف يسىء تفسير الدالة .

أنواع الدوال

1- دالة بدون عائد أو الدالة void (خالية)
إذا كانت الدالة بعد تنفيذها لا تعود بنتيجة (بدون عائد) إلى البرنامج الرئيسى أو إلى الدالة حيث تم استدعائها فأن البرنامج يتقدم بالتنفيذ بعد مقابلة قوس الغلق } .
تستخدم مثل هذه الدوال عندما يكون من الضرورى تغيير حالة أطراف مخارج الميكروكونترولر خلال نقل البيانات من خلال الاتصال التسلسلى ، وعند كتابة البيانات على وحدة العرض LCD .. إلخ.
يتعرف المترجم على هذه الدوال بواسطة نوع نتيجتها والذى يحدد بأنه "فارغ أو خالى من العائد " voidكما فى الشكل التالى .






مثال : دالة من النوع void (بدون عائد ) – اسمها interrupt (المقاطعة) – لا تحتوى على بارامترات ( ).


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

2- دالة مع وجود عائد return

إذا كان من الضروريأن تعود الدالة بعد تنفيذها بنتيجة (بعائد) عندئذ يستخدم أمر return والذى يمكن أن يليه أيتعبير كما يلى :





إذا احتوت الدالة على أمر العودة return بدون أن يتبعها تعبير expression يتوقف تنفيذ الدالة عند الوصول إلى هذا الأمر ويتقدم تنفيذ البرنامج من أول أمر بعد قوس الغلق } .


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


المترجم (الكومبيلر) MIKROC PRO للميكروكونترولر PIC




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

تثبيت mikroC PRO للميكروكونترولر PICيشبه تثبيت أى برنامج ويندوز :
معالج التثبيت هو المسؤول عن جميع الإجراءات ، يجب عليك فقط النقر فوق الخيارات
Next, OK, Next, Next... باستثناء الخيارات الغير مطلوبة , حيث لن نقوم بتثبيت أى مبرمج خاص سواء برمجياته softwareأو الدرايفر driverالخاص به (الدرايفر هو برنامج يتيح للبرمجيات التى قمت بتثبيتها على جهاز الكمبيوتر بالاتصال communicate بين الأجهزة hardware مع بعضها البعض) . ولماذا ذلك ؟ مهمة المترجم هي تحويل البرنامج المكتوب بلغة السى إلى كود سداسى عشر HEX code .والذى يتم برمجة الميكروكونترولر به فيما بعد باستخدام إى جهاز برمجة (بجزئيه hardware و software ) .


1- ابدأ التثبيت بالنقر المزدوج على أيقون البرنامج كالعادة :








2- يظهر معالج التثبيت الذى سوف يقودك لخطوات التثبيت بسرعة وأمان :









3- نتبع الإرشادات



























































القادم

بيئة التطوير المتكاملة للمترجم IDE FOR MIKROC PRO FOR PIC


الصورة الرمزية باسم ماجد
باسم ماجد
:: مهندس متميز ::
تاريخ التسجيل: Jan 2009
الدولة: Amman-Jordan
المشاركات: 316
نشاط [ باسم ماجد ]
قوة السمعة:
قديم 05-03-2011, 02:44 PM المشاركة 104   
Smile


شكرا" لك أخي الكريم م.فتح الله
استخدم نسخه قديمه من الميكروسي و هي :
mikroC, mikroElektronika C compiler
for Microchip PIC microcontrollers
Version: 8.2.0.0 هل تنصحني بإستبدالها بالنسخه الحديثه
و شكرا" لما تقدمه من جهد و مثابره لنشر المعرفه جعله الله في ميزان حسناتك



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