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

   

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



أدوات المترجم COMPILER’S TOOLS


يوفر هذا المترجم أدوات خاصة لتبسيط عملية كتابة البرنامج. جميع هذه الأدوات متاحة من القائمة أدواتTools. ونحن بصدد تقديم وصفا موجزا لبعض منهم.





الوحدة الطرفية USART TERMINAL"المرسل المستقبل التزامني اللاتزامني العام "








الوحدة الطرفية USART هى بديل للوحدة الطرفية القياسية لبرنامج الوندوز المعروفة باسم
Windows Hyper Terminal . يمكن أن تستخدم فى التحقق من عمل الميكروكونترولر الذى يستخدم الاتصال عن طريق USART حيث يحتوى على جهاز داخلى ويتم إتصاله بالمنفذ التسلسلى RS232 بالكومبيوتر عن طريق كابل تسلسلى .
نافذة USART مبينة بالشكل وتحتوى على خيارات لضبط الاتصال التسلسلى وعرض البيانات المرسلة والمستقبلة .

محرر الذاكرة EEPROM EDITOR








إذا اخترت الخيار EEPROM Editor من القائمة Tools تظهر لك نافذة كالمبينة بالشكل . وهى تبين شكل ذاكرة EEPROM الموجودة بالميكروكونترولر .
إذا كنت تريد تغيير محتوياتها بعد تحميلها بالبميكروكونترولر فهذا هو المكان الصحيح . يجب أن تختار نوع البيانات (char, int or double) ثم إدخال القيمة فى الحقل (المكان) Edit Value وانقر على Edit . بعد ذلك انقر على زر Save لحفظ البيانات بامتداد .hex إذا كان الخيار Use EEPROM in Project مفعل فإن البيانات سوف يتم تحميلها تلقائيا بالشريحة أثناء عملية البرمجة .

خريطة أسكى ASCII CHART
إذا أردت التمثيل العددى لأى حرف من حروف أسكى فقط اختار الخيار المناسب من قائمة Tools فيظهر لك جدول كالمبين بالشكل .
كما ترى الحروف ممثلة بأعداد ومكافئات غريبة . لهذا السبب أمر برنامج لعرض العدد 7 على شاشة وحدة العرض الكريستال السائل LCDلن يؤدى إلى عرض أي شيء مشابه لهذا الرقم. بدلا من ذلك، سيتم عرض ما يعادل الأمر. إذا قمت بإرسال نفس العدد كحرف، فسوف تحصل على النتيجة المتوقعة أى العدد 7. وبناء عليه ، إذا كنت ترغب في عرض عدد بدون تحويله مسبقا إلى حرف فمن الضروري إضافة العدد 48 لكل رقم يتكون منه العدد .





محرر السبع شرائح SEVEN SEGMENT EDITOR
يمكنك محرر السبع شرائح من إيجاد وبسهولة الرقم الذى يجب وضعه فى مخرج المنفذ لعرض الرمز المطلوب. بالطبع يجب توصيل أطراف المنفذ بشرائح العرض بالطريقة الصحيحة . فقط ضع المؤشر على أى شريحة وانقر عليها يظهر لك على الفور العدد الى يجب عليك نسخه إلى البرنامج .






تخصيص حروف وحدة العرض LCDLCD CUSTOM CHARACTER






يمكن للميكروكونترولر إرسال الحروف القياسية علاوة على حروف يمكنك إنشاؤها بنفسك للعرض . باختيار أداة LCD custom character سوف تخلص نفسك من العمل الشاق فى إنشاء وظائف للكود المناسب المرسل للعرض . مجرد إنشاء رمز بالنقر على مربعات صغيرة فى نافذة LCD custom character واختيار المكان (الموضع) والصف والنقر على زر GENERATE . يظهر الكود المطلوب فى نافذة أخرى .لن تحتاج إلى نقرات أخرى . إنسخ إلى الحافظة والصق Copy to Clipboard – Paste.



