الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

الخطوة الاولى للبدايه الفعليه لبرمجه الارم بلغة التجميع

مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بســم الله الـرحمــن الرحيــم

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

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

عن طريق برنامج

metrowerks CodeWarrior For ARM Developer Suite V1.2

وسوف نخوض تجارب عملية عن طريق برنامج المحاكاه بروتيوس

قد يسالنى شخص ما لماذا الميكروكنترولرز التى تحتوى على معالج ارم

اضافة الى ماذكرت فى المقدمة هنـــــــــــــــــــــــــا

فان معالجات ارم تعد من اقوى المعالجات فى تطوير الانظمة المدمجة عرفتها البشريه - يمكننا القول حتى الان

ولكن هذا قبل ان تقوم شركة مايكروشب بانتاج السلسلة الجديدة

PIC32

تتميز المايكروكنترولز التى تعتمد على الارم بالتبديد المنخفض جدا جدا للطاقة وامكانية العمل بجهود منخفضة جدا فمعالج الارف يحتاج فقط الى 1.8 فولت للعمل

كما انها رخيصة الثمن

دعنى اقول لك امر سعر المتحكم الدقيق

lpc2103

اقل من سعر المتحكم الدقيق

pic16f877a

مع العلم انه لا يوجد مقارنة من حيث الاداء والحجم والاضافات الداخليه

يكفى ال

lpc2103

فخرا انه يحتوى على ساعة الوقت الحقيقة وعلى عدد 2 هاردوير يورارت و من والعديد من المزايا الاخرى التى لم اتحدث عنها

من حيث الاداء

lpc21xx = pic32

من حيث السعر

lpc21xx < pic16f877a

================================================================================

==================

هنلك سوال قط يطرح نفسة هل الدخول الى عالم االارم سهل ام صعب؟

على حسب طريقة الدخول

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

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

فالخبرات تكتسب بالمشاكل التى تواجهك فى عمليه البرمجة ولا تدرس

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

ولا تتوقع بمعرفتك لوظائف الاوامر انك سوف تتمكن من استخدامها بالطريقة الصحيحة من اول مرة

عليك بالاطلاع على الكثير من الاكواد والامثلة المتوفرة فى الانترنت

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

تحتاج الى ما يعرف بدليل الاستخدام اضافة الى الداتا شيت

حتى تتمكن من برمجة مايكروكنترولر معين

فى الامثله سوف نستخدم كما ذكرت المايكروكنترولر lpc2103

قم بتحميل دليل الاستخدام من هنا

المتحكم ل بى سى 2103

لديه 32 مخرج-مدخل بعضها لديه العديد من الوظائف يتم اختيار الوظيفة عن طريق عبارات تحكم تحمل على مسجلات داخليه

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

تختلف قيم عبارات التحكم واسماء المسجلات من مايكرو الى اخر لذلك سوف تحتاج الى دليل الاستخدام

post-174126-1233405233.jpg

كما تلاحظ ان البروسسر يتخاطب مع الملحقات عن طريق

VPB (VLSI Peripheral Bus)

وهى وصله مشتركة مع كل الملحقات

مثل المداخل والمخارج لذلك يتم اجاء اعدادات فى الاول

مثلا كبدايه نريد كتابة برنامج لجع كل المخارج تساوى

high

-------------------------------------------------

اولا نبحث عن المسجل المسوؤل عن وظائف المخارج

وفى هذا المتحكم يوجد 3 مسجلات مسوؤاله عن وظائف المخارج

وهم

PINSEL0 - 0xE002C000

وهو مسوؤل عن المخارج من المخرج 0 الى15

PINSEL1 - 0xE002C004

وهو مسوؤل عن المخارج من المخرج 16 الى32

PINSEL2 - 0xE002C014

لا يعنينا حاليا لندعة وشأنه :wacko:

اذا حتى نتمكن من جعل ال32 مخرج

high

نحتاج اولا الى ظبط هذه المسجلات حتى نقوم بتمكين الملحق

GPIO

وهو ملحق دخل وخرج الاغراض العامة

بعد ان نقوم بتمكينه نحتاج الى ظبط قيمه مسجل اخر اسمه

IODIR-0xE0028008

وهو مسجل مشابه للمسجل

TRIS

لمن لديهم خبره فى البيك ووظيفته تحديد اتجاه كل مخرج هل هو دخل ام خرج

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

0X0000FFFF

حيث 0 تعنى دخل و1 تعنى خرج

