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

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

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 14-04-2015, 01:29 PM المشاركة 1   
افتراضي للمبتدئين دورة تفاعلية : برمجة الميكروكونترولر PIC بلغة السى مع المترجم CCS C Twitter FaceBook Google+



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

أولا : تحميل وتثبيت البرمجيات :


روابط برمجيات المترجم CCS C وبرنامج Proteus الإصدار 7.10


http://www.mediafire.com/download/87...with_Crack.zip

http://www.mediafire.com/download/8g...Version(2).rar


http://www.mediafire.com/download/3l.../P7.10_Sp0.rar


http://www.mediafire.com/watch/ydrdi...uickStartVideo



التعديل الأخير تم بواسطة : F.Abdelaziz بتاريخ 14-04-2015 الساعة 05:00 PM
احصائية الشكر والاعجاب - 3 شكراً, 0 عدم اعجاب, 2 اعجاب
شكراً المخترع01, احمد شهيد جواد, Logic ( شكر العضو على هذه المشاركة )
اعجاب احمد شهيد جواد, علاء الراشد2 ( أعجبته المشاركة )
اعلانات

احمد شهيد جواد
:: مهندس متميز ::
تاريخ التسجيل: Apr 2015
الدولة: العراق
المشاركات: 323
نشاط [ احمد شهيد جواد ]
قوة السمعة:0
قديم 16-04-2015, 11:12 AM المشاركة 2   
افتراضي


احسنت استاذي الفاضل استمر بارك الله فيك

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

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 19-04-2015, 02:14 PM المشاركة 3   
افتراضي


احسنت استاذي الفاضل استمر بارك الله فيك
اخى الكريم شكرا جزيلا لك


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 19-04-2015, 02:18 PM المشاركة 4   
افتراضي البداية مع الميكروكونترولر PIC والمترجم CCS C


البداية مع الميكروكونترولر PIC والمترجم CCS C
إذا كنت مبتدئا فى مجال الميكروكونترولر فأنت فى المكان المناسب ، فى هذه الدروس سوف تتعلم كيفية عمل وميض لليد LED وغير ذلك الكثير ، وذلك باستخدام الميكروكونترولر PIC . عائلة الميكروكونترولر PIC هى عائلة من الميكروكونترولر المصنعة من قبل شركة ميكروشيب .
مثل جميع الميكروكونترولر ، فإن الميكروكونترولر PIC يمكن برمجته باستخدام لغة التجميع (الأسمبلى) Assembly ، ونظرا لأن هذه اللغة صعبة قليلا فإننا نفضل اللغات رفيعة المستوى . يتوفر مترجمات لعديد من اللغات رفيعة المستوى من أجل برمجة الميكروكونترولر PIC مثل الميكروسى MikroC ، وهاى تيك
Hi-Tech ، و CCS C وغيرها . فى هذه الدروس سوف نستخدم المترجم CCS C .
المترجم MikroC والمترجم CCS C هما الأفضل للمبتدئين لأنهما يضمان الكثير من المكتبات المدمجة والتى تمكننا من برمجة الميكروكونترولر PIC دون معرفة عميقة للعمارة الداخلية له . أعتقد أن المترجم CCS C هو أفضل مترجم للغات رفيعة المستوى من أجل الميكروكونترولر PIC حيث أنه فى الغالب يكون مستقل عن الهاروير .
فى هذا الدرس سوف نتعلم كيفية كتابة مخرجات إلى طرف دخل/خرج (I/O) . فى القسم القادم سوف نشرح أساسيات تهيئة مداخل ومخارج الميكروكونترولر PIC ، مع استخدام الميكروكونترولر PIC16F877A .


مخطط أطراف الميكروكونترولر PIC16F877A :




• الأطراف VDD و VSS هى أطراف الإمداد بالقدرة . فى الميكروكونترولر PIC16F877A يكون VDD = 5 V و VSS = GND (0V) .
• الأطراف 13&14 هى أطراف OSC1 و OSC2 لتوصيل كريستال المذبذب والذى سوف يوفر الساعة Clock اللازمة لعمل الميكروكونترولر .
• الطرف الأول (1) هو طرف الإعادة MCLR (RESET) للميكروكنترولر ، ويكون فعال عندما يكون دخله منخفض ، للعمل العادى ينبغى أن يوصل إلى الجهد المرتفع HIGH (VDD) .
• أطراف الدخل / الخرج I/O فى الميكروكونترولر PIC تكون مقسمة فى شكل منافذ مختلفة ، على سبيل المثال PORTA,PORTB,PORTC,PORTD,… . كل منفذ يكون مرتبطا بسجلين ، السجل TRIS والسجل PORT والتى تسمى TRISA , PORTA , TRISB , PORTB , … .


السجلات TRIS و PORT فى الميكروكونترولر PIC :