مولد الصور النقطية للشاشات الكريستال السائل الجرافيك
GRAPHIC LCD BITMAP GENERATOR






هذة أداة أخرى لا يمكن الاستغناء عنه في حال أن المتحكم الذي يتم كتابة برنامجه يستخدم وحدة عرض جرافيك (GLCD). تمكنك هذه الأداة من عرض أي صورة نقطية بسهولة. للاستفادة منها اختار
Tools/Glcd Bitmap Editor فتظهر لك النافذة المناسبة . اختار نوع وحدة العرض المستخدمة وحمل الصورة النقطية ( فى هذا المثال 128 x 64 pixels ) .بعد ذلك الإجراء هو نفسه كما في المثال أعلاه نسخ إلى الحافظة...

الكود المتولد بأدوات التحكم فى وحدات العرض LCD و GLCD يحتوي على وظائف للمكتبة للمكتبة Lcd library .اذا استخدمتها في البرنامج لا تنسى أن تتحقق وتختار المربع الموجود بجوار هذه المكتبة في نافذة Library Manager وذلك لتمكين المترجم من التعرف على وظائفها بشكل صحيح.

المكتبات LIBRARIES







واحد من الخيارات الأكثر فائدة من هذا البرنامج هو مدير المكتبة Library Managerويستحق اهتمامنا بالتأكيد.
الميزة الرئيسية للغات البرمجة عالية المستوى مثا السى إنها تمكنك من استخدام المعرفة والعمل من أشخاص آخرين. مكتبات الدالة functionهي أفضل مثال على ذلك. فإذا كنت في حاجة الى وظيفة لأداء مهمة معينة أثناء كتابة البرنامج ، فما عليك إلا البحث عنها في بعض المكتبات (والتي هي جزء متكامل فى المترجم ) واستخدامها . على سبيل المثال ، إذا كنت في حاجة إلى وظيفة لتوليد صوت sound على بعض الأطراف ، افتح مكتبة الصوت Sound library في نافذة إدارة المكتبة Library Manager والنقر المزدوج على الوظيفة المناسبة Sound_Play . يظهر وصفا مفصلا لهذه الوظيفة على الشاشة. إنسخها إلى البرنامج وعين البارامترات المناسبة. إذا التعليم checked على هذه المكتبة، فسوف يتم التعرف على وظائفها تلقائيا خلال عملية الترجمة بحيث لا يكون من الضروري استخدام أمر التضمين #include.

اعلانات

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


الأعمال الأساسية بالمترجم MikroC PRO
تشمل :
· إنشاء مشروع جديد .
· تحرير المشروع .
· إضافة ملفات إلى المشروع .
· حفظ وغلق المشروع .
· بناء المشروع build

الخطوة رقم 1 : تشغيل البرنامج
· إفتح (شغل) البرنامج وانتظر حتى يتم تحميله . عندئذ سوف تشاهد منطقة العمل workspace للبرنامج .
· من شريط القوائم اختار Project >> New Project وانقر عليه .




الخطوة رقم 2: بدأ معالج المشروع الجديد
· بعد ذلك يبدأ معالج المشروع الجديد New Project Wizard والذى يساعدك فى إنشاء مشروعك .
· انقر على زر التالى Next .







الخطوة رقم 3 :اختيار الجهاز أى الميكروكونترولر
  • من القائمة التالية يجب أن تختار من قائمة "اسم الجهاز" أى نوع الميكروكونترولر PIC الذى سوف تستخدمه ثم انقر زر Next .





الخطوة رقم 4 :
  • من القائمة التالية يجب أن تدخل تردد الساعة فى الحقل (المكان) المخصص لذلك , ثم انقر زر Next .





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





الخطوة رقم 6 :
  • من هذه النافذة يمكنك إضافة ملفات إلى مشروعك أو إزالتها .نحن لا نحتاج الآن لإضافة ملفات لذلك سوف نتركها كمال هى وننقر مباشرة على الزر Next .






