منتديات الالكترونيات العصرية  
yoursite.com page title .

استرجاع كلمة المرور طلب كود تفعيل العضوية تفعيل العضوية
العودة   منتديات الالكترونيات العصرية > منتدى الحاكمات الدقيقة Microcontroller > منتدى المتحكمات ميكرو بلغة الاسمبلي

  #21  
قديم 11-02-2009, 12:58 PM
الصورة الرمزية F.Abdelaziz
F.Abdelaziz F.Abdelaziz غير متواجد حالياً
استاذ الكترونيان
 
تاريخ التسجيل: May 2009
المشاركات: 2,818
معدل تقييم المستوى: 23
F.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to behold
افتراضي رد: اساسيات برمجة الميكروكونترولر pic بلغة الاسمبلى

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

شرح جميل و رائع جعله الله فى ميزان حسناتك

شكرا لك اخى الكريم

راى وتقدير من اخ عزيز

الهم تقبل منى ومنك
رد مع اقتباس
  #22  
قديم 11-03-2009, 07:13 PM
الصورة الرمزية F.Abdelaziz
F.Abdelaziz F.Abdelaziz غير متواجد حالياً
استاذ الكترونيان
 
تاريخ التسجيل: May 2009
المشاركات: 2,818
معدل تقييم المستوى: 23
F.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to behold
افتراضي رد: اساسيات برمجة الميكروكونترولر pic بلغة الاسمبلى

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

قبل الدخول الى اعماق بحارالبرمجة (انت الان مازلت على الشاطىء)اعتقد انه يجب التعرف على بعض تقنيات البرمجة .


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

هذا يعني اننا يمكننا إضافة تعليقات في برنامجنا لتذكرنا بكل شىء ممكن ان ننساه .

يجب التعود على ذلك حتى فى ابسط البرامج .


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

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


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

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

لذلك استخدام الأسماء الحقيقية ، مثل COUNT (العد).

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

وثالثا : وضع بعض انوع من الملاحظات في البرامج الخاصة بك باستخدام التعليقات (الفاصلة المنقوطة ) .

مثال لنموذج مقترح لرأس او مقدمة برنامج:







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

القادم :

فكره عامة عن السجلات : Registers
رد مع اقتباس
  #23  
قديم 11-03-2009, 07:55 PM
الصورة الرمزية F.Abdelaziz
F.Abdelaziz F.Abdelaziz غير متواجد حالياً
استاذ الكترونيان
 
تاريخ التسجيل: May 2009
المشاركات: 2,818
معدل تقييم المستوى: 23
F.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to behold
افتراضي رد: اساسيات برمجة الميكروكونترولر pic بلغة الاسمبلى

فكره عامة عن السجلات : Registers

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

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

الشكل يوضح خريطة او رسم لتفاصيل السجلات (او الملفات او ملفات التسجيل ) للميكروكونترولر PIC16F84.

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





أول شيء ستلاحظه أنه ينقسم إلى قسمين يسميان البنك 0 ( Bank 0 ) و البنك 1 (Bank 1) ) (وكلمة Bank تعنى مجموعة جزئية او كومة اوصف ) .

البنك 1 يستخدم للتحكم في التشغيل الفعلي للميكروكونترولر فعلى سبيل المثال ان نخبر الميكروكونترولر اى خانات المنفذ A تكون دخلا وايها يكون خرجا كما سنرى .

البنك 0 يستخدم لمعالجة البيانات.

مثال على ذلك :

دعونا نقول اننا نريد ان نجعل خانة واحدة من المنفذ A مرتفعة .

أولا نحن بحاجة الى الذهاب الى البنك 1 لتعيين او تحديد او تخصيص الخانة bit او الطرف pin المطلوب بالمنفذ A كخرج . ثم نعود الى البنك 0 ونرسل المنطق 1 إلى الطرف .

السجلات الأكثر شيوعا وشهرة في البنك 1 والتى سنستخدمها هي STATUS و TRISA و TRISB .

السجل الاول STATUS فى البنك 1 يسمح لنا بالعودة الى البنك 0

السجل TRISA يسمح لنا باختيار و بتحديد اى الاطراف (بنات – دبابيس) من المنفذ A كخرج وايها كدخل .

السجل TRISB يسمح لنا باختيار و بتحديد اى الاطراف (بنات – دبابيس) من المنفذ B كخرج وايها كدخل.

السجل STATUS فى البنك 0 يسمح لنا بالتحول الى البنك 1 .

