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

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

  #31  
قديم 11-06-2009, 12:00 AM
الصورة الرمزية F.Abdelaziz
F.Abdelaziz F.Abdelaziz غير متواجد حالياً
استاذ الكترونيان
 
تاريخ التسجيل: May 2009
المشاركات: 2,825
معدل تقييم المستوى: 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 بلغة الاسمبلى


جزء ال HARDWARE للمثال















الى لقاء قريب ان شاء الله
رد مع اقتباس
  #32  
قديم 11-06-2009, 10:41 PM
الصورة الرمزية F.Abdelaziz
F.Abdelaziz F.Abdelaziz غير متواجد حالياً
استاذ الكترونيان
 
تاريخ التسجيل: May 2009
المشاركات: 2,825
معدل تقييم المستوى: 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 بلغة الاسمبلى

نتابع الجزء العملى

وما زلنا نتقدم ببطىء حتى نتمكن من اللغة ومن ادواتها المساعدة .

من اهم الادوات المساعدة للغة الاسمبلى هو برنامج الاسمبلر


واشهر وافضل اسمبلر هو MPASMWIN ضمن مجموعة برامج بيئة التطوير المعروفة بأسم MPLAB IDE .

لنأخذ مثالنا الذى يقوم بعمل :
نقل بيانات الدخل الى الخرج ونذهب به الى هذا البرنامج لنتعرف عليه .

لنتتبع الخطوات المصورة :

البرنامج كصورة







نتابع الخطوات :
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





والى لقاء قريب ان شاء الله
رد مع اقتباس
  #33  
قديم 11-07-2009, 11:07 AM
الصورة الرمزية hamoudi1010
hamoudi1010 hamoudi1010 غير متواجد حالياً
عضو نشيط
 
تاريخ التسجيل: Jan 2008
المشاركات: 122
معدل تقييم المستوى: 15
hamoudi1010 is a jewel in the roughhamoudi1010 is a jewel in the roughhamoudi1010 is a jewel in the rough
افتراضي رد: اساسيات برمجة الميكروكونترولر pic بلغة الاسمبلى

بارك الله فيك شرح رائع ومفصل يستحق الركز الاول


شكرا شكرا شكرا
رد مع اقتباس
  #34  
قديم 11-07-2009, 12:42 PM
الصورة الرمزية F.Abdelaziz
F.Abdelaziz F.Abdelaziz غير متواجد حالياً
استاذ الكترونيان
 
تاريخ التسجيل: May 2009
المشاركات: 2,825
معدل تقييم المستوى: 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 بلغة الاسمبلى

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


شكرا شكرا شكرا

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


يكفينى دعائك

بارك الله فيك اخى الكريم
رد مع اقتباس
  #35  
قديم 11-08-2009, 12:33 AM
الصورة الرمزية F.Abdelaziz
F.Abdelaziz F.Abdelaziz غير متواجد حالياً
استاذ الكترونيان
 
تاريخ التسجيل: May 2009
المشاركات: 2,825
معدل تقييم المستوى: 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 بلغة الاسمبلى




لماذا حان الوقت لتغير PIC16F628 بدلا من PIC16F84

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

1- PIC16F628 الان الارخص .

2- PIC16F628 يحتوى على ذاكرة برنامج وعلى مسجلات اكثر .

3- PIC16F628 يمتلك امكانيات hardware اكثر .

4- PIC16F628 يحتوى على مذبذب مدمج فى التركيب البنائى (داخلى) بقيمة 4MHz مما يجعله اسهل وارخص فى عمل التطبيقات .

5- PIC16F628 يحتوى على اطراف دخل وخرج I/O اكثر ( 16 مقابل 13 فى PIC16F84) والاطراف الثلاثة الزائدة حلت محل اطراف( دخل المذبذب – خرج المذبذب – واعادة التشغيل MCLR )