الخطوة رقم 7 :
  • هذه الخطوة تختص بضم مكتبات بمشروعك . لديك خياران : ضم الكل أو عدم ضم أى واحدة . من المفض عدم ضم أى شىء لإننا سوف نتمكن مكن اختيار مكتباتنا من "مدير المكتبة " Library Manager, لذلك لنختار None ثم ننقر على زر Next .






الخطوة رقم 8 :
  • وأخيرا تم إنشاء مشروعنا .يمكننا أيضا النقر على زر Back والعودة لتغيير ما نراه مناسبا .





الخطوة رقم 9 :
  • الآن بعد أن أنشأنا مشروعنا الأول يمكننا النقر على "مدير المشروع " Project Managerفى الجهة اليمنى وسوف نرى مشروعنا موجود هناك .وسوف نرى أيضا أى ملفات ومجلدات يضمها المشروع . سوف نهتم الآن بمجلد المصدر Source والخرج Output فقط .حسنا سوف يمكننا أن نبدأ من هنا .
  • كان هذا كل شىء حول إنشاء مشروع جديد .






الخطوة رقم 10 :
  • الآن سوف نتحدث عن تحرير البرنامج .هذا مهم لإنه يجب علينا إعداد بعض الخيارات والخانات للميكروكونترولر الذى سوف نستخدمه مثل جعل مؤقت الحراسة Watchdog Timer فعال أو غير فعال وما إلى ذلك .
  • مرة أخرى من شريط القوائم نختار Project >> Edit Project. .




الخطوة رقم 11 :
  • من النافذة التى سوف تظهر يمكننا الآن الميكروكونترولر المستخدم .لدينا الخيارات التالية للاختيار من بينها :
  • المذبذب Oscillator :
هنا يمكننا اختيار نوع المذبذب الذى نستخدمه . لإذا كنا نستخدم كريستال كوارتز كمذبذب فيجب أن نختار XT لترددات المنخفضة أو نختار HS للترددات العالية . وإذا كنا سوف نستخدم مذبذب يعتمد على دائرة مقاومة ومكثف فيجب علينا اختيار RC . الاختيار LT أيضا لمذبذب الكريسال الكوارتز ولكن التى تعمل على ترددات منخفضة جدا .
  • مؤقت الحراسة Watchdog Timer
هنا يمكننا تمكين enable أو عدم تمكين disable مؤقت الحراسة .مؤقت الحراسة هو المؤقت الذى يقوم بالتحقق من العمل الصحيح للميكروكونترولر وخاصة فى البيئات التى يوجد بها تداخلات وضوضاء . لكننا لن نحتاجه لذلك نتركه فى حالة OFF .
  • مؤقت بناء القدرة Power Up Timer
يستخدم هذا المؤقت فى التأخير لبعض الوقت وهو ما يحتاجه الميكروكونترولر للقيلم بضبط الخيارات والوصول إلى حالة الاستقرار فى العمل .لذلك سوف نضعه على وضع ON .
  • حماية الكود Code Protect
هنا يمكننا وضع حماية على الكود بحيث لا يستطيع أى أحد من قراءته من الميكروكونترولر . هذا مفيد إذا كنت تعمل لبعض الشركات وبعد كتابة برنامجك الطويل يمكنك حمايته بحيث لا يستطيع أحد من نسخه من الميكروكونترولر .لكن الآن لن نحتاجه لذلك سوف نترجه فى اتلوضه OFF .




الخيارات الأربعة السابقة متاحة لجميع المتحكمات . يوجد بعض الخيارات متاحة لبعض المتحكمات الخاصة وهى :
  • كشف إنقطاع القدرة : Brown Out Detect
