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

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

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 24-12-2010, 06:28 PM المشاركة 1   
افتراضي لغة السى:تفسير البرنامج الأول سطر بسطر:الميكروكونترولرPIC16F84 و ليد فلاشرLED Flasher Twitter FaceBook Google+



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



وصف البرنامج : سطر بسطر
هذا هو البرنامج الأول , هو بسيط جدا وسندرس (نفحص) كل سطر بالتفصيل .
ولوصف البرنامج فسوف نكرر كتابته عدة مرات وفى كل مرة نسلط الضوء على أسطر معينة ونصفها .




هذه السطور الثلاثة هي "تعليقات" comments.
فى معايير لغة السى ANSI C قد يبدأ التعليق بالرمز // ، أي شيء يلى الرمز // فى هذا السطر سيتم تجاهله.



هذان السطران يقومان بضم include ملفات أخرى.
في حالتنا الميكروكونترولر PIC هو PIC16F84 والسطر الأول يضم معلومات لا غنى عنها (ضرورية) للمترجم، والتى تخبره بأى المتغيرات variables تعتبر لازمة لهذا الميكروكونترولر .
الملف pic.h يضم تلقائيا ملف رأس للمعالج الذي تم اختياره لهذا المشروع. فى هذه الحالة فإنه سيتم تحميل الملف P16F84.h الذي تم تضمينه ضمن برنامج المترجم .

الملفات pic.h و delays.h تسمى ملفات الرأس header files. تعاريف المنافذ Ports و سجلات الوظائف الخاصة الأخرى للميكروكونترولر 16F84 متضمنة (موجودة) في ملف الرأس الأول pic.h.

برنامجنا يستخدم مكتبة الدالةlibrary function .
والدالة هي عبارة عن مجموعة من التعليمات البرمجية (كود) (مشابه للروتين الفرعي sub-routine فى لفة البيسك ولغة الأسمبلى ) والتي قد يتم استدعاؤها من أي مكان في البرنامج الرئيسي.
فى هذه الحالة لدينا الدالة "إنتظار" Wait (والتي سوف تستخدم فيما بعد اسفل البرنامج )، ولكن يجب أن يكون المترجم على علم بالدالة Wait قبل أن نحاول استخدامها.
ملف الرأس delays.h يضم عددا من التعريفات لمكتبة الدوال بما في ذلك دالة Wait .

اعلانات

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 24-12-2010, 06:31 PM المشاركة 2   
افتراضي




فى لغة السى يتم تجميع العبارات Statements فى كتل من الأكواد blocks of codes تسمى الدوال functions.
في هذه الحالة الدالة تسمى "الرئيسية" main . كلمة " خالى – فارغ " void تعنى ببساطة " أن الدالة الرئيسية main لا ترجعreturn قيمة ".

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



هذاالسطر يوضح كيفيةتعيينأحد سجلات التحكم فى المنافذ TRIS.
في هذه الحالة السجل هو سجل التحكم فى المنفذ Port B . جميع أطراف المنفذ Port B مطلوب أن تكونمدخلاتinputs (1)باستثناءRB0وهى الخانة الأولى bit0 من المنفذ BPort مطلوب أن تكونمخرج output(0). تؤخذ القيم فى لغة السى باأرقام العشرية . فى هذهالحالة'0xfe' يبين العدد بالسداسى عشر (11111110).





هذه حلقة loop.
سوف يتكرر الكود (التعليمات البرمجية) في الحلقة طالما أن الشرط (نتيجة مؤثر أو الحصرية القادمة فيما بعد ) صحيح true(غير صفر)، في هذه الحالة سيتكرر الكود (التعليمات البرمجية) فى الحلقة إلى الأبد. الأقواس المتعرجة تحيط كتلة من الكود (التعليمات البرمجية ) والتي تبين الكود الذى يتكرر .





هذه هي دالة مكتبة والتي تأخر فترة من الزمن.
هذه الدالة تحتاج لإخبارها بطول زمن الانتظار (إلى متى الانتظار؟) , العدد الذى بين القوسين هو"زمن التأخير" بالملى ثانية . لذلك يؤدي هذا البرنامج إلى الانتظار أو التأخير لمدة 250mS , علما بأن دالة الانتظار تعتبر تقريبية، وللتوقيت الدقيق نستخدم المؤقتات الداخلية للميكروكونترولر . في الممارسة العملية في هذا المثال دالة الانتظار دقيقة بقيمة 0.2%.