**ولاستخدام هذه الاطراف الثلاثة يجب ان تحدد ان المذبذب داخلى INTRC وتوقف disable عمل MCLR وذلك فى اعدادات التهيئة configuration .

*** تقسم اطراف الدخل والخرج I/O على منفذين هما PortA و PortB وهما لهما خصائص مختلفة تماما ومن المهم فهم هذه الاختلافات او الاشياء التى لا تعمل كما تتوقع .

اولا المنفذ PortB :

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

المنفذ PortA :

اقل وضوحا فجميع الاطراف يمكن ان تستخدم كدخل ولكن الطرف RA5 يمكن استخدامه فقط كدخل والطرف RA4 له مرحلة خرج تسمى المجمع المفتوح 'open-collector' وهذا يعنى انها تحتاج الى مقاومة سحب 'pull up الى اعلا ( اى توصل بين الطرف والجهد الموجب) لكى تقوم بوظيفة الخرج حيث يمكنها ان تسحب تيار ولا يمكنها ان تعمل كمصدر تيار . الطرف RA4 فى 16F84 له نفس الخصائص وغالبا ما يسبب مشاكل .

لنفحص الاشكال الاتية :















بالمقارنة نجد ان :

1- ذاكرات اكثر ( مقارنة 16F628 بالنسبة لل 16F84A )

* ذاكرة البرنامج اكبر ( 2K الى 1K )
* ذاكرة البيانات اكبر ( 224 الى 68 bytes )
* ذاكرة بيانات من نوع EEPROM اكبر ( 128 الى 64 bytes )

2- كيان ( اجهزة –معدات) صلب hardware اكثر :


* يحتوى على جزء hardware للاتصال المتتالى نوع USART
* يحتوى على ثلاثة مؤقتات مقابل واحد فى 16F84A
* يحتوى على جزء hardware لعمل تعديل بعرض النبضات PWM
* يحتوى على جزء hardware لعمل المقارنات
* يحتوى على جهد مرجعى مبرمج

3- مميزات اكثر :


* مذبذب داخلى 4Mhz/37Khz لعمل توقيت للتطبيقات الغيردقيقة
* به كاشف لل brownout
* امكانية البرمجة بجهد منخفض
* امكانية اضافة ثلاثة اطراف دخل وخرج

4- التوافق من حيث ال Hardware/Software/programming

* له نفس مواقع اطراف 16F84A
* البرامج يمكن ان تعمل على كليهما بتعديل بسيط
* يمكن استخدام نفس جهاز البرمجة لكليهما
* يمكن لل 16F628 ان تبرمج باستخدام جهد منخفض كما ذكر سابقا

والى لقاء قريب ان شاء الله
رد مع اقتباس
  #36  
قديم 11-08-2009, 01:28 AM
الصورة الرمزية F.Abdelaziz
F.Abdelaziz F.Abdelaziz غير متواجد حالياً
استاذ الكترونيان
 
تاريخ التسجيل: May 2009
المشاركات: 2,825
معدل تقييم المستوى: 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 بلغة الاسمبلى



طرق بناء هياكل البرامج :مخططات التدفقFlowوالحالة State

عند القيام بتصميم برنامج فعلى فمن المهم التفكير فى هيكله او شكله قبل بدء كتابة الكود او الشفرة او التعليمات البرمجية .

لذا ، يجب علينا البحث عن وسائل يمكن بها تمثل البرنامج تخطيطيا.

دعونا ننظر كيف نفعل ذلك بطريقتين شائعتين .

مخططات او خرائط التدفق : Flow Diagrams

ويستخدم فى ذلك القليل من الرموز مثل شكل المستطيل للمعالجة او الفعل وشكل المعين للقرار .

الشكل يوضح مثال بسيط لمخطط تدفق لمتحكم فى الثلاجة .

المستخدم لديه وسيله واحدة للتحكم مقاومة متغيرة تسمح له بتحديد او ضبط درجة الحرارة المطلوبة .
بالثلاجة يوجد حساس لدرجة الحرارة .

