صفحة 1 من 4 1 2 3 ... الأخيرةالأخيرة
النتائج 1 إلى 10 من 37

الموضوع: الميكرو كونترولر انواعه و برمجته و استخداماته

  1. #1
    مشرف قسم تقنية الالكترونيات
    تاريخ التسجيل
    Jun 2008
    الدولة
    القاهرة - مصر
    المشاركات
    3,181

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

    دورات في الهندسة الكهربائية

    روابط الدورات - اضغط على صورة الدورة للاشتراك

     

    محطات التحويل الكهربائية

     

     

    image119

    دورة محركات و مولدات التيار المستمر

     

     

    image120

    دورة المحولات الكهربائية

     

     

    image121

    أساسيات أنظمة الخلايا الشمسية

     

     

    image122

    حسابات الأنظمة الشمسية المتصلة بالشبكة

     

     

    image123

    أساسيات كهرباء المنازل

     

     

    image124

    محطات الديزل وانظمة UPS

     

     

    image125

    توليد و انتاج الكهرباء

     

     

    image126

    تعريف بتخصص الهندسة الكهربائية

     

     

    image127

    تسويق نفسك للوظيفة والعمل الحر

     

     

    image128
    الميكروكونتروللر

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

    منذبدء الحضارة و سعى الإنسان لصنع آله حاسبةلتسرع الإنجاز و تتجنب الأخطاء ولاحقا تتجنب النسيان و توصل العديد من العلماء لآلات و لكنها عجزت عن الطلب الأخير فمفهوم الذاكرة و التذكر كان صعب التحقيق حتى توصل العالم LeeDe Forest لىدى فورست لوضع شبكة للتحكم فى مسار الإلكترونات فصنع أول صمام مكبر و من ثم أمكن عمل أول حاسب آلى إلكترونى تماثلى حقق كافة العلاقات الرياضية المعقدة مثل اللوغاريتمات و الحسابات المثلثية وحتى استخدمت كثير من الوسائل لتحقيق الذاكرة مثل الشرائط المثقبة أو الأجزاء المتحركة الخ لكن ظلت العقبة الرئيسية هى سهولةالبرمجة. كانت الوظائف تصنع فى صناديق قياسية بعرض 19بوصة و البرمجة بتثبيتها فى دولاب خاص يسمى راك 19بوصةث م توصل الصناديق ببعضها بكابلات و أيضا عمل حاسب يؤدى عدة وظائف تختار بينها بمفتاح صعبة لكون الأسلاك تحد من سرعة الاستجابة فتبطئ الأداء.
    سعى العلماء لتصغير ألصمامات الإلكترونية بهدف تصغير الحجم و تقليل الفاقد فى حرارة التسخين و تقليل الفولت المطلوب لتشغيلها من مئات لأقل من مائه فولت.صممت كافة الدوائر المنطقية بألصمامات و صمم المذبذب متعدد التوافقيات (سلسلةتصميم الدوائر المنطقية) وألذى اعتبر أول خلية ذاكرة سهلة التطبيق ثم تطورت لعمل مسجلات و بوابات أمكن الوصول لأول حاسب آلى إلكترونى فى الأربعينات سمى ENIAC اختصارجمله ElectronicNumerical Integrator and Computer وكان يشغل مبنى كاملا و له مبنى ملحق لأجهزة التكييف و التبريد و كانت سرعته بلغت 2ميجاهرتز و كان وقتها سحرا – تخيل أن تقوم بمليونى عملية حساب فى الثانية الواحدة و ذكر أحدهم أننا لو بنينا جهاز آخر سيكفي انحاجة العالم من الحسابات و الآن كل منا لديه حاسبان على الأقل فى يده، الهاتف المحمول و الساعة ...
    حتى هذا الوقت اقتصرت الدوائر المتكاملة على المقاومات و المكثفات بهدف تصغير الحجم و تقليل الوصلات.
    فى ديسمبر 1947توصل العلماء لأول ترانزستور من الجرمانيوم و الثنائيات من المواد الصلبة وأضافت الدوائر المتكاملة الثنائيات فقط لعدم ملاءمة الجرمانيوم لهذا الأسلوب فى التصنيع. ظهرت عائلات رقمية مثل عائلة RDL وهى المقاومة و الثنائى و DTL أو الثنائى مع الترانزستور فى صورة كروت الكترونية قابلة للوضع فى قاعدة Plugin أوالرفع و الاستبدال.
    عندما تمكن العلماء من استخدام السيليكون أمكن صنع أول دوائر متكاملة تحتوى ترانزستورات و صنعت عائلة TTL الشهيرة و صنعت حاسبات تسمى مينى كمبيوتر و هيكل أساسى MainFrame وهى"العملاقةوقتها"ولم تصل لربع هاتفك المحمول.
    أغلب الحاسبات وقتها صنعت طبقا لنسق سمى هارفارد حيث يكون مكان حفظ البيانات و مسار حفظها مستقلين تمام عن مكان حفظ البرنامج (الكود) ومسار التعامل معه وهذا وفر المرونة والسرعة حيث لا يجب تساوى عرض كل منهما وطلب ومعالجة أحدهما لا يتعارض مع التعامل مع الآخر و كان عادة البرنامج فى كروت مثقبة أو شريط مثقوب و البيانات فى وسائل كهرو ميكانيكية .
    الهيكل الأساسى لحاسب آلى تبلور فى وحدة معالجةمركزية للحساب و المنطق و حولها الذاكرة و وسائل إدخال و إخراج .
    بعدتطور TTL أمكن صنع وحدة معالجة مركزية فى صورة دائرة متكاملة وهى 74181 ولاحقا المعدلة 74881و هى قادرة على تنفيذ 16عملية حسابية أو منطقية جمع أو طرح أو إزاحة أومقارنة أو دوال المنطق المعروفة AND-OR-XOR و المتمم أو Complement على 4 بت معا وهى 24 طرف و بسرعة تصل إلى أكثر من 10 ميجا و قابلة للامتداد أى توصل بعضها ببعض للتعامل مع 8بت أو اكثر.
    ظهور دوائر منطقية من عائلات أخرى مثل NMOS, PMOS عازل أكسيد السيليكون الموجب و السالب القناة،ولاحقا CMOS عازل أكسيد السيليكون مع المكمل، مكن من تصغير حجم الترانزستور بصورة كبيرة و أمكن من دمج وحدة المعالجة السابقة مع مثيلتها لمعالجة 8 بت معا و إضافة مراكمات و عداد للبرنامج وحافظ للبيانات تحت المعالجة و ظهرت طريقة "فوننيومن" فى الحاسبات حيث تكون خطوات البرنامج والبيانات فى ذات الذاكرة و بتتابع، أى كود أمر يليه البيان ألذى يتعامل معه وسميت ميكروبروسيسور لأنها تعالج البيانات..
    أشهرهذه الميكروبروسيسور هو 8080 و ألذى أنتجته إنتيل و ألذى تفوقت عليه شركة زيلوج بالميكرو Z80 و ألذى أصبح عصب كل الحاسبات الشخصية و تبنت IBM هذاالنوع من إنتيل وهذا سبب شهرته لكن باقى الشركات استخدمت Z80 لأفضليته و سهولة استخدامه و منافستها الأساسية شركة موتورولا انتجت MC6800 و ألذى كان أسهل بكثير فى الاستخدام و أنسب للماكينات و الصناعة عموما وهنا مقارنةبينهما



    كل منهما 40طرف بنسق DIP اختصار Dual Inline Package وتشمل على حافلة للعنوان Address Bus من16 طرف يتيح أقصى تناول للذاكرة 16 كيلوبايت أو 65536 خانه، و أخرى للبيانات DataBuss من 8 بت تتيح التعامل مع بايت كاملة فى المرة الواحدة وثالثة للتحكم ControlBuss أو أحيانا SystemBuss وأطراف التغذية و كانت تعمل بكريستال 2ميجا و أقصاها وصل 4 ميجا.
    على اليمين نجد Z80 و نجد حافلة ألعنوان AddressBus تشمل الجزء العلوى على الجانبين (أطراف من1:5 على الجانب الأيسر ثم من 30:40 على الجانب الأيمن)بينمافى 6800 نجدها مرتبة بالتتالي على الجانب الأيسر من الطرف 9 و حتى 20 ثم الجانب الأيمن حتى 25.
    حافلةالبيانات DataBuss فى Z80 فى الأطراف 14ثم15 ثم12 ثم8 ثم7 ثم9 ثم10 ثم13 مقابل اليسرى مرتبة .
    لاننسى هنا ذكر شركة روكويل و منتجها 6500 وهى ما اختارته شركة أبل لحاسباتها.
    لاننسى أن كل هذه الميكرو لم يحتوى ذاكرة ودوما كنا نشترى ذاكرة لحاسباتنا ولم يحتوى اتصال تسلسلى ولا عدادات تايمر ولا محول تماثلى رقمى – الحساب و المقارنة و المنطق فقط و الحساب كان جمع وطرح فقط أما الضرب و القسمة فكان لها معالج مساعد Co-processor لمعالجة الضرب و القسمة و الأرقام العشرية و كل هذه الخواص كانت إضافات محيطية ولها ماسمى بروسيسور خاص بها.
    معذرة للإطالة لكن هذا تسبب فى الحاجة لأشياء هامة جدا تربط مفاهيم لغات البرمجة وأكوادها Software مع المكونات الملموسة Hardware ومدى حاجتنا لأى منهما فى عالم الميكرو،هذا موضوعنا القادم بإذن الله
    الصور المرفقة الصور المرفقة
    • نوع الملف: png Microprocessors.png‏ (16.3 كيلوبايت, 323 مشاهدات)

  2. #2
    مشرف قسم تقنية الالكترونيات
    تاريخ التسجيل
    Jun 2008
    الدولة
    القاهرة - مصر
    المشاركات
    3,181

    افتراضي بدء التشغيل و البايوس bios

    بدء التشغيل و البايوس BIOS
    كل ميكرو يجب أن يبدأ بالريسيت Reset ألذى يحدد له مكان فى الذاكرة يبدأ به فيضع على حافلة العنوان رقم الخانة المقصودة ثم يضع إشارة قراءة من الذاكرة على حافلة التحكم فتجيبه الذاكرة بمحتواها وهنا تحدد وحدة المعالجة ما إن كانت الخطوة التالية هى بيان مطلوب أو أمر جديد فمثلا أمر المتمم Complement يكون للمراكم فقط ولا يتطلب بيانات أخرى على العكس من أمر الجمع مثلا سيحتاج ما نجمعه.
    الحاسبات الصغيرة تعمل على ملف واحد فقط له بداية واحدة فقط يبدأ منها ليشعر المستخدم أنه يعمل ثم يختار المستخدم لعبة ما أو برنامج وحيد لكى يشغله لكن، هل هذا البرنامج لا يحفظ بيانات؟
    هنا تظهر مشكلة كبيرة وهى كيف؟
    سنحتاج مكان ثم نقسم المكان لوحدات و نعطى البيانات اسما – أصبحت ملف ، و هنا نشأت الحاجة لنظام تشغيل يتولى هذه الأمور. يفرق بين أنواع الملفات و يحتفظ بفهرس للملفات و أماكنها و إن تم تعديل أحدها إين تضاف الزيادة؟ و إن حذف كيف نحررها من الفهرس الخ. باختصار نظام تشغيل Operating system لمعالجة هذه الأمور.
    هنا ظهرت الحاجة لوسائط تخزين غير الذاكرة تكون دائمة عند غلق الجهاز مثل القرص الصلب أو المرن الخ.

    مما سبق بات واضحا أن تركيب الحاسب أصبح مفتوحا للخيارات الشخصية فقد أشترى قرص صلب أو لا و قد أركب قارئ أقراص مرنة أو لا وقد احتاج لأن ابدأ من خارج الجهاز كليا، لذا كان لابد من استخدام نظام أساسيات الإدخال و الإخراج Basic Input Output System و اختصارا BIOS لكى ندل الميكرو ما لديه من وسائل الإدخال و الإخراج و أيها يبدأ منها التشغيل حيث يجد نظام التشغيل و ألذى بدأ بالدوس DOS وهى اختصار Disk Operating System أى نظام تشغيل الأقراص و ألذى مازال يستخدم حتى وقت كتابة هذه الكلمات ثم الويندوز وغيرهما من الأنظمة مثل يونكس و لينكس الخ.
    تطور الجيل التالى و استخدم 16 بت للبيانات و طبيعى أن ينشدوا حجم أكبر من البيانات و البرامج و سرعات اكبر أى 24 بت للعنوان مع 16 بت للبيانات و لذا استخدموا 48 طرف فى صورة متكاملة مربعة و تصل حتى 64 طرف.
    لكن ما تلى ذلك من أجيال سعت لحجم أكبر من الذاكرة ولم تعد هذه الأشكال من المتكاملات مناسبة لذا لجأوا لعدة صفوف داخل بعضها مثل إنتيل 486 حيث لونت الصف الخارجى باللون الأحمر و الأوسط بالأخضر و الداخلى بالأصفر و تسمى PGA اختصارا Pin Grid Array مصفوفة الأطراف الشبكية.



    الآن هذه لا تصلح لك ولى فهى تتطلب بوردة متعددة الطبقات كما أيضا لها احتياطات خاصة لسرعتها العالية و التى زادت عن 100 ميجا فلا يجب أن تتغير ألسعات فى أطراف البيانات حتى لا تصل بعض أطرافها متأخرة عن الأخرى من الذاكرة.
    من أهم الأمور أن أوضح لك أن حافلة العنوان وحافلة البيانات كانت تصل الميكروبروسيسور بالذواكر وكافة المحيطات، أجل كل الأطراف السبعة و عشرون.
    حقا هم 16 للعنوان مع 8 للبيانات أى 24 ثم خط تحكم يحدد ما إن كان التعامل مع الذاكرة أم محيطات IO request و نظرا لإضطراب القيم على الحافلات هناك خط تحكم آخر يسمى العنوان صحيح Valid Memory Address اختصارا VMA أى أن الميكروبروسيسور قد وضع العنوان النهائى وهو هكذا ببساطة فلا أريد أن أعقد لك الأمور بخاصية DMA أو Direct Memory Access حيث تتولى الأجهزة التعامل مع الذاكرة دون تدخل الميكرو والتى تضيف خطين تحكم أخريين
    Buss request , Buss Available
    - و فى النهاية خط يسمى ألفاز2 أو فاى2 وهى الجزء من الدورة التى تشمل من2 :4 نبضة و التى سيقرأ فيها الميكروبروسيسور البيان.

    هنا نشأت الحاجة لعمل الميكروكونتروللر أى العودة للجذور من جديد حتى تتمكن انت و أنا من صنع بوردة بإمكانياتنا المحدودة و أن نضع هذا الميكرو على بوردة تجميع Bread Board و نجرى تجاربنا وهو موضوعنا القادم إن شاء الله
    الصور المرفقة الصور المرفقة
    • نوع الملف: png 486dx.png‏ (14.5 كيلوبايت, 259 مشاهدات)

  3. #3
    مشرف قسم تقنية الالكترونيات
    تاريخ التسجيل
    Jun 2008
    الدولة
    القاهرة - مصر
    المشاركات
    3,181

    افتراضي العودة للجذور


    العودة للجذور:
    مما سبق وجدنا أن الحاجة نشأت لعدة أمور مثل:
    1- ألعودة للشكل الأساسى DIP أو المربعة على أقصى تقدير لتمكين الشخص ألعادى من التعامل معه.
    2- السرعات المتوسطة و التى لا تشكل عائقا فى التنفيذ.
    3- الإسغناء عن نظام التشغيل و من ثم البايوس و ترك الميكرو متاح للمبرمج لكى يتعامل معه مباشرة على مستوى المكونات الداخلية.
    4- التخلص من صعوبة توصيل 16 خط للعنوان مع 8 خط للبيانات و باقى التحكم أى 29 طرف و من ثم العودة لنظام هارفارد أى ذاكرة مستقلة للبرنامج و أخرى مستقلة للبيانات.
    5- من النقطة السابقة يمكن التخلص كليا من 24 طرف و بعض خطوط التحكم بجعل الذواكر كلها داخلية و احتواء المداخل و المخارج Input Output ما أمكن داخل الميكرو وبعض الوظائف الطرفية مثل التواصل التسلسلى و التحويل تماثلى لرقمى و من ثم أصبحت كافة الأطراف متاحة للمبرمج للتحكم فى العالم الخارجى و تحسس وسائل التحكم مثل الحساسات و المفاتيح
    6- لم تعد هناك حاجة لكل التعليمات فى الميكروبروسيسور لذا سنستغنى عن التعليمات التى ستتم فى الذاكرة و نكتفى بالتعليمات التى تتم بين الذاكرة ووحدة المعالجة فقط و نسمى هذا مجموعة الأوامر المخفضة Reduced Instruction Set Computer اختصاراRISC رغم أن هذا يتطلب زيادة عدد خطوات تنفيذ ذات المهمة للحاجة لنقل البيان الأول لوحدة المعالجة ثم نقل النتيجة للذاكرة.

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

    تنافست شركات عديدة فى إنتاج هذا الشكل و أصبح لكل منها منتج له خواصه و ميزاته و مجالاته الأنسب لكن أشهرها كان من إنتاج إنتيل و سمى C51 و ميكرو تشيب. إلا أن إنتيل باعت منتجها لشركة أتميل و التى سمته بدورها AT89x5x حيث AT تعنى Atmel و 89 رقم المجموعة ثم x قد تكون C,S, L,LV حيث كل حرف يعنى خاصية ما ثم 5X قد تكون 51 أو52 أو53 أو54 أو 58 أو 2051 الخ حسب نوع و طراز الميكرو ثم سلسلة AVR و المعروفة بالإسم AtMega بينما ميكرو تشيب أنتجت PIC10cxxx ثم PIC12cxx ثم PIC16xxx ثم PIC18xxx الخ
    المجموعتان من إنتاج ميكروتشيب PIC10cxxx و PIC12cxx غالبا من ثمانية أطراف وهى محدودة الإمكانيات لكن لها العديد من التطبيقات مثلا موتور توجيه طبق الأقمار الصناعية، لا يحتاج سوى طرف لتلقى الأوامر من الريموت و آخر لعد نبضات إنكودر الموتور و طرفين لتحريك الموتور يمين أو يسار و طرفين لخزن المعلومات فى ذاكرة فلاش ملحقة بالبوردة. هذا لأبين مدى أهمية أن نعلم عن كل الأنواع ، فمهما كان الميكرو صغيرا و محدود الإمكانات فله عديد من التطبيقات التى يمكن استخدامها فيها و تحقق إنجازا كبيرا. فقط حاول أن تفكر كيف تستبدله بإلكترونيات رقمية.
    هذه المجموعة لم أعلم لها موازى من أتميل سوى لاحقا من فصيلة AVR و سميت ATtiny وهى اختصار AT وهو اسم الشركة ثم tiny بمعنى صغير.
    كيف نستخدمه و نبرمجه؟ حسنا لو شرحت لك بيك 16 سيعترض هواة بيك 18 ولو شرحت C51 سيحتج هواة AVR ولكنى سقت لكم مثالا موتور الدش لغرض فى نفسى وهو هذا الأمر. سأشرح الكل لكى تعلم انت كيف تبحث عما تريد و كيف تدرس أى ميكرو ولا تقف عاجزا ثم تختار الأنسب . كنت أبرمج C51 بالأسيمبلى حين طلب منى جهاز بالميكرو تشيب لعدم توافر النوع الآخر ، كمصمم يجب ألا تتوقف، ادرس الداتاشيت ، أتعرف على الفروق و أبرمج بأى لغة تناسب التطبيق.
    لهذا يجب أن نعلم التركيب الداخلى و كيفية البرمجة. وهذا موضوعنا القادم بإذن الله



  4. #4
    مشرف قسم تقنية الالكترونيات
    تاريخ التسجيل
    Jun 2008
    الدولة
    القاهرة - مصر
    المشاركات
    3,181

    افتراضي أشهر أنواع المتحكمات

    أشهر الأنواع:
    كما ذكرنا فشركتى ميكروتشيب و أتميل هما أشهر الشركات فى هذا المجال و سنقارن أشهر الأنواع من كل منهما ثم نشرح التركيب الداخلى و كيفية البرمجة بالأسيمبلى و البيزك و لغة C و سنعرض أخيرا للجيل المتطور من كل منهما و عليك أن تكمل المشوار.
    أولا لنقارن بين الأطراف سنجد أننا فى حاجة لأن نعرف كيف يتصرف الميكروكونتروللر وما هى احتياجاته من العتاد لكى ينفذ أى برنامج.
    ألتركيب العام:
    الشرح التالى لا يخص رقم بعينه ولكنه صحيح لكل الأرقام ومن الشركتين أيضا.
    أولا سنفتح مصدر التغذية و بالتالى يجب أن يبدأ الميكروكونتروللر فى العمل وهذا يتطلب مذبذب داخله لكى يعطى له نبضات تجعله يكرر دورة واحدة محددة وحتى قطع التغذية عنه. هذه الدورة هى أخذ كود الخطوة المعنية ثم يشير للخطوة التالية ثم تحليل الكود ليعرف ما هو ثم تنفيذه (نقل رقم للمراكم – نقل من المراكم للذاكرة-جمع رقم للمراكم..الخ) و يكرر.
    لهذا يجب أن يحتوى على عداد للبرنامج Program Counter و وحدة تحليل التعليمات Instruction decoder و مراكم أو أكثر Accumulator حيث سيضع البيان ألذى تأمره به ألتعليمه و مجموعة من المسجلات لزوم الحاجة.
    هنا نفرق بوضوح بين المسجل و المراكم. كلاهما تخزن فيه بيان و تقرأ منه و تستخدمه فى الحسابات و بعضها يمكنك أن تستخدم محتواه كعنوان لكن نتيجة العمليات الحسابية تذهب للمراكم فقط ، ولو به أكثر من مراكم قد يمكن الاختيار بينهما.
    هكذا يمكنك التعامل مع معظم الأوامر لكننا ذكرنا أن هناك كثير من الأجهزة المحيطة مثلا التواصل التسلسلى، حسنا مشكلة هذا التسلسلى انك لا تخبر الطرف الآخر عن ترددك ولا أوقات وضعك للبيانات لذا يجب أن تعتمد الدقة العالية فى إرسالك و توقيت استقبالك لذا يتطلب الأمر أن يكون المذبذب يعمل بكريستال لتوفير الدقة كما انك لن تتمكن من تغيير الكريستال لو أردت تغيير معدل الإرسال،ولا أن تستخدم 2 كريستال واحدة بطيئة للتسلسلى و أخرى سريعة لباقي البرنامج ، لذا يجب وضع مؤقتات داخلية "تايمر" Timer و من ثم أغلب الوحدات تحتوى واحد 8 بت و آخر أو اثنان 16 بت. تضع فى أى منهما القيمة المناسبة (تحميل العداد) ليعطيك معدل الإرسال المطلوب أو أيضا أى توقيت تريد أو وظيفة أخرى كما سيلى الشرح إن شاء الله.
    إذن تتولى وحدة الاتصال التسلسلى عند تمام العد أن تعيد تحميل العداد حتى نهاية إرسال البايت. كيف تخبر الميكرو بأنها أتمت المهمة أو أنها تلقت من الخارج بايت كاملة تحتاج التعامل معها قبل أن تصل بايت جديدة؟
    إذن تنشأ الحاجة لاستبقاء نظام المقاطعة من الميكروبروسيسور السابق وهو أن يكون بداخل وحدة المعالجة مسجل به 8 بت كأى مسجل ، واحدة لإتاحة المقاطعة ككل أو إيقافها ككل و بعض من ألباقى يخصص بت لكل حدث.
    عندما تصبح واحدة منهم =1 فسيتحسس الميكرو ذلك فى نهاية الدورة ثم يحفظ العنوان الحالى (أى خطوة هو على وشك تنفيذها) فى "ذاكرة ما" ثم يذهب لعنوان آخر تحدده أى بت سببت هذه المقاطعة و فى نهاية كود المقاطعة يجب وضع تعليمه خاصه اسمها عودة من المقاطعة لكى يفهم الميكرو أن عليه استعادة العنوان ألذى سيق أن خزنه فى تلك "الذاكرة ما" ليعود للبرنامج الأصلى.
    هذا الموضوع سنتناوله تفصيلا لاحقا لكن ما يهم الآن انه أثناء خدمة المقاطعة قد يحتاج الأمر لمقاطعة ثانية و سيضع الميكرو العنوان الجديد فوق السابق (ترص فوق بعضها) وهكذا ، لذا سميت هذه "الذاكرة ما" بالمرصوصة Stack ولها عداد مستقل أيضا لمتابعة أين نحن الآن يسمى مؤشر الرصة Stack Pointer وهو يزداد بواحد أولا ثم يحفظ المطلوب حفظه و بالعكس يقرأ المحتوى أولا ثم ينقص بواحد.
    التعامل مع العالم الخارجى:
    مما سبق أصبح الميكروكونتروللر مهيأ للتعامل أساسا مع العالم الخارجى لذا صنعت أغلب أطرافه مداخل ومخارج فى مجموعات تسمى بوابه PORT و نظرا لأن معظم البيانات تعالج بالبايت وهى 8 بت قسمت هذه الأطراف لمجموعات أقرب ما تكون لهذا العدد و من ثم كل تعاملك مع بايت و تتحكم أيضا فى مخرج عرضه بايت و أيضا تعطى بيانات لأى جهاز خارجى أو تأخذ منه بعرض بايت أيضا.
    لذا احتوى الميكرو على هذه البوابات PORTs و فيما عدا عائلة C51 فلكل منها داخل الميكرو مسجل مناظر لتحول أى طرف "بت" منها أو كلها معا من دخول لخروج. طبعا هناك فرق كبير بين أن يكون الطرف دخول أو يكون خروج.
    الطرف الخروج سيكون إما صفر أو 1 حسب الأمر ألجارى تنفيذه وهو قادر على إعطاء تيار محدود عندما يكون =1 أو يقبل "يبتلع" تيار عندما يكون = صفر، أما الطرف المهيأ كدخول سيكون ذو إعاقة عالية حتى لا يسبب سحب تيار من أى مصدر يتصل به و يتبع المصدر من حيث الفولت.
    حسنا هذا المنفذ PORT سواء كان دخول أم خروج، فلابد من مسجل ما فى مكان ما يحتوى البيانات الخاصة به ، أين يكون؟ و الأسوأ أنه سيحتاج لديكودر لتحليل عنوانه عندما تريد التعامل معه.
    ابتكر أحدهم فكرة بسيطة و ظريفة و سهلة التعامل من حيث العتاد و البرمجة. قال لماذا لا نضعهم جميعا فى ذاكرة كالأصلية و نطلبها عند اللزوم. نظام الذاكرة ممتاز بالنسبة للدوائر المتكاملة لأنه يتناول قطعة مربعة صغيرة جدا و يقسمها لخانات متناهية الصغر و يطالها بالصف و العمود إذن لا نكرر العتاد لكل مسجل هى مجموعة من 128 خانة ذاكرة أو غيره طبقا للتصميم و كل خانة منها 8 بت كالذاكرة الأصلية ولكن إحداها للمنفذ " أ" و الآخر للمنفذ " ب" وهكذا و يمكن أيضا وضع كل المؤقتات "تايمر" Timers فيها ، و التايمر 16 بت يشغل خانتين متجاورتين .
    أيضا أحدها يمكن أن يكون للمراكم الأساسى و آخر لكل مسجل أو مراكم و أيضا مؤشر الرصة SP السابق الخ.
    هذه الذاكرة أسمتها كل من إنتيل و ميكروتشيب SPECIAL FUNCTION REGISTERS
    الآن يمكننا المقارنة بين أشهر رقمين و هما PIC16F877A و عائلة AT89c5x هذه الصورة تضعهما بجوار بعض لتوضيح الفروق، وقد وضعت لون مختلف لكل بوابة PORT


    يمكننا أن نلخص الفروق فى الجدول التالى



    سنناقش هذا الجدول بالتفصيل المرة القادمة إن شاء الله

    الصور المرفقة الصور المرفقة
    • نوع الملف: png C51vrs16F.png‏ (10.9 كيلوبايت, 271 مشاهدات)
    • نوع الملف: png Comparison.png‏ (11.0 كيلوبايت, 305 مشاهدات)

  5. #5
    مشرف قسم تقنية الالكترونيات
    تاريخ التسجيل
    Jun 2008
    الدولة
    القاهرة - مصر
    المشاركات
    3,181

    افتراضي الفروق بالتفصيل

    ألفروق بالتفصيل:
    البند الأول: أن تكون كل المنافذ Ports ثابتة العرض 8 بت يجعلها قياسية و يسهل تعاملها مع المحيطات لكن كون لديك عدد مختلف يجعلك حائرا فى باقى المنافذ خاصة بعضها 4 بت فقط

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

    البند الثانى : كل منفذ Port تجده مجمع و مرتب فى أطراف متجاورة فى أتميل مما يجعل توصيله لأى جهاز يكون سهلا – طرف بطرف و البوردة الناتجة منسقة ولا تحتوى كبارى jumpers ولا تعارضات أما فى بيك فالمنفذ C ممزق و بينه أطراف منفذD .
    مثلا عند استخدامك منفذ B كاملا فإن استخدام منفذ C مع منفذ D سيجعل هذه الخطوط متقاطعة و البوردة تحتوى عديد من الكبارى، حتى لو أردت استخدام شاشة LCD و فضلت للسهولة استخدام 4 بت لن تجد 6 أطراف متجاورة منهم.
    فى الجيل التالى مثلا PIC18 و أتميل ATMega سنجد أن ميكروتشيب استخدمت نفس الإسلوب فى الجيل المطور وهى ميزة تحتسب لهم أنك إن شئت التطوير فقد لا تعوقك الأطراف


    بينما اتميل فقد صنعت رقم من عائلة AVR رقم مطابق فى الأطراف لعائلة 51 يمكنك من الترقية


    و صنعت الجيل المطور بذات التنسيق فى الأطراف مع تعديلات طفيفة فى ترتيب أطراف القدرة و البدء RESET و الكريستال

    ولم نجد سوى المنفذ D الطرف 7 فقط قد رحل إلى الجانب الآخر أى كوبرى واحد فقط.

    البند الثالث: فى كل ميكرو يوجد مسجل للحالة Status register وهو بالغ الأهمية لأنه يتابع حالة المراكم خطوة بخطوة و يحفظ نتائج الخطوات للخطوات اللاحقة فمثلا لو كان المراكم خاليا نجد فى مسجل الحالة خانة فيها 1 و عدا ذلك تكون بصفر ولذا يسمى Zero Flag أى علم أو إشارة وجود صفر فى المراكم وهى هامة جدا فمثلا لا يجوز القسمة على صفر ولذا فباختبار هذه الخانة تتصرف طبقا للصواب.
    و آخر للنتيجة السالبة و ثالث لمعالجة الأرقام BCD ورابع لفائض الجمع و اقتراض الطرح Carry/Borrow الخ و هو بإجمالى سته أعلام Flags و بقى 2 دون توظيف، شركة أتميل أعطتها أسماء F1,F0 و يمكن للمستخدم أن يستغلهم كما يشاء عند توافر شرط ما يجعل أحدهما = 1 للتذكر لاحقا.
    هذا يوفر كثيرا فى الكود وكذا أسرع فى التنفيذ لأن هناك أمر JB أى القفز لو هذه البت =1 و عكسه JNB لو كانت = صفر دون التعرض للمراكم و ما به من حساب أما اختبار خانة فى الذاكرة فتحتاج لتحميلها أولا فى المراكم قبل الاختبار ولو كان ما فى المراكم مطلوبا عليك حفظه فى مكان ما مثل الرصة أو غيرها من الذاكرة.
    أما فى بيك فعدد هذه الخانات قليلا مما يجعل القدرة الحسابية له أقل .

    البند الرابع: كثرة الأوامر تعنى أنه يمكنك اختصار خطوتين أو أكثر فى خطوة
    أفضل مثال لذلك وجود الاختبار السابق وفر خطوات التعامل مع المراكم و حفظه، و أيضا هناك أوامر أخرى منها وجود مسجل 16 بت يسمى مؤشر البيانات أو Data Pointer و اختصارا DP وهو يمكنك من أخذ أى بيان من ذاكرة البرنامج للمراكم وهذا يسهل عليك وضع رسائل المستخدم كجزء من ذاكرة البرنامج (وهى كبيرة) و بهذا المسجل تأخذها حرف بحرف للعرض على الشاشة بأمر واحد و غيره من التطبيقات.

    البند الخامس: تدعم حساب BCD
    مثال لو تريد عداد فوجود حساب BCD يمكنك من استخدام BCD to 7 segment و توفر كثير من المعالجات بالكود للتحويل من ثنائى لعشرى، أيضا متكاملات الوقت كلها تعمل BCD و أيضا بعض الحساسات و بعض الموازين.

    البند السادس :
    تدعم الضرب و القسمة فأمر الضرب أو القسمة وفر الانتقال لبرنامج يخصص لهذا الغرض وما يحتاجه ذلك من خانات الرصة رغم أنه يتعامل مع الأرقام الصحيحة فقط.
    باقى البنود نستكملها المرة القادمة بإذن الله
    الصور المرفقة الصور المرفقة
    • نوع الملف: png C51vrs16F.png‏ (10.9 كيلوبايت, 206 مشاهدات)
    • نوع الملف: png PIC18Fam.png‏ (16.6 كيلوبايت, 236 مشاهدات)
    • نوع الملف: png C51toAVR.png‏ (9.1 كيلوبايت, 270 مشاهدات)
    • نوع الملف: png ATMegaALL.png‏ (22.7 كيلوبايت, 260 مشاهدات)

  6. #6
    مشرف قسم تقنية الالكترونيات
    تاريخ التسجيل
    Jun 2008
    الدولة
    القاهرة - مصر
    المشاركات
    3,181

    افتراضي

    البند السابع : كما شرحنا فالرصه تتيح أكثر من مقاطعة لكن فى الحقيقة قد تكون فى برنامج لحساب شيء ما ثم تضطر للانتقال لبرنامج خاص لجمع الأرقام العشرية ، هنا ستحتاج أن تحفظ موقعك (محتوى مؤشر البرنامج) فى الرصة ثم تنتقل لهذه الوظيفة و لعودتك تستعيد العنوان السابق ، إذن كن حريصا ألا تزيد عن 7 مستويات متداخلة فى البك 16 أو 35 فى ألبيك 18 لكن أتميل يتيح لك استخدام الفائض من 256 خانه ذاكرة.
    فضلا عن احتياجنا للرصه ليس فقط فى حفظ العنوان ولكن أيضا فى حفظ المراكم الخ فلو انت فى خضم عملية حسابية مثلا ووصلت بايت من التسلسلى، لن تستطيع أخذها فى المراكم للتعامل معها قبل أن تحفظ محتواه أولا و إن لم يكن لديك مكان فى الرصة ستضطر لاستخدام متغير مثلا فى الذاكرة، و ربما أيضا مسجل الحالة لتسترجع ما إن
    حدث من الجمع فائض Carry أو كان الرقم سالبا أو غيره.
    البند الثامن: فى عائلة أتميل C51 وسيلة لإضافة 64 ك إضافية خارج الميكرو كبرنامج أو بيانات إن شئت و يمكن باستخدام أطراف إضافية أن تعمل بنظام Memory Banking أو مجموعة الذاكرة حيث تتيح فى كل مرة مجموعة مختلفة من 64 ك ، وهذه لم أرها فى ميكرو تشيب كما أن العائلة الجديدة AVR لم تدعمها.

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

    البند العاشر: البرمجة بالأسيمبلى سهلة لتعدد الأوامر فأثناء البرمجة تتمنى أن تجد ما بفعل كذا فتجد أمر يناسبه أما لو الأوامر قليلة فلن تجد ما يفيدك فمثلا استخدام مسجل من 16 بت مخصص لطلب البيانات يسمى Data pointer مما يسهل لك التعامل مع الجداول و أيضا الأمر قارن مع القفز فى الاختلاف CJNE اختصار Compare and Jump if Not Equal وهو يتيح لك ثلاث حالات ، التساوى أو أحدهما أكبر أو الآخر أكبر.

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

    قد يقول البعض أن ألبيك به محول تماثلى رقمى لكن بعض الشركات الصينية أنتجت من هذه العائلة ارقام تحتوى محول تماثلى رقمى.

    أيضا العائلة AT89xx825x بها 2 ك ذاكرة EEPROM وهى لا تمحى بانقطاع التيار.

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

  7. #7
    مشرف قسم تقنية الالكترونيات
    تاريخ التسجيل
    Jun 2008
    الدولة
    القاهرة - مصر
    المشاركات
    3,181

    افتراضي المنافذ Ports

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

    هناك نقطة هامة يجب تذكرها فى كافة الأنواع وهى كم مللى أمبير يتحملها المنفذ، حسنا طبقا للداتاشيت ستجد بعض الطرز 25 مللى و البعض الآخر 40 مللى لكن الميكرو 40 طرف يحتوى على 32 طرف دخول / خروج أى 25*32 = 800 مللى على الأقل، لكن من الداتاشيت أيضا ستجد أن طرف التغذية VDD يقبل 400 مللى كحد أقصى فقط .
    لو بحثت أيضا ستجد بيان آخر يقول أقصى تيار لمجموع المنافذ هو 300 مللى، إذن هذا هو ما نلتزم به أى لا نحمل مجموع المنافذ أكثر من هذا القدر رغم أنك تستطيع تحميل أى منها القيمة القصوى سواء كانت 25 أم 40 مللى و ذلك حتى لا يختل أداء الميكرو أو تعرضه للتلف.

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

    تنقسم المنافذ لنوعين C51 من إنتاج أتميل و باقى الأنواع AVR من إنتاج أتميل و كافة منافذ ميكروتشيب تقريبا.
    الأول سيلى شرحة فى منافذ أتميل لكونه مخلف قليلا أما ألباقى من إنتاج الشركتين تشترك فى الخواص التالية
    1- يحتوى كل منفذ على مسجل للبيانات و مسجل آخر تحدد كل خانه فيه كون الطرف المقابل من المنفذ إدخال أو إخراج.
    2- يحتوى كل منفذ على مسجل ثالث يحتوى حالة الطرف الفعلية الآن و بصرف النظر عن المسجل الأول ألذى تكتب أنت فيه ما تريد فقد تكتب على الطرف 1 ولكن عليه مفتاح يفرض صفر، هنا سيقرأ مسجل البيانات 1 و مسجل الطرف صفر.

    منافذ أتميل:
    فى عائلة C51 نجد أن المنافذ تسمى بالأرقام المنفذ صفر ثم 1 و 2 و 3. أما فى عائلة AVR فتسمى بالأحرف منفذ A,B,C,D
    فى عائلة C51 المنفذ صفر هو الأقوى حيث يستطيع أن "يبتلع" تيار معادل 8 حمل TTL وهذا الحمل يبلغ 1.6 مللى أمبير وهو الحمل القياسى لأحمال الدوائر المنطقية ولمعرفة المزيد عنه راجع سلسلة الدوائر المنطقية ، أى ان كل طرف يتحمل 12.8 مللى أمبير.
    هذا المنفذ ذو مخرج يسمى المصب المفتوح Open drain (سلسلة الدوائر المنطقية) لذ عندما يكون = 1 ، لا يخرج منه تيار و لا يظهر عليه فولت و يحتاج لمقاومة أو حمل ما متصل بالطرف الموجب +5 فولت ليظهر هذا الواحد (+5فولت) .
    أما عندما يكون = صفر يقبل تيار حتى القيمة المذكورة. لذا هو مناسب لتشغيل ليد بيان LED أو شاشات 7 شرائح 7Segment من النوع المهبط المشترك Common Anode أو أوبتو كبلر الخ. أيضا أغلب المفاتيح Switch تحتاج لمقاومة Pull Up لذا يمكن استخدام هذا المنفذ.
    المنافذ الأخرى 1،2،3 متماثلة حيث تصدر و تقبل تيار بنصف القيمة السابقة أى 4 حمل أو 6.4 مللى أمبير عندما تضع على أى طرف منها صفر تيار كما سبق ولو وضعت عليه 1 يمكنك أن تضع مفتاح أو توصله بخرج أى دائرة إلكترونية أخرى تعطيه بيانات.
    الحالة الفرضية هى ما يكون عليه عند البدء أو إعادة التشغيل وهى كل المخارج فى وضع الخرج أى كلها 11111111

    فى عائلة AVR فقد اختلف الأمر و أصبحت المنافذ الأربع متماثلة و من الممكن أن تتحكم فى أى منفذ تحكما أكثر .

    فى المرة القادمة إن شاء الله نتحدث عن منافذ AVR و منافذ ألبيك

  8. #8
    مشرف قسم تقنية الالكترونيات
    تاريخ التسجيل
    Jun 2008
    الدولة
    القاهرة - مصر
    المشاركات
    3,181

    افتراضي منافذ عائلة avr من أتميل

    منافذ عائلة AVR من أتميل :
    كما سبق أن ذكرنا لكل منفذ مسجل بيانات و آخر يسمى DDR اختصار Data Direction Register أى مسجل اتجاه البيانات (دخول أم خروج) مضاف إليه اسم المنفذ مثلا DDRA للمنفذ A و هكذا حتى DDRD للمنفذ D .
    الوضعالافتراضى للبدء هو دخول أى محتواه =صفر ووضع 1 فى أى خانه تجعل الطرف دخول فمثلا لو وضعنا فى المسجل DDRA=10101010 سنجعل المنفذ A طرف دخول و المجاور خروج و هكذا، كما أنك يمكن فى أى لحظة فى البرنامج أن تغير خصائص أى طرف فلو فى أى مكان فى البرنامج استخدمت الأمر DDRA=10101011 ستغير الطرف صفر (أقصى اليمين) من المنفذ A من إدخال لإخراج.
    كما ذكرنا سابقا أنه لدينا مسجل آخر لقراءة حالة الأطراف وهو باسم PINA و حتى PIND واحد لكل منفذ. فمثلا لو قرأت القيمة PORTA ستعطيك آخر قيمة سجلتها أنت فى هذا المنفذ ولو عليه أزرار لن تعرف حالتها، لكن لو قرأت القيمة PINA ستعلم أى الأزرار يضع 1 و أيها يضع صفر.
    المسجلين المذكورين يمكن التعامل معهما كمنفذ ذو 8 طرف أو تحدد الطرف المختار من الثمانية.
    منافذ ألبيك :
    الأمر مختلف قليلا مع ألبيك فمسجل الاتجاه TRIS اختصار Tri-State و يسمى TRISA وحتى TRISF حسب اسم المنفذ و عند وضع 1 فى أى خانه يجعلها دخول و صفر يجعلها خروج وهى أسهل حفظاً من أتميل لأن 1 مشابهة شكلا للحرف I أو INPUT و الرقم 0 أشبه بالحرف O أو Output.
    فى عائلة PIC16 سنجد لها مسجلين فقط أولهما السابق ذكره للاتجاه و الثانى اسمه PORT باسم المنفذ، هنا لا يوجد مسجل لحالة الطرف و قراءة المنفذ PORTA مثلا تعطى حالة الأطراف ولا وسيلة لقراءة ما سبق لك كتابته.
    أما فى عائلة PIC18 فمازال قراءة المنفذ PORTA مثلا تعطى حالة الأطراف وأضيف مسجل أخر باسم LAT وهى اختصار Latch ويضاف اسم المنفذ أصبح قراءتها هى التى تعطى ما سبق لك كتابته على المنفذ فمثلا قراءة LATA تعطى ما كتبته انت بينما PORTA تعطى حال الطرف حاليا فقد يكون هناك مفتاح ما فرض حالة عكس ما كتبت.
    فى عائلة PIC16 الحالة الافتراضية لمنفذ A هو تماثلى لذا يجب تهيئته لو سيستخدم كأطراف رقمية فيما عدا ذلك ففى العائلة 16 و العائلة 18 كل المنافذ ستكون دخول ما عدا بعض الأطراف لذا يجب الرجوع للداتاشيت لمعرفة أى الأطراف مرتبطة بأى الوظائف حتى تعيد تهيئتها كمداخل / مخارج أو تستخدمها كما هى فقط اعرف ماذا تفعل

    الآن لدينا 32 طرف للتحكم فى العالم الخارجى و بهذه الأطراف نستطيع التحكم فى كثير من الأدوات المنزلية كخلاط مثلا أو غسالة أو كثير من الآلات الصناعية أيضا.
    لنرى كيف ذلك نبدأ فى كتابة بعض البرامج لتشغيله.
    لتكتب بالأسيمبلى لعائلة أتميل فهناك برنامجان أسهل من غيرهم فى هذا المجال
    برنامج MIDE
    http://mide-51.software.informer.com/0.2/
    وهو مجانى لكن ينقصه تتبع الأعطال Debug
    الثانى
    يمكنك إنزال BASCOM نسخة 8051 لإستخدامها مع c51 و نسخة AVR لإستخدامها مع AVR و كلاهما يصلح للأسيمبلى أو بيزك أو كلاهما معا
    أو يمكنك استخدام ميكرو الكترونيكا كما يمكنك أن تستخدم بروتس أيضا.
    سنبدأ المرة القادمة إن شاء الله بكتابة برنامج بسيط يقرأ 3 أزرار فى مداخل و يضئ 3 ليد تمثل العدد 1 أو 2 أو 3 حسب أيها تم الضغط عليه

  9. #9
    مشرف قسم تقنية الالكترونيات
    تاريخ التسجيل
    Jun 2008
    الدولة
    القاهرة - مصر
    المشاركات
    3,181

    افتراضي أول برامجنا

    أول برامجنا:
    عائلةC51 - أتميل
    لتسهيل الأمور فى أول برنامج، أعلم أن الغالبية تفضل برنامج بروتس حيث ترسم الدائرة و تحاكيها قبل التنفيذ العملى. حسنا
    لننشئ مشروع جديد كما بالصورة التالية

    نستخدم فيه AT89c51 متصلة كما بالصورة.
    سنلاحظ هنا أن الليدات متصله على منفذ صفر PORT0 من خلال مقاومات متصلة بالموجب. السبب أن منافذ هذه العائلة لا تمد بتيار رغم أن الداتاشيت تقول أنها تستطيع ذلك لكن أيضا عندما تسحب منها تيار تحد فورا من تيار الخرج. باختصار لا تصدر تيار يضئ ليد أو يفعل ترانزستور . لكنه يقبل تيار حتى 20 مللى أمبير.
    توصل المفاتيح كما بالرسم. أعلم أن البعض سيعترض لكن كل أوجه الإعراض ليست لها ضرورة الآن.
    فى صفحة البرنامج ستجد العديد من الأسطر كتبها لك البرنامج و كلها تبدأ بالفاصلة المنقوطة ";” و السطر بكاملة باللون الأخضر. هذا لأن هذه الفاصلة جعلت السطر بكاملة "تعليق" أى غير وارد فى البرنامج ولكنه للشرح أو التنسيق.
    ثم يلى ذلك تعريف أن هذا هو الملف ألرئيسى و يمكنك حذفه.


    كود:
    ;============================================= ;Main.asm file generated by New Project wizard ; ;Created: Thu May 24 2018 ;Processor: 80C51 ;Compiler: ASEM-51 (Proteus) ;==============================================
    ثم يلى ذلك تعليمه للمترجم بالنسق المستخدم وهو NOMOD51 و نلاحظ أنه مسبوق بعلامة الدولار $، هذه ألتعليمه تخص المترجم أى ستختلف باختلاف المترجم المستخدم و سيضعها آليا عند بدء مشروع جديد وهى فى بروتس تعنى لا تستخدم النسق الإفتراضى لهذه العائلة و لذا يجب أن تتبعها بالخطوة التالية و تختار رقم الميكرو و تردد الكريستال الخ.
    و يليه تعليمه للمترجم بالميكرو المستخدم وهو 8051 و هو ملف يلحق بالبرنامج به تعريفات لكل المسجلات و المنافذ و محتويات الميكرو الداخلية. بدونه لن تستطيع أن تكتب أمرا واحدا . أيضا مسبوق بعلامة $ و فى مترجم غيره قد تكون علامة # و اسم الملف 8051.MCU و كل مترجم سيضع اسم الملف الصحيح له.
    كود:
    $NOMOD51
    $INCLUDE (8051.MCU)
    ما يلى قسمين واحد للتعريفات ثم المتغيرات و متجهات إعادة التشغيل و خلافة و سيأتى شرحها لاحقا إن شاء الله
    يمكنك حذف التالى أيضا ، سنبقى فقط على السطرين السابقين فقط.
    كود:
    ;==================================
    ; DEFINITIONS
    ;==================================
    
    
    ;==================================
    ; VARIABLES
    ;==================================
    
    
    ;==================================
    ; RESET and INTERRUPT VECTORS
    ;==================================
    و الآن سنصل لتعليق ; Reset Vector و لتعليمه هى

    org 0000h
    هذه اختصار Origin بمعنى نقطة أصل أو نقطة بدء لتقول للمترجم "أريد الكود التالى فى هذا العنوان"
    وهى احتياطا لو تريد برنامج متقدم سيكون لها جدوى أما فى هذا البرنامج البسيط سيكون الكود فعلا فى خانة صفر ولا حاجة لتكرارها و يمكن حذفها.
    حتى الآن كل ما سبق هو تعليمات للمترجم ولا ينتج عنها أى كود ولو حاولت أن تعكس المسار لتحصل على التعليمات من الكود فلن تحصل منها على كود ليكتب لك بدلا عنه ما سبق.
    أول أمر هو JMP start أى اقفز حيث العنوان Start
    لكى تضع عنوان تذهب إليه وقتما شئت يجب أن يكون من كلمة واحدة قد تحتوى _ لزيادة الإيضاح و أن تبدأ بحرف وليس رقم و ألا تكون من كلمات الكود المستخدمة و أن تكون أول ما فى السطر أوقبلها مسافات بيضاء و أن تنتهى بالنقطتين ":” مثلا
    LCD_TEST: عنوان جيد أو Delay25u:
    ألتعليمه JMP بمعنى اقفز بدون قيد أو شرط للعنوان المذكور وهو هنا start
    كما ذكرنا البرنامج سيبدأ دوما من خانة صفر و بدون استخدام باقى مكونات المتحكم فلا حاجة لها ويمكن حذفها
    jmp Start
    ثم الشرح ألذى يقول قطاع الكود و أيضا تعليمه مشابهة لتحديد مكان كتابة باقى البرنامج org 0100h و تعنى العنوان 100 بالنظام الستة عشرى لوجود الحرف h أما لو b سيكون ثنائى ولو بدون سيكون العشرى المعتاد
    كود:
    ;========================== ; CODE SEGMENT ;========================== ; org 0100h Start: ; Write your code here
    يمكن حذف كل ما سبق ما عدا سطرى التعريف المذكورين و سطر العنوان Start
    أى لدينا ثلاثة أسطر فقط وهنا نبدأ أول البرنامج الفاعل
    وهذا موضوعنا القادم بإذن الله.
    الصور المرفقة الصور المرفقة
    • نوع الملف: png Prog01c51.png‏ (3.1 كيلوبايت, 272 مشاهدات)

  10. #10
    مشرف قسم تقنية الالكترونيات
    تاريخ التسجيل
    Jun 2008
    الدولة
    القاهرة - مصر
    المشاركات
    3,181

    افتراضي أول برامجنا ج2

    ابتكر أحدهم فى شركة إنتيل استخدام كلمة Move وهى تعنى حرك أو انقل لكى تعنى انسخ ولا أدرى لماذا بينما استخدم نظيره فى موتورولا كلمة Load وهى بمعنى "حمًّل" أو "ضع شيء فى" ، وهى أقرب للمنطق لكن هكذا سارت الأمور و تبنت Mov كل من إنتيل و لاحقا أتميل و أيضا ميكرو تشيب
    الاسم Mov هو مختصر ودوما بدون حرف e و يليها المنقول إليه أو الهدف ثم فاصلة "," ثم المنقول منه أو المصدر و لا قيود على من سيكون المصدر و من سيكون الهدف ، محتوى خانة ذاكرة أو عنوان الخانة أو مسجل و بهذا. لو كان المصدر حرفيا بمعنى رقم ما تريد نسخه أو وضعه فى مسجل ما نضع قبله علامة شباك "#” و بدون هذه العلامة سواء فى المصدر أو الهدف فهو عنوان لخانة ذاكرة و ما سيتأثر هو محتواها


    السطر الأول سيكون
    Mov P0 , #255
    Mov p3 , #255
    وهذا يعنى ضع فى المنفذ P0 القيمة 255 لوجود علامة "#” ثم السطر الثانى سيعنى ضع فى المنفذ P3 القيمة 255 لوجود "#” أيضا. هذا يعنى جعل كل أطراف هذين المنفذين عليهما +5 فولت و يمكن استخدامهم كمداخل أيضا.
    ماذا لو لم نضع الشباك؟ أى هكذا MOV P3 , 255 سيترجمها المترجم انك تريد محتوى خانة الذاكرة رقم 255 حسبما يتصادف محتواه.
    كود:
    Loop: jb p3.0 , SW2test mov P0 , #11111110b SW2Test: jb P3.1 , SW3Test mov P0 , #11111100b SW3Test: jb p3.2 , start mov P0 , #11111000b jmp start ;=========================== END


    الآن انسخ السطور السابقة فى مترجم بروتس وهذا شرح كل منها.
    Loop:
    عنوان و لدينا أيضا عنوانين آخرين هما SW2Test و SW3Test وهى ذات فائدة فى تحديد مسار البرنامج
    يليه الأمر JB وهو اختصار Jump if Bit set و يعنى اقفز لو البت =1 وهو يليه اسم هذه البت ثم فاصلة ثم إزاحة عدد الخطوات التى يجب الانتقال إليها. هذه الخطوات هى فى بايت واحدة لذا ستكون بإجمالي 255 خانة بين للأمام 128 خطوة و للخلف 127 خطوة.
    سيكون من الصعب عليك حساب عدد الخطوات فستحتاج لمعرفه كم خطوة لكل تعليمه الخ لذا نستخدم عنوان و نترك المهمة الصعبة للمترجم.
    إذن السطر التالى يعنى
    لو البت "المنفذ3 الطرف صفر" =1 اقفز حيث العنوان SW2test وهذا يعنى أنني اختبرت المفتاح SW1 فإن لم يفعل سينتقل للعنوان "اختبار المفتاح2” وهذا من فوائد العنوان أن يكون معبرا عن هدف هذه الخطوة لتذكيرك ماذا أنت ذاهب لتفعل
    أما لو كان مضغوطا على المفتاح1 سيجعل الطرف = صفر و من ثم لن ينتقل و سينفذ ألتعليمه
    mov P0 , #11111110b
    أى سيضع صفرا على الطرف المتصل بالليد الأول ليضئ وهنا كان ممكن أن نكتب MOV P0 , 254 لكن قد تتساءل لاحقا ماذا تعنى 254 ووضعها بالصورة الثنائية أوضح لك أن كل الأطراف آحاد ماعدا الأول بصفر ، ثم نكرر عند العنوان SW2Test حيث نجد نفس ألتعليمه إلا أن البت أصبحت P3.1 أى المنفذ 3 الطرف رقم 1 و القفز للعنوان SW3Test
    إن لم ينتقل أو يقفز سينفذ الأمر
    mov P0 , #11111100b
    و به تضيء ألليد الأول و الثانى.
    و بعد العنوان الأخير سنجد الاختبار الأخير للبت الثالثة إلا أن القفز للبداية فإن لم يقفز سيضيء الليدات الثلاث ثم يقفز للبداية لتكرار الاختبارات مرة أخرى لتحديد متى يتم الضغط على أى الأزرار.
    قبل أن نترك الموضوع تعلمنا الأمر JB و هناك الأمر عكسه وهو JNB أظن توقعت Jump if Not Bit set يعنى سيختبر البت و الانتقال سيكون لو = صفرا بدلا من لو =1
    آخر سطر وهو END لا معنى له و كثير من المترجمات استغنت عنه ولكنه مستبقى لأسباب تاريخية فقط.
    قديما عندما كانت البرامج تدخل للحاسب بالبطاقات المثقبة لم يكن هناك وسيلة لتعلم الحاسب أن هذا آخر كارت برنامج وهذا تمام الكود عكس الآن حيث يقوم نظام التشغيل بهذه المهمة و يحدد لك أول و آخر الملف . لذا كان لابد أن يكون آخر كارت عليه هذا الكود END و إلا سيحصل على رسالة أن الملف غير كامل. أما الآن فسيقول لك لم أجد كلمة END، حسنا وماذا لو وجدتها؟؟ أليست آخر كلمة فى الملف؟ ولو انتهى الملف أليس هذا كاف من نظام التشغيل أن يخبرك بتمام الملف؟؟
    الآن جرب محاكاة البرنامج و ستجده يعمل و الليدات تضئ و تطفئ طالما الزر مضغوطا عليه.

    لكن هناك ملاحظات تتطلب التعديل، حاول أن تكتشفها و تعدلها قبل موضوعنا القادم بإذن الله.

صفحة 1 من 4 1 2 3 ... الأخيرةالأخيرة

المفضلات

ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

https://fahraf1.com/

https://electricstuffs.com

http://www.tkne.net/vb/announcement.php?f=2