دعونا نلقي نظرة فاحصة على هذه السجلات الثلاثة.

سجل الحالة STATUS :

فى بداية تشغيل البرنامج فان الوضع الافتراضى هو البنك 0

للانتقال من البنك 0 الى البنك 1 فاننا نخبر مسجل الحالة بذلك .

نفعل ذلك بجعل الخانة رقم 5 بمسجل الحالة تساوى1 .

للعودة إلى البنك 0 مرة اخرى نجعل الخانة 5 لمسجل الحالة تساوى 0 .

يقع سجل الحالة بالعنوان 03h و h تعنى سداسى عشر .

سجلات التحكم فى المنافذ TRISA و TRISB:

عنوان TRISA هو 85h وعنوان TRISB هو 86h .

لبرمجة اى طرف كخرج او كدخل ببساطة نرسل اما 0 او 1 الى الخانة المطلوبة بالسجل .

ويمكن أن يتم ذلك إما بشكل ثنائي أو سداسى عشر او الاثنين معا لان الثنائى يساعد فى توضيح حالة المنفذ .

إذا كنت لا تألف التحويل من ثنائي الى سداسى عشر او بالعكس يمكنك استخدم آلة حاسبة علمية.

لدينا بالمنفذ A خمسة اطراف وبالتالى لدينا 5 خانات .

إذا أردنا أن نجعل احد الاطراف كدخل نرسل '1' إلى الخانة المناظرة ذات الصلة.

وإذا أردنا أن نجعل احد الاطراف كخرج نجعل الخانة المناظرة ذات الصلة '0'.

الخانات ترتب تماما بنفس طريقة الاطراف .

وبعبارة أخرى الخانة 0 هى RA0 والخانة 1 هى RA1 ، والخانة 2 هى RA2 وهلم جرا.

دعنا نأخذ مثالا على ذلك.
إ
ذا أردنا أن نجعل RA0 ، RA3 وRA4 كمخارج ونجعل RA1 وRA2 كمداخل نرسل العدد
00110 (06h). . لاحظ ان الخانة 0 تكون فى اليمين كما هو مبين :





والشيء نفسه ينطبق على TRISB

سجلات المنافذ PORTA و PORTB


لجعل احد اطراف الخرج مرتفعا ببساطة نرسل '1' (كتابة) إلى الخانة المناظرة في السجل PORTA او السجل PORTB .

نفس الشكل او الهيئة او الفورمات المتبعة فى كل من TRISA وTRISB متبعة هنا .

لقراءة ما إذا كان الطرف مرتفع ام منخفض نجرى فحص على الخانة المطلوبة ومعرفة انها مرتفعة (1) ام منخفضة (1).

قبل اعطاء مثال لكود او شفرة فقط يجب شرح سجلان اخران هماw و f .

السجل W

السجل W هو السجل العام الذي يمكنك وضع أي قيمة ترغب فيه .

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

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

القادم


امثلة لشفرة او كود :
رد مع اقتباس
  #24  
قديم 11-03-2009, 08:22 PM
الصورة الرمزية F.Abdelaziz
F.Abdelaziz F.Abdelaziz غير متواجد حالياً
استاذ الكترونيان
 
تاريخ التسجيل: May 2009
المشاركات: 2,818
معدل تقييم المستوى: 23
F.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to behold
افتراضي رد: اساسيات برمجة الميكروكونترولر pic بلغة الاسمبلى

امثلة لشفرة او كود :

لنعطى امثلة على ما تعلمناه :

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

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

المثال يوضح طريقة التعامل مع المنافذ كما تم شرحه أعلاه.

اولا: نحتاج للتحويل من البنك 0 الى البنك 1 .

نفعل ذلك باستخدام سجل الحالة STATUS الواقع بالعنوان 03h بجعل الخانة 5 بقيمة 1 .



BSF 03h,5

هذه التعليمة معناها ( اجعل الخانة رقم 5 بالعنوان 03h بالقيمة 1" " ) .

الحرف F يعنى اننا بصدد استخدام موقع بالذاكرة ( RAM) او ما اطلقنا عليه سجل .

والرقمين (المعاملان) : 03h هو عنوان مسجل الحالة STATUS وال 5 هو رقم الخانة .

نحن الان فى البنك رقم 1



وضع القيمة الثنائية 00110 ( حرف ال b يعنى ان الرقم بالثنائى) فى السجل العام W .

يمكنا بالطبع فعل ذلك بالسداسى عشر فى هذه الحالة تكون التعليمة :


MOVLW 06h



كلاهما يصلح .