كل من السجل PORT والسجل TRIS تتعامل مع العمليات الرقمية او المجزئة Discrete فى الميكروكونترولر PIC.
السجل TRIS يحدد وظيفة الطرف دخل / خرج . المنطق المرتفع (1) على بت السجل TRIS يجعل الطرف المناظر "دخل" Input ، فى حين أن المنطق المنخفض (0) على بت السجل TRIS يجعل الطرف المناظر "خرج" Output .
السجل PORT يمكن أن يستخدم لقراءة حالات أطراف الدخل أو كتابة حالات أطراف الخرج . بالنسبة لأطراف الخرج ، المنطق المرتفع (1) على بت السجل PORT يجعل حالة الطرف المناظر مرتفعة High(VDD) ، فى حين أن المنطق المنخفض (0) على بت السجل PORT يجعل حالة الطرف المناظر منخفضة LOW(VSS) . قراءة السجل PORT تعنى قراءة مستويات الجهد الفعلى على أطراف الدخل/الخرج . إذا كان مستوى الجهد الفعلى قريب من المستوى المرتفع (VDD) ، فإن بت السجل PORT المناظرة سوف تكون واحد (1) ، وإذا كان مستوى الجهد قريب من المستوى المنخفض (VSS) ، فإن بت السجل PORT المناظرة سوف تكون صفر (0) .


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 19-04-2015, 08:51 PM المشاركة 5   
افتراضي


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

برنامجك الأول :
اتبع الخطوات التالية :
• قم بتشغيل برمجيات المترجم CCS C ، يظهر لك بيئة التطوير المتكاملة . إذا وجدت أى ملف مفتوح انقر على File > Close All لغلق جميع الملفات .


• انقر على File > New > Source File لإنشاء ملف مصدر جديد . تظهر لك نافذة الحفظ باسم Save As .


• قم بتحديد مسار المجلد الذى ترغب فى حفظ الملفات به ، وأدخل الاسم المناسب للملف ، على سبيل المثال EX1 .



• اكتب البرنامج التالى :

كود:
 
#include <16f877.h>
#fuses HS,NOLVP,NOWDT,PUT
#use delay(clock=20000000)
#define GREEN_LED PIN_A5
Void main() {
while(TRUE) {
utput_low(GREEN_LED);
delay_ms(1000);
output_high(GREEN_LED);
delay_ms(1000);
}
}

• انقر على القائمة Compile ثم اختار Compile لترجمة البرنامج وتأكد من صحة الترجم .


ملاحظات مختصرة :
• فى الثلاثة سطور الأولى من البرنامج : يتم تعريف بيئة الهاردوير الأساسية ، فهى توضح أن الميكروكونترولر المستخدم هو PIC16F877A ، وأنه يعمل بساعة خارجية عند تردد 20 Mhz . هذه السطور تسمى توجيهات قبل المعالج ( سوف نتعرف عليها لاحقا) .
• فى السطر الرابع : يستخدم التوجيه #define فى استخدام التسمية GREEN_LED فى البرنامج بدلا من تسميتة PIN_A5 ، وذلك لتحسين قابلية قراءة البرنامج .
• فى السطر الخامس : الصيغة void main () تسمى الدالة الرئيسة ، وهى تشير إلى مكان بداية البرنامج وتضم بين قوس بدايتها "{" وقوس نهايتها "}" كتلة البرنامج الرئيسى الذى سوف يتم تنفيذه (سوف نستعرض الدوال بشكل مفصل لاحقا) .
• فى السطر السادس : استخدام العبارة “while (TRUE)” ما هى إلا وسيلة بسيطة لإنشاء حلقة لا تتوقف مطلقا .
• فى السطر السابع : الأمر (أو الدالة) output_low(GREEN_LED) يتسبب فى جعل الطرف المتصل بالليد فى الحالة المنخفضة (0V) .
• فى السطر الثامن : الأمر delay_ms(1000) تتسبب فى تأخير زمنى (إنتظار) لفترة واحد ثانية (1000 ملى ثانية ) .
• فى السطر التاسع : الأمر output_high(GREEN_LED) يتسبب فى جعل الطرف المتصل بالليد فى الحالة المرتفعة (+5V) .
• فى السطر العاشرة : الأمر delay_ms(1000) تتسبب فى تأخير زمنى (إنتظار) لفترة واحد ثانية (1000 ملى ثانية ) .
• فى السطر الحادى عشر : قوس نهاية حلقة While ، حيث يقفز تنفيذ البرنامج إلى مكان قوس البداية مرة أخرى .
• السطر الثانى عشر : قوس نهاية الدالة الرئيسية main .
النتيجة : يومض الليد ، أى يضىء لمدة ثانية ويطفىء لمدة ثانية ، ويتكرر ذلك بصفة مستمرة .

الآن إلى المحاكاة ببرنامج بروتيس Proteus :

الدائرة الكهربائية :



الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 19-04-2015, 10:49 PM المشاركة 6   
افتراضي المفاهيم الأساسية للغة السى :



برمجة الميكروكونترولر 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); .

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


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 20-04-2015, 12:18 PM المشاركة 7   
افتراضي



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

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

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




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

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

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



الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 20-04-2015, 02:22 PM المشاركة 8   
افتراضي



التوجيه #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
;
فى هذا المثال ، الطريقتان صحيحتان ، السبب علامة انتهاء العبارة ";" فلا تنسى أن تكتبها عند نهاية كل عبارة حتى لا تحصل على أخطاء عن ترجمة البرنامج .

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


التعديل الأخير تم بواسطة : F.Abdelaziz بتاريخ 20-04-2015 الساعة 02:27 PM
موضوع مغلق

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


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

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2024