يتم التحكم فى درجة الحرارة بتوصيل او فصل الضاغط .

تهبط درجة الحرارة عندما يعمل .

البرنامج يقرأ كل من درجة الحرارة الفعلية والمطلوبة ويحدد ايهما اكبر او اعلا .

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

اذا كان الفرق بينهما كبير يعطى البرنامج انذار مسموع .

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

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

ويمكن ملاحظة أن هذا البرنامج على شكل حلقة غير محددة اى إلى أجل غير مسمى .

هذا البرنامج يعتبر نموذج مشترك كمثال لهيكل برامج الانظمة الشبيهة والمسماة بالانظمة المتضمنة ويطلق عليه أحيانا الحلقة السوبر super loop.





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

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

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

مخططات الحالة : State Diagrams

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

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

كما هو الحال مع مخططات التدفق يجب التدريب عليها للوصول الى شكلها الكامل .

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

وتظهر او تتصرف تحت هذا الشرط (او الشروط)كحالة واحدة وتنتقل الى اخرى .

كل سهم يكون (يأخذ) اسما او عنوانا لشرط يتسبب في تغيير الحالة.

الشكل يبين وظيفة آلة غسيل الملابس المنزلية ممثلة بمخطط حالة بسيط .

عند تشغيلها فانهااولا تدخل الى حالة التجهيز Ready .

فإذا كان الباب مغلق وبدأ المستخدم الغسيل تقوم الالة بتحميل (فتح-دخول)المياه.

يقوم حساس(جهاز استشعار) مستوى المياه بالاحساس بتمام مستوى المياه .

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

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

استخدام طريقة انتهاءالمهلة كطريقة منخفضة التكلفة وبديلة عن استخدام حساسات لاستشعار ضغط او تدفق المياه .

حالة الملء يتبعها حالة تسخين المياه .

مرة اخرى طريقة (انتهى الوقت )اذا لم تسخن المياه فى المدة المحددة .

وتستمر العملية كما هو موضح وكل حالة لها خرج مشروط هو النجاح “successful” وخرج اخر يؤدى الى حالة العطل .

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

في الواقع ، غالبا ما يكون من المفيد تحويل كل حالة الى مخطط تدفق خاص بها .

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




الى لقاء قريب ان شاء الله
رد مع اقتباس
  #37  
قديم 11-08-2009, 03:29 PM
الصورة الرمزية F.Abdelaziz
F.Abdelaziz F.Abdelaziz غير متواجد حالياً
استاذ الكترونيان
 
تاريخ التسجيل: May 2009
المشاركات: 2,825
معدل تقييم المستوى: 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 بلغة الاسمبلى

الجزء الثانى :


سريان (تدفق) التحكم - التفرع (التشعب) والبرامج (الوظائف) الفرعية

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

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

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

الآن نستعرض(نستكشف)استخدام التفرع (التشعب )المشروط والبرامج او الوظائف الفرعية.

التفرع(التشعب)المشروط والتعامل مع الخانات Bits

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

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

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





مجموعة الميكروكونترولر PIC16 غير عادية قليلا عندما يتعلق الأمر بالتفرع المشروط لعدم وجود تعليمات تفرع على هذا النحو. بل لديها بدلا من ذلك اربع تعليمات شرطية وعمل "تخطي" “skip” .

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

وأكثر هذه التعليمات تنوعا واستخداما هى :

btfss f,b

btfsc f,b

التعليمة الاولى btfss

تختبر ( حرف ال t بمعنى test ) الخانة (حرف ال b بمعنى bit) فى موقع الذاكرة (حرف ال f بمعنى file) (السجل او الملف) وعمل تخطى (حرف ال s بمعنى skip) تعليمة واحدة (سطر واحد) اذا كانت الخانة قيمتها 1 وتسمى set (حرف ال s الثانى بمعنى set ).