MOVLW تعنى (نقل او ضع القيمة الثابتة والمحددة بالسجل W ) اى ضع القيمة التالية مباشرة بالسجل W .


الان نحتاج الى وضع هذه القيمة فى السجل TRISA لتحديد وتوصيف المنفذ :


MOVWF 85h


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

الان اصبح فى السجل TRISA القيمة 00110 ويمكن توضيح ذلك بالشكل :





الان تم تحديد وتوصيف اطراف المنفذ A .

الان يجب علينا العودة مرة اخرى الى البنك رقم 0 للتعامل ومعالجة اى بيانات .

BCF 03h,5


هذه التعليمة تفعل عكس فعل التعليمة BSF .

وهى تعنى ( اجعل الخانة بالسجل بصفر) .

الرقمان او المعاملان التابعان هما عنوان السجل (فى هذه الحالة السجل STATUS) ورقم الخانة المطلوب جعلها بصفر وهى فى هذه الحالة الخانة رقم 5 .

الان جعلنا الخانة 5 بمسجل الحالة بصفر .

اذا نحن الان فى البنك رقم 0 .
والشفرة الان تصبح :





لقد القينا نظرة على 4تعليمات وباقى 31 تعليمة


الى لقاء قريب ان شاء الله
رد مع اقتباس
  #25  
قديم 11-04-2009, 11:03 AM
الصورة الرمزية F.Abdelaziz
F.Abdelaziz F.Abdelaziz غير متواجد حالياً
استاذ الكترونيان
 
تاريخ التسجيل: May 2009
المشاركات: 2,818
معدل تقييم المستوى: 23
F.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to behold
افتراضي رد: اساسيات برمجة الميكروكونترولر pic بلغة الاسمبلى

الكتابة على المنافذ :

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

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

اولا دعنا نضبط او نحدد او نخصص الخانة رقم 2 للمنفذ A كخرج :





وهو مراجعة للتدريب السابق .

والفرق اننا هنا جعلنا كل الاطراف كمخارج بوضع 0 فى السجل TRISA .

والان ماذا نفعل لجعل دايود مشع يضىء .


نفعل ذلك بجعل جهد احد الاطراف (الموصل الى الدايود المشع) مرتفع (اى +5 فولت ) . بعبارة اخرى ارسال ‘1’ الى الطرف .

واليك الطريقة :





الان الدايود المشع اضاء .

واذا اردنا ان نطفأه :




الان تم اضاءة واطفاء الدايود المشع لمرة واحدة .

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

نفعل ذلك اولا بتعريف عنوان او لافتة (يافطة) label فى اول البرنامج ونخبر البرنامج بان يحافظ على العودة الى هذا العنوان .

تعريف العنوان سهل .

نكتب اسمه وليكن START ونكتب الكود




فكما ترى :

نكتب كلمة ‘Start’ فى اقصى اليمين فى بداية البرنامج وفى النهاية نكتب ‘goto Start’.

التعليمة ‘goto’ تفعل تماما كما تقول (اذهب الى )

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

اعتقد انه يجب علينا النظر مرة اخرى الى البرنامج





حسنا ازلنا التعليقات .

لاحظ :

فقط تعليمات وارقام ؟

وهذا يمكن ان يكون مربكا بعض الشيء وخصوصا عند محاولة تصحيح البرنامج debug في وقت لاحق ، وأيضا عند كتابتك لشفرة او كود يجب عليك أن تتذكر كل العناوين.

حتى مع وجود التعليقات في مكانها يحدث ايضا قليل من الارتباك .

ما نحتاج إليه هو إعطاءاسماء لهذه أرقام .

وهذا هو عمل (ماتنجزه) التعليمة (الموجه) : ‘equ’ .

التعليمة ‘equ’ ببساطة تعنى شىء يساوى شىء اخر .

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

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

لنفعل ذلك فى برنامجنا لترى كيف انه اصبح من السهل قراءة البرنامج .






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

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

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






ارجوا ان تكون هذه الثوابت قد جعلت البرنامج اسهل ولو قليلا على الرغم من عدم وجود التعليقات .

نحن لم ننتهى بعد .


الى لقاء قريب ان شاء الله
رد مع اقتباس
  #26  
قديم 11-04-2009, 07:30 PM
سعيد قادر سعيد قادر غير متواجد حالياً
مشرف
اليكترونيات
 