هذا الخيار يكشف ما إذا كان هناك إنقطاع للكهرباء حيث يتم حماية المتحكم وجعله يعود للعمل العادى . لذلك نتركه على الوضع ON .
  • البرمجة باستخدام الجهد المنخفض Low Voltage Program :
هذا الخيار يسمح لنا ببرمجة المتحكم باستخدام جهد منخفض ومن ثم يمكننا برمجته وهو فى اللوحة بدون أخذه خارجها .لكننا سوف نترك هذا الخيار غير مفعل لأننا لن نحتاجه .
  • حماية قراءة بيانات الذاكرة Data EE Read Protect :
هذا الخيار لحماية البيانات المخزنة فى ذاكرة EEPROM من النسخ . وهو مفيد إذا كان لدينا بيانات هامة مخبئة هناك . ولكننا لن نحتاجه لذلك نتركه فى وضع OFF .


بالطبع يوجد خيارات أخرى ولكنها غير ذات أهمية لنا لذلك نتركها كما هى . مرو أخرى من ىهنا يمكننا تعيين التردد واختيار الميكروكونترولر المستخدم .







الخطوة رقم 12 :
  • الأن نرى كيف يتم إضافة أو إزالة ملفات من المشروع . يمكنك فعل ذلك من مكانين :
Project >> Add File To Project لإضافة ملفات و


Project >> Remove File From Project لإزالة ملفات .
بعد النقر على Add File To Project يمكن تصفح واختيار الملفات من الكومبيوتر الخاص بك .







الخطوة رقم 13 :
  • يمكنك أيضا استخدام مدير المشروع Project Manager الموجود بالجانب الأيمن ومن هناك يمكن استخدام الأزرار الموجودة بأعلى لإضافة أو إزالة الملفات .كما يمكنك أيضا النقر بالزر الأيمن للماوس على أحد المجلدات فى هذه النافذة واختيار Add File To Project .




الخطوة رقم 14 :
  • الأن نتحدث عن حفظ وغلق المشروع . يمكننا استخدام شريط القوائم Project >> Save Project أو Save Project As لحفظ المشروع أو شريط القوائم Project >> Close Project لغلق المشروع





الخطوة رقم 15:
  • هنا نشرح بناء building المشروع لعمل ملف الهكس .hex وبرمجة الميكروكونترولر . لبرمجة الميكروكونترولر مباشرة نحتاج أن يكون لدينا وحدة برمجة تسمى mikroProg Suit.يمكننا أيضا برمجة الميكروكونترولر باستخدام وحدات برمجة مختلفة .هذه ليست مشكلة . الآن لبناء المشروع وإنشاء ملف .hex سوف نفتح Build >> Build من شريط القوائم وننقر عليه .





الخطوة رقم 16 :
  • يبدأ البرنامج فى بناء الكود وهندما ينتهى سوف ترى رسالة فى شكل صندوق رسالة . حيث يمكننا معلومات عن الذاكرة المستخدمة بالبرنامج ومعلومات حول الأخطاء الناتجة . إذا لم يكن هناك أى خطأ يكون الملف .hex جاهز ويمكننا استخدامه فى برمجة الميكروكونترولر . يمكنك إيجاد الملف .hex من مجلد المشروع .






حسنا هذا كل شىء عن الأعمال الأساسية بالمترجم MikroC PRO .

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

eng nmmsh
:: مهندس ::
تاريخ التسجيل: Oct 2010
المشاركات: 47
نشاط [ eng nmmsh ]
قوة السمعة:
قديم 15-03-2012, 08:23 PM المشاركة 11   
افتراضي


مشكورين ........ لى سؤال هل مبرمجة JDM عبارة عن برنامج .... ياريت تعطونى تفاصيلها وعملها مع PIC16F84a وبرنامج الميكروسى


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


الدرس السادس :

المدخل للبرمجة بلغة السى Introduction to C Programming Language