هذا هو السطر النهائى لحلقة البرنامج.
الرمز ^ هي مؤثرoperator بلغة السى ويمثل التعامل مع خانة bitwise حيث يقوم بعمل دالة (بوابة) "أو الحصرية" exclusive OR .
يتم عمل عملية exclusive OR بين المنفذ Port Bمع العدد 1، ووضع النتيجة بالمنفذPort B , سيؤدي ذلك إلى عكس (قلب) الخانة الأولى bit0 للمنفذ Port B ، وذلك في كل مرة تنفذ فيها حلقة المنفذ Port B , الخانة bit0 سوف تتغير وتتسبب فى وميض (فلاش) الدايود المشع للضوء .

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

الصورة الرمزية سعيد قادر
سعيد قادر
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2009
الدولة: العراق/ كوردستان
المشاركات: 2,915
نشاط [ سعيد قادر ]
قوة السمعة:147
قديم 24-12-2010, 06:53 PM المشاركة 3   
افتراضي


بارك الله فيك استاذى العزيز كنت اطمح ان يكون مع الدروس ملف الشروحات على برنامج ورد اذا امكن جزاك الله كل الخير


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 24-12-2010, 07:28 PM المشاركة 4   
افتراضي


بارك الله فيك استاذى العزيز كنت اطمح ان يكون مع الدروس ملف الشروحات على برنامج ورد اذا امكن جزاك الله كل الخير
اخى الكريم

شكرا جزيلا لك

ان شاء الله يتم التنسيق والنشر على شكل ورد

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


ملك العلوم
:: عضو فضي ::
تاريخ التسجيل: May 2008
الدولة: Egypt
المشاركات: 192
نشاط [ ملك العلوم ]
قوة السمعة:70
قديم 24-12-2010, 09:34 PM المشاركة 5   
افتراضي


السلام عليكم ورحمة الله وبركاته
أولا بارك الله فيك على الشرح الوافى
ثانيا: اود الاستفسار عن نقطتين
1) الرقم FE هو 11111110 لكن ماذا تعنى 0x قبلها ؟
2) هل ^1 تعنى اقلب حالة هذه الخانة 1 ؟
لكن while تستمر فى عملها مالم يتحقق شرطها فى جسم الحلقة وانت كتبت while(1)هل هذه كافية ؟
أرجو توضيح هذه النقاط وبارك الله فيك


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


السلام عليكم ورحمة الله وبركاته
أولا بارك الله فيك على الشرح الوافى
ثانيا: اود الاستفسار عن نقطتين
1) الرقم FE هو 11111110 لكن ماذا تعنى 0x قبلها ؟
2) هل ^1 تعنى اقلب حالة هذه الخانة 1 ؟
لكن while تستمر فى عملها مالم يتحقق شرطها فى جسم الحلقة وانت كتبت while(1)هل هذه كافية ؟
أرجو توضيح هذه النقاط وبارك الله فيك

اخى الكريك شكرا جزيلا لك

1- 0X تعنى أن العدد بالسداسى عشر .
2- ^1 تعنى عملية منطقية هى : أو الحصرية XOR (يجب ان تكون خانة واحدة فقط مرتفعة لكى يكون الخرج مرتفع ) وتأثيرها على الخانة هو عكس حالتها فان بدانا الخانة الاولى بالقيمة 0 وتم عليها عمل عملية XOR مع العدد 1 (اى خانة صفر وخانة واحد ) يكون الناتج 1 ويخزن فى الخانة اى ان الخانة اصبحت 1 اى تم عكس حالتها .
3- نعم كافية وهى حلقة خاصة غير منتهية تتكرر نتيجة لوضع 1 مكان التعبير فتكون النتيجة دائما صواب وتتكرر الحلقة كما فى الشكل






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


التعديل الأخير تم بواسطة : F.Abdelaziz بتاريخ 24-12-2010 الساعة 10:50 PM

sofien.j
:: مهندس متواجد ::
تاريخ التسجيل: Oct 2009
الدولة: tunisia
المشاركات: 83
نشاط [ sofien.j ]
قوة السمعة:0
قديم 25-12-2010, 07:28 AM المشاركة 7   
افتراضي


السلام عليكم ورحمة الله وبركاته
استاذنا الفاضل فايد
لو تكرمت علينا و رفعت لنا البرنامج مع الملف علي البروتوز
جزاك الله الف خير


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 25-12-2010, 08:11 AM المشاركة 8   
افتراضي


السلام عليكم ورحمة الله وبركاته
استاذنا الفاضل فايد
لو تكرمت علينا و رفعت لنا البرنامج مع الملف علي البروتوز
جزاك الله الف خير
اخى الكريم

شكرا جزيلا لك

بارك الله فيك

البرنامج ليس له ملف الان لان الغرض منه مجرد تطبيق وشرح كيفية كتابة ابسط البرامج وخصوصا اننى لم اتعرض حتى الان للمترجم المستخدم .
ان شاء الله سيتم عمل كثير من البرامج ورفعها .

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

إضافة رد

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

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

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


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

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