كما تلاحظوون فاننى قمت بكتابه اسم المسجلات ورقم بالقرب منها

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

فاذا كتبت

LDR R0 , =PINSEL0

لن يفهم المعالج ماذا تقصد بكلامك هذا

-------------------------------------------------------------------------------------------------------------------------------------------------------

طريقه ظبط اعدادات الكمبايلر

قم بفتح البرنامج بعد الثتبيت

قم بانشاء مشروع جديد

file / new

post-174126-1233406982.jpg

اختر

Empty project

حدد المكان الذى تريد حفظ المشروع فيه عن طريق Set

سوف تظهر لك نافذه صغيرة

اضغط مره اخرى على NEW

لكن هذه المره اختر فايل نصى واضيفه الى المشروع عن طريق الخطوات التاليه

post-174126-1233407403.jpg

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

اضغط على حفظ واحفظة بالامتداد

.s

بعد ذلك قم بالخطوة التاليه لتضمين الكود الى المشروع

post-174126-1233407714.jpg

بعد ذلك اضغط هنا لظبط الاعدادات

post-174126-1233407814.jpg

قم بربط المجمع عن طريق الاعدادات التاليه

post-174126-1233407920.jpg

ثم اذهب الى لنكر وغير القيمه التاليه

post-174126-1233408037.jpg

ومن ثم نوع الخرج كما فى الصوره

post-174126-1233411176.jpg

ثم اضغط الى اوكى

بعد ذلك اضغط على

make

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

name.elf

وهو الملف الهدف

الملف المرفق يحتوى على دائرة بسيطه

high اذا تم تنفيز البرنامج اعلاه بنجاح سوف تلاحظ جميع المخارج المحاكى

===============================================================================

شرح البرنامج اعلاه

LDR R0 , =0xE002C000 \\ حمل القيمه الى المسجل ار0

LDR R1 , = 0X00000000 \\ حمل القيمه الى المسجل ار1

STR R1 , [R0] \\ خزن القيمه المسجله فى المسجل ار1 الى العنوان ار 0

كدا نكون ارسلنا عبارة التحكم

0x00000000

الى المسجل

PINSIL0

وبالتالى المخارج من 0 الى 15 سوف تعمل بوظيفه مخارج ومداخل اغراض عامه

المسجلين

PINSIL0

PINSIL1

لهما القيمه

0x00000000

طبيعيا ولاتحتاج الى ظبتهم اذا كنت تريد ان تستخدم المخارج بوظيفه مداخل ومخارج اغراض عامه

ماورد اعلاه من اسطر فقط لشرح عمليه الظبط

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

//================================================================================

================================

اختبار مهارات

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

السؤال الاول :

قم بشرح الكوود التالى

هو عبارة عن باقى البرنامج

LDR R0 , = 0xE0028008

LDR R1 , = 0XFFFFFFFF

STR R1 , [R0]

LDR R0 , =0xE0028000

LDR R1 , = 0XFFFFFFFF

STR R1 , [R0]

------------------

السؤال الثانى

قم بكتابه برنامج لارسال الحرف

H

عن طريق ال

UART1

بمعدل ارسال

9.6 kp/s

-------------------------------------------------------------------------------------------------

بالتوفيق

اعتذر عن رداءه التنسيق والاخطاء الاملائية

الكود

llpc.s

يحتوى على البرنامج بشكل واضح

ان هو الا جهد مقلّ يا اخوانى اعذرونى ان اخطات اوقصرت

والله الموفق

اخوكم محمد الامين

ARM.rar

llpc.rar

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

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

#2

السلام عليكم

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

أريد أن أسألك على البرنامج الذي قمت بشرحه أي برنامج تقصد هل هو البرنامج الذي في المرفقات؟

#3

السلام عليكم

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

post-548-1233944400_thumb.jpg

بقي أن تشرح لنا كيف يكون هيكل البرنامج أي الشكل العام(هل هناك منطقة التصريحات بالمتغيرات مثلا)

وهذه محاولتي لحل التمرين الأول

LDR R0 , = 0xE0028008 هنا حملنا القيمة إلى R0 وهي قيمة لتحديد ما إذا كانت المخارج (دخل أو خرج)

LDR R1 , = 0XFFFFFFFF هنا حملنا القيمة إلى R1 أي المخارج جميعها خرج

STR R1 , [R0] تخزين القيمه المسجله فى المسجل R1 الى العنوان R0

LDR R0 , =0xE0028000 لم تقم بشرح لم أفهم ماذا تعني