تاريخ التسجيل: Nov 2009
الدولة: العراق /كوردستان
المشاركات: 3,385
معدل تقييم المستوى: 24
سعيد قادر has much to be proud ofسعيد قادر has much to be proud ofسعيد قادر has much to be proud ofسعيد قادر has much to be proud ofسعيد قادر has much to be proud ofسعيد قادر has much to be proud ofسعيد قادر has much to be proud ofسعيد قادر has much to be proud of
افتراضي رد: اساسيات برمجة الميكروكونترولر pic بلغة الاسمبلى

بارك الله فيك اخى الكريم شرح اكثر من رائع
رد مع اقتباس
  #27  
قديم 11-04-2009, 10:22 PM
الصورة الرمزية F.Abdelaziz
F.Abdelaziz F.Abdelaziz غير متواجد حالياً
استاذ الكترونيان
 
تاريخ التسجيل: May 2009
المشاركات: 2,818
معدل تقييم المستوى: 23
F.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to behold
افتراضي رد: اساسيات برمجة الميكروكونترولر pic بلغة الاسمبلى

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

اخى الكريم

شكرا جزيلا لك


تقدير اعتز به

بارك الله فيك
رد مع اقتباس
  #28  
قديم 11-05-2009, 11:01 AM
الصورة الرمزية ابو نادر
ابو نادر ابو نادر غير متواجد حالياً
ادارة الموقع
 
تاريخ التسجيل: Aug 2007
الدولة: الوطن العربي
المشاركات: 3,092
معدل تقييم المستوى: 21
ابو نادر is a name known to allابو نادر is a name known to allابو نادر is a name known to allابو نادر is a name known to allابو نادر is a name known to allابو نادر is a name known to all
افتراضي رد: اساسيات برمجة الميكروكونترولر pic بلغة الاسمبلى

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

المهندس عبدالعزيز

تعجز سطوري عن مجاراة ابداعاتك في تقديم العلم المفيد

بارك الله فيك وفي عملك
رد مع اقتباس
  #29  
قديم 11-05-2009, 03:20 PM
الصورة الرمزية F.Abdelaziz
F.Abdelaziz F.Abdelaziz غير متواجد حالياً
استاذ الكترونيان
 
تاريخ التسجيل: May 2009
المشاركات: 2,818
معدل تقييم المستوى: 23
F.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to behold
افتراضي رد: اساسيات برمجة الميكروكونترولر pic بلغة الاسمبلى

اقتباس:
المشاركة الأصلية كتبت بواسطة ابو نادر مشاهدة المشاركة
السلام عليكم ورحمة الله

المهندس عبدالعزيز

تعجز سطوري عن مجاراة ابداعاتك في تقديم العلم المفيد

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




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

اخى الكريم

شكرا جزيلا على هذا التقدير

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

بارك الله فيك وفيهم جميع
رد مع اقتباس
  #30  
قديم 11-05-2009, 11:26 PM
الصورة الرمزية F.Abdelaziz
F.Abdelaziz F.Abdelaziz غير متواجد حالياً
استاذ الكترونيان
 
تاريخ التسجيل: May 2009
المشاركات: 2,818
معدل تقييم المستوى: 23
F.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to behold
افتراضي رد: اساسيات برمجة الميكروكونترولر pic بلغة الاسمبلى

ما زلنا فى التدريبات . نسير فى البداية ببطىء حتى نستوعب اللغة الجديدة .

والان :

مثال اخر لشرح الشكل النموذجى للبرنامج وهو يتكون من :

اولا : المقدمة او رأس البرنامج

يبدأ البرنامج بالمقدمة او رأس البرنامج : وهو مكون من خمسة اسطر (او أى عدد ) كلها تعليقات comment .

نبدأ كل تعليق بالفاصلة المنقوطة .

هذه الاسطر عبارة عن : تعريف بعنوان البرنامج – وصف مختصر لوظيفته – وتاريخ انشاءة – والمؤلف او الكاتب وأى شىء اخر يمكن ان تضيفه كما فى الشكل .




ثانيا :معلومات عن تهيئة كلمة الاعدادات Configuration Word settings

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

وتكون هذه الخصائص ثابتة لحين برمجة الميكروكونترولر مرة اخرى .

وهى تختلف عن الكلمات الاخرى .

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

ويمكن عمل التهيئة عند وضع البرنامج على الميكروكونترولر لذلك تم كتابته فى البرنامج كتعليق للتذكير فقط .

وسوف يكون لنا حديث تفصيلى عنها .

ثالثا : اول سطر فعال فى البرنامج

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





رابعا : اعلان التعريفات باستخدام موجه لغة الاسملى equ :

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

