المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : دورة الميكروكونترولر PIC وتطبيقاته على الإنترنت On-Line Course


F.Abdelaziz
09-28-2011, 01:44 AM
دورة الميكروكونترولر PIC وتطبيقاته على الإنترنت On-Line Course



الدرس الأول

تاريخ واستخدام المتحكمات (الميكروكونترولرز) History and use of microcontrollers

تطور التقنيات

منذ أن خلق الله الكون و }عَلَّمَ الإِنْسَانَ مَا لَمْ يَعْلَمْ { وهو يسعى وراء سبل تسهيل وتبسيط الأنشطة المتكررة والمعقدة , مع معرفة العمليات الحسابية المكتسبة على مر السنين ومع الانتشار الواسع للأنشطة التجارية , كانت المشكلة الكبرى هى القيام بالعمليات الحسابية المعقدة , والتى أدت إلى لإنشاء أجهزة ميكانيكية للمساعدة فى هذه المهمة والتى تسمى بوجه عام "أباكس" abacus أو "العداد" .




http://eeecb.com/up2//uploads/images/domain-f3e4683b7f.jpg (http://eeecb.com/up2//uploads/images/domain-f3e4683b7f.jpg)



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

مع مرور الزمن ولقرون وبالتطوير المستمر لهذه الآلات ظهرت أجهزة وآلات متعددة للمساعدة فى المهام المعقدة وخاصة فى العمليات الحسابية .






http://eeecb.com/up2//uploads/images/domain-e93f663a7c.jpg (http://eeecb.com/up2//uploads/images/domain-e93f663a7c.jpg)





الأجهزة الحاسبة (الكومبيوتر) الأولى The first computers

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




http://eeecb.com/up2//uploads/images/domain-e054777423.jpg (http://eeecb.com/up2//uploads/images/domain-e054777423.jpg)









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

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




http://eeecb.com/up2//uploads/images/domain-db8577cd51.jpg (http://eeecb.com/up2//uploads/images/domain-db8577cd51.jpg)









تطور النظم الإلكترونية :

F.Abdelaziz
09-28-2011, 01:47 AM
تطور النظم الإلكترونية :

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

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

المعالجات الدقيقة (الميكروبروسسور) والمتحكمات الدقيقة (الميكروكونترولر

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

لكن ما هو الفرق بين المعالجات الدقيقة والمتحكمات الدقيقة , وفى أى حال يتم استخدامها ؟

المعالجات الدقيقة والمتحكمات الدقيقة هى أجهزة مختلفة فى المفاهيم والوظائف كما هو موضح فيما يلى .



المعالج الدقيق (الميكروبروسسور) Microprocessor :

هو جهاز إلكترونى مصمم للتحكم فى الأنظمة المعقدة , وظيفته معالجة البيانات القادمة من الأجهزة الخارجة ( الذاكرة و أجهزة الدخل والخرج ..ألخ) وبدأ مهامها المبرمجة مسبقا . داخل حافظة (غلاف) المعالج يوجد بناء واحد هو وحدة المعالجة المركزية CPU Central Processing Unit والتى تتشكل فى الأساس من وحدة الحساب والمنطق ALU Arithmetic Logic Unit (المسؤول عن العمليات الحسابية والمنطقية) وحدة التحكم CU Control Unit (المسؤولة عن التحكم فى سريان البيانات وتنظيم تنفيذ الأوامر والفعاليات ) وبعض السجلات .




http://eeecb.com/up2//uploads/images/domain-f7283ea26b.jpg (http://eeecb.com/up2//uploads/images/domain-f7283ea26b.jpg)







المتحكم الدقيق (الميكروكونترولر ) Microcontroller :

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

الأجهزة الطرفية الداخلية Internal Peripherals : هى دوائر فرعية مشكلة فى نفس شريحة السليكون مع المعالج الدقبق CPU . يوجد الآن العديد من الأجهزة الطرفية ضمن الميكروكونترولر كما هو موضح بالشكل التالى .



http://eeecb.com/up2//uploads/images/domain-d48da7f039.jpg (http://eeecb.com/up2//uploads/images/domain-d48da7f039.jpg)




العمل الأساسى لأنظمة الميكروكونترولر

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

من جهة أخرى فهى سريعة للغاية ودقيقة وبالتالى عندما تأمر الميكروكونترولر بفعل شىء يمكنك أن تكون على يقين من أنه سوف يقوم بالتنفيذ على الوجه الأكمل وفى زمن قصير للغاية .

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

1- الدراسة الجيدة للمهمة التى سوف تنفذ بمعرفة الميكروكونترولر .

2- تقسيم المهمة إلى أقسام parts أو فعاليات (أنشطة) activities .

3- ترتيب كل فعالية .

4- الآن يمكننا أن نخبر الميكروكونترولرعما يجب عليه القيام به .



من الأفضل التوضيح بمثال بسيط :

لنتناول مهمة بسيطة ونقدم كل خطوة من الخطوات التى يجب تنفيذها لتحقيق ذلك :

المهمة : عمل كوب من عصير البرتقال .

المواد والأدوات اللازمة :

3 برتقالة .
سكين .
عصارة .
مصفاة .
كأس (كوب) .
ملعقة .
سكر .


طريقة العمل :

1- تجهيز جميع الخامات والأدوات .

2- تقطيع البرتقال بالسكينة .

3- عصر البرتقال بالعصارة .

4- تصفية العصير بالمصفاة .

5- وضع العصير فى الكأس .

6- إضافة السكر والتقليب بالملعقة للحصول على المذاق المطلوب .

7- إضافة الثلج .

بهذا المثال لبسيط يمكن أن نرى أنه حتى أبسط الفعاليات (الأنشطة) تمر بمراحل مختلفة لكى تكتمل , وعندما ننشأ برامج للميكروكونترولر علينا أن نفكر فى جميع خطوات المهمة . الطريقة الجيدة للتحليل هى أنشاء مخطط مسار flowchart , لكن سوف نناقش ذلك فيما بعد .



لكن هناك واحد من التفاصيل الهامة لم نأخذه فى عين الاعتبار حتى الآن : ما هى اللغة التى سوف نستخدمها لإرسال معلومات المهمة إلى الميكروكونترولر ؟



فى الحقيقة كل عائلة ميكروكونترولر بشكل عام لها لغة خاصة بها تسمى "لغة الأسمبلى" والتى يتم إنشاؤها بمعرفة الشركة المصنعة وتتحدث مع الميكروكونترولر مباشرة .

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



تذكر :

لغة الأسمبلى Assembly Language: هى مجموعة من الشفرات ( مفكرات) تمثل مجموعة من التعليمات تفسر بمعرفة الميكروكونترولر المستهدف .

المفكرات Mnemonic : هى كلمات صغيرة عادة تستند على اللغة الإنجليزية كل كلمة تمثل تعليمة من تعليمات لغة الأسمبلى .

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

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



أين يخزن الميكروكونترولر خطوات المهمة المطلوب منه تنفيذها ؟

لدى الميكروكونترولر ذاكرة تسمى "ذاكرة البرنامج" "program memory" , وهى من النوع الثابت (الغير متطاير) أى أنها لا تفقد المعلومات عند فصل القدرة عنها وبالتالى عند إعادة توصيل القدرة للميكروكونترولر يكون قادرا على القيام بالمهمة المطلوبة .



هل الأسمبلى Assembly والأسمبلر assembler هما نفس الشىء ؟

كلا , الأسمبلى هى اسم اللغة أما الأسمبلر فهو برمجيات لترحمة لغة الأسمبلى أى مرادف للمترجم .



ما هو المطلوب للعمل بالميكروكونترولر ؟

للعمل بالميكروكونترولر تحتاج للأدوات التالية :

برمجيات software للتحرير والترجمة (تسمى بيئة التطوير المتكاملة IDE) , حيث يتم كتابة البرنامج وترجمة أوامر اللغة ( لغة الأسمبلى – لغة السى – لفة البيزك – لغة الباسكال ..ألخ) إلى شفرة الآلة (فى شكل ثنائى أو سداسى عشر ) .
برمجيات للمحاكاة واختبار منطق البرنامج .
أجهزة Hardware أى لوحة للتنفيذ العملى على الطبيعة للبرامج development kit .


الميكروكونترولر المتوةاجدة فى الأسواق

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

فيما يلى أبرز الشركات المصنعة للميكروكونترولر والمتاح بالأسواق :

شركة أتميل Atmel : العائلة AVR و 8051 .
شركة ميكروشيب Microchip : العائلة PIC .
شركة موتورولا Free-scale (Motorola) : العائلة HS908 .
شركة فليبس NXP (Phlips) : العائلة ARM .
شركة تكساس إنسترومنتس Texas Instruments – MSP : العائلة TMS و C2000 .
شركة زيلوج Zilog : العائلة F8 .
شركة ناشونال National : العائلة PSOC .
شركة إنتل Intel : العائلة 8051 , 8052 , 8096 .
شركة أنالوج ديفيس Analog Device : العائلة ADuc .
..ألخ .

Admin
09-28-2011, 08:49 AM
ماشاء الله

موضوع رائع يستحق التثبيت من استاذ مميز


اكمل بارك الله فيك

F.Abdelaziz
09-28-2011, 08:50 AM
السلام عليكم ورحمة الله وبركاته

شكرا على المتابعة

شكرا جزيلا ............

الحمد لله الذى هدانا لهذا وما كنا لنهتدى لوى أن هدانا الله


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

eng_a_sayed
09-28-2011, 09:19 AM
جزاك الله عن كل من يتعلم منك كل خير

تم التثبيت لتعم الفائدة

تحياتى للجميع

F.Abdelaziz
09-28-2011, 10:08 AM
جزاك الله عن كل من يتعلم منك كل خير

تم التثبيت لتعم الفائدة

تحياتى للجميع


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

أخى الكريم الفاضل

شكرا جزيلا لك

بارك الله فيك


تقدير أعتز به دائما

تقبل كل التقدير والاحترام

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

F.Abdelaziz
09-28-2011, 10:08 AM
ماشاء الله

موضوع رائع يستحق التثبيت من استاذ مميز


اكمل بارك الله فيك

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

أخى الكريم الفاضل

شكرا جزيلا لك

بارك الله فيك


تقدير أعتز به دائما

تقبل كل التقدير والاحترام

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

wmasmi
09-28-2011, 10:28 AM
بارك الله فيك يا أستاذنا العزيز ومرحباً بعودتك لهذا المنتدى المتميز

F.Abdelaziz
09-28-2011, 10:33 AM
1- ما هو الكمبيوتر (الحاسوب) ؟ Computer



يتكون الكمبيوتر من الأجهزة ( المكونات المادية ) hardware والبرمجيات software .



أولا : المكونات المادية Hardware



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



1-1 المعالج : Processor

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

( التشبيك ).



1-2 اجهزة الدخل (المدخلات ) : Input devices

يصمم الكمبيوتر لتنفيذ البرامج التى تتعامل مع البيانات (المعطيات ) data. وأجهزة الدخل ضرورية لتوصيل بيانات الدخل إلى البرنامج المطلوب تنفيذه حيث يتم معالجتها فى الحاسب . هناك طائفة واسعة من أجهزة المدخلات مثل : لوحات المفاتيح keyboards ، والماسحات الضوئية scanners ، وقارئآت شريط الشفرة bar code readers ، وأجهزة الاستشعار ( الحساسات ) sensors وهلم جرا.



1-3 أجهزة الخرج ( الإخراج ) : Output devices

لا يهم إذا كان المستخدم يستعمل الحاسوب للقيام ببعض العمليات الحساببية أو للحصول على معلومات من شبكة الإنترنت أو قاعدة بيانات ، النتائج النهائية يتم عرضها و / أو طباعتها على الورق حتى يتمكن المستخدم من مشاهدتها.

هناك العديد من الوسائل والأجهزة التي يمكن إستخدامها لعرض المعلومات : كالشاشات ووحدات العرض من نوع السفن سيجمنت seven-segment والطابعات ، والدايودات المشعة للضوء LEDs وغيرها.



1-4 أجهزة الذاكرة( ألتذكر ) : Memory devices

لكى يتم تنفيذ البرنامج ولكى تعالج البيانات يجب أن تخزن فى أجهزة ذاكرة ( تذكر ) بحيث يستطيع المعالج الوصول اليها بسرعة .



1-5 المعالج : Processor

يسمى المعالج أيضا وحدة المعالجة المركزية(CPU) , ويتكون المعالج على الأقل من العناصر الثلاثة التالية :



1-5-1 السجلات : Registers

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

1-5-2 وحدة الحساب والمنطق Arithmetic logic unit (ALU)

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

يستطيع الحاسوب العملاق اليوم أداء تريليونات العمليات في الثانية الواحدة. إن وحدة الحساب والمنطق والسجلات معا يعرفان بانهما ممر(طريق) البيانات data bus للمعالج.



1-5-3 وحدة ألتحكم Control unit :

تحتوى وحدة ألتحكم على العتاد hardwareلمنطق التعليمات . ووحدة التحكم تفك الشفرة ( تترجم أو تفسر ) وتراقب ( تتابع ) تنفيذ التعليمات .

وحدة التحكم أيضا تقوم بدور الحكم ( الوسيط) عندما تتنافس مختلف أجزاء الحاسب على موارد ( إمكانات ) وحدة المعالجة المركزية . أنشطة ( أعمال ) وحدة المعالجة المركزية تعمل متزامنة من قبل ساعة النظام system clock. وحدة التحكم يوجد بها مسجل يسمى عداد البرنامج (PC) يحافظ على تتبع عنوان التعليمة التالية فى التنفيذ . أثناء تنفيذ البرنامج قد يحدث فائض (طفحان) overflow أو حمل carry فى عملية الجمع أو استعارة (إستدانة أو سلف) borrow فى عملية الطرح وما إلى ذلك حيث يقوم النظام بالاشارة اليها ( بالعلام عليها ) flagged وتخزن فى مسجل يسمى "سجل الحالة" status register . والأعلام الناتجة تستخدم بواسطة المبرمج للتحكم فى سير البرنامج واتخاذ القرار .






http://eeecb.com/up2//uploads/images/domain-a30c371acc.jpg (http://eeecb.com/up2//uploads/images/domain-a30c371acc.jpg)





2- المعالج الدقيق Microprocessor

F.Abdelaziz
09-28-2011, 10:38 AM
2- المعالج الدقيق Microprocessor

أدى تقدم تكنولوجيا أشباه الموصلات إلى إمكانية تجميع كل مكونات ( وحدات ) المعالج فى دائرة متكاملة واحدة (تسمى أيضا رقاقة أو شريحة ) , والمعالج الدقيق هو معالج مجمع فى دائرة واحدة .

الكومبيوتر الدقيق microcomputer هو كومبيوتر يستخدم المعالج الدقيق كوحدة معالجة مركزية , والكمبيوتر الشخصى PC هو كمبيوتر دقيق .

تعرف المعالجات بعدد البتات أو الخانات bits ( وهى أصغر وحدة تعامل فى الأنظمة الرقمية ) والتى يمكن أن يتعامل معها ( يعالجها ) فى عملية واحدة . فهناك المعالج الدقيق ذو 4 بت وآخر 8 بت وثالث 16 بت ورابع 32 بت وخامس 64 بت , وهذا الرقم هو طول الكلمة word (أو طول مسار البيانات data path length ) , وحاليا فإن المعالجات الدقيقة الأكثر إستعمالا هي ذو 8 بت .







3- المتحكم الدقيق ( الميكروكنترولر) Microcontrollers ( MCU)

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

ذاكراتز .
مؤقتات .
معدلات عرض النبضة (PWM) .
محولات من تشابهى إلى رقمى (ADC) .
محولات من رقمى إلى تشابهى (DAC) .
وسائل ربط متوازى للدخل و الخرج Parallel I/O interface .
وسائل ربط للإتصال المتتالى (المتسلسل) الغير متزامن (UART) .
وسائل الربط للإتصال المتتالى المتزامن (SPI, 12C, and CAN) .
متحكمات ذاكرات الوصول المباشر للذاكرة (DMA) .
دوائر الربط مع مكونات الذاكرة .
برامج التصحيح لدعم الأجهزة( العتاد ) .


مناقشة وظائف وتطبيقات هذه المكونات هو موضوعنا.

سنتناول معظم هذه الوظائف بالتفصيل لاحقا.



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

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




http://eeecb.com/up2//uploads/images/domain-6d5d5a6029.jpg (http://eeecb.com/up2//uploads/images/domain-6d5d5a6029.jpg)







4- الذاكرة Memory

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

سنناقش فقط ذاكرة أشباه الموصلات لأن الذاكرة الضوئية والمغناطيسية نادرا ما تستخدم في تطبيقات الميكروكونترولر ذو 8 بت .

تصنف ذاكرة أشباه الموصلات إلى نوعين رئيسيين : ذاكرة الوصول العشوائي (رام) (RAM) وذاكرة للقراءة فقط (روم) (ROM) .



4-1 ذاكرة الوصول العشوائي Random-access memory RAM



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

هناك نوعان من تقنيات ذاكرة الوصول العشوائي : رام ساكنة (SRAM) ورام ديناميكية (DRAM) .

تستخدم SRAM من أربع إلى ست ترنزستورات لتخزين حرف واحد من المعلومات. المعلومات المخزنة في SRAM لن تفقد ما دامت القدرة موجودة .

ذاكرة الوصول العشوائي الديناميكية تستخدم ترانزستور واحد ومكثف واحد لتخزين حرف واحد من المعلومات. تخزن المعلومات في المكثف في شكل شحنة كهربائية. الشحنة المخزنة في المكثف يحدث لها تسريب ( فقد ) مع الزمن ولذلك يجب دوريا إعادة تنشيط الذاكرة للحفاظ على محتويات DRAM .

ذاكرة الوصول العشوائي أساسا تستخدم لتخزين البيانات والبرامج الديناميكية ( المتغيرة ).

غالبا ما يرغب مستخدم الكمبيوتر فى تشغيل برامج مختلفة على نفس الكمبيوتر ، وعادة ما تكون هذه البرامج تعمل على مجموعات مختلفة من البيانات , لذلك يجب تحميل البرامج والبيانات إلى الذاكرة من القرص الصلب أو أى مصدر تخزين ثانوى آخر ولهذا تسمى ديناميكية .



4-2 ذاكرة القرأة فقط ROM

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

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



4-2-1 ذاكرة للقراءة فقط مبرمجة مقنعة ( مخبئة ) Masked-programmed

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



4-2-2 ذاكرة للقراءة فقط مبرمجة (PROM)

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

وبمجرد برمجة PROM فإنه لا يمكن تغيير محتواها .

ذاكرة PROM تعتمد على مصهرات fuse بمعنى أن المستخدم النهائي يقوم ببرمجة المصهرات لتكوين محتويات الذاكرة .



4-2-3 ذاكرة للقراءة فقط القابلة للمحو(للمسح) (EPROM)

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

توجد نافذة (فتحة) من الكوارتز فى أعلى الدائرة المتكاملة EPROM لتسمح للأشعة فوق البنفسجية بالسقوط مباشرة على رقائق السليكون في الداخل. بمجرد برمجة الرقاقة تغطى النافذة بشريط داكن لمنع المحو التدريجي للبيانات. في حالة عدم وجود النافذة فان رقاقة ال EPROM تكون قابلة للبرمجة لمرة واحدة فقط.

تستخدم EPROM كثيرا في نماذج الكمبيوتر prototype حيث يتم إعادةالبرمجة عدة مرات حتى الوصول إلى الكمال . لا تسمح EPROM بمحو محتوى موقع معين , والطريقة الوحيدة هى محو كل محتويات رقاقة EPROM ثم إعادة برمجتها . تتم برمجة رقاقة EPROM كهربائيا باستخدام جهاز يسمى مبرمج EPROM. اليوم أغلب المبرمجات أصبحت عامة بمعنى أنها يمكن أن تقوم ببرمجة عدة أنواع من الذاكرة مثل EPROM ، EEPROM ، ذاكرة الفلاش flash memory ، وبرمجة ألاجهزة المنطقية.



4-2-4 ذاكرة للقراءة فقط القابلة للمسح كهربيا (EEPROM)

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



4-2-5 ذاكرة الفلاش

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



ثانيا : برمجيات الحاسب الآلي Software

F.Abdelaziz
09-28-2011, 10:42 AM
ثانيا : برمجيات الحاسب الآلي Software

تعرف البرامج Programs بالبرمجيات Software . والبرنامج هو عبارة عن مجموعة من التعليمات (الأوامر) التى يمكن أن ينفذها الكمبيوتر. يخزن البرنامج في ذاكرة الكمبيوتر في شكل ارقام ثنائية تسمى تعليمات الآلة ( الماكينة ) machine instructions .طول تعليمات الآلة للكمبيوتر قد يكون ثابتا أو متغيرا.

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



لغة التجميع (الاسمبلى) Assembly Language

ليس من الصعب استنتاج أن تطوير البرمجيات بلغة الآلة صعبا للغاية للاسباب الاتية :



1- ادخال ( كتابة ) البرنامج :

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



2- تصحيح أخطاء البرنامج debugging:

كلما لا يحقق البرنامج الأداء المتوقع منه ، سيجد المبرمج صعوبة في التعرف على التعليمات التي تسببت فى المشكلة وسوف يحتاج المبرمج إلى تحديد كل تعليمة آلة ثم التفكير فى ما هى العملية التي تقوم بها تلك التعليمة. هذه ليست مهمة سهلة.

3- برنامج الصيانة :

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

أخترعت لغة التجميع ( الأسمبلى ) لتبسيط عملية البرمجة . يتألف برنامج الأسمبلى من تعليمات لغة الأسمبلى و تعليمات لغة الأسمبلى هى تمثيل للتذكير mnemonic بتعليمات الآلة. باختراع لغة الأسمبلى لم يعد المبرمج بحاجة للعمل من خلال الارقام الثنائية (الصفر والواحد ) بغرض تحديد ما هى التعليمة في البرنامج. وهذا يمثل تحسنا كبيرا على البرمجة بلغة الآلة. برنامج الأسمبلى الذى يقوم المبرمج بكتابته ( إدخاله ) يسمى البرنامج المصدر أو شفرة(كود) المصدر source code. يحتاج المستخدم إلى برنامج لترجمة البرنامج المصدر إلى لغة الآلة بحيث يمكن للكومبيوتر من تنفيذ هذا البرنامج والذى يسمى الأسمبلر assembler. وخرج الأسمبلر يسمى شفرة (كود) الهدف (الغاية - المقصود) object code .

يوجد نوعان من الأسمبلر : أسمبلر طبيعى ( محلى – فطرى) native وأسمبلر متقاطع (متعارض ) cross.

النوع الأول native يعمل فى جهاز كمبيوتر ويولد كود الآلة والذى ينفذ فى نفس الكومبيوتر أو فى كومبيوتر آخر له نفس مجموعة التعليمات . أما النوع الثانى cross يعمل فى جهاز كومبيوتر ولكنه يقوم بتوليد شفرة الآلة والتي سيتم تنفيذها من خلال أجهزة الكمبيوتر التى لديها مجموعة تعليمات مختلفة.

وبرنامج MPASM هو أسمبلر شركة ميكروشيب Microchip من النوع الثانى cross assembler والمصمم بحيث يعمل على الكومبيوتر الشخصى PC لترجمة برامج لغة الأسمبلى للميكروكونترولر طراز PIC .








http://eeecb.com/up2//uploads/images/domain-f298b5b782.jpg (http://eeecb.com/up2//uploads/images/domain-f298b5b782.jpg)





اللغات ذات المستوى الرفيع ( العالى ) High-Level Languages

هناك بعض السلبيات للغة البرمجة الأسمبلى :

1- يجب ان يكون المبرمج على علم ببنية الجهاز hardware الذي سينفذ البرنامج عليه.

2- البرنامج المكتوب بلغة الاسمبلى (وخاصة الطويل) يصعب على الكثير فهمه إلا مؤلفه (كاتبه).

3- إنتاجية برمجية غير مرضية وخاصة لبرمجة المشاريع الكبيرة لأن المبرمج بحاجة للعمل بمنطق برمجى في مستوى منخفض جدا.

لهذه الأسباب تم إيجاد ( اختراع ) لغات البرمجة ذات المستوى الرفيع مثل السى C لتجنب مشاكل البرمجة بلغة الأسمبلى.

اللغات رفيعة المستوى أقرب إلى اللغة الإنجليزية العادية وبالتالي فإن البرامج المكتوبة باللغات الرفيعة المستوى تكون أيسر على الفهم. فالعبارة الواحدة statement فى اللغات رفيعة المستوى غالبا ما تناظر عشرات بل مئات التعليمات من لغة الأسمبلى . ويمكن للمبرمج العمل بمنطق برمجى عالى المستوى الأمر الذي يجعل مهمة البرمجة أسهل بكثير. البرنامج المكتوب بلغة عالية المستوى يسمى أيضا شفرة المصدر source code ويحتاج إلى برنامج softwareيسمى الكومبيلر ( المترجم ) compiler لترجمته إلى تعليمات لغة الآلة . خرج الكومبيلر هو أيضا يسمى شفرة الهدف أو المقصود object code . وكما يوجد أسمبلر متقاطع يوجد كومبيلر متقاطع أى يعمل على جهاز ولكن يترجم التعليمات لتنفذ على جهاز أخر مختلف معه فى التعليمات .

لغات البرمجة عالية المستوى ليست مثالية أيضا .

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

أستخدمت لغة السى C على نطاق واسع في برمجة الميكروكونترولر فى الصناعة ومعظم مطورى ومصنعى الميكروكونترولر لهم مترجم للغة السى C compilers .

F.Abdelaziz
09-28-2011, 10:45 AM
بارك الله فيك يا أستاذنا العزيز ومرحباً بعودتك لهذا المنتدى المتميز


أخى الكريم


شكرا جزيلا لك


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

F.Abdelaziz
09-28-2011, 02:23 PM
كتابة البرامج بلغة السى للميكروكونترولر

لما للغة السى من جودة وقابلية وكفاءة وقدرة على السيطرة يمكننا القول أنها اللغة الأكثر استخداما من قبل مطورى الميكروكونترولر . الآن معظم الميكروكونترولر الموجودة بالأسواق تأتى ومعها مترج لغة السى لتطوير البرامج .

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

الطريقة الوحيدة للتواصل مع الميكروكونترولر هى من خلال "لغة الآلة" machine languageأو بالأحرى من خلال "شفرة الآلة" machine code .وبالتالى من الضرورى ترجمة برامج لغة السى من أجل الحصول على نتيجة للتحكم فى الأنظمة عن طريق وضع البرنامج فى ذاكرة البرنامج للميكروكونترولر .

يوجد برامج مختلفة فى السوق كمترجم لغة السى للميكروكونترولر PIC مثل : HI-TECH PICC و C18 و C30 و CCS و SDCC و WIZ-C و mikroC و CC5 و PICmicro C و..ألخ .

فى هذه الدورة سوف نستخدم بيئة التطوير المتكاملة المسماة "الميكرو سى" IDE MikroC أو"الميكروسى برو" و IDE MikroC Pro والتى أنشأته Mikroelektronika (www.mikroe.com) والذى يتيح لك : تحرير edit و ترجمة compile و محاكاة simulate برامج لغة السى للميكروكونترولر PIC العائلات 12, 16 , 18.



سوف نستخد المترجم mikroC نظرا لكفاءته ومرونته . بالإضافة إلى ذلك يحتوى على مكتبة واسعة من الدوال الجاهزة للتحكم فى مختلف الأجهزة المتصل بالميكروكونترولر PIC .

كتابة وترجمة برنامج بهذا المترجم , إذا لم يكن بالبرنامج أخطاء فى بناء الجملة syntax errors أو بعض الأخطاء الأخرى الناتجة بالمبرمج , سوف يؤدى إلى إنشاء ملف سداسى عشر (بالامتداد . Hex ) . هذا الملف يعرب بكود أو شفرة الآلة , وسوف يتم حفظ هذا الملف فى ذاكرة الميكروكونترولر .



مراحل تطوير وتسجيل برنامج السى بالميكروكونترولر PIC

F.Abdelaziz
09-28-2011, 03:06 PM
مراحل تطوير وتسجيل برنامج السى بالميكروكونترولر PIC

خطوة بخطوة , شرح خطوات تحرير و ترجمة ومحاكاة وتسجيل البرنامج بالميكروكونترولر PIC :

المرحلة الأولى :

إنشاء مخطط المسار Flowchart :

إستعرض (راجع) المهام والدوال التى يمكن أنيؤديها الميكروكونترولر PIC . من أجل فهم أفضل لمنطق الدوال التى يتعين تنفيذها يجب عمل مخطط مسار .






http://eeecb.com/up2//uploads/images/domain-8a2b35de76.jpg (http://eeecb.com/up2//uploads/images/domain-8a2b35de76.jpg)



المرحلة الثانية :

تحرير وترجمة ومحاكاة البرنامج

F.Abdelaziz
09-28-2011, 07:38 PM
المرحلة الثالثة :

البرنامج المترجم :

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




http://eeecb.com/up2//uploads/images/domain-e70e29b772.jpg (http://eeecb.com/up2//uploads/images/domain-e70e29b772.jpg)

المرحلة الرابعة :

تحميل البرنامج على الميكروكزنترولر PIC :

يتم حفظ الملف السداسى عشر بالميكروكونترولر من خلال وحدة برمجة أو من خلال وحدة التطوير والتدريب .






http://eeecb.com/up2//uploads/images/domain-4db83657b4.jpg (http://eeecb.com/up2//uploads/images/domain-4db83657b4.jpg)



خلال هذه الدورة سوف نتناول تطبيقات الميكروكونترولر :

F.Abdelaziz
09-28-2011, 07:45 PM
خلال هذه الدورة سوف نتناول تطبيقات الميكروكونترولر :

أمثلة :



http://eeecb.com/up2//uploads/images/domain-a7adeb868d.jpg (http://eeecb.com/up2//uploads/images/domain-a7adeb868d.jpg)





http://eeecb.com/up2//uploads/images/domain-1745879dfb.jpg (http://eeecb.com/up2//uploads/images/domain-1745879dfb.jpg)





http://eeecb.com/up2//uploads/images/domain-31e99fdc2e.jpg (http://eeecb.com/up2//uploads/images/domain-31e99fdc2e.jpg)





http://eeecb.com/up2//uploads/images/domain-5946a5fa8e.jpg (http://eeecb.com/up2//uploads/images/domain-5946a5fa8e.jpg)





http://eeecb.com/up2//uploads/images/domain-815923664d.jpg (http://eeecb.com/up2//uploads/images/domain-815923664d.jpg)





http://eeecb.com/up2//uploads/images/domain-0b22e3f927.jpg (http://eeecb.com/up2//uploads/images/domain-0b22e3f927.jpg)





http://eeecb.com/up2//uploads/images/domain-1cc56805b8.jpg (http://eeecb.com/up2//uploads/images/domain-1cc56805b8.jpg)

eng_a_sayed
09-28-2011, 08:03 PM
جزاك الله كل خير أستاذى الفاضل

أتمنى أن تتم المقارنة بين عائلة ال 16 وال 18 من حيث الذواكر وسرعة تنفيذ الاوامر ...

والاهم

ما الفرق الملموس أثناء البرمجة بلغة الميكروسى

وأى شيئ أخر من وجهة نظر حضرتك

تحياتى لك وللجميع

F.Abdelaziz
09-29-2011, 12:51 AM
الخصائص العامة للميكروكونترولر PIC



عائلة الميكروكونترولر PIC






http://eeecb.com/up2//uploads/images/domain-466c501907.jpg (http://eeecb.com/up2//uploads/images/domain-466c501907.jpg)







يتم تصنيع الميكروكونترولر PIC من قبل شركة ميكروشيب . يوجد أساسا ثلاثة عائلات من الميكروكونترولر PIC تتفاوت فى حجم (سعة – طول) كلمة ذاكرة البرنامج , وهى 12 و 14 و 16 بتات bits . جميع هذه الأجهزة لديها داخليا ناقل ذو 8 بتات 8-bit bus . حاليا , أطلقت ميكروشيب عائلة ميكروكونترولر جديد هو dsPIC والذى يمكنه استدعاء ناقل داخلى بحجم 16 و 23 بتات على عكس الأسرة التقليدية ذات 8 بتات .

الميكروكونترولر PIC لديه بنية داخلية من نوع "هارفارد" Harvard . الفرق بين هذه البنية والبنية التقليدية من نوع "فون نيومان" Von-Neumann , هو أنها تحتوى على ناقل bus للبرنامج و آخر للبيانات على عكس البنية التقليدية والتى بها ناقل واحد للبيانات والعنوان .

الزيادة فى حجم "كلمة البرنامج" تسمح بالزيادة فى عدد التعليمات :

· الميكروكونترولر 12-bit PICs (12C508, 12C509, 12CE518, 16C54, 16C55) لديه 33 تعليمة فقط .

· الميكروكونترولر 14-bit (12C671, 12C672, 12CE673, 12C674, 14000, 16C55x) لديه 35 تعليمة .

· الميكروكونترولر 16 bit (17C4x, 17C75X, 17C76X, 18C2XX, 18C4XX) لديه 77 تعليمة .

ولقد تم تحسين الميكروكونترولر PIC للعمل بمجموعة صغيرة من التعليمات للقيام بالمعالجة بسرعات عالية. يمكننا العمل بالميكروكونترولر بسرعة 10MIPS ( 10 مليون تعليمة كل ثانية) باستخدام ميكروكونترولر PIC من السلسلة POC16 أو PIC18 تعمل بكريستال 40Mhz .

خصائص عائلة الميكروكونترولر PIC

· القدرة على العمل بطريقة "متراكبة" (أثناء تنفيذ تعليمة , يجلب المعالج التعليمة التالية فى الذاكرة من أجل الإسراع فى تنفيذ البرنامج ) .

· تنفيذ تعليمة واحدة كل "دورة الآلة" باستثناء تعليمات التفرع التى تنفذ فى دورتين .

· دورة الآلة هى أربع دورات للساعة أى أن إشارة الساعة تقسم على 4 قبل تنفيذ عبارة .

· كل تعليمة تحتل موقع من ذاكرة البرنامج الوميضية .

· زمن التنفيذ ثابت باستثناء تعليمات التفرع التى تستخدم دورتين من دورات الآلة .

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

أنواع ذاكرة البرنامج

سلاسل الميكروكونترولر PIC12 و PIC14 و PIC16 تخزن البرنامج فى ذاكرتها الداخلية . يمكن لأفراد العائلة PIC17 و PIC18 العمل بداكرة برنامج خارجية .

F.Abdelaziz
09-29-2011, 12:52 AM
جزاك الله كل خير أستاذى الفاضل

أتمنى أن تتم المقارنة بين عائلة ال 16 وال 18 من حيث الذواكر وسرعة تنفيذ الاوامر ...

والاهم

ما الفرق الملموس أثناء البرمجة بلغة الميكروسى

وأى شيئ أخر من وجهة نظر حضرتك

تحياتى لك وللجميع

أخى الكريم

شكرا جزيلا لك

بارك الله فيك

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

F.Abdelaziz
09-29-2011, 02:44 AM
مقارنة بين أنواع الأنظمة التى تعمل بالكومبيوتر من حيث :



أولا : من حيث مجموعة التعليمات :

أى وحدة معالجة مركزية لها مجموعة من التعليمات التى تتعرف عليها وتستجيب لها . جميع البرامج تبنى بطريقة أو بأخرى من مجموعة من التعليمات . ونحن نرغب فى أن يقوم الكومبيوتر بتنفيذ الشفرة ( الكود) بأسرع ما يمكن ولكن كيف نحقق تلك الرغبة . إحدى الطرق هى تصميم وحدة معالجة مركزية بمجموعة تعليمات بحيث توجد تعليمة خاصة بكل عملية . هذه الطريقة تسمى Complex Instruction SetComputer أو إختصارا CISC , أى الكومبيوتر ذو مجموعة التعليمات المعقدة . وهى تحتوى على تعليمات كثيرة ومعقدة مما يؤدى إلى بطأ فى التشغيل .

الطريقة الثانية هى الحفاظ على وحدة المعالجة المركزية بسيطة جدا واستخدام مجموعة تعليمات محددة . هذه الطريقة تسمى Reduced Instruction Set Computer أو إختصارا RISC , أى الكومبيوتر ذات مجموعة التعليمات المخفضة . وفيها يكون مجموعة التعليمات وبالتالى كل التصميم بسيط ويؤدى إلى سرعة فى التشغيل . وأحد خصائصها أن كل تعليمة تكون محتواه فى كلمة ثنائية binary word هذه الكلمة يجب أن تحتفظ بكل المعلومات المطلوبة بما فى ذلك شفرة التعليمة نفسها بالإضافة إلى أى عنوان أو معلومات مطلوبة . وخاصية أخرى ( تؤكد بساطة هذه الطريقة ) هى أن كل تعليمة تأخذ نفس الزمن فى التنفيذ .



ثانيا : من حيث تنظيم ( التعامل مع ) الذاكرة Organising memory

للتفاعل مع الذاكرة هناك نوعين من الأرقام يجب الإلمام بهما والتحرك حولهما هما العنوان المطلوب لموقع الذاكرة والبيانات الفعلية المطلوب تداولها فى هذا الموقع . وهما يتصلان بمجموعتين من الناقلات أو الموصلات تسميان ممر العناوين address bus وممر البيانات data bus.



يجب التأكد من أن ممرالبيانات وممر العناوين ( أو حتى أى جزء منهما ) يتصل ( يصل ) إلى كل موقع فى الذاكرة .



الطريقة البسيطة لتحقيق ذلك مبينة فى الشكل التالى وتسمى طريقة أو بناء فان نيومان

Von Neumann وفيها يكون للكومبيوتر ممر واحد للعناوين وممر واحد للبيانات ونفس ممر العناوين وممر البيانات يخدم كل من ذاكرة البرنامج وذاكرة البيانات . وبنفس الطريقة يتصل الدخل و الخرج .

أما فى التركيب البنائى المسمى هارفارد Harvard ففيه يكون كل نوع (مساحة) من الذاكرة لها ممر العناوين وممر البيانات الخاصة بها .



http://eeecb.com/up2//uploads/images/domain-b68da871a4.jpg




http://eeecb.com/up2//uploads/images/domain-0fd1b88849.jpg

F.Abdelaziz
09-29-2011, 02:52 AM
الميكروكونترولر: MicrocontrollersPic



أولا : مقدمة

التجهيز للانطلاق :

فى عام 1960 بدأت الالكترونات عصرا جديدا باكتشاف المواد شبه الموصلة ومن ثم الترانزستور وسرعان ما تطور إلى الدوائر المتكاملة والمعالجات الدقيقة .

بداية الميكروكونترولر :

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

معظم المتحكمات الدقيقة متشابهة :

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

الأنواع الأكثر انتشارا واستعمالا من المتحكمات الدقيقة هى ثلاثة أنواع (وكل نوع به عائلات منه وكل عائلة بها أفراد) .الميكروكونترولر الاول هو 8051 وربما الأوسع استخداما منذ عشرون عاما ومازال يتم تطويره بشركات متعددة ولا توجد دلائل على هبوطه والثانى هو عائلة AVR المنتجة بمعرفة شركة اتميل Atmel وهى إحدى الشركات القائدة فى هذا المجال . اما الأخير وهو المتحكم الدقيق PIC الذى سنتناوله بالتفصيل .



الميكروكونترولر : PIC

الميكروكونترولر PIC هو الاختيار الشائع المعتاد للبدء فى مجال الميكروكونترولر. والسبب الاساسى هو أن شركة ميكروشيب المنتجة له اعتمدت بجدية نظام الكومبيوتر ذو التعليمات المخفضة RISC . كما أن عدد التعليمات 35 تعليمة فقط ( للعائلة الوسطى كما سنرى بالتفصيل ) ويمكن بعدد قليل منها كتابة برنامج يمكن استخدامه . كما أن كل حركة ( انتقال ) للبيانات تعتمد على مسجل واحد فقط يسمى مسجل العمل ‘W’ إختصارا لكلمة ‘working’ .



عائلة الميكروكونترولر PIC :

الاختصار PIC فى أغلب المراجع هو إختصار للعبارة Peripheral Interface Controllerأى المتحكم ذو الربط ( الاتصال ) بالمحيط الخارجى . وفى بعض المراجع هو إختصار للعبارة

“Programmable IntelligentComputer” أى الكومبيوتر الذكى القابل للبرمجة .

وفى البعض الآخر هو إختصار للعبارة “Programmable InterfaceController.”

أى المتحكم ذو الربط (الاتصال) والقابل للبرمجة .





على الرغم من تواجد المئات من الموديلات للميكروكونترولر PICإلا أنه يمكن تقسيم العائلة الى ثلاث مجموعات رئيسية وهى :

1- مجموعة تعمل بكلمة تعليمة بعرض (بسعة) 12-bit مثال PIC12C508 وتسمى عائلة خط الأساس ‘baseline’ أو العائلة الصغرى .

2- مجموعة تعمل بكلمة تعليمة بعرض 14 – bit مثل (PIC16F84 و PIC16F628 وPIC16F676 وPIC16F877 ) وتسمى العائلة الوسطى “mid-range” أو عائلة المدى الأوسط .

3- مجموعة تعمل بكلمة تعليمة بعرض 16 – bit ( PIC18 ) وتسمى عائلة الخصائص المرتفعة او ‘high-end’.



وسوف نتناول مجموعة العائلة الوسطى بالتفصيل والتى تسمى PICmicro X14 نسبة إلى عدد الخانات (البتات) فى كلمة التعليمة







ثانيا :التركيب البنائى للميكروكونترولر PIC ( العائلة الوسطى المسماه PICmicro x14 )

F.Abdelaziz
09-29-2011, 02:54 AM
ثانيا :التركيب البنائى للميكروكونترولر PIC ( العائلة الوسطى المسماه PICmicro x14 )



الخصائص العامة للتركيب البنائى

1- يعتمد الميكروكونترولر PIC فى تركبيه البنائى على نظام الكومبيوتر ذو التعليمات المخفضة RISC .

2- يحقق أكبر قدر من الكفاءة نتيجة إعتماده على التركيب البنائى المسمى هارفارد Harvard حيث يوجد ممرات منفصلة لكل من البيانات والعناوين وكذلك حيزان منفصلان لكل من ذاكرة البرنامج وذاكرة البيانات .

3- تنفيذ التعليمة بما يعرف بطريقة خطوط النقل pipelining مما يعطى سرعة أعلا .

4- تعليمات ذو دورة واحدة : بما يسمح بسرعة عالية فى تنفيذ الكود واستخدام تعليمات ذو كلمة واحدة يحسن الاداء الانتاجى ويخفض من مساحة الذاكرة المطلوبة .

5- استخدام تعليمة بكلمة كبيرة : يعطى إمكانية حفظ البيانات من النوع الفورى أو المباشر immediate فى نفس سطر الكود كالتعليمة نفسها والذى يؤدى إلى تخفيض مجموعة التعليمات إلى أقل عدد .

6- التعليمات متعامدة ومتماثلة : وهذا يعنى أن لكل مجموعة من التعليمات هناك تعليمة مسح Clear ولكل تعليمة "تزايد" بواحد Increment يوجد تعليمة "تناقص" بواحد Decrement وهكذا .



يمكنك إجراء كل التعليمات مع أى من السجلات وبالتالى لا يوجد وظيفة خاصة أو تعليمة خاصة للتعامل مع مسجل بعينه . وسوف نتناول هذه الخصائص بشىء من التفصيل .



أولا :

مقارنة بين التركيب البنائى نوع هارفارد والتركيب البنائى نوع فون نيومان

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

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

حيث أن الميكروكونترولر نوع 8-bit فإن ذاكرة البيانات تكون بعرض 8-bit ولكن ذاكرة البرنامج يمكن أن تكون بأى عرض نختاره ( لانفصالهما عن بعضهما ) . فى التركيب البنائى الحالى ذاكرة البرنامج المستخدمة تكون بعرض12-bitأو 14-bitأو 16-bit . التركيب البنائى الذى سوف نناقشه يستخدم حيز ذاكرة البرنامج بعرض 14-bit .





http://eeecb.com/up2//uploads/images/domain-16440bfcfb.jpg






ثانيا: عملية نقل التعليمات بطريقة خطوط النقل Pipelining

F.Abdelaziz
09-29-2011, 02:56 AM
ثانيا: عملية نقل التعليمات بطريقة خطوط النقل Pipelining

أدى استخدام كل من نظام الكومبيوتر ذو التعليمات المخفضة RISC والتركيب البنائى للذاكرات بطريقة هارفارد فى الميكروكونترولر PIC إلى ميزة إضافية : هى إمكانية تداول التعليمات على شكل خطوط نقل متفرعة بما يعرف بأسم Pipelining.

كل تعليمة فى ذاكرة برنامج الكومبيوتر يجب أولا إحضارها (جلبها) ثم بعد ذلك تنفيذها . فى كثير من وحدات المعالجة المركزية تتم هاتان الخطوتان واحدة تلو الأخرى .

أولا تقوم وحدة المعالجة المركزية بجلب التعليمة ثم بعد ذلك تنفيذها . فإذا كان لذاكرة البرنامج عناوينها الخاصة بها ( فى حيز خاص بها ) ولها ممر (ناقل) بيانات خاص بها وهى مفصولة عن ذاكرة البيانات ( أى التركيب البنائى هارفارد ) فلا يوجد أى سبب يمنع من تصميم وحدة المعالج بحيث أنه أثناء تنفيذها أحد التعليمات تقوم فى نفس الوقت بإحضار (تجلب) التعليمة الأخرى وهو ما يعرف باسم Pipelining.

وهذه الطريقة تعمل بكفاءة إذا كان زمن دورة الجلب يساوى زمن دورة التنفيذ وهو المتوفر بواسطة التركيب البنائى للكومبيوتر ذو التعليمات المخفضة RISC . وهذا يؤدى إلى مضاعفة سرعة التنفيذ .

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

الشكل التالى يبين مخطط يمثل عملية خطوط النقل pipelining لعائلة الميكروكونترولر PIC الوسطى . وفيه نرى أنه أثناء تنفيذ التعليمة رقم 1 فإن التعليمة رقم 2 يتم جلبها ( إحضارها) . وبالمثل يحدث للتعليمة رقم 2 وهكذا .

مثال لتتابع التعليمات موضح على يسار المخطط . ليس مهما الآن أن تفهم معنى التعليمة ولكن المهم فهم المخطط حيث التعليمة CALL تسبب تفرع البرنامج ( القفز) . نجد أنه يتم جلب التعليمة رقم 4 بينما يتم تنفيذ التعليمة رقم 3 . نتيجة لتفرع البرنامج لانحتاج إلى التعليمة رقم 4 ويتم فقد دورة أثناء جلب التعليمة الجديدة .

فى معظم الميكروكونترولر ذات 8-bitيتم جلب ( احضار ) التعليمات وتنفيذها بالتعاقب ( على التوالى ) لأنه لا يوجدإلا ناقل (ممر) واحد للبيانات . طريقة pipelining أعطت إمكانية عمل حدثين فى نفس الوقت بين خطوات جلب التعليمة وتنفيذها لزيادة سرعة تنفيذ التعليمة .

الآن ماذا يحدث للتعليمات بعد وضعها فى حيز ذاكرة البرنامج سوف نوضح ذلك بمثال يبين كيف نحصل على دورة تنفيذ واحدة وعمل تراكب (حدثين فى آن واحد ) overlap بين كل من عملية الجلب وعملية التنفيذ .

فى هذا المثال سوف ننفذ 4 تعليمات وسوف نلاحظ كيف أن التعليمات تم جلبها وتنفيذها من خلال خمس دورات من دورة التعليمات . دورات التعليمات موضحة بالرموز Tcy0 إلى Tcy4 . سوف ترى أن كل من الأربعة تعليمات يجب أولا جلبها ثم تنفيذها خلال دورة التعليمات التالية .

كل تعليمة تأخذ دورة تعليمة واحدة فيما عدا التعليمات التى تعدل من عداد البرنامج . وهذا التعديل يحدث مع تعليمات القفز والقفز الى برنامج فرعى sub-routine أو أى تعليمة تكتب مباشرة على عداد البرنامج . هذة التعليمات سوف تأخذ دورتين من دورات التعليمة كما سنرى فى المثال .




http://eeecb.com/up2//uploads/images/domain-db75d83927.jpg





الدورة الأولى Tcy0 :

التعليمة الاولى : MOVLW 55h :

حيث أنها التعليمة الأولى التى سوف تنفذ فلا يوجد شىء فى خطوط النقل pipeline للتجهيز للجلب المسبق لذلك سوف نقوم بعملية "الجلب" Fetch1 لنضع التعليمة فى "سجل التعليمة" instruction register خلال الدورة الأولى Tcy0 .

التعليمة MOVLW تعنى "وضع القيمة المباشرة الثابتة literal للتعليمة ( فى هذه الحالة 55h ) بسجل العمل " W .



الدورة الثانية Tcy1 :

يتم "تنفيذ" التعليمة الأولى Execute1خلال الدورة الثانية "Tcy1 وأيضا يتم "التجهيز لجلب التعليمة التالية" Fetch2.

التعليمة الثانية : هى نقل ( نسخ) محتويات السجل W إلى ملف (سجل عام) وتكتب بالصيغة (MOVWF) وهى سوف تقوم فى حالتنا بنقل ( نسخ) محتويات السجل W إلى السجل المسمى PORTB وهو منفذ دخل وخرج .

فى نهاية الدورة الثانية Tcy1 فإن المسجل W يكون به القيمة 55h والتى تم تحميلها عند تنفيذ التعليمة الأولى .



الدورة الثالثةTcy2 :

يتم "تنفيذ" Execute2التعليمة MOVWF ويكون نتيجتها نسخ محتويات السجل W إلى السجل PORTB .

خلال نفس الدورة يتم "التجهيز لجلب التعليمة التالية" Fetch3 وهى التعليمة رقم 3 .

لاحظ أنه بنهاية الدورة الثالثة Tcy2 فإن السجل W لازال يحتوى على 55hوالسجل PORTB أيضا يحتوى على 55h . أى أن التعليمة MOVWF تحافظ على القيمة الأصلية فى السجل W .

التعليمة التالية التى تم جلبها فى الدورة الثالثة Tcy2 هى التعليمة CALL SUB_1 والتى تخبر البرنامج بالقفز إلى البرنامج الفرعى حيث يوجد عنوانه وهو SUB_1 .





الدورة الرابعة : Tcy3

يتم تنفيذ تعليمة القفز إلى عنوان البرنامج الفرعى وفى نفس الوقت نجهز لجلب التعليمة التالية .

التعليمة التالية هى BSF Port A, Bit 3 . وهى تعنى "جعل الخانة المسماة Bit 3 للسجل PORTA فى الحالة المنطقية المرتفعة set" .

أثناء جلب هذه التعليمة نكون قد أنهينا تنفيذ التعليمة CALLSUB _1 والتى بدأت من قبل ( تأخد دورتين من دورات التعليمة ) .



الدورة الخامسة : Tcy4

نبدأ فى ترتيب جديد للتعليمات (نتيجة القفز) والذى يعنى اننا نزيل أو نغسل flush التعليمة الرابعة التى جلبناها وهى BSF PORT A, BIT3 . بعمل ذلك نكون قد أوقفنا تنفيذ التعليمة BSF بوحدة الحساب والمنطق وأثناء ذلك تم جلب التعليمة التى بالعنوان SUB_1 .

وهذا يوضح أنه حيثما وجد أى شىء يؤدى إلى تعديل عداد البرنامج سواء أكان قفز إلى برنامج فرعى أو حتى قفز عادى فإن وحدة الحساب والمنطق تلقائيا سوف تقوم بعمل غسيل للتعليمة التى تم جلبها وتتخلص منها ( تستبعدها) . عند استخدام برنامج فرعى فان التعليمة RETURN سوف تسبب فى رجوع البرنامج الى الترتيب الاصلى للبرنامج من عند التعليمة التى تلى التعليمة CALL فى هذه الحالة هى التعليمة BSF PORTA, BIT3 .



ثالثا كلمة تعليمة طويلة :

F.Abdelaziz
09-29-2011, 02:58 AM
ثالثا كلمة تعليمة طويلة :

الآن دعنا نلقى نظرة على معنى "كلمة التعليمة طويلة" .

كان من نتيجة استخدام ممرات منفصلة لكل من التعليمات والبيانات السماح باستخدام كلمة تعليمة طويلة . ففى حالتنا فإن كل تعليمة تمثل بكلمة واحدة تسمى كلمة التعليمة بطول 14 بت وتنفذ فى دورة تعليمة واحدة .

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

مثال لكلمة التعليمة الطويلة :

نوضح هنا مثال لتعليمة بكلمة طويلة فالتعليمة MOVLW #IMM والتى تحمل المسجل Wبالقيمة الفورية الثابتة التى نرمز لها بالرمز #IMM . فى التركيب البنائى الخاص بنا هذه القيمة دائما عدد ذو 8 بتات 8-bit ومن ثم يمكن أن نخزن هذه القيمة فى التعليمة بعرض 14-bit . فى هذه الحالة تخصص أربعة خانات لكود العملية op-code وهو فى هذه الحالة MOVLW .





http://eeecb.com/up2//uploads/images/domain-17e03b35ef.jpg

F.Abdelaziz
09-29-2011, 03:02 AM
شكل ( هيئة ) التعليمه InstructionFormat

كل أعضاء عائلة المدى الأوسط للميكروكونترولر PICلها تعليمات بعرض 14-bitومجموعة من التعليمات عددها 35 تعليمة . وشكل أو هيئة التعليمة تتبع أربع نماذج مختلفة :

تعليمات خاصة بالبايت byte .
وتعليمات خاصة بالخانة أو البت bit .
وتعليمات خاصة بالثوابت .
وتعليمات التحكم .

الأشكال التالية توضح هذه الأنواع .


http://eeecb.com/up2//uploads/images/domain-fe53d04c43.jpg


http://eeecb.com/up2//uploads/images/domain-3aa2ed40f7.jpg



http://eeecb.com/up2//uploads/images/domain-0aa0825865.jpg




http://eeecb.com/up2//uploads/images/domain-0ffd9fd628.jpg























لاحظ أن مجال (مكان) شفرة أو كود التعليمة متغير فى عدد الخانات ,وذلك ليسمح بوجود 35 تعليمة مختلفة . أيضا لاحظ أن التعليمات التى بها سجل ملف يكون مكون من 7 خانات . والمدى العددى للسبع خانات هو 128 قيمة . ولهذا السبب فى عائلة الميكروكونترولر الذى يحتوى على أكثر من 128 موقع ذاكرة بيانات يجب أن توزع بتقنية البنوك (المجموعات) حيث يتم يتم اختيار البنك (المجموعة) الذى به العنوان بمساعدة سجل خاص يعرف باسم مسجل الحالة Status.



مفهوم سجل الملف Register File Concept:

F.Abdelaziz
09-29-2011, 03:03 AM
مفهوم سجل الملف Register File Concept:

من خصائص التركيب البنائى للميكروكونترولر PIC والتى تجعله قوى هو استخدام ملف السجل .

ونعنى بملف السجل أن كل أماكن ذاكرة RAM والطرفيات peripherals ومنافذ الدخل والخرج I/O مرتبة ومنظمة على شكل بنك (مجموعة أو صف أو كومة) بسيطة من الملفات أو السجلات .

جميع التعليمات يمكن أن تعمل على أى سجل ولست مضطرا لتحميل أى شىء من ذاكرة RAM إلى السجل لكى تجرى وظيفة عليه .

على سبيل المثال يمكنك أن تأخذ محتويات السجل W وتضيفه إلى أى سجل بتعليمة واحدة كما يمكن إضافته إلى سجل أغراض عامة أو إلى منفذ دخل وخرج وهو ما يعرف بالتعليمة ذات المعاملين .

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

إذا استخدمت تعليمة ذات معامل واحد مثل زيادة ملف بمقدار واحد (INCF) يمكنك أخذ محتويات الملف الذى حددته إلى وحدة الحساب والمنطق ALU حيث يتم زيادته بواحد ثم يتم كتابة النتيجة بالعكس فى الملف (السجل) نفسه وكل ذلك فى تعليمة واحدة .

خانة الهدف يمكن أن تستخدم مع معظم التعليمات لتحديد مكان تخزين النتيجة إما إلى الملف نفسه أو تخزن فى المسجل W .

كمثال إذا أضفنا الفاصلة “comma F” إلى نهاية تعليمتنا السابقة فى عمل زيادة بمقدار واحد فإن نتيجة التعليمة سوف تخزن فى الملف نفسه وهى نفس النتيجة كما لو تركنها بدون ذلك . ولكن عند إضافة فاصلة ثم W“comma W” فى نهاية التعليمة فإن هذا يؤدى إلى أخذ محتويات الملف الذى حددته ثم عمل زيادة بمقدار واحد له ووضع النتيجة فى السجل W بدون التأثير على محتويات الملف الاصلى الذى تم قراءته فقط ولم يتم الكتابة عليه .

وهذا يعطى لك خياران مختلفان فى تخزين نتيجة التعليمة .



http://eeecb.com/up2//uploads/images/domain-00a0e0c316.jpg

F.Abdelaziz
09-29-2011, 03:10 AM
المخطط الصندوقى هو البداية فى دراسة أى جهاز

المخطط الصندوقى هو البداية فى دراسة أى جهاز أو معدة سواء أكانت ميكروكونترولر أو حتى بوابة منطقية بسيطة .الشكل يبين المخطط الصندوقى للميكروكونترولر PIC الأساسى للعائلة الوسطى PIC16 وبه كل المعلومات الآزمة التى تحتاجها لفهم وبدأ العمل مع الميكروكونترولر.





http://eeecb.com/up2//uploads/images/domain-060ffffe1d.jpg







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

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

وسوف ندرسه جزء جزء حتى يسهل فهمه .



نبدأ المخطط الصندوقى بحيز ذاكرة البرنامج :

F.Abdelaziz
09-29-2011, 03:12 AM
نبدأ المخطط الصندوقى بحيز ذاكرة البرنامج :

يقوم عداد البرنامج program counter (إختصاره PC )بعنونة حيز ذاكرة البرنامج سواء أكانت ذاكرة EPROM أو Flash EEPROM . وعداد البرنامج فى هذه العائلة هو سجل طوله 13bits.



http://eeecb.com/up2//uploads/images/domain-9fdef2706b.jpg





إذا نظرنا إلى الشكل وجدنا به ثلاثة اجزاء :

عداد البرنامج و المكدس وذاكرة البرنامج الفعلية وهى تعمل معا .

يتم تحميل ذاكرة البرنامج بكود ( شفرة ) البرنامج المطلوب من الميكروكونترولر تنفيذها . البرنامج يكون على شكل قائمة من التعليمات ويقوم عداد البرنامج بحفظ عنوان التعليمة التالية التى عليها الدور فى التنفيذ أى أنه يعمل كمؤشر لذاكرة البرنامج ويمكن لقيمة عداد البرنامج أن تنتقل إلى المكدس ويحدث ذلك عند تنفيذ برنامج فرعى أو حدوث مقاطعة كما فى تعليمات CALLو RETURNو RETFIE و RETLW . وسوف نتناولها فيما بعد .

عداد البرنامج ذو 13-bit ومن ثم فإن الميكروكونترولر يمكنه نظريا العنونة من 0000 الى 1FFFH .

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

peripheralinterrupt vector .

لابد إنك لاحظت أن عداد البرنامج له مكدس مصاحب له هذا المكدس هو سجل ( ذو 13-bits ) وهو جزء من العتاد الصلب hardware وفى حالتنا ( عائلة المدى الاوسط ) يوجد فى التركيب البنائى مكدس بعمق 8 مستويات .

هذا المكدس يستعمل فقط فى حفظ قيمة عداد البرنامج عند القفز Jumpإلى برنامج فرعى أو عندما تحدث مقاطعة للبرنامج .

فعند حدوث هذه الاحداث فإن قيمة عداد البرنامج يضاف اليه 1 ويدفع إلى المكدس . وهذا يسمح لعداد البرنامج نفسه بإعادة تحميله بعنوان لتعليمة جديدة والمطلوب تنفيذها .

فى حالة القفز إلى تعليمة برنامج فرعى فإن هذا العنوان يكون ضمن تعليمة CALL .

فى حالة حدوث مقاطعة للبرنامج فإن عداد البرنامج يوضع على 04h وعو عنوان متجه المقاطعة .





سوف نتتبع التعليمة MOVF PORTB,W خلال التركيب البنائى .

F.Abdelaziz
09-29-2011, 03:15 AM
سوف نتتبع التعليمة MOVF PORTB,W خلال التركيب البنائى .



هذه التعليمة سوف تأخد محتوى المسجل PORTB وتنسخه copy فى السجل W .




http://eeecb.com/up2//uploads/images/domain-7754458abe.jpg



ترى فى الشكل الشفرة أسفل التعليمة وفيها الستة خانات ذات الأهمية القصوى ( جهة اليسار ) تعرف التعليمة MOVF . الخانة التالية هى خانة الهدف ( أو المقصود) وهى فى هذه الحالة 0 وتعنى أننا سوف نخزن النتيجة فى السجل W . السبعة خانات ذات القيمة الأدنى ( من اليمين ) تعرف موقع (عنوان) المسجل الذى سوف نحصل منه على البيانات لنقلها إلى المسجل W . فى هذه الحالة القيمة هى العنوان 0x06 ( 06H ) والذى يتواجد فيه السجل PORTB .

خانة الهدف تعرف أين يتم وضع نتيجة التعليمة وحيث أنه توجد خانة واحدة يكون لدينا إختياران لعنوان الهدف إما أن يكون السجل W أو العودة إلى السجل المعرف فى التعليمة نفسها وهو فى هذه الحالة PORTB .

شفرة التعليمة ذات 14 خانة والتى يشير إليها عداد البرنامج تخرج من خلال ممر البرنامج إلى مسجل التعليمة .

لاحظ أن العنوان ( باللون الاصفر ) هو عنوان فى حيز ذاكرة البيانات ( SRAM) وهو غير حيز ذاكرة البرنامج ( ( ROM . فالحيزان منفصلان تماما عن بعض ويجب عدم الخلط بينهما.

فى هذه الحالة فان السبع خانات العليا ( جهة اليسار ) للتعليمة يتم حل شفرتها وتخبر المعالج بأنها تحتاج إلى عمل نقل move محتوى سجل ووضع الناتج فى السجل W .

يذهب العنوان إلى المنتخب multiplexer الخاص بالعناوين وحيث أننا نستخدم الطريقة المباشرة للعنونة فى هذا المثال فان PORTB يستخدم كعنوان للسجل فى ذاكرة البيانات .

لاحظ أن السجل W هو جزء من وحدة الحساب والمنطق فى التركيب البنائى لهذه العائلة وليس له حيز عنوان منفصل .

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




http://eeecb.com/up2//uploads/images/domain-4c3f9dd5fc.jpg





http://eeecb.com/up2//uploads/images/domain-7754458abe.jpg

F.Abdelaziz
09-29-2011, 03:19 AM
فى التعليمات ألفورية : التى تتعامل مع الثوابت يتم أخذ قيمة الثابت ذو 8-bits من التعليمة نفسها ( بدلا عن العنوان لأن القيمة الثابتة محددة فى التعليمة ) خلال الخط الازرق إلى المنتخب أعلا وحدة الحساب والمنطق متخذة طريق البيانات من سجل التعليمة حيث تمر القيمة الثابتة من خلال وحدة الحساب والمنطق حيث يتم إيداع الثابت فى السجل W وهذا الطريق هو طريق البيانات من ذاكرة البرنامج إلى السجل W الموجود فى جانب ذاكرة البيانات من التركيب البنائى .


http://eeecb.com/up2//uploads/images/domain-7f9c5b2445.jpg






وحيث أن منافذ الدخل والخرج متصلة بنفس ممر البيانات مثل مسجلات الملف ومواقع ذاكرة RAM يمكنك عنونة منافذ الدخل والخرج و RAM بنفس الطريقة . فقط غير العنوان وسوف تنفذ التعليمة على موقع ذاكرة RAM أو على منفذ دخل وخرج آخر لإنها تقع على نفس ممر البيانات ذو 8-bits.



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

يتم الوصول إلى الأجهزة المحيطية (الطرفية) من خلال نفس ممر البيانات كذاكرة البيانات RAM وسجلات الملف ومنافذ الدخل والخرج وحتى عداد البرنامج PC هو أيضا يقع على نفس ممر البيانات . والآن يمكنك أن تأخذ محتويات ااسجل W ونقله إلى عداد البرنامج . وحيث أن الممر هو ممر 8-bits فقط فإنك تستطيع فعل ذلك فقط على الثمانى خانات الأدنى أهمية (المنخفضة) وسوف نناقش ذلك فيما بعد عند الحديث على تعليمات القفز .




http://eeecb.com/up2//uploads/images/domain-dab4aa3f6b.jpg




منتخب العنوان يقوم بانتخاب إما عنوان مباشر أو عنوان غير مباشر وخرج منتخب العنوان هو عنوان إما لسجل ملف أو موقع فى RAM أو منفذ دخل وخرج أو أى من الأجهزة الطرفية أو الساعات والعدادات أو حتى عداد البرنامج نفسه . سوف تلاحظ هنا أن هناك دخل آخر لمنتخب العنوان وهو عنوان ولكنه لا يأتى من التعليمة بل يأتى من سجل ملف الاختيار أو FSR . وهذا السجل هو مؤشر العنوان الغيرمباشر للبيانات . يمكننا أن ناخذ محتويات هذا الملف واستخدامه كعنوان لموقع فى RAMأو منافذ الدخل والخرج أو أى أجهزة طرفية أو الساعات والعدادات .

الصندوق الآخر الذى يظهر هنا هو سجل الحالة status . وسجل الحالة هو سجل آخر يقع أيضا على ممر البيانات ويعطى حالة وحدة الحساب والمنطق حيث يحتوى سجل الحالة على بعض الخانات التى تعرف ما إذا كانت نتيجة آخر عملية تمت فى وحدة الحساب والمنطق قيمتها 0 وهل هناك زيادة overflowناتجة عن عملية طرح أو جمع وما إلى ذلك .



http://eeecb.com/up2//uploads/images/domain-d5ea78ffd6.jpg





قبل أن ننهى هذا الجزء دعنا نناقش باختصار الخصائص المساعدة والموجودة فى بناء الميكروكونترولر . وتشمل :

عملية التصفير (البدء) brown out resetومؤقت الحراسة watch dog timer والتصفير (البدء) عند توصيل التغذية power on reset ومؤقت بدء المذبذب oscillator startup timer وكلها وظائف أساسية فى العائلة PICmicro x14

وصندوق توليد التوقيت يولد الإشارات الزمنية الآزمة للميكروكونترولر والتى يتم إستخلاصها ( إشتقاقها) من مذبذب كريستال خارجى أو من دائرة رنين ceramic resonator أو من مذبذب RC داخلى داخل الشريحة نفسها . وهذا التردد يقسم داخليا على 4 لإنتاج دورات الساعة Tcy التى سبقت مناقشتها وأربعة منها تكون دورة التعليمة .




http://eeecb.com/up2//uploads/images/domain-2a6eae1f04.jpg



http://eeecb.com/up2//uploads/images/domain-b7b71b7138.jpg

F.Abdelaziz
09-29-2011, 03:33 AM
أدنى معلومات مطلوبة للتهيئة لبرمجة الميكروكونترولر PIC :

تعتمد أدنى المعلومات على نوع الميكروكونترولر المستخدم , ولكن عامة نحتاج إلى دائرتين خارجيتين : دائرة التصفير reset ودائرة المذبذب oscillator .

دائرة التصفير reset

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



http://eeecb.com/up2//uploads/images/domain-5249009667.jpg





دائرة المذبذب oscillator

يحتوى الميكروكونترولر فى بناءة الداخلى على دوائر مذبذبات والتى يمكن أن تعمل فى أحد خمسة أنظمة :

· نظام كريستال بقدرة منخفضة LP .

· نظام كريستال / دائرة رنين XT .

· نظام كريستال / دائرة رنين بسرعة عالية HS .

· نظام مقاومة – مكثف RC .

· نظام داخلى كامل بدون أى مكونات خارجية .

فى الأنظمة LP , XT , HS يمكن توصيل مذبذب خارجى إلى طرف الدخل OSC1 كما فى الشكل التالى :






http://eeecb.com/up2//uploads/images/domain-d10a2bd0e6.jpg






النظام LP : مصمم للعمل بالسرعة العادية وبقدرة منخفضة حيث تستهلك الدوائر الداخلية لنظام LP تيار أقل وهذا النظام مناسب للعمل على التردد المنخفض .



النظام XT : مصمم كحل للتوفيق بين العمل عند التردد المرتفع والاستهلاك المناسب للقدرة . ينصح باستخدام هذا النظام للعمل حتى 4MHz .



النظام HS : ويعرف أيضا بنظام السرعة المرتفعة ويعطى هذا النظام استجابة عند أعلى الترددات . استهلاك التيار يكون أيضا الأعلى من الانظمة الأخرى . ينصح باستخدام نظام HS للعمل حتى 20MHz .



استخدام نظام الكريستال :

كما هو موضح بالشكل , فى هذا النظام يتم توصيل كريستال ومكثفين خارجيا إلى مداخل الميكروكونترولر OSC1 و OSC2 . يجب اختيار المكثفات كما فى الجدول المرفق . على سبيل المثال عند استخدام كريستال بتردد 4MHz نستخدم مكثفان بالقيمة 22pF .




http://eeecb.com/up2//uploads/images/domain-cc57f48538.jpg




http://eeecb.com/up2//uploads/images/domain-7b54de9f5f.jpg







استخدام دائرة الرنين Resonator :

دائرة الرنين متوفرة بتردد من 4MHz إلى حوالى 8MHz , وهى ليست فى دقة الكريستال . الشكل يبين طريقة التوصيل .





http://eeecb.com/up2//uploads/images/domain-88f55ff4fb.jpg



استخدام نظام المذبذب RC :

فى التطبيقات التى لا تحتاج إلى دقة فى التوقيت يمكننا توصيل مقاومة ومكثف خارجيا إلى مدخل الميكروكونترولر OSC1 كما فى الشكل . يعتمد تردد المذبذب على كل من : قيم كل من المقاومة والمكثف (انظرالجدول المرفق) وجهد التغذية و درجة الحرارة . فى معظم التطبيقات نستخدم مقاومة 5k مع مكثف 20pF لكى نحصل على تردد بحوالى 4MHz وهى قيمة مقبولة .




http://eeecb.com/up2//uploads/images/domain-6538b8a365.jpg



http://eeecb.com/up2//uploads/images/domain-a41ff3fc30.jpg








استخدام المذبذب الداخلى :

بعض الميكروكونترولر PIC تحتوى داخليا على دائرة مذبذب كامل ولا تحتاج أى مكونات خارجية .عادة ما يكون المذبذب الداخلى بتردد 4MHz ويتم اختياره عند البرمجة . يجب اختيار المذبذب الداخلى عند التطبيقات رخيصة التكاليف .

F.Abdelaziz
09-30-2011, 01:21 AM
http://eeecb.com/up2//uploads/images/domain-1271894229.jpg (http://eeecb.com/up2//uploads/images/domain-1271894229.jpg)






سلسلة الميكروكونترولر PIC18F

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

كما أن سلسلة الميكروكونترولر PIC16 لا توفر الدعم المباشر للواجهات المحيطية المتقدمة مثل USB و ناقل CAN ..ألخ والربط مع مثل هذه الأجهزة ليس سهلا .

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

أنتجت شركة ميكروشيب سلسلة الميكروكونترولر PIC18 للاستخدام فى التطبيقات المعقدة والتى تتطلب عدد أطراف مرتفع و كثافة مرتفعة . يقدم الميكروكونترولر حلول منخفضة التكاليف للتطبيقات ذات الأغراض العامة مكتوبة بلغة السى والتى تستخدم نظام النشغيل فى الوقت الحقيقى (RTOS) وتتطلب بروتوكول اتصال معقد مثل TCP/IP, CAN, USB, ZigBee .

توفر أجهزة PIC18F ذاكرة برنامج وميضية فى الحجم من 8 إلى 128Kbytes و ذاكرة بيانات من 256 إلى 4Kbytes وتعمل على جهد فى المدى من 2.0 إلى 5.0 volts وبسرعة من DC إلى 40MHz .



الخصائص الأساسية لسلسلة الميكروكونترولر PIC18F :

77 تعليمة .
متوافقة مع شفرة المصدر source code للسسلسلة PIC16 .
عنواين ذاكرة البرنامج حتى 2 ميجا بايت .
عنواين ذاكرة البيانات حتى 4 كيلو بايت .
تردد العمل من الصفر DC حتى 40 ميجا هرتز .
أجهزة ضرب 8X8 .
مستويات لأسبقية المقاطعات .
مسار التعليمات بعرض 16 بت و مسار البيانات بعرض 8 بت .
حتى 2 مؤقت / عداد 8 بت .
حتى 3 عداد / مؤقت 16 بت .
حتى 4 مقاطعة خارجية .
المقدرة على العمل بنظام "منبع التيار" source أو "مصب التيار " sink بتيار مرتفع (25mA).
حتى 5 موديول CCP "إلتقاط capture / مقارنة compare / تعديل فى عرض النبضة PWM.
موديول منفذ تسلسلى متزامن قائد (ماستر) ( نظام SPI و نظام I2C ) .
حتى 2 موديول USART .
منفذ تفرعى تابع slave (خادم) (PSP).
محول من تناظرى لرقمى 10 بت سريع .
موديول كشف الجهد المنخفض قابل للبرمجة (LVD).
الإعادة عند توصيل القدرة (POR) و مؤقت بناء القدرة (PWRT) و مؤقت بدء المذبذب(OST) .
مؤقت الحراسة (WDT) بمذبذب RC داخل الشريحة .
البرمجة فى الدائرة ICP .




علاوة على ذلك , بعض الميكروكونترولر من العائلة PIC18F يوفر الخصائص الخاصة التالية :

واجهة مباشرة لناقل نظام CAN 2.0 .
واجهة مباشرة لناقل نظام USB 2.0.
واجة مباشرة للتحكم فى وحدة العرض LCD .
واجهة للنظام TCP/IP .
واجهة للنظام ZigBee .
واجة مباشرة للتحكم فى المحرك .
معظم أجهزة العائلة PIC18F متوافقة المصدر مع بعضها البعض . الجدول 2-1 يعطى خصائص بعض الأجهزة الشائعة من هذه العائلة .






http://eeecb.com/up2//uploads/images/domain-640383becd.jpg (http://eeecb.com/up2//uploads/images/domain-640383becd.jpg)







هذا الفصل يقدم دراسة مفصلة للميكروكونترولر PIC18FXX2 . بناء معظم باقى العائلة متماثل .

قد يكون القارىء على دراية ببرمجة وتطبيقات السلسلة PIC16F , قبل الخوض فى تفاصيل السلسلة PIC18F من المفيد مقارنة الخصائص الموجودة بالسلسلة PIC18F مع تلك الموجودة بالسلسلة PIC16F .



فيما يلى أوجه التشابه بين PIC16F و PIC18F :

تماثل الأغلفة والأطراف .
تماثل أسما ووظائف سجلات الوظائف الخاصة SFR .
تماثل الأجهزة الطرفية .
مجموعة فرعية من تعليمات PIC18F .
تماثل أدوات التطوير .


وفيما يلى الجديد فى PIC18F :

تضاعف عدد التعليمات .
كلمة التعليمات بحجم 16 بت .
جهاز ضرب 8X8 .
مقاطعات خارجية أكثر .
أولوية مستندة على المقاطعات .
سجل الحالة محسن .
زيادة حجم ذاكرة البرنامج وذاكرة البيانات .
المكدس أكبر .
مولد ساعة بنظام "حلقة مسك الوجة " Phase-locked loop (PLL) .
تحسين بنية منفذ الدخل / الخرج .
مجموعة من سجلات التهيئة .
سرعة عمل أعلى .
عمل بقدرو منخفضة .


2-1 بناء PIC18FXX2

F.Abdelaziz
09-30-2011, 12:18 PM
2-1 بناء (عمارة) PIC18FXX2

كما هو مبين بالجدول 2-1 , تتكون السلسلة PIC18FXX2 من أربعة أجهزة . الميكروكونترولر PIC18F2X2 أجهزة ذات 28 طرف (رجل) , فى حين أن الميكروكونترولر PIC18F4X2 أجهزة ذات 40 طرف (رجل) .

وأبنية كل من المجموعتين متطابقة تقريبا إلا أن الأجهزة الأكبر لديها منافذ مداخل ومخارج I/O وقنوات تحويل من تناظرى لرقمى A/D أكثر . فى هذا القسم سوف نتناول بناء الميكروكونترولر PIC18F452 بالتفصيل . وأبنية باقى سلسلة الميكروكونترولر PIC18F متماثلة , والمعلومات المكتسبة فى هذا القسم يجب أن تكون كافية لفهم عمل باقى سلسلة الميكروكونترولر PIC18F .

الشكل 2-1 يوضح مظهر أطراف (أرجل) الميكروكونترولر PIC18F452 (النوع DIP) , وهو ميكروكونترولر موجود فى غلاف من النوع DIP ومظهر الأطراف يماثل مظهر أطراف الميكروكونترولر PIC16F887 المعروف .





http://eeecb.com/up2//uploads/images/domain-de7b06212a.jpg (http://eeecb.com/up2//uploads/images/domain-de7b06212a.jpg)

F.Abdelaziz
09-30-2011, 12:20 PM
الشكل 2-2 يبين مخطط صندوقى داخلى للميكروكونترولر PIC18F452 .





http://eeecb.com/up2//uploads/images/domain-91e40dea1b.jpg (http://eeecb.com/up2//uploads/images/domain-91e40dea1b.jpg)

F.Abdelaziz
09-30-2011, 12:22 PM
وحدة المعالجة المركزية CPU فى وسط المخطط وتتكون من وحدة الحساب والمنطق ذات 8 بتات 8-bit ALU و سجل العمل المتراكم (WREG) بحجم 8 بت و جهاز ضرب (مضاعف) 8X8 multiplier . يتم تخزين البايت العلوى والبايت السفلى لحاصل الضرب فى سجلين بحجم 8 بت يسميان PRODH و PRODL على الترتيب .





http://eeecb.com/up2//uploads/images/domain-b4fdf03cd9.jpg (http://eeecb.com/up2//uploads/images/domain-b4fdf03cd9.jpg)

F.Abdelaziz
09-30-2011, 12:24 PM
عداد البرنامج وذاكرة البرنامج موضحان فى يسار الجزء العلوى من المخطط . عناوين ذاكرة البرنامج مكونة من 21 بت , وقادرة على الوصول إلى 2 ميجا بايت 2Mbytes من مواقع ذاكرة البرنامج . الميكروكونترولر PIC18F452 لديه 32 كيلو بايت 32Kbytes فقط من ذاكرة البرنامج , الأمر الذى لا يتطلب سوى 15 بت فقط . الستة بتات المتبقية زائدة عن الحاجة وغير مستخدمة . يوفر "مؤشر الجدول" table pointer الوصةل للجداول وللبيانات المخزنة فى ذاكرة البرنامج . تحتوى ذاكرة البرنامج على "مكدس" ذات 31 مستوى 31-level stack والذى يستخدم عادة لتخزين عناوين المقاطعة interrupt وعودة البرامج الفرعية return.





http://eeecb.com/up2//uploads/images/domain-c0a0707c0a.jpg (http://eeecb.com/up2//uploads/images/domain-c0a0707c0a.jpg)

F.Abdelaziz
09-30-2011, 12:26 PM
ذاكرة البيانات موضحة بوسط الجزء العلوى من المخطط . ممر ذاكرة البيانات بعرض 12 بت 12-bit bus , وهى قادرة على الوصول إلى 4 كيلوبايت من مواقع ذاكرة البيانات . كما سنرى لاحقا , تتكون ذاكرة البيانات من سجلات الوظائف الخاصة SFR وسجلات الأغراض العامة والجميع منظم فى مجموعات تسمى "بنوك" banks .





http://eeecb.com/up2//uploads/images/domain-b9a2fd1957.jpg (http://eeecb.com/up2//uploads/images/domain-b9a2fd1957.jpg)

F.Abdelaziz
09-30-2011, 12:27 PM
الجزء السفلى من المخطط يوضح "المؤقتات / العدادات" timers/counters و سجلات "الالتقاط / المقارنة / تعديل عرض النبضة CCP" capture/compare/PWM و الموديول USART و المحول من تناظرى لرقمى A/D و ذاكرة البيانات من النوع EEPROM . الميكروكونترولر PIC18F452 يتكون من :

4 مؤقت /عداد .
2 موديول CCP .
2 موديول أتصال تسلسلى .
8 قناة تحويل من تناظرى لرقمى بحجم 10 بت 8 10-bit A/D .
256 بايت من الذاطرة EEPROM .


http://eeecb.com/up2//uploads/images/domain-aeda4864d3.jpg (http://eeecb.com/up2//uploads/images/domain-aeda4864d3.jpg)

F.Abdelaziz
09-30-2011, 12:29 PM
دائرة المذبذب موضحة بالجانب الأيسر من المخطط وتتكون من الدوائر التالية :

مؤقت بناء القدرة Power-up timer.
مؤقت بدء المذبذب Oscillator start-up timer .
الإعادة عند توصيل القدرة Power-on reset .
مؤقت الحراسة Watchdog timer .
الإعادة عند البناء التدريجى Brown-out reset .
برمجة الجهد المنخفض Low-voltage programming .
التصحيح فى الدائرة In-circuit debugger .
دائرة PLL circuit .
دائرة توليد التوقيت Timing generation circuit .




الدائرة PLL جديدة بالسلسلة PIC18F وتوفر خيار ضرب تردد المذبذب لتسريع العملية ككل . يمكن استخدام مؤقت الحراسة لإجبار الميكروكونترولر على الإعادة reset فى حالة وقوع حادث للبرنامج . المصحح فى الدائرة , مفيد خلال تطوير البرنامج ويمكن استخدامه لاستعراض البيانات بما فى ذلك قيم السجلات أثناء قيام الميكروكونترولر بتنفيذ البرنامج .





http://eeecb.com/up2//uploads/images/domain-f05d051b6e.jpg (http://eeecb.com/up2//uploads/images/domain-f05d051b6e.jpg)

F.Abdelaziz
09-30-2011, 12:31 PM
منافذ المداخل – المخارج موضحة بالجانب الأيمن من المخطط . الميكروكونترولر PIC18F452 لديه خمس منافذ تسمى PORTA, PORTB, PORTC, PORTD, d PORTE . معظم أطراف المنافذ لها وظائف متعددة . على سبيل المثال , أطراف المنفذ PORTA يمكن أن تستخدم كمداخل / مخارج متوازية أو كمداخل تناظرية . ويمكن استخدام أطراف المنفذ PORTB كمداخل / مخارج متوازية أو كمداخل للمقاطعات .





http://eeecb.com/up2//uploads/images/domain-6b998a39e5.jpg (http://eeecb.com/up2//uploads/images/domain-6b998a39e5.jpg)





2-1-1 تنظيم ذاكرة البرنامج Program Memory Organization

F.Abdelaziz
09-30-2011, 03:42 PM
2-1-1 تنظيم ذاكرة البرنامج Program Memory Organization








http://eeecb.com/up2//uploads/images/domain-0412b29ded.jpg (http://eeecb.com/up2//uploads/images/domain-0412b29ded.jpg)





الشكل 2-3 يوضح خريطة ذاكرة البرنامج . جميع أجهزة PIC18F لديها عداد برنامج بحجم 21 بت وبالتالى فهو قادر على عنونة حيز ذاكرة قدره 2 ميجابايت . حيز ذاكرة المستخدم بالميكروكونترولر PIC18F452 من 00000H إلى 7FFFH . الوصول إلى مواقع الذاكرة الغير موجودة (8000H إلى 1FFFFFH ) يسبب قراءة أصفار لجميعها . متجه (موجه) الإعادة reset vector , حيث يبدأ البرنامج بعد عملية الإعادة , عند العموان 0000 . العناوين 0008H و 0018H محجوزة لموجهات " الأولوية المرتفعة" و "الأولوية المنخفضة" للمقاطعات على الترتيب ., ويجب كتابة روتين خدمة المقاطعة لكى يبدأ عند أحد هذان الموقعان.

الميكروكونترولر PIC18F لديها "مكدس" بسعة 31 إدخال والذى يستخدم فى حفظ عناوين عودة البرامج الفرعية من الاستدعاء ومعالجة المقاطعة . المكدس ليس جزءا من البرنامج ولا من حيز ذاكرة البيانات . يتم التحكم فى المكدس عن طريق مؤشر المكدس ذو 5 بت والذى يتم تهيئته بأصفار 00000 بعد الإعادة reset . أثناء استدعاء برنامج فرعى (أو مقاطعة) يزداد مؤشر المكدس فى البداية ويتم كتابة موقع الذاكرة الذى يشير إليه بمحتويات عداد البرنامج . أثناء العودة من استدعاء برنامج فرعى (أو مقاطعة) يتم تناقص موقع الذاكرة الذى يشير إليه مؤشر المكدس . المشاريع الموجودة بهذا الكتاب تستند على استخدام لغة السى . وحيث أن التعامل مع عمليات استدعاء /رجوع البرامج الفرعية والمقاطعات يتم تلقائيا بواسطة مترجم لفة السى فإنه لن يتم ذكر مزيد من التفاصيل عنها هنا .

تتم عنونة ذاكرة البرنامج بالبايتات , ويتم تخزين التعليمات فى ذاكرة البرنامج فى شكل 2 بايت أو 4 بايت . دائما يتم تخزين البايت ذات الأهمية الدنيا LSB لكلمة التعليمة فى العنوان الزوجى من ذاكرة البرنامج .

تتكون دورة التعليمة من أربع دورات : دورة الجلب (الإحضار) وتبدأ بتزايد عداد البرنامج فى Q1 . فى دورة التنفيذ يتم إمساك التعليمة المجلوبة فى "سجل التعليمة" فى الدورة Q1 . هذه التعليمة يتم فك شقرتها وتنفيذها خلال الدورات Q2,Q3,Q4 . يتم قراءة موقع ذاكرة البيانات خلال الدورة Q2 والكتابة خلال الدورة Q4 .



2-1-2 تنظيم ذاكرة البيانات Data Memory Organization

F.Abdelaziz
09-30-2011, 10:07 PM
2-1-2 تنظيم ذاكرة البيانات Data Memory Organization










http://eeecb.com/up2//uploads/images/domain-648cb83da4.jpg (http://eeecb.com/up2//uploads/images/domain-648cb83da4.jpg)









الشكل 2-4 يوضح خريطة ذاكرة البيانات للميكروكونترولر PIC18F452 . ممر (ناقل) عناوين ذاكرة البيانات بسعة 12 بت ولديه القدرة على عنونة حتى 4 ميجا بايت .

تتكون ذاكرة البيانات بشكل عام من 16 بنك (مجموعة)كل بنك مكون من 256 بايت حيث يستخدم 6 بنوك فقط . الميكروكونترولر PIC18F452 لديه 1536 بايت من ذاكرة البيانات ( 6 بنك فى كل بنك 256 بايت) والتى تحتل النهاية السفلية لذاكرة البيانات . يتم التحويل بين البنوك تلقائيا عند استخدام مترجم لغة مرتفعة المستوى , وبالتالى فلا داعى لقلق المستخدم حوا اختيار بنوك الذاكرة عند البرمجة .

سجلات الوظائف الخاصة SFR تحتل النصف العلوى لقمة بنك الذاكرة .

تحتوى سجلات الوظائف الخاصة على السجلات التى تتحكم (تسيطر) فى العمليات مثل الأجهزة الطرفية و المؤقتات / العدادات ومحول من تناظرى لرقمى A/D والمقاطعات وموديول الاتصال USART . الشكل 2-5 يوضح سجلات الوظائف الخاصة للميكروكونترولر PIC18F452 .





http://eeecb.com/up2//uploads/images/domain-85aab4569b.jpg (http://eeecb.com/up2//uploads/images/domain-85aab4569b.jpg)













2-1-3 سجلات التهيئة (الإعداد) The Configuration Registers

F.Abdelaziz
09-30-2011, 10:44 PM
2-1-3 سجلات التهيئة (الإعداد) The Configuration Registers

الميكروكونترولر pic18f452 لديه مجموعة من سجلات التهيئة ( سلسلة الميكروكونترولر pic16 لديها سدجل تهيئة واحد فقط ) . يتم برمجة سجلات التهيئة خلال برمجة ذاكرة البرنامج الوميضية عن طريق جهاز البرمجة . هذه السجلات موضحة بالجدول 2-2 . وصف هذه السجلات معطى بالجدول 2-3 .






http://eeecb.com/up2//uploads/images/domain-890a38550c.jpg (http://eeecb.com/up2//uploads/images/domain-890a38550c.jpg)




http://eeecb.com/up2//uploads/images/domain-961bf388de.jpg (http://eeecb.com/up2//uploads/images/domain-961bf388de.jpg)









فيما يلى وصف لبعض أهم سجلات التهيئة .



السجل CONFIG1H

سجل التهيئة CONFIG1H عند العنوان 300001H ويستخدم لاختيار مصادر الساعة clock sources للميكروكونترولر . نموذج البتات موضح بالشكل 2-6 .




http://eeecb.com/up2//uploads/images/domain-56efa4374a.jpg (http://eeecb.com/up2//uploads/images/domain-56efa4374a.jpg)





السجل CONFIG2L

سجل التهيئة CONFIG2L عند العنوان 300002H ويستخدم لاختيار بتات البناء التدريجى للجهد brown-out . نموذج البتات موضح بالشكل 2-7 .








http://eeecb.com/up2//uploads/images/domain-23b1f5d976.jpg (http://eeecb.com/up2//uploads/images/domain-23b1f5d976.jpg)





السجل CONFIG2H

سجل التهيئة CONFIG2H عند العنوان 300003H ويستخدم لاختيار عمل مؤقت الحراسة watchdog . نموذج البتات موضح بالشكل 2-8 .





http://eeecb.com/up2//uploads/images/domain-66b287dde9.jpg (http://eeecb.com/up2//uploads/images/domain-66b287dde9.jpg)






2-1-4 مصدر القدرة The Power Supply2

F.Abdelaziz
10-01-2011, 12:54 AM
2-1-4 مصدر القدرة The Power Supply2

الشكل 2-9 يوضح متطلبات مصدر القدرة power supply للميكروكونترولر PIC18F452 . يمكن للميكروكونترولر PIC18F452 أن يعمل بمصدر قدرة من 4.2V إلى 5.5V عند السرعة الكاملة وهى 40MHz كما هو موضح بالشكل 2-10 . الإصدار منخفض القدرة PIC18LF452 يمكن أن يعمل من 2.0V إلى 5.5V . عند القدرة المنخفضة يكون أقصى تردد للساعة هو 4MHz والذى يرتفع إلى 40MHz عند 4.2V .جهد احتفاظ ذاكرة RAM بالبيانات محدد بالقيمة 1.5V وسوف تفقد البيانات إذا انخفض الجهد عن هذه القيمة . عمليا معظم الأنظمة التى تستند على الميكروكونترولر تعمل بجهد 5V منفرد يتم الحصول عليه من منظم جهد مناسب .








http://eeecb.com/up2//uploads/images/domain-0be68ef1ca.jpg (http://eeecb.com/up2//uploads/images/domain-0be68ef1ca.jpg)









http://eeecb.com/up2//uploads/images/domain-62d5363ec7.jpg (http://eeecb.com/up2//uploads/images/domain-62d5363ec7.jpg)








2-1-5 الإعادة The Reset2

F.Abdelaziz
10-01-2011, 01:29 AM
2-1-5 الإعادة The Reset2

فعل "إعادة العمل" reset هو وضع الميكروكونترولر فى حالة معروفة . إعادة الميكروكونترولر PIC18F يجعله يبدأ تنفيذ البرنامج من العنوان 0000H لذاكرة البرنامج .

يمكن إعادة الميكروكونترولر أثناء أحد العمليات التالية :

إعادة عند توصيل القدرة Power-on reset (POR) .
إعادة خارجية باستخدام الطرف MCLR .
إعادة نتيجة مؤقت الحراسة Watchdog timer (WDT) reset .
إعادة نتيجة بناء الجهد Brown-out reset (BOR) .
تعليمة إعادة Reset instruction .
إعادة نتيجة اكتمال المكدس Stack full reset .
إعادة نتيجة تجاوز المكدس للحد الأدنى Stack underflow reset .
النوعان الأكثر استخداما هما : الإعادة عند توصيل القدرة power-on reset و الإعادة الخارجية باستخدام الطرف MCLR .







الإعادة عند توصيل القدرة Power-on Reset

تتولد الإعادة عند توصيل القدرة تلقائيا عند تطبيق جهد مصدر القدرة على الشريحة . يجب التوصييل الدائم للطرف MCLR بجهد المصدر مباشرة , أو من الأفضل خلال مقاومة 10 كيلوأوم . الشكل 2-11 يوضح دائرة إعادة نموذجية .

فى التطبيقات التى يكون فيها "زمن إرتفاع (نمو) الجهد" بطىء فمن المستحسن استخدام دايود ومكثف ومقاومة توالى كما هو موضح بالشكل 2-12 .








http://eeecb.com/up2//uploads/images/domain-e66d59a190.jpg (http://eeecb.com/up2//uploads/images/domain-e66d59a190.jpg)







فى بعض التطبيقات يكون مطلوب عمل إعادة خارجية عن طريق الضغط على زر ضاغط . الشكل 2-13 يوضح الدائرة التى يمكن استخدامها فى عمل إعادة للميكروكونترولر خارجيا .عادة يكون الطرف MCLR عند المنطق واحد logic 1 . عند الضغط على زر الإعادة RESET يتحول هذا الطرف إلى المنطق صفر logic 0 ويتم إعادة الميكروكونترولر .






http://eeecb.com/up2//uploads/images/domain-1359b3115b.jpg (http://eeecb.com/up2//uploads/images/domain-1359b3115b.jpg)







2-1-6 مصادر الساعة The Clock Sources

F.Abdelaziz
10-01-2011, 10:48 PM
2-1-8 منافذ الدخل / الخرج المتوازية Parallel I/O Ports
المنافذالمتوازية فى الميكروكونترولر PIC18F مشابهة جدا لمنافذ السلسلة PIC16 . عدد منافذ الدخل /الخرج I/O وعدد أطراف كل منفذ يختلف باختلاف ميكروكونترولر السلسلة PIC18F المستخدم , لكن جميعها بها على الأقل المنفذ PORTA والمنفذ PORTB . يتم تسمية أطراف المنفذ بالاسم RPn , حيث الحرف P يشير إلى المنفذ (PORT) والحرف n يشير إلى رقم طرف المنفذ . على سبيل المثال , أطراف المنفذ PORTA تسمى RA0 إلى RA7 وأطرف المنفذ PORTB تسمى RB0 إلى RB8 وهلم جرا .
عند التعامل مع المنفذ قد نرغب فى :
• تحديد إتجاه المنفذ .
• تحديد قيمة خرج .
• قراءة قيمة دخل .
• تحديد قيمة خرج ثم إعادة قراءة قيمة الخرج مرة أخرى .
أول ثلاث عمليات هى نفسها فى السلسلة PIC16 والسلسة PIC18F . فى بعض التطبيقات قد نرغب فى إرسال قيمة إلى منفذ ومن ثم قراءة القيمة المرسلة للتو مرة أخرى . السلسلة PIC16 بها ضعف فى تصميم المنفذ بحيث أن قيمة القراءة من المنفذ قد تختلف عن القيمة المكتوبة للتو عليه . ذلك لأن القراءة هة القيمة الفعلية لطرف بت المنفذ وهذه القيمة يمكن أن تتغير عن طريق الأجهزة الخارجية المتصلة بطرف المنفذ . فى السلسلة PIC18F تم إدخال "سجل ماسك" latch register ( مثل السجل LATA للمنفذ PORTA) لمنافذ الدخل / الخرج لحفظ القيمة الفعلية المرسلة إلى طرف المنفذ . القراءة من النفذ تقرأ "القيمة الممسوكة" والتى لا تتأثر بأى جهاز خارجى .
فى هذا الجزء سوف نتناول البناء العام لمنافذ الدخل / الخرج .

المنفذ PORTA

F.Abdelaziz
10-01-2011, 10:57 PM
المنفذ PORTA

فى الميكروكونترولر PIC18F452 المنفذ PORTA بسعة 7 بتات وأطراف المنفذ تتشارك بوظائف أخرى . الجدول 2-6 يوضح وظائف أطراف المنفذ PORTA .





http://eeecb.com/up2//uploads/images/domain-0e6972237e.jpg (http://eeecb.com/up2//uploads/images/domain-0e6972237e.jpg)

F.Abdelaziz
10-02-2011, 12:42 AM
بناء المنفذ PORTA موضح بالشكل 2-22 . يوجد 3 سجلات مرتبطة بالمنفذ PORTA :

· سجل بيانات المنفذ Port data register—PORTA .

· سجل اتجاه المنفذ Port direction register—TRISA .

· سجل ماسك المنفذ Port latch register—LATA .

PORTA هو اسم سجل بيانات المنفذ . السجل TRISA يعرف إتجاه أطراف المنفذ PORTA , حيث المنطق واحد logic 1 فى موقع بت يعرفها كطرف دخل input, و المنطق صفر logic 0 فى موقع البت يعرفها كطرف خرج output . السجل LATA هو سجل ماسك الخرج والذى يتشارك فى نفس البيانات الممسوكة مع المنفذ PORTA . الكتابة على أحدهما تكافىء الكتابة على الآخر . لكن القراءة من سجل الماسك LATA تفعل (تنشط) الحافز buffer بقمة المخطط , وقيمةالبيانات الممسوكة المحفوظة فى PORTA/LATA يتم نقلها إلى ناقل البيانات غير معتمدة على حالة طرف الخرج الفعلية للميكروكونترولر .

البتات من 0 إلى 3 و 5 للمنفذ PORTA تستخدم أيضا كمداخل تناظرية . بعد إعادة reset الجهاز . هذه الأطراف تبرمج كمداخل تناظرية و (RA4 و RA6 ) يتم تهيئتها كمداخل رقمية . لبرمجة المداخل التناظرية كمداخل / مخارج رقمية digital I/O يجب برمجة السجل ADCON1 (A/D register) وفقا لذلك . كتابة 7 على السجل ADCON1 يهىء جميع أطراف المنفذ PORTA كمداخل / مخارج رقمية .

الطرف RA4 يتم انتخابه مع مدخل الساعة للمؤقت Timer 0 (T0CKI) . ودخلة "قادح سشميت" Schmitt trigger وخرجه "مصب مفتوح" open drain .

يمكن استخدام الطرف RA6 كطرف دخل / خرج عام أو كمدخل للساعة OSC2 أو كمخرج للساعة يوفر نبضات ساعة بتردد FOSC/4 .





http://eeecb.com/up2//uploads/images/domain-92b7b245d9.jpg (http://eeecb.com/up2//uploads/images/domain-92b7b245d9.jpg)

F.Abdelaziz
10-02-2011, 01:15 AM
المنفذ PORTB

فى الميكروكونترولر PIC18F452 المنفذ PORTB هو منفذ ثنائى الاتجاه بسعة 8 بت يتشارك بأطراف المقاطعة و أطراف جهاز البرمجة التسلسلى . الجدول 2-7 يعطى وظائف بتات المنفذ PORTB .

يتم التحكم فى المنفذ PORTB بواسطة 3 سجلات :

· سجل بيانات المنفذ Port data register—PORTB .

· سجل اتجاه المنفذ Port direction register—TRISB .

· سجل ماسك المنفذ Port latch register—LATB .

العمل العام للمنفذ PORTB يماثل المنفذ PORTA . الشكل 2-23 يوضح بناء المنفذ PORTB . كل طرف بالمنفذ به داخليا "جذب لأعلى" ضعيف والذى يمكن تمكينه بمسح (تصفير) البت RBPU بالسجل INTCON2 . هذا الجذب لأعلى يكون غير ممكن نتيجة الإعادة reset عند توصيل القدرة أو عند تهيئة أطراف المنفذ كمخارج . عند الإعادة نتيجة توصيل القدرة يتم تهيئة أطراف المنفذ PORTB كمداخل رقمية . الجذب لأعلى الداخلى يسمح بتوصيل أجهزة الدخل مثل المفاتيح لأطراف المنفذ PORTB بدون استخدام مقاومات جذب لأعلى خارجية . هذا يوفر التكاليف لتخفيض عدد المكونات والتوصيلات المطلوبة .








http://eeecb.com/up2//uploads/images/domain-a6a754bb5a.jpg (http://eeecb.com/up2//uploads/images/domain-a6a754bb5a.jpg)







http://eeecb.com/up2//uploads/images/domain-eaa4a735db.jpg (http://eeecb.com/up2//uploads/images/domain-eaa4a735db.jpg)







يمكن استخدام الأطراف RB4–RB7 كمقاطعة عند تغير حالة المداخل , حيث أن أى تغير فى أى طرف منها يسبب "تحديد set" علم المقاطعة interrupt flag . تمكين المقاطعة و بتات الأعلام RBIE و RBIF بالسجل INTCON .



المنافذ PORTC, PORTD, PORTE وما عداها

F.Abdelaziz
10-02-2011, 01:44 AM
المنافذ PORTC, PORTD, PORTE وما عداها

بالإضافة للمنفذ PORTA والمنفذ PORTB يمتلك الميكروكونترولر المنافذ 8 بت ثنائية الاتجاه PORTC و PORTD والمنفذ 3 بت PORTE . كل منفذ له سجل البيانات الخاص به ( مثل PORTC) , و سجل اتجاه البيانات (مثل TRISC) وسجل الماسك (مثل LATC) . العمل العام لهذه المنافذ يماثل المنفذ PORTA .

فى الميكروكونترولر PIC18F452 يتم انتخاب المنفذ PORTC مع العديد من الوظائف الطرفية كما هو موضح بيالجدول 2-8 . عند الإعادة نتيجة توصيل القدرة يتم تهيئة أطراف المنفذ PORTC كمداخل رقمية .






http://eeecb.com/up2//uploads/images/domain-1d48934be8.jpg (http://eeecb.com/up2//uploads/images/domain-1d48934be8.jpg)







فى الميكروكونترولر PIC18F452 المنفذ PORTD له مدخل بقادح سشميت حافز . عند الإعادة نتيجة توصيل التغذية يتم تهيئة أطراف المنفذ PORTD كمداخل رقمية . يمكن تهيئة المنفذ PORTD كمنفذ تفرعى 8 بت "تابع – خادم" 8-bit parallel slave port (أى كمنفذ لمعالج دقيق) بتحديد set الخانة bit4 للسجل TRISE . الجدول 2-9 يوضح وظائف أطراف المنفذ PORTD .




http://eeecb.com/up2//uploads/images/domain-98dcf98514.jpg (http://eeecb.com/up2//uploads/images/domain-98dcf98514.jpg)







فى الميكروكونترولر PIC18F452 , المنفذ PORTE بسعة 3 بت فقط . كما هو موضح بالجدول 2-10 ، أطراف المنفذ تتشارك مع المداخل التناظرية ومع بتات التحكم فى المنفذ التفرعى التابع . عند الإعادة نتيجة توصيل القدرة يتم تهيئة أطراف المنفذ PORTE كمداخل تناظرية ويجب برمجة السجل ADCON1 لتغيير هذه الأطراف إلى مداخل / مخارج رقمية .






http://eeecb.com/up2//uploads/images/domain-81581010ee.jpg (http://eeecb.com/up2//uploads/images/domain-81581010ee.jpg)





2-1-9 المؤقتات Timers

F.Abdelaziz
10-02-2011, 11:10 AM
2-1-9 المؤقتات Timers

الميكروكونترولرPIC18F452 به أربع مؤقتات قابلة للبرمجة والتى يمكن أن تستخدم فى العديد من المهام , مثل توليد أشارات التوقيت و التسبب فى مقاطعات تتولد عند فترات زمنية محددة و قياس التردد وقياس الفترات الزمنية وهلم جرا .

هذا القسم يتناول المؤقتات المتاحة فى الميكروكونترولر PIC18F452 .



المؤقت Timer 0

المؤقت Timer 0 هنا مشابه للمؤقت Timer 0 الموجود بالسلسلة PIC16 , إلا أنه يمكن أن يعمل إما بنظام 8-bit أو بنظام 16-bit .



الخصائص الأساسية للمؤقت Timer 0

· العمل بنظام 8-bit أو بنظام 16-bit .

· "مقياس أو تدريج مسبق " prescaler 8 بت قابل للبرمجة .

· مصدر الساعة خارجى أو داخلى .

· توليد مقاطعة عند الطفحان overflow .



سجل التحكم فى المؤقت Timer 0 هو السجل T0CON , الموضح بالشكل 2-24 . الستة بتات المنخفضة لهذا السجل لها وظائف مماثلة للسجل OPTION بالسلسلة PIC16 . الخانتان العلويتان تستخدم فى اختيار نظام العمل 8-bit أو 16-bit و لتمكين / عدم تمكين (تعطيل) المؤقت .

يمكن أن يعمل المؤقت Timer 0 إما كمؤقت أو كعداد . يتم اختيار نظام المؤقت بمسح (تصفير) الخانة T0CS , وفى هذا النظام تقاد الساعة إلى المؤقت داخليا من FOSC/4 .

يتم اختيار نظام العداد بتحديد set (بواحد) البت T0CS , وفى هذا النظام يتم تزايد المؤقت Timer 0 عند الحافة الصاعدة أو الحافة الهابطة للمدخل RA4/T0CKI . البت T0SE بالسجل T0CON تختار نظام حافة الإشعال (البدء) .

يمكن استخدام "مقياس مسبق" 8 بت لتغيير معدل ساعة المؤقت بعامل factor حتى 256 .

يتم اختيار المقياس المسبق بالبتات PSA و T0PS2:T0PS0 بالسجل T0CON .






http://eeecb.com/up2//uploads/images/domain-85810f3cef.jpg (http://eeecb.com/up2//uploads/images/domain-85810f3cef.jpg)





نظام 8 بت 8-Bit Mode

F.Abdelaziz
10-02-2011, 03:14 PM
نظام 8 بت 8-Bit Mode

الشكل 2-25 يوضح المؤقت Timer 0 بنظام 8-bit .






http://eeecb.com/up2//uploads/images/domain-0598e9a8b9.jpg (http://eeecb.com/up2//uploads/images/domain-0598e9a8b9.jpg)



عادة يتم تنفيذ العمليات التالية فى تطبيقات المؤقت :

· مسح clear البت T0CS لاختيار الساعة FOSC/4 .

· استخدام البتات T0PS2:T0PS0 لاختيارالقيمة المناسبة للمقياس المسبق prescaler .

· مسح البت PSA لاختيار المقياس المسبق .

· تحميل load سجل المؤقت TMR0L .

· اختيارى , تمكين المقاطعات بالمؤقت Timer 0 .

· يقوم المؤقت بالعد وتتولد المقاطعة عند تزداد (تطفح - تفيض) overflows من FFH إلى 00H فى نظام 8 بت (أو من FFFFH إلى 0000H فى نظام 16 بت ) .



عن طريق تحميل قيمة بالسجل TMR0 يمكننا التحكم بالعد حتى حدوث الطفحان . يمكن استخدام العلاقة التالية فى حساب الزمن الذى يستغرقة المؤقت ببطفحان (أو لتوليد المقاطعة) , بمعرفة الزمن الدورى للمذبذب , والقيمة التى تم تحميلها بالمؤقت وقيمة المقياس المسبق prescaler :




http://eeecb.com/up2//uploads/images/domain-cb8597be80.jpg (http://eeecb.com/up2//uploads/images/domain-cb8597be80.jpg)





Overflow time = 4 x TOSC x Prescaler x(256 _ TMR0) (2.1)



حيث :

Overflow time زمن الطفحان بالملى ثانية ms .

TOSC الزم الدورى للمذبذب بالملى ثانية .

Prescaler قيمة المقياس المسبق .

TMR0 القيمة التى تم تحميلها بسجل المؤقت TMR0 .



على سبيل المثال , نفترض أننا نستخدم كريستال 4MHz و أن المقياس المسبق المختار هو 1:8 عن طريق تعيين البتات PS2:PS0بالقيمة 010 . أيضا نفترض أن القيمة المحملة بسجل المؤقت TMR0 هى 100 عشرى . عندئذ يمكن حساب زمن الطفحان كما يلى :

· حساب الزمن الدورى للمذبذب 4MHZ






http://eeecb.com/up2//uploads/images/domain-6ef3c68ff6.jpg (http://eeecb.com/up2//uploads/images/domain-6ef3c68ff6.jpg)





T = 1=f =0.25ms

· استخدام العلاقة السابقة




http://eeecb.com/up2//uploads/images/domain-928e6295c0.jpg (http://eeecb.com/up2//uploads/images/domain-928e6295c0.jpg)





Overflow time = 4 x 0:25 x 8 x (256 - 100= (1248ms

وبالتالى فأن المؤقت سوف يطفح overflow بعد 1.248msec وتتولد "مقاطعة بالمؤقت" إذا تم تمكين كل من المقاطعة بالمؤقت و عموم المقاطعات global interrupts .

عادة ما نريده هو أن نعرف ما هى القيمة التى يجب تحميلها فى سجل المؤقت TMR0 لزم طفحان مطلوب . يمكن حساب ذلك عن طريق تعديل المعادلة (2.1) على النحو التالى :






http://eeecb.com/up2//uploads/images/domain-3ee591f1b9.jpg (http://eeecb.com/up2//uploads/images/domain-3ee591f1b9.jpg)







TMR0 = 256 –(Overflow time)/ (4 x TOSC x Prescaler) (2.2)



على سبيل المثال , نفترض أننا نريد توليد مقاطعة بعد 500ms علما بأن الساعة والمقياس المسبق كما فى الحالة السابقة . يمكن حساب القيمة التى تحمل بسجل المؤقت TMR0 باستخدام المعادلة 2-2 كما يلى :






http://eeecb.com/up2//uploads/images/domain-a77faca2b2.jpg (http://eeecb.com/up2//uploads/images/domain-a77faca2b2.jpg)





TMR0 = 256 – 500/(4 x 0.25 x 8)= 193.5



أقرب عدد يمكن تحميله بالسجل TMR0 هو 193 .



نظام 16 بت 16-Bit Mode

F.Abdelaziz
10-02-2011, 03:32 PM
نظام 16 بت 16-Bit Mode

المؤقت Timer 0 بنظام 16-bit موضح بالشكل 2-26 . هنا , يستخدم سجلين للمؤقت يسميان TMR0L و TMR0 لتخزين قيمة المؤقت 16 بت . البايت المنخفض TMR0L يمكن تحميله مباشرة من ناقل البيانات . البايت العلوى TMR0 يمكن تحميله من خلال حافز buffer يسمى TMR0H . خلال قراءة TMR0L يتم أيضا تحميل البايت المرتفع للمؤقت (TMR0) إلى TMR0H وبالتالى يمكن قراءة قيمة المؤقت بكافة 16 بت .

لقراءة قيمة المؤقت 16- بت , أولا يجب علينا قراءة TMR0L ثم بعد ذلك قراءة TMR0H فى التعليمة التالية . بالمثل , خلال الكتابة إلى TMR0L يتم تحديث البايت العلوى بمحتويات TMR0H للسماح بكتابة جميع 16 بت إلى المؤقت . وبالتالى للكتابة على المؤقت يجب أن يكتب البرنامج أولا البايت العلوى المطلوب على TMR0H . عند كتابة البايت المنخفض على TMR0L , عندئذ فأن القيمة المخزنة فى TMR0H تنتقل تلقائيا إلى TMR0H وبالتالى تسبب كتابة جميع 16 بت على المؤقت .





http://eeecb.com/up2//uploads/images/domain-c4f2a52bf9.jpg (http://eeecb.com/up2//uploads/images/domain-c4f2a52bf9.jpg)

F.Abdelaziz
10-02-2011, 10:54 PM
المؤقت Timer 1

المؤقت Timer 1 بالميكروكونترولر PIC18F452 هو مؤقت 16 بت يتم التحكم فيه عن طريق السجل T1CON كما هو موضح بالشكل 2-27 . الشكل 2-28 يوضح البناء الداخلى للمؤقت Timer 1 .






http://eeecb.com/up2//uploads/images/domain-21386389ee.jpg (http://eeecb.com/up2//uploads/images/domain-21386389ee.jpg)





http://eeecb.com/up2//uploads/images/domain-3ce8dfc30d.jpg (http://eeecb.com/up2//uploads/images/domain-3ce8dfc30d.jpg)









المؤقت Timer 1 يمكن أن يعمل أما كمؤقت أو كعداد . عندما تكون الخانة TMR1CS بالسجل T1CON منخفضة يتم اختيار الساعة FOSC/4 للمؤقت . عندما تكون الخانة TMR1CS مرتفعة يعمل الموديول كعداد بساعة من الدخل T1OSI . المذبذب الكريستال , الذى يتم تمكينه من الخانة T1OSCEN بالسجل T1CON , ينشأ بين الطرفين T1OSI و T1OSO حيث يمكن توصيب كريستال بتردد حتى 200KHz بين هذين الطرفين . هذا المذبذب مخصص فى المقام الأول لكريستال 32KHz للعمل فى تطبيقات ساعة "الزمن الحقيقى" .

يمكن استخدام المقياس المسبق prescaler بالمؤقت Timer 1 والذى يمكن من تغيير معدل التوقيق بمعامل قيمته 1 أو 2 أو 4 أو 8 .

يمكن تهيئة المؤقت Timer 1 بحيث يمكن تنفيذ القراءة / الكتابة أما بنظام 16 بت أو بنظام 2 فى 8بت . البت RD16 بالسجل T1CON تتحكم فى النظام . عندما تكون البت RD16 منخفضة يتم تنفيذ عمليات القراءة والكتابة للمؤقت كعمليات 2 فى 8 بت . عندما تكون البت RD16 مرتفعة يتم تنفيذ عمليات القراءة والكتابة للمؤقت كعمليات 16 بت كما فى المؤقت Timer 0( أى يستخدم حافز بين سجل المؤقت وناقل البيانات ) (أنظر الشكل 2-29) .










http://eeecb.com/up2//uploads/images/domain-6510d7ff6c.jpg (http://eeecb.com/up2//uploads/images/domain-6510d7ff6c.jpg)







إذا تم تمكين المقاطعات بالمؤقت Timer 1 فسوف تتولد مقاطعة عندما تدور (تتحول) قيمة المؤقت من FFFFH إلى 0000H .



المؤقت Timer 2

F.Abdelaziz
10-02-2011, 10:56 PM
المؤقت Timer 2

المؤقت Timer 2 مؤقت 8 بت بالخصائص التالية :

· مؤت 8 بت (TMR2) .

· سجل الزمن الدورى period register 8 بت (PR2) .

· مقياس مسبق prescaler قابل للبرمجة .

· مقياس تابع postscaler قابل للبرمجة .

· مقاطعة عن تطابق TM2 مع PR2 .



يتم التحكم فى المؤقت Timer 2 من السجل T2CON كما هو مبين بالشكل 2-30 . الخانات

T2CKPS1: T2CKPS0 تحدد المقياس المسبق لقيم تدريج 1 أو 4 أو 16. الخانات TOUTPS3:TOUTPS0 تحدد المقياس التابع لتدريج من 1:1 إلى 1:16 . يمكن توصيل أو فصل المؤقت عن طريق تحديد set أو مسح clear الخانة TMR2ON .






http://eeecb.com/up2//uploads/images/domain-521675a2b3.jpg (http://eeecb.com/up2//uploads/images/domain-521675a2b3.jpg)









المخطط الصندوقى للمؤقت Timer 2 موضح بالشكل 2-31 .








http://eeecb.com/up2//uploads/images/domain-953e7113e0.jpg (http://eeecb.com/up2//uploads/images/domain-953e7113e0.jpg)







يمكن استخدام المؤقت Timer 2 فى نظام تعديل عرض النبضة PWM بالموديول CCP . يمكن اختيار خرج المؤقت Timer 2 كساعة بود

baud clock برمجيا عن طريق الموديول SSP . المؤقت Timer 2 يتزايد من 00H حتى يطابق PR2 ويحدد set علم المقاطعة . بعد ذلك يتم إعادته reset إلى 00H فى الدورة التالية .



المؤقت Timer 3

F.Abdelaziz
10-02-2011, 10:59 PM
المؤقت Timer 3

بناء وعمل المؤقت Timer 3 مثل المؤقت Timer 1 وله السجلات TMR3H و TMR3L . يتم التحكم فى هذا المؤقت من السجل T3CON كما هو موضح بالشكل 2-32 .






http://eeecb.com/up2//uploads/images/domain-7d1ee45718.jpg (http://eeecb.com/up2//uploads/images/domain-7d1ee45718.jpg)







المخطط الصندوقى للمؤقت Timer 3 موضح بالشكل 2-33 .










http://eeecb.com/up2//uploads/images/domain-d60897ecb4.jpg (http://eeecb.com/up2//uploads/images/domain-d60897ecb4.jpg)









2-1-10 الموديولات (CCP) (إلتقاط Capture / مقارنة Compare / تعديل عرض النبضة (PWM

F.Abdelaziz
10-05-2011, 12:53 AM
2-1-12 المقاطعات Interrupts
المقاطعة هى "حدث" event والذى يتطلب وقف وحدة المعالجة المركزية CPU عن تنفيذ البرنامج العادى ومن ثم تنفيذ كود برنامج متعلق بالحدث المسبب للمقاطعة . يمكن توليد المقاطعات داخليا ( عن طريق بعض الأحداث داخل الشريحة ) أو خارجيا ( عن طريق بعض الأحداث الخارجية) . مثال للمقاطعة الداخلية هو حدوث طفحان فى المؤقت أو اكتمال التحويل للمحول A/D . ومثال للمقاطعة الخارجية هو تغيير حالة طرف دخل / خرج .
يمكن أن تكون المقاطعة مفيدة فى العديد من التطبيقات مثل :
• التطبيقات الحرجة (الحساسة) للزمن . يمكن استخدام المقاطعات فى التطبيقات التى تتطلب اهتماما فوريا من وحدة المعالجة المركزية . على سبيل المثال , فى الحالات الطارئة emergency مثل إنقطاع (فشل) الكهرباء أو حريق فى مصنع فقد تضطر وحدة المعالجة المركزية إلى إيقاف shut downالنظام على الفور على نحو منظم ( بترتيب محدد ) . فى مثل هذه التطبيقات يمكن لمقاطعة خارجية إجبار force وحدة المعالجة المركزية لوقف كل ما تقوم به واتخاذ إجراءات فورية .
• أداء المهام الروتينية . العديد من التطبيقات تحتاج لقيام وحدة المعالجة المركزية CPU بأداء عمل روتينى فى أوقات محددة , مثل فحص حالة جهاز طرفى كل واحد ملى ثانية بالضبط . يمكن لمقاطعة بالمؤقت مجدولة أن تعمل على تحويل (انحراف) وحدة المعالجة المركزية من التنفيذ العادى للبرنامج إلى إنجاز المهمة فى التوقيت المحدد بدقة .
• تبديل المهام فى التطبيقات متعددة المهام multi-tasking. فى التطبيقات متعددة المهام , كل مهمة قد قد يكون لها وقت محدد لتنفيذ كودها . يمكن استخدام آليات المقاطعة لوقف مهمة استهلكت وقتا أكثر من الوقت المخصص لها .
• لخدمة الأجهزة الطرفية بسرعة . بعض التطبيقات قد تحتاج إلى معرفة متى يتم النتهاء من المهمة , مثل اكتمال التحويل A/D . يمكن تحقيق ذلك عن طريق الفحص المستمر لعلم الاكتمال للمحول A/D . ولعل الحل يكون أكثر أناقة بتمكين مقاطعة اكتمال التحويل A/D بحيث تجبر وحدة المعالجة المركزية على قراءة البينات المحولة بمجرد أن تصبح متاحة .

F.Abdelaziz
10-05-2011, 02:42 AM
الميكروكونترولر PIC18F452 به كل من مصادرة المقاطعة الأساسية الموجودة فى لبها core ومصادر المقاطعة الطرفية .
مصادر المقاطعة الأساسية هى :
• المقاطعة الخارجية "بحافة البدء" edge-triggered على الأطراف INT0, INT1, INT2 .
• المقاطعات بتحول أطراف المنفذ PORTB ( تغيير حالة أى من الأطراف RB4–RB7 ) .
• مقاطعة طفحان overflow المؤقت Timer 0 .

مصادر مقاطعة الأجهزة الطرفية هى :
• مقاطعة القراءة / الكتابة للمنفذ التفرعى التالبع .
• مقاطعة اكتمال التحويل A/D .
• مقاطعة الاستقبال USART .
• مقاطعة الإرسال USART .
• مقاطعة المنفذ التسلسلى المتزامن .
• مقاطعة CCP1 .
• مقاطعة طفحان المؤقت TMR1 .
• مقاطعو طفحان المؤقت TMR2 .
• مقاطعة المقارن .
• مقاطعة الكتابة EEPROM/FLASH .
• مقاطعة تعارض الناقل Bus .
• مقاطعة كشف الجهد المنخفض .
• مقاطعة طفحان المؤقت Timer 3 .
• مقاطعة CCP2 .
يمكن تقسيم المقاطعات فى العائلة PIC18F إلى مجموعتين : مجموعة ذات أولوية مرتفعة ومجموعة ذات أولوية منخفضة . يمكن وضع التطبيقات التى تتطلب مزيدا من الاهتمام فى مجموعة الأولوية المرتفعة . يمكن للمقاطعة ذات الأولوية المرتفعة وقف المقاطعة ذات الأولوية المنخفضة والتى هى قيد التنفيذ والوصول إلى وحدة المعالجة المركزية . مع ذلك , لا يمكن وقف المقاطعة ذات الأولوية المرتفعة عن طريق المقاطعة ذات الأولوية المنخفضة . إذا كان التطبيق لا يحتاج إلى تحديد أولويات المقاطعات فيمكن للمستخدم تعطيل جدول أولوية المقاطعة حتى يتسنى لجميع المقاطعات أن تكون على نفس المستوى من الأولوية . المقاطعات ذات الأولوية المرتفعة تتجه نحو العنوان 00008H والمقاطعات ذات الأولوية المنخفضة تتجة نحو العنوان 000018H من ذاكرة البرنامج . عادة , يجب أن يكون كود برنامج المستخدم ( روتين خدمة المقاطعة ISR ) عند عنوان متجة المقاطعة لخدمة الجهاز المقاطع .

F.Abdelaziz
10-05-2011, 03:10 PM
البرمجة بلغة السى C Programming Language
يوجد العديد من مترجمات لغة السى C compilers فى السوق لسلسلة الميكروكونترولر PIC18F . هذه المترجمات لها العديد من السمات المتشابهة وجميعها تستخدم فى تطوير (إنشاء) برامج لغة السى ذات المستوى المرتفع للميكروكونترولر PIC18F .


إليك بعض مترجمات لغة السى المستخدمة فى تطبيقات الميكروكونترولر PIC18F سواء التجارية أوالصناعية أوالتعليمية :
MikroC
PICC18
C18
CCS
المترجم الشائع والأقوى هو mikroC ( المطور بمعرفة :MikroElektronika بالموقع


http://www.mikroe.com/ ) وهو "سهل التعلم" وهو "غنى بالموارد" مثل العدد الكبير من مكتبات الدوال وبيئة التطوير المتكاملة والمدمج بها "برنامج محاكاة" و"مصحح بالدائرة" . النسخة التجريبية demo من المترجم متاحة بالموقع ومحددة ببرنامج 2K .

1.3 هيكل (بناء) برنامج الميكروسى Structure of a mikroC Program

F.Abdelaziz
10-05-2011, 03:11 PM
1.3 هيكل (بناء) برنامج الميكروسى Structure of a mikroC Program

الشكل 3-1 يبين أبسط هيكل برنامج الميكروسى. هذا البرنامج يومض الليد المتصل بالطرف RB0 ( البت bit0 للمنفذ PORTB ) للميكروكونترولر كل ثانية كفترة زمنية . لا تقلق إذا لم تفهم عمل البرنامج فى هذه المرحلة لأن كل شىء سوف يكون واضحا مع التقدم خلال هذا الفصل . بعض عناصر البرمجة بالشكل 3-1 يتم شرحها بالتفصيل هنا .






http://eeecb.com/up2//uploads/images/domain-6deaa9cd50.jpg




3-1-1 التعليقات Comments

F.Abdelaziz
10-05-2011, 03:12 PM
3-1-1 التعليقات Comments

تستخدم التعليقات لتوضيح عمل البرنامج أو تعبير فى البرمجة. يتم "تجاهل" أسطر التعليقات ولا تترجم بمعرفة المترجم .



فى برامج الميكروسى يوجد نوعين من التعليقات :

"التعليقات الطويلة" والتى تمتد لعدة أسطر .
و "التعليقات القصيرة" والتى تحتل سطر واحد فقط .
أسطر التعليق فى بداية البرنامج يمكن أن تصف بإيجاز عمل البرنامج وتقديم اسم المؤلف واسم ملف البرنامج والتاريخ الذى كتب فيه البرنامج وقائمة بأرقام الإصدار جنبا إلى جنب مع التعديلات بكل إصدار . كما هو مبين بالشكل 3-1 , يمكن أيضا أن تضاف التعليقات بعد "العبارات" لوصف العمليات التى تقوم هذه العبارات بتنفيذها .



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

كما هو موضح بالشكل 3-1 "تبدأ " التعليقات الطويلة بالحروف (الرموز "/*" و"تنتهى" بالحروف "*/" . بالمثل تبدأ التعليقات القصيرة بالحروف "//" ولا تحتاج لحروف إنتهاء .





3-2-1 بداية ونهاية البرنامج Beginning and Ending of a Program

F.Abdelaziz
10-05-2011, 03:12 PM
3-2-1 بداية ونهاية البرنامج Beginning and Ending of a Program

فى لغة السى يبدأ البرنامج بالكلمات :



void main ()



بعد ذلك يستخدم "القوس المجعد للفتح " للدلالة على بداية "جسم البرنامج" . يتم إنهاء البرنامج "بالقوس المجعد للغلق" . وهكذا , كما هو مبين بالشكل 3-1 , فإن بناء البرنامج يكون كما يلى :

void main()

{

program body

}



3-1-3 "إنهاء" عبارات البرنامج Terminating Program Statements

F.Abdelaziz
10-05-2011, 03:13 PM
}



3-1-3 "إنهاء" عبارات البرنامج Terminating Program Statements



فى لغة السى جميع "عبارات" البرنامج "يجب" أن تنتهى برمز "بالفاصلة المتقوطة" (“;”) وإلا سيتم توليد خطأ بالمترجم .



j = 5; // correct

j = 5 // error

F.Abdelaziz
10-05-2011, 03:15 PM
3-1-4 المسافات البيضاء White Spaces

المسافات البيضاء هى مسافات خالية spaces, فراغات blanks , تبويبات tabs و رموز السطر الجديد . مترجم لغة السى يتجاهل كافة المسافات البيضاء . وهكذا فإن الثلاثة عبارات التالية متطابقة :





http://eeecb.com/up2//uploads/images/domain-745ad3d392.jpg





بالمثل العبارات التالية متطابقة :







http://eeecb.com/up2//uploads/images/domain-273464593f.jpg













3-1-5 الحساسية لحالة الحرف Case Sensitivity

F.Abdelaziz
10-05-2011, 03:17 PM
3-1-5 الحساسية لحالة الحرف Case Sensitivity

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






http://eeecb.com/up2//uploads/images/domain-e66c139fbe.jpg












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



القادم إن شاء الله :

3-1-7 أنواع المتغيرات Variable Types

F.Abdelaziz
10-05-2011, 03:19 PM
3-1-7 أنواع المتغيرات Variable Types

المترجم "ميكروسى" يدعم أنواع المتغيرات المبينة بالجدول 3-2 . سوف نتناول أمثلة للمتغيرات فى هذا الجزء .





http://eeecb.com/up2//uploads/images/domain-0994ca5064.jpg




http://eeecb.com/up2//uploads/images/domain-2fc18bf52b.jpg

F.Abdelaziz
10-05-2011, 03:20 PM
1- المتغيرات من النوع :

"حرف" (رمز) (أو نقول للتوضيح حرف بدون إشارة )
(unsigned) char
أو "قصير بدون إشارة "( أو نقول للتوضيحعدد صحيح قصير بدون إشارة"
unsigned short (int)



هذه المتغيرات هى متغيرات " 8- بت بدون إشارة وبالمدى من 0 إلى 255 " . المثال التالى يبين إنشاء متغيران 8-بت بدون إشارة بالأسماء " total" و " sum " وتم "تخصيص أو تعيين" القيمة العشرية 150 للمتغير sum :




http://eeecb.com/up2//uploads/images/domain-a745558352.jpg










يمكن تخصيص قيم المتغيرات خلال "تعريفها أو إعلانها" .وبالتالى يمكن أيضا كتابة العبارة السابقة على النحو التالى :




http://eeecb.com/up2//uploads/images/domain-f0d9122393.jpg

F.Abdelaziz
10-05-2011, 03:23 PM
1- المتغيرات من النوع :

حرف بإشارة

signed char

أو "قصير" (أو نقول للتوضيح عدد صحيح قصير بإشارة )
(signed) short (int)



هذه المتغيرات هى متغيرات " 8- بت بإشارة وبالمدى (-127 ) إلى (128) " . المثال التالى يبين إنشاء متغير 8- بت بإشارة يسمى counter مع تخصيص القيمة (-50) له:





http://eeecb.com/up2//uploads/images/domain-2fcb09d0a9.jpg

F.Abdelaziz
10-05-2011, 03:24 PM
1- المتغير من النوع :

"عدد صحيح" (أو نقول للتوضيحعدد صحيح بإشارة)
(signed) int





هذه المتغير هو متغير " 16- بت وبالمدى من (-32768) إلى (32767) ". المثال التالى يبين إنشاء متغير لعدد صحيح بإشارة يسمى Big :





http://eeecb.com/up2//uploads/images/domain-5b673be3d9.jpg

F.Abdelaziz
10-05-2011, 03:25 PM
1- المتغير من النوع :

"بدون إشارة" (أو نقول للتوضيح عدد صحيح بدون إشارة )
unsigned (int)



هذه المتغير هو متغير " 16- بت بدون إشارة وبالمدى من (0) إلى (65535) ". المثال التالى يبين إنشاء متغير لعدد صحيح بدون إشارة 16 - بت يسمى count مع تخصيص القيمة 12000 له :





http://eeecb.com/up2//uploads/images/domain-46e3ee3ae4.jpg

F.Abdelaziz
10-05-2011, 03:26 PM
1- المتغير من النوع :

"طويل" (أو نقول للتوضيح عدد صحيح طويل بإشارة)
(signed) long (int)





هذه المتغير هو متغير " 32- بت بإشارة وبالمدى من (-2147483648) إلى (2147483647) ". على سبيل المثال :




http://eeecb.com/up2//uploads/images/domain-5a0bf520c4.jpg

F.Abdelaziz
10-05-2011, 03:27 PM
1- المتغير من النوع :

"طويل بدون إشارة" (أو نقول للتوضيح عدد صحيح كويل بدون إشارة)
unsigned long (int)





هذه المتغير هو متغير " 32- بت بدون إشارة وبالمدى من (0) إلى (4294967295) ". على سبيل المثال :





http://eeecb.com/up2//uploads/images/domain-415a16bcc8.jpg

F.Abdelaziz
10-05-2011, 03:29 PM
1- المتغير من النوع :

"عدد حقيقى" أو "مزدوج" أو "مزدوج طويل"
float or double or long double

هذه المتغيرات هى متغيرات بعلامة متحركة (علامة عشرية) . المثال التالى يبين إنشاء متغير لعدد حقيقى يسمى area مع تخصيص القيمة 12.235 له :





http://eeecb.com/up2//uploads/images/domain-5250bf5ccc.jpg

F.Abdelaziz
10-05-2011, 03:30 PM
لتجنب الالتباس أثناء تطوير البرنامج ينصح بتحديد "إشارة المتغير" ( بإشارة signed أو بدون إشارة unsigned) بالإضافة إلى نوع المتغير . على سبيل المثال استخدم unsigned char بدلا من char فقط واستخدم unsigned int بدلا من unsigned فقط .

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









http://eeecb.com/up2//uploads/images/domain-83311f5071.jpg







القادم إن شاء الله :

3-1-8 الثوابت Constants

F.Abdelaziz
10-14-2011, 12:08 PM
ماشاء الله

موضوع رائع يستحق التثبيت من استاذ مميز


اكمل بارك الله فيك

أخى الكريم الفاضل Admin

شكرا جزيلا لك

شكرا على الثبيت


تقدير كنت وما زلت أعتز به

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

metwally.mustafa
10-14-2011, 03:49 PM
جزاكم الله خيرا اخى المهندس فتح الله وكل عام وانت بخير