التعليمة الثانية btfsc

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






لنستعرض ذلك على المثال التالى .

نذكر بجزء ال hardware






فى المثال السابق تم نقل البيانات من منفذ بكامله الى الى اخر بكامله .

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

عندئذ يجب استخدام التعليمات التى تتعامل مع الخانات وهى اربعة تعليمات اثنان منهم تعرفنا عليهما وهما bsf و bcf .

عندما يتم التعامل مع خانة واحدة فان باقى الخانات لا تتأثر .

البرنامج يقوم بأضاءة دايود مشع عند الضغط على الزر .

على الرغم من بساطة المهمة المطلوبة ولكن مطلوب قليل من التفكير .

• دخل المنفذ ( الخانة رقم 3 والخانة رقم 4 للمنفذ A )يتحول الى (منخفض) عند الضغط على الزر .

• البرنامج يحتاج الى جعل خانة الخرج 1 (set) لاضاءة الدايود المشع (الخانة رقم 3 والخانة رقم 4 بالمنفذ B )اذا كان الدخل (منخفض) (الضغط على الزر ) ويجعل خانة الخرج 0(clear) اذا كان الدخل (مرتفع) (ترك الضغط).

• تعليمة التخطى البسيطة بمفردها غير قادرة على فعل ذلك .

• احدى الطرق لفعل ذلك التحديد المسبق presetلخانة الخرج بقيمة واحدة ومن ثم تغييرها اذا وجدنا ان تحديدها خاطىء.

نذكر بالبرنامج السابق







حيث يتم فقط تغيير البرنامج الفعلى كما يلى :







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

ويصبح البرنامج










والى لقاء قريب ان شاء الله
رد مع اقتباس
  #38  
قديم 11-09-2009, 10:58 AM
الصورة الرمزية F.Abdelaziz
F.Abdelaziz F.Abdelaziz غير متواجد حالياً
استاذ الكترونيان
 
تاريخ التسجيل: May 2009
المشاركات: 2,825
معدل تقييم المستوى: 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 بلغة الاسمبلى



البرامج الفرعية Subroutines والمكدس Stack


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

علاوة على انه يكون ممل واضاعة (استهلاك) لحيز الكتابة وحيز الذاكرة كتابة هذا القسم من البرنامج كلما احتجنا له .

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

الفكرة موضحة بالشكل .



*عند نقطة ما في البرنامج الرئيسي توجد تعليمةدعوةالبرنامج الفرعى رقم1وهى Call SR1.

**يتحول تنفيذ البرنامج إلى الروتين الثانوي 1 (البرنامج الفرعى)والمحدد(المعرف) باسمه SR1 .

***ويجب إنهاء البرنامج الفرعى بتعليمة العودة "عودة من برنامج فرعى " return.

****يستمر (يتتابع) تنفيذ البرنامج من التعليمة التى بعدتعليمة الاستدعاء Call SR1 .

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

عمل تعليمة الاستدعاء Call ينقسم الى شقين :

الشق الاول :

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

الشق الثانى :

تحميل او وضع عنوان بدء البرنامج الفرعى فى عداد البرنامج PC .

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

تعليمة العودة return تعلن عن اكتمال او انتهاء الاستدعاء .

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

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

تعليمتى استدعاء Call البرنامج الفرعى والعودة Return يجب ان يعملا كزوج متلازم من التعليمات .
















البرامج الفرعية المتداخلة nested subroutine

اذا تم استدعاء برنامج فرعى داخل برنامج فرعى اخر يسمى ذلك بالبرامج الفرعية المتداخلة nested subroutine

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

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

ونظرا لان مجموعة الميكروكونترولر PIC16 تمتلك مكدس بثمانى مواقع (مستويات) فيجب الحذر لعدم حدوث طفح او فيضان او زيادة للمكدس وهو ما يعرف باسم “stack overflow.” .

القادم