أولا : مقدمة :
من المفترض معرفة :
· نبذة تاريخية عن الميكروكونترولر .
· دراسة خصائص وبناء أجهزة hardware الميكروكونترولر المستهدف (على سبيل المثال PIC16F877A ) .
· معرفة طريقة تحرير وترجمة البرنامج بالمترجم mikroC compiler .

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






void main ()
{


}

كود:
void main ()
{

}


حيث :
void main (): هى الدالة الأولى والرئيسية التى يتم تنفيذها .
{ : بداية أو فتح جسم الدالة الرئيسية.
} : نهاية أو غلق جسم الدالة الرئيسية .

يتم وضع تعليمات البرنامج المراد تنفيذها بين قوس بداية الدالة الرئيسية وقوس نهايتها .
الدالة الرئيسية هى التعليمة الرئيسية (الأساسية) التى ينبغى أخذها بعين الاعتبار فى البرنامج المكتوب بلغة السى ويجب أن تكون موجودة فى مكان ما فى البرنامج لأنها تمثل نقطة بداية عملية تنفيذ البرنامج .


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 16-03-2012, 12:24 AM المشاركة 13   
افتراضي



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

// البرنامج الأول
/* برنامج وميض ليد كل واحد ثانية
هذا البرنامج يهدف إلى إضاءة وإطفاء ليد متصل بطرف لمنفذ الميكروكونترولر
إعداد :
Eng.F.Abdelaziz
http://www.eeecb.com/vb/index.php
Online Course: PIC Microcontrollers - Programming in C */

void main ()
{
TRISB = 0; // إعداد أطراف المنفذ كمخارج بوضع أصفار فى سجل التحكم
PORTB = 0; // كتابة أو إرسال أصفار إلى أطراف المنفذ لإطفاء الليدات كحالة إبتدائية

while (1)
{
PORTB.F1 = 1; // تحديد الطرف بالحالة المرتفعة لإضاءة الليد
Delay_ms (1000); // تأخير أو انتظار لمدة واحد ثانية
PORTB.F1 = 0; //تحديد الطرف بالحالة المنخفضة لإطفاء الليد
Delay_ms (1000); // تكرار التأخير
}
}