البرنامج يستخدم فقط :

سجل الحالة Status وسجلات المنافذ Ports A و Ports B وسجلات التحكم فى المنافذ TRISA و TRISB .

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

ملاحظة هامة :

السجلان porta و trisa لهما نفس القيمة ( لكن احدهما فى البنك 0 والاخر فى البنك1 ).

كذلك السجلان portb و trisb

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






خامسا : قبل بداية البرنامج : استخدم موجه الاسمبلى org

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






سادسا : البرنامج الفعلى

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

يبدأ البرنامج بالتهيئة اوالاستهلال او البداية او التجهيز وتسمى initialization




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

وحيث انها تقع فى البنك 1 من ذاكرة ال RAM فمن الضرورى اولا وقبل كل شىء جعل الخانة 5 بسجل الحالة ب 1 وهذا يتم فى السطر الاول من البرنامج الفعلى باستخدام الافتة او العنوان start والتعليمة bsf وامكانية استخدام الاسم status بدلا من عنوانه لانه قد تم تعريفه .

لمعرفة اى الاطراف دخل وايها خرج يجب الرجوع الى الدائرة الكهربية اى جزء ال hardware .

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

ونفترض ان الثلاث خانات المتبقية من المنفذ A متصلة بدايودات مشعة . فيجب تعريفها على انها مخارج .

ونفترض ان المنفذ B كله متصل بدايودات مشعة او بسفن سجمنت .

وللتذكرة لجعل طرف من المنفذ مخرج نضع 0 فى مكانه فى سجل التحكم فى المنفذ TRIS . ولجعل طرف مدخل نضع مكان خانته 1 .

لذلك يجب ارسال الكلمة 00011000 الى السجل TRISA .

ملحوظة هامة :

السجل TRISA هو موقع فى الذاكرة ذات 8-bit على الرغم من ان المنفذ Port A به 5خانات فقط فهما مختلفان.

لذلك فمن الضرورى تحديد ال8 خانات بالكامل ككلمة واحدة لأرسالها وحتى الخانات الغير مطلوبة .

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

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

ثم نقل او نسخ محتويات السجل W الى السجل trisa باستخدام التعليمة movwf .

ونفس الطريقة تتبع لضبط المنفذ B وكله مخارج لذلك فان الكلمة المرسلة الى trisb هى 00H .

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

ومنذ هذه اللحظة نتعامل مع المنافذ نفسها لانها هى الموجودة بالبنك0 .

ملحوظة هامة :

كل الاجزاء السابقة تتكررفى معظم البرامج ولذلك يجب معرفتها جيدا .


نصل الى الجزء النهائى وهو البرنامج الفعلى نفسه وهو خمس سطور فقط !.

البرنامج باستمرار يقرأ قيمة المنفذ A وينقلها او يترجمها الى المنفذB .

فاذا ضغطنا على كلا الزران يظهر ذلك على الدايودات المشعة المتصلة بالخانة 3 والخانة 4 للمنفذB .

للطبيعة الخاصة للمنفذ A فى ال hardware يلزم اولا مسح او تصفير جميع خانات المنفذA فى البرنامج باستخدام التعليمة clrf .

الانتقال الفعلى للبيانات فى البرنامج يتم باستخدام التعليمة movf لازاحة قيمة المنفذA الى السجلW يتبعها (يليها) التعليمة movwf لنقل قيمة السجل W الى المنفذB .

التعليمة goto تنشأ (تقوم بعمل) حلقة loop مستمرة باستخدام الافتة او العنوان المعرف سابقا باسم loop.

ملاحظة هامة :

يجدر بنا ان نلاحظ ان قيم العناوين او الافتات label تعين بطريقتان .

بعضها مثل porta و portb تعين بقيمة محددة بمعرفة المبرمج باستخدام الموجه equ .

والاخرى مثل loop توضع فى البرنامج و يتعرف عليها الاسمبلر ويتعامل معها .



البرنامج ينتهى بموجه لغة الاسمبلى end


ويصبح الشكل النهائى كما يلى






الى لقاء قريب ان شاء الله
رد مع اقتباس
إضافة رد

مواقع النشر (المفضلة)

الكلمات الدلالية (Tags)
الميكروكونترولر, الاسمبلى, اساسيات, بلغة, برمجة

أدوات الموضوع
انواع عرض الموضوع

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

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة



الساعة الآن 08:01 AM.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
الحقوق محفوظة لمنتديات الاليكترونيات العصرية

Security team

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77