LDR R1 , = 0XFFFFFFFF

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

تم تعديل هذه المشاركة بواسطة hatem في 6 فبراير 2009 في 22:05

#4

جزاك الله خيراً أخي الكريم، ولكن مع الأسف لن أستطيع متابعتك لأنَّ هذا المعالج أي LPC2103 غير متوفر في سورية على حد علمي.

#5

بسم الله الرحمن الرحيم

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

بالنسبه للتمرين فالهدف الاساسى منه هو معرفه خلاصه الفهم من ماسبق من الشرح ويصحح طريقتى المستقبليه فى الشرح هذا بالنسبه لى

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

بالنسبه للامر

LDR R0 , =0xE0028000

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

LDR

وتعرف ان

R0

هو عباره عن مسجل اغراض عامه

اما بخصوص الرقم

0xE0028000

فهو لايخرج عن كونه رقم سادس عشرى

تقريبا فى جميع لغات البرمجة الرمز

0x

يعنى ان هذا رقم سادس عشرى

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

اريد منك اخى ان تقراء دليل الاستخدام جيدا فسوف تعلم ان هذا المعالج سااااااااااااااااااااااهل للغايه وجميع المعالجات سهله فكلها لاتخرج عن كونها مجموعه من المسجلات

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

-------------------

انت سالتنى عن كيفيه التعامل مع المتغيرات

كيفيه الاعلان وكيفيه التخذين

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

post-174126-1234096968_thumb.jpg

كما تلاحظ يوجد خطوط عناوين وخطوط بيانات

كل صف هو عباره عن موقع فى الذاكره

وكل الصفوف تمثل مواقع الذاكره الكليه للرام

كما تلاحظ ان كل صف مكون من ثمانيه خانات فهذا يعنى ان موقع الذاكره الواحد يستطيع خفظ 8 بت فقط

هذا يعنى انك تستطيع تخزين ارقام من 0 الى 255

وال8 بت تعرف ب 1 بايت

1byte = 8 bit

لذلك عندما تسمع ان هنلك رامات 32 بايت

فهذا يعنى هذه الرامات مكونه من 32 وحده تخزين كل وحدة لها عرض 8 بت او 1 بايت

اذا كنت تريد ان تخزن فى الموقع الخامس عشر القيمه 127

فما عليكم الا ان تظبط العنوان الى 15

ثم تظبط القيمه 127 الى خطوط البيانات

كما تلاحظ فان خطوط البيانات موصله

مع جميع مواقع الذاكره ولكن خطوط العنونه هى التى تحدد اى المواقع يتم الحفظ فيه

كما فى الرسم

العنوان 11 يحدد الموقع 4 من الذاكره والعنوان 01 يحدد الموقع الثانى من الذاكره

اذا اردت تخذين 10001111ال الموقع الاول فى الذاكره فيجب اعطاء خطزط العنونه القيمه 0

اذا

address bus = 00

data bus = 10001111

لتسهيل العمليه بالاسمبلى فاننا نعطى العنوان 00 اسم

مثلا 00 اسمه رمضان

عن طريق الموجه

Ramadan EQU 0

-----------------

جميع اوامر الارم مرفوعه فى موضوع مقدمه عن معالج الارم

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

حاول ان تحل سوال ال

uart

فهو اسهل من ماتتوقع ...عليك بدليل الاستخدااااااااااااام اقراءه كله

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

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

#6

السلام عليكم

لقد قرأت دليل الاستخدام وهو يختلف عن 2103 فعدد المخارج أكثر من 32 مخرج؟ ولكن للأسف لم أتمكن من فهمه جيدا

دعني أضع محاولتي

فالـ UART1 يتكون من 12 سجل بطول 8 بيت ومن بين السجلات يوجد U1THR وهو المسؤول عن الكتابة وعنوانه 0xE0010000

ولكن هل يحتوي ال 2103 على جدول الآسكي وهل حرف H يقابله 72 بالهكس كما في الكمبيوتر؟

هل سيكون الحل هكذا

LDR R0 , =0xE0010000
LDR R1 , = 'h'
STR R1 , [R0]

أخي محمد أرجو أن يكون الشرح مفصل وجزاك الله خيرا

اقتباس
جزاك الله خيراً أخي الكريم، ولكن مع الأسف لن أستطيع متابعتك لأنَّ هذا المعالج أي LPC2103 غير متوفر في سورية على حد علمي.

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

تم تعديل هذه المشاركة بواسطة hatem في 9 فبراير 2009 في 00:23

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…