توليد التأخير الزمنى والفترات الزمنية .


الى لقاء قريب ان شاء الله
رد مع اقتباس
  #39  
قديم 11-09-2009, 03:31 PM
الصورة الرمزية F.Abdelaziz
F.Abdelaziz F.Abdelaziz غير متواجد حالياً
استاذ الكترونيان
 
تاريخ التسجيل: May 2009
المشاركات: 2,825
معدل تقييم المستوى: 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 بلغة الاسمبلى



توليد التأخير الزمنى والفترات الزمنية .

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

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

المفهوم الاساسى (الأولي) بسيط.

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

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

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

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

بالطبع يمكن عمل تاخير تقريبى بالانواع الاخرى لمصادر المذبذب .

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


مثال :



• البرنامج الفرعى للتاخير نسميه delay5 .

• يفتتح البرنامج الفرعى بنقل او تحميل او وضع عدد فى موقع ذاكرة سميناه delcntr1 وفى حالتنا العدد هو200D ويمكن تغيره للحصول على تاخير زمنى مختلف ( بحد اقصى هو سعة موقع الذاكرة وهو 8 خانات اى 255D ) .

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

• نستخدم بعد ذلك التعليمة decfsz . وهى تقوم بانقاص (تقليل بمقدار واحد ) قيمة موقع الذاكرة delcntr1 والذى تم تحميله من قبل .

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

• سوف يمر عدد 199 دورة والنتيجة لا تساوى صفر وبالتالى لا يكون هناك تخطى وتنفيذ البرنامج يتم بالعودة الى العنوان del1 .


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

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

حينما يبدأ العداد delcntr1 العد التنازلى من قيمته الابتدائية فان الحلقة مكونة من تعليمتان nop وتعليمة decfsz وتعليمة goto.

فحينما لا تؤدى التعليمة decfszالى تخطى تستغرق دورة واحدة بينما التعليمة goto تستغرق دورتين ومن ثم يكون اجمالى الدورات بالحلقة خمسة دورات (ومن هنا فائدة استخدام التعليمة nop لتكملة الحلقة بما يسهل حساب الزمن المطلوب ).

عندما يكون التردد 800 kHz (على سبيل المثال ) يكون تردد دورة التعليمة 200 kHz (قسمة تردد المذبذب على 4 ) وزمن او فترة الدورة 5 μs (الزمن الدورى يساوى مقلوب التردد).

ومن ثم فأن كل حلقة بتعليماتها الخمسة تستغرق 25 μs. ويتم استدعاء 200 حلقةفيكون الزمن الكلى 5 ms (لذلك سمى البرنامج الفرعى بأسم delay5 اى تأخير لمدة خمسة ملى ثانية ) .

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

فى الحلقة النهائية فان التعليمة decfsz تسبب تخطى لذلك تستغرق دورتين . وتختفى التعليمةgoto.

المثال السابق مفيد للتاخير القصير نسبيا حتى عشرات الملى ثانية .


هناك العديد من الحالات نريد فيهاوقتا أطول.

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

مثال :

الحلقة تحتوى على عدد استدعاءات قيمته 100Dللبرنامج الفرعى السابق delay5(تأخير خمسة ملى ثانية ). ومن ثم يكون التأخير حوالى500 ms.







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

القادم

التدريب العملى :

الى لقاء قريب ان شاء الله
رد مع اقتباس
  #40  
قديم 11-28-2009, 04:03 PM
Dr.Genius Dr.Genius غير متواجد حالياً
عضو جديد
 
تاريخ التسجيل: Jun 2009
المشاركات: 34
معدل تقييم المستوى: 0
Dr.Genius is on a distinguished road
افتراضي رد: اساسيات برمجة الميكروكونترولر pic بلغة الاسمبلى

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

شرح وافر ووافي وتسلم كثيرا علي مجهودك اخي الكريم

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

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

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

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

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

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



الساعة الآن 12:06 PM.


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