هنا عدم كتابة اى حروف بعد الرقم تدل على ان الرقم فى النظام العشرى Decimal
نلاحظ ان اكبر
رقم يمكن استخدامه فى النظام العشرى هو 255 حيث ان الارقام المستخدمة
تتراوح بين 0 الى 255 باجمالى 256 رقم و هو ما يعبر عنه نوع
الميكروكونتروللر ,,,,, فقد سبق و قلنا انه 8 Bit و من ثم 2 مرفوعة للقوى
8 تعطى 256
256=8^2
بما فيهم الصفر و بالتالى اكبر رقم يمكن استخدامه هو 255
بالتالى نلاحظ ان العدد 255 فى النظام العشرى يكافئه العدد FF فى النظام السادس عشرى و العدد 11111111 فى النظام الثنائى .
و من ثم فان القيمة 10101010 بالثنائى تتساوى مع AA فى السادس عشرى و تتياوى مع 170 فى النظام العشرى
إذن اى صيغة
سنستخدمها يجب ان تعطى نفس النتيجة و يجب ان نتجنب استخدام ارقام اكبر من
11111111 فى الثنائى او اكبر من FF فى السادس عشرى او اكبر من 255 فى
النظام العشرى و الا سيظهر لنا المترجم Compiler رسالة تحذيرية Truncated
Value و التى تفيد استخدام رقم اعلى مما يمكن ان يتعامل معه
الميكروكونتروللر المستخدم و الذى يتعامل مع 8 بت فقط .
الامر END
لن يتم إدخاله على الميكروكونتروللر و لكنه مجرد مؤشر الى المترجم
Compiler بأن الكود قد انتهى ,,,, و ذلك حتى نعلم ان الميكروكونتروللر يظل
ينفذ الاوامر دون توقف الا اذا اعطيناه امراً بالتوقف .
و الان و بعد تحرير الكود السابق يأتى الدور على ترجمة هذا الكود و يتم ذلك باستخدام القائمة Project و اختيار الامر Build Target او الضغط على مفتاح الوظائف “ F7 “ او اختيار علامة انشاء الهدف من قائمة الاختصارات الموجودة بالبرنامج
هنا نتأكد من أنه لا توجد رسائل خطأ او رسائل تحذيرية ,,,, و بالتالى الكود الذى تم ادخاله صحيح
و الان جاء الدور على مشاهدة نتيجة هذا الكود
اولاً باستخدام البرنامج KEIL نقوم بعمل الخطوات التالية :-
اولاً :- الذهاب الى القائمة Debug و اختيار الامر Start/Stop Debug Session
او الضغط على مفتاحى Ctrl + F5 مباشرة
او اختيار العلامة المكتوب عليها حرف d باللون الاحمر من شريط الاوامر المختصرة بالبرنامج
ثانياً :- الذهاب الى القائمة peripherals و اختيار الامر I/O-Ports و منها اختيار Port 2 حيث انها الهدف الذى سبق اختياره فى الامر لاخراج بيانات المصدر عليه
سيظهر لنا جدول يعبر عن شكل الميناء رقم 2 “ Prot 2 “ و الوضع الابتدائى للبيانات الخاجة عليها قبل التنفيذ ,,,, نجد انه يعطى 1 على الاطراف كقيمة ابتدائية
ثالثاً :- الذهاب الى القائمة Debug و اختيار الامر Go
او الضغط مباشرة على المفتاح F5
هنا نشاهد نتائج تنفيذ البرنامج تماماً كما اردناها
لانهاء عرض تنفيذ البرنامج نقوم بايقاف البرنامج من خلال تنفيذ الخطوة فى أولاً ............ الذهاب الى القائمة Debug و اختيار الامر Start/Stop Debug Session
او الضغط على مفتاحى Ctrl + F5 مباشرة
او اختيار العلامة المكتوب عليها حرف d باللون الاحمر من شريط الاوامر المختصرة بالبرنامج
و الان حان الدور على نقل البرنامج من على الكمبيوتر الى الميكرومونتروللر
نحن الآن نحتاج الى الملف بصيغة الاسمبلى و يتم الحصول عليه من خلال الذهاب الى القائمة Project ثم اختيار الامر Build All Target Files او استخدام الامر من شريط الاختصارات بالبرنامج
بالذهاب الى المجلد الذى تم حفظ المشروع فيه سنجد الملف Project1.asm و اخر بنفس الاسم و لكن ذو امتداد hex ==== Project1.hex
نأخذ هذا الملف و نقوم بتحميله على الميكروكونتروللر من خلال المبرمجة الخاصة بالميكروكونتروللر 8051 و البرنامج الخاص بها .
و لقد سبق و
ذكرت الى ان هناك مفاجأة الى الزملاء المشاركين بايجابية فى الدورة و ذكرت
اسمائهم .... و اليوم حان وقت اظهار المفاجأة .
سأقوم بأمر الله
تعالى بتوفير بعض الوقت لهؤلاء الزملاء لتفعيل التطبيق العملى من خلال
برمجة الميكروكونتروللر بالمبرمجة الخاصة بى و تنفيذ الدوائر كاملة معهم
حيثما تسنى لنا الالتقاء و عليهم ارسال رسائل خاصة لى على المنتدى و فيها
البريد الاليكترونى الخاص بهم حتى نتمكن من تحديد مواعيد مناسبة للمضى
قدماً فى تنفيذ الشق العملى سوياً بامر الله .
و من ثم لن
يكونوا فى حاجة الى شراء او تنفيذ مبرمجة فى الوقت الحالى او الاضطرار الى
الذهاب الى الاماكن التى توفر برمجة الميكروكونتروللر بمقابل مادى معروف
لدينا جميعاً ......
اتمنى ان اكون قد وفيت بوعدى تجاه هؤلاء الزملاء و ان تكون المفاجأة سارة لهم
نعود الى حيث كنا
بعد ان نقوم بنقل الملف Project1.hex الى الميكروكونتروللر نقوم بتوصيل الدائرة التالية
و يجب ملاحظة
ان الحمل يتم توصيله بين خرج الميكرو و مصدر التغذية 5 فولت و ليس الارضى
على اعتبار ان شرط العمل هو اخراج 0 من الميكرو و ليس 1 و هو ما يعرف بـــ
Active Low تجنباً لسحب تيار عالى من الميكرو .
و نراقب الثنائيات الضوئية و ترتيب قيم الــ 1 و الــ 0 على الخرج
إذا عكسنا اطراف التوصيل و كانت بين الميكرو و الارضى
سنلاحظ ان
الثنائيات الضوئية التى خرج عليها القيمة 1 ستضئ و الثنائيات الضوئية التى
خرج عليها القيمة 0 لن تضئ ,,,,, و كذلك قد نلاحظ ان الثنائيات التى اضائت
خافته بعض الشئ
لذلك سنقوم بعمل Buffer بين اطراف
الخرج للميكروكونتروللر و الاحمال من خلال استخدام احد هذه المتكاملات
7432 == OR Gate او AND Gate ==== 7408 او اى نظام لعمل الـــ Buffer مثل
الترانزيستورات مثلاً او اى نوع من انواع الـــ Buffer المشهورة و الشائعة
الاستخدام