كود:
// البرنامج الأول /* برنامج وميض ليد كل واحد ثانية هذا البرنامج يهدف إلى إضاءة وإطفاء ليد متصل بطرف لمنفذ الميكروكونترولر إعداد : Eng.F.Abdelaziz http://www.eeecb.com/vb/index.php Online Course: PIC Microcontrollers - Programming in C */
void main () { TRISB = 0; // إعداد أطراف المنفذ كمخارج بوضع أصفار فى سجل التحكم PORTB = 0; // كتابة أو إرسال أصفار إلى أطراف المنفذ لإطفاء الليدات كحالة إبتدائية
while (1) { PORTB.F1 = 1; // تحديد الطرف بالحالة المرتفعة لإضاءة الليد Delay_ms (1000); // تأخير أو انتظار لمدة واحد ثانية PORTB.F1 = 0; //تحديد الطرف بالحالة المنخفضة لإطفاء الليد Delay_ms (1000); // تكرار التأخير } }





الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 16-03-2012, 12:26 AM المشاركة 14   
افتراضي


شرح كل قسم من أقسام البرنامج :
القسم الأول : التعليقات comments

// البرنامج الأول
/* برنامج وميض ليد كل واحد ثانية
هذا البرنامج يهدف إلى إضاءة وإطفاء ليد متصل بطرف لمنفذ الميكروكونترولر
إعداد :
Eng.F.Abdelaziz
http://www.eeecb.com/vb/index.php
Online Course: PIC Microcontrollers - Programming in C */

كود:
// البرنامج الأول /* برنامج وميض ليد كل واحد ثانية هذا البرنامج يهدف إلى إضاءة وإطفاء ليد متصل بطرف لمنفذ الميكروكونترولر إعداد : Eng.F.Abdelaziz http://www.eeecb.com/vb/index.php Online Course: PIC Microcontrollers - Programming in C */



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

القسم الثانى الثانى : الدالة الرئيسة main ()

void main ()
{
TRISB = 0; // إعداد أطراف المنفذ كمخارج بوضع أصفار فى سجل التحكم
PORTB = 0; // كتابة أو إرسال أصفار إلى أطراف المنفذ لإطفاء الليدات كحالة إبتدائية

while (1)
{
PORTB.F1 = 1; // تحديد الطرف بالحالة المرتفعة لإضاءة الليد
Delay_ms (1000); // تأخير أو انتظار لمدة واحد ثانية
PORTB.F1 = 0; //تحديد الطرف بالحالة المنخفضة لإطفاء الليد
Delay_ms (1000); // تكرار التأخير
}
}

كود:
void main () { TRISB = 0; // إعداد أطراف المنفذ كمخارج بوضع أصفار فى سجل التحكم PORTB = 0; // كتابة أو إرسال أصفار إلى أطراف المنفذ لإطفاء الليدات كحالة إبتدائية while (1) { PORTB.F1 = 1; // تحديد الطرف بالحالة المرتفعة لإضاءة الليد Delay_ms (1000); // تأخير أو انتظار لمدة واحد ثانية PORTB.F1 = 0; //تحديد الطرف بالحالة المنخفضة لإطفاء الليد Delay_ms (1000); // تكرار التأخير } }

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

داخل الدالة الرئيسية يتم تنفيذ التعليمات التالية :
إعدادات الميكروكونترولر كما يلى :


TRISB = 0; // إعداد أطراف المنفذ كمخارج بوضع أصفار فى سجل التحكم
PORTB = 0; // كتابة أو إرسال أصفار إلى أطراف المنفذ لإطفاء الليدات كحالة إبتدائية



كود:
TRISB = 0; // إعداد أطراف المنفذ كمخارج بوضع أصفار فى سجل التحكم PORTB = 0; // كتابة أو إرسال أصفار إلى أطراف المنفذ لإطفاء الليدات كحالة إبتدائية
كما نعرف , الأمر TRISB يعرف إتجاه البيانات للمنفذ PORTB بالميكروكونترولر .
فى هذا المثال TRISB = 0 , يؤدى ذلك إلى إعداد جميع أطراف المنفذ PORTB كمخارج .
الأمر PORTB = 0 يؤدى إلى جعل حالة الأطراف RB0 إلى RB7 فى الحالة المنطقية المخفضة low=0)).
التعليمات يجب أن تنتهى دائما بالفاصلة المنقوطة ";" . الفاصلة المنقوطة هى جزء من التعليمة وليست تبويب منفرد لذلك يجب ألا ننسى إضافة الفاصلة المنقوطة بعد نهاية كل تعليمة .

بعد ذلك يتم إنشاء حلقة تكرار غير منتهية كما يلى :
while (1)

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

{
PORTB.F0 = 1; // تحديد الطرف بالحالة المرتفعة لإضاءة الليد
Delay_ms (1000); // تأخير أو انتظار لمدة واحد ثانية
PORTB.F0 = 0; //تحديد الطرف بالحالة المنخفضة لإطفاء الليد
Delay_ms (1000); // تكرار التأخير
}

كود:
{ PORTB.F0 = 1; // تحديد الطرف بالحالة المرتفعة لإضاءة الليد Delay_ms (1000); // تأخير أو انتظار لمدة واحد ثانية PORTB.F0 = 0; //تحديد الطرف بالحالة المنخفضة لإطفاء الليد Delay_ms (1000); // تكرار التأخير }

ونظرا لعدم وجود أمر يوقف حلقة while , يتم تنفيذ مجموعة الأوامر إلى أجل غير مسمى حتى يتم إيقاف العملية shut down أو إعادتها restarted .

العبارة PORTB.F0 = 1 : تؤدى إلى جعل الطرف RB0 للمنفذ PORTB فى الحالة المنطقية المرتفعة (high=1) .
للإشارة لطرف بمنافذ الميكروكونترولر PORTA, PORTB, PORTC, PORTD, PORTE يجب أن نكتب اسم المنفذ ثم نقطة ثم الحرف Fثم رقم الطرف المطلوب .
مثال :
PORTB.F0 = 0 يشير للطرف RB0 بالمنفذ PORTB .
PORTD.F5 = 1 يشير للطرف RD5بالمنفذ PORTD .
PORTE.F1 = 1 يشير للطرف RE1 بالمنفذ PORTE .

العبارة delay_ms (1000): هى دالة داخلية للمترجم mikroCتستخدم فى توليد تأخير (إنتظار) زمن بالملى ثانية .
فى هذا المثال , تؤدى هذه العبارة إلى التأخير (الإنتظار) بقيمة 1000 ملى ثانية أو 1 ثانية .
العبارة PORTB.F0 = 0: تستخدم لوضع الطرف RB0 بالمنفذ PORTB فى الحالة المنخفضة low=0.
نتيجة لذلك : عند برمجة (تحميل) الميكروكونترولر PIC بنتيجة ترجمة هذا البرنامج فإن الطرف RB0 سوف يتحول بين الحالة المنطقية المنخفضة والحالة المنطقية المرتفعة ويتكرر ذلك كل 1ثانية بصفة مستمرة.


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 16-03-2012, 12:32 AM المشاركة 15   
افتراضي


ملف الدرس بصيعة pdf على الرابط :

http://www.eeecb.com/vb/showthread.php?p=2687&posted=1#post2687


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


تدريب : تعديل فى برنامجك الأول ليصبح البرنامج الثانى :
لنتناول برنامج آخر .


كود:
// البرنامج االثانى /* برنامج وميض ليد كل واحد ثانية هذا البرنامج يهدف إلى إضاءة وإطفاء مجموعة ليدات متصلة بأطراف منفذ الميكروكونترولر إعداد : Eng.F.Abdelaziz http://www.eeecb.com/vb/index.php Online Course: PIC Microcontrollers - Programming in C */ void main () { TRISB = 0; // إعداد أطراف المنفذ كمخارج بوضع أصفار فى سجل التحكم PORTB = 0; // كتابة أو إرسال أصفار إلى أطراف المنفذ لإطفاء الليدات كحالة إبتدائية TRISD = 0; // إعداد أطراف المنفذ كمخارج بوضع أصفار فى سجل التحكم PORTD = 0; //كتابة أو إرسال أصفار إلى أطراف المنفذ لإطفاء الليدات كحالة إبتدائية while (1) { PORTB = 255; // جميع أطراف المنفذ فى الحالة المرتفعة PORTD = 255; // جميع أطراف المنفذ فى الحالة المرتفعة Delay_ms (100); // الانتظار 100 ملى ثانية PORTB = 0; //جميع أطراف المنفذ فى الحالة المنخفضة PORTD = 0; // جميع أطراف المنفذ فى الحالة المنخفضة Delay_ms (100); // الانتظار 100 ملى ثانية } }

الغرض من البرنامج وميض ليدات متصلة بأطراف المنفذ PORTB والمنفذ PORTD للميكروكونترولر بصفى مستمرة على فترات 100 ملى ثانية . خصائص هذا البرنامج تماثل البرنامج الأول فيما عدا أن التعامل هنا يتم مع المنفذ بالكامل كوحدة واحدة كما يلى :


كود:
PORTB = 255; // جميع أطراف المنفذ فى الحالة المرتفعة PORTD = 255; // جميع أطراف المنفذ فى الحالة المرتفعة


التعديل الأخير تم بواسطة : F.Abdelaziz بتاريخ 16-03-2012 الساعة 01:52 AM


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