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

   

الصورة الرمزية burai nuraldaem
burai nuraldaem
:: عضو فضى ::
تاريخ التسجيل: Nov 2015
الدولة: السودان
المشاركات: 501
نشاط [ burai nuraldaem ]
قوة السمعة:
قديم 06-06-2018, 05:53 PM المشاركة 9   
افتراضي



شكرا أخى الكريم و دعواتكم فالموضوع كبير فيه 4 ميكرو و 3 لغات أى 7 فى 1
و الله المستعان
باذن الله سيكتمل بصوره افضل مما نتوقعها
والسلاسل السابقه تشهد علي براعتك ومقدرتك
اسال الله العلي القدير ان يمدك من عطائه ويمهد لك دربك ويعينك في مشاريعك
وان كان هناك ما اساعد به فيسعدني ويشرفني

اعلانات

ماجد عباس محمد
:: نائب المشرف العام
::
تاريخ التسجيل: Jun 2009
الدولة: القاهرة - مصر
المشاركات: 11,652
نشاط [ ماجد عباس محمد ]
قوة السمعة:
قديم 08-06-2018, 12:28 PM المشاركة 10   
افتراضي الفروق بالتفصيل



ألفروق بالتفصيل:
البند الأول: أن تكون كل المنافذ 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 و أيضا بعض الحساسات و بعض الموازين.

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

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

ماجد عباس محمد
:: نائب المشرف العام
::
تاريخ التسجيل: Jun 2009
الدولة: القاهرة - مصر
المشاركات: 11,652
نشاط [ ماجد عباس محمد ]
قوة السمعة:
قديم 09-06-2018, 09:41 AM المشاركة 11   
افتراضي



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

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

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

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

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

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

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


ماجد عباس محمد
:: نائب المشرف العام
::
تاريخ التسجيل: Jun 2009
الدولة: القاهرة - مصر
المشاركات: 11,652
نشاط [ ماجد عباس محمد ]
قوة السمعة:
قديم 10-06-2018, 09:09 AM المشاركة 12   
افتراضي المنافذ Ports



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

هناك نقطة هامة يجب تذكرها فى كافة الأنواع وهى كم مللى أمبير يتحملها المنفذ، حسنا طبقا للداتاشيت ستجد بعض الطرز 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 و منافذ ألبيك


ماجد عباس محمد
:: نائب المشرف العام
::
تاريخ التسجيل: Jun 2009
الدولة: القاهرة - مصر
المشاركات: 11,652
نشاط [ ماجد عباس محمد ]
قوة السمعة:
قديم 11-06-2018, 09:01 AM المشاركة 13   
افتراضي منافذ عائلة 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 حسب أيها تم الضغط عليه


التعديل الأخير تم بواسطة : ماجد عباس محمد بتاريخ 18-06-2018 الساعة 09:07 AM

ماجد عباس محمد
:: نائب المشرف العام
::
تاريخ التسجيل: Jun 2009
الدولة: القاهرة - مصر
المشاركات: 11,652
نشاط [ ماجد عباس محمد ]
قوة السمعة:
قديم 12-06-2018, 10:55 AM المشاركة 14   
افتراضي أول برامجنا



أول برامجنا:
عائلة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
أى لدينا ثلاثة أسطر فقط وهنا نبدأ أول البرنامج الفاعل
وهذا موضوعنا القادم بإذن الله.


borda
:: مهندس متواجد ::
تاريخ التسجيل: Mar 2007
المشاركات: 85
نشاط [ borda ]
قوة السمعة:
قديم 12-06-2018, 12:15 PM المشاركة 15   
x4 موضوع شيق خاصة انه يتكلم عن اكثر من متحكم في نفس الوقت


مجهود رائع يا هندستنا والله الموفق والمعين موضع به العديد من النقاط العميقة التي لم تكون في شروحات سابقة لمثل هذه الموضعات
متابع


ماجد عباس محمد
:: نائب المشرف العام
::
تاريخ التسجيل: Jun 2009
الدولة: القاهرة - مصر
المشاركات: 11,652
نشاط [ ماجد عباس محمد ]
قوة السمعة:
قديم 12-06-2018, 12:45 PM المشاركة 16   
افتراضي


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



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