مقدمة إلى 8051 البرمجة بلغة التجميع

جرب أداة القضاء على المشاكل





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

8051 البرمجة بلغة التجميع

8051 البرمجة



8051 البرمجة بلغة التجميع

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


8051 البرمجة بلغة التجميع

8051 البرمجة بلغة التجميع



تم تطوير لغة برمجة التجميع بواسطة العديد من المجمعين و ال 'صالة بولينج' هو الأفضل ل متحكمبرمجة تطوير. مicrocontrollersأو يمكن للمعالجات فهم اللغة الثنائية فقط في شكل '0 أو 1s' يحول المُجمِّع لغة التجميع إلى لغة ثنائية ، ثم يخزنها فيمتحكمالذاكرة لأداء المهمة المحددة.

8051 معماري متحكم

8051متحكمهل CISC مقرها هارفارد العمارة ، ولها أجهزة طرفية مثل 32 I / O ، وأجهزة ضبط الوقت / العدادات ، والاتصالات التسلسلية والذكريات. المتحكميتطلب برنامجًا لإجراء العمليات التي تتطلب ذاكرة لحفظ الوظائف وقراءتها. 8051متحكميتكون من ذاكرة الوصول العشوائي وذاكرة ROM لتخزين التعليمات.

8051 Arctitecuture متحكم

8051 معماري متحكم

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

8051 برامج متحكم في لغة التجميع

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


قواعد لغة التجميع

  • يجب كتابة رمز التجميع بأحرف كبيرة
  • يجب أن تتبع التسميات بنقطتين (التسمية :)
  • يجب أن تبدأ جميع الرموز والتسميات بحرف
  • يتم كتابة جميع التعليقات بأحرف صغيرة
  • يجب أن يكون السطر الأخير من البرنامج هو التوجيه END

تكون فن الإستذكار للغة التجميع في شكل كود op-code ، مثل MOV و ADD و JMP وما إلى ذلك ، والتي تُستخدم لأداء العمليات.

كود التشغيل: كود المرجع هو تعليمة واحدة يمكن أن تنفذها وحدة المعالجة المركزية. هنا كود المرجع هو تعليمات MOV.

معاملات: المعاملات هي جزء واحد من البيانات التي يمكن تشغيلها بواسطة كود المرجع. مثال ، يتم تنفيذ عملية الضرب بواسطة المعاملات التي يتم ضربها بالمعامل.

بناء الجملة: MUL a،ب

عناصر برمجة لغة التجميع:

  • تجميع المبادئ التوجيهية
  • مجموعة التعليمات
  • طرق العنونة

تجميع التعليمات:

تعطي توجيهات التجميع التوجيهات إلى وحدة المعالجة المركزية. 8051متحكميتكون من أنواع مختلفة من توجيهات التجميع لإعطاء التوجيه لوحدة التحكم. التوجيهات الأكثر فائدة هي برمجة 8051 ، مثل:

  • ORG
  • DB
  • المعادل
  • نهاية

ORG(الأصل): يشير هذا التوجيه إلى بدء البرنامج. يستخدم هذا لتعيين عنوان السجل أثناء التجميع. على سبيل المثال ، يخبر ORG 0000h المترجم بكل التعليمات البرمجية اللاحقة التي تبدأ بالعنوان 0000h.

بناء الجملة: ORG 0000 ساعة

DB(تعريف بايت): يتم استخدام تعريف بايت للسماح بسلسلة من البايت. على سبيل المثال ، قم بطباعة 'EDGEFX' حيث يتم أخذ كل حرف بواسطة العنوان وأخيراً طباعة 'السلسلة' بواسطة قاعدة البيانات مباشرةً بعلامات اقتباس مزدوجة.

بناء الجملة:

ORG 0000 ساعة

موف أ ، # 00 س
————-
————-
DB 'EDGEFX'

EQU (ما يعادله): يتم استخدام التوجيه المكافئ لمعادلة عنوان المتغير.

بناء الجملة:

ريج يساوي،09h
—————–
—————–
موفريج،# 2 ح

نهاية: يستخدم التوجيه END للإشارة إلى نهاية البرنامج.

بناء الجملة:

ريج يساوي،09h

—————–
—————–
موفريج،# 2 ح
نهاية

أوضاع العنونة:

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

  • وضع العنونة الفوري
  • تسجيل وضع العنونة
  • وضع التوجيه المباشر
  • وضع التوجيه غير المباشر
  • وضع عنونة الفهرس الأساسي

وضع العنونة الفوري:

في وضع العنونة هذا ، يجب أن يكون المصدر قيمة يمكن أن يتبعها '#' ويجب أن تكون الوجهة سجلات SFR ، سجلات الأغراض العامة والعنوان. يتم استخدامه للتخزين الفوري للقيمة في سجلات الذاكرة.

بناء الجملة:

MOV A ، # 20h // A isاسجل المجمع ، يتم تخزين 20 في A //
موف R0.0،# 15 // R0 هو سجل للأغراض العامة 15 يتم تخزينه في سجل R0 //
MOV P0 ، # 07h // P0 هو SFR register07 مخزنة في P0 //
20 س،# 05h // 20h هو عنوان السجل 05 المخزن في 20h //

سابق:

MOV R0 ، رقم 1
MOV R0 ، # 20 // R0<—R0[15] +20 ، القيمة النهائية مخزنة في R0 //

تسجيل وضع العنونة:

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

بناء الجملة:

MOV A ، B // A هو سجل SFR ، B هو سجل للأغراض العامة //
MOV R0 ، R1 // تعليمات غير صالحة ، GPR إلى GPR غير ممكن //

سابق:

MOV R0 ، # 02h
موف أ ، # 30 ساعة
إضافة R0 ، A // R0<—R0+A, the final value is stored in the R0 register//

وضع التوجيه المباشر

في وضع العنونة هذا ، يجب أن يكون المصدر أو الوجهة (أو كلاهما المصدر والوجهة) عنوانًا ، ولكن ليس قيمة.

بناء الجملة:

موف أ،20h // 20h عنوان A هو سجل //
MOV 00h ، 07h // كلاهما يعالج من سجلات GPS //

سابق:

موف 07 س،# 01 ح
موف أ ، # 08 س
أضف،07 ح // أ<—A+07h the final value is stored in A//

وضع معالجة غير مباشر:

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

بناء الجملة:

يتم تخزين قيمة MOVR0 ، # 01h // 01 في سجل R0 ، عنوان R0 هو 08h //
MOV R1 ، # 08h // R1 هو متغير المؤشر الذيالمتاجرالعنوان (08h) من R0 //
20 س،@ R1 // 01 يتم تخزين القيمة في عنوان 20 ساعة لسجل GP //

وضع التوجيه غير المباشر

وضع التوجيه غير المباشر

وضع معالجة الفهرس الأساسي:

يُستخدم وضع العنونة هذا لقراءة البيانات من ملف ذاكرة خارجية أو ذاكرة ROM . لا يمكن لجميع أوضاع العنونة قراءة البيانات من ذاكرة الرمز. يجب قراءة الرمز من خلال سجل DPTR. يستخدم DPTR لتوجيه البيانات في الكود أو الذاكرة الخارجية.

بناء الجملة:

يشير MOVC A ، @ A + DPTR // C إلى ذاكرة الكود //
يشير MOCX A ، @ A + DPTR // X إلى الذاكرة الخارجية //
EX: MOV A ، # 00H // 00H مخزنة في السجل A //
MOV DPTR ، # 0500H // عنوان DPTR 0500h في الذاكرة //
MOVC A ، @ A + DPTR // أرسل القيمةإلىالسجل أ //
MOV P0 ، A // تاريخ إرسال إلى مسجل PO //

مجموعة التعليمات:

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

  • مجموعة تعليمات نقل البيانات
  • مجموعة التعليمات المتسلسلة
  • مجموعة التعليمات الحسابية
  • المتفرعة أناnstructionتعيين
  • مجموعة حلقة Instrcution
  • مجموعة التعليمات الشرطية
  • مجموعة التعليمات غير المشروطة
  • مجموعة التعليمات المنطقية
  • مجموعة التعليمات المنطقية

مجموعة التعليمات الحسابية:

تؤدي التعليمات الحسابية العمليات الأساسية مثل:

  • إضافة
  • عمليه الضرب
  • الطرح
  • قسم

إضافة:

ORG 0000 ساعة
MOV R0 ، # 03H // انقل القيمة 3 إلى السجل R0 //
MOV A ، # 05H // انقل القيمة 5 إلى المجمع A //
إضافة أ ، 00H //أضفالقيمة بقيمة R0 وتخزين النتيجةinA//
نهاية

عمليه الضرب:

ORG 0000 ساعة
MOV R0 ، # 03H // انقل القيمة 3 إلى السجل R0 //
MOV A ، # 05H // انقل القيمة 5 إلى المجمع A //
MUL A ، 03H //مضروبةيتم تخزين النتيجة في Accumulator A //
نهاية

الطرح:

ORG 0000 ساعة
MOV R0 ، # 03H // انقل القيمة 3 لتسجيل R0 //
MOV A ، # 05H // انقل القيمة 5 إلى المجمع A //
SUBB A، 03H // يتم تخزين القيمة الناتجة في Accumulator A //
نهاية

قسم:

ORG 0000 ساعة
MOV R0 ، # 03H // انقل القيمة 3 لتسجيل R0 //
MOV A ، # 15H // انقل القيمة 5 إلى المجمع A //
DIV A، 03H // القيمة النهائية مخزنة في Accumulator A //
نهاية

تعليمات شرطية

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

  • JB -> القفز أدناه
  • JNB -> القفز إذا لم يكن أدناه
  • JC -> القفز إذا حمل
  • JNC -> القفز إذاليسيحمل
  • JZ -> القفز إذا كان الصفر
  • JNZ -> القفز إذاليسصفر
تعليمات شرطية

تعليمات شرطية

1. البنية:

JB P1.0 ، التسمية
- - - - - - - - -
- - - - - - - - -
ملصق: - - - - - - - -
- - - - - - - - -
نهاية

2. البنية:

JNB P1.0 ، التسمية
- - - - - - - - -
- - - - - - - - -
ملصق: - - - - - - - -
- - - - - - - - -
نهاية

3. البنية:

JC ، التسمية
- - - - - - - - -
- - - - - - - - -
ملصق: - - - - - - - -
- - - - - - - - -
نهاية

4. البنية:

JNC ، التسمية
- - - - - - - - -
- - - - - - - - -
ملصق: - - - - - - - -
- - - - - - - - -
نهاية
5. البنية:

JZ ، التسمية
- - - - - - - - -
- - - - - - - - -
ملصق: - - - - - - - -
- - - - - - - - -
نهاية

6. البنية:

JNZ ، التسمية
- - - - - - - - -
- - - - - - - - -
ملصق: - - - - - - - -
- - - - - - - - -
نهاية

تعليمات الاتصال والقفز:

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

  • LCALL
  • مكالمة
  • SJMP
  • LJMP

1. البنية:

ORG 0000 ساعة
- - - - - - - - -
- - - - - - - - -
ACALL ، التسمية
- - - - - - - - -
- - - - - - - - -
SJMP STOP
ملصق: - - - - - - - -
- - - - - - - - -
- - - - - - - - -
حق
قف:لا

2. البنية:

ORG 0000 ساعة
- - - - - - - - -
- - - - - - - - -
LCALL ، التسمية
- - - - - - - - -
- - - - - - - - -
SJMP STOP
ملصق: - - - - - - - -
- - - - - - - - -
- - - - - - - - -
حق
قف:لا

تعليمات الاتصال والقفز

تعليمات الاتصال والقفز

تعليمات الحلقة:

تُستخدم تعليمات الحلقة لتكرار الكتلة في كل مرة أثناء إجراء عمليات الزيادة والإنقاص. 8051متحكمتتكون من نوعين من تعليمات الحلقة:

  • CJNE -> قارن واقفز إن لم تكن متساوية
  • DJNZ -> التناقص والقفز إن لم يكن صفرًا

1. البنية:

منCJNE
موف أ ، # 00H
موف ب ، # 10 ح
ملصق: INC أ
- - - - - - -
- - - - - - -
CJNE A ، التسمية

2. البنية:

منDJNE

MOV R0 ، # 10H
ملصق: - - - - - - -
- - - - - - -
DJNE R0 ، التسمية
- - - - - - -
- - - - - - -
نهاية

مجموعة التعليمات المنطقية:

توفر مجموعة تعليمات وحدة التحكم الدقيقة 8051 تعليمات المنطق AND و OR و XOR و TEST و NOT والمنطقية المنطقية لتعيين ومسح البتات بناءً على الحاجة في البرنامج.

مجموعة التعليمات المنطقية

مجموعة التعليمات المنطقية

1. البنية:

موف A ، # 20H / 00100000 /
MOV R0 ، # 03H / 00000101 /
ORL A، R0 // 00100000/00000101 = 00000000 //

2. البنية:

موف A ، # 20H / 00100000 /
MOV R0 ، # 03H / 00000101 /
ANL A ، R0

3. البنية:

موف A ، # 20H / 00100000 /
MOV R0 ، # 03H / 00000101 /
XRL أ ، R0.4

تحويل المشغلين

يتم استخدام مشغلي التحول لإرسال واستقبال البيانات بكفاءة. 8051متحكمتتكون من أربعة مشغلين وردية:

  • RR -> تدوير لليمين
  • RRC -> تدوير لليمين من خلال الحمل
  • RL -> استدارة لليسار
  • RLC -> تدوير لليسار خلال الحمل

استدارة لليمين (RR):

في عملية التحول هذه ، تصبح MSB LSB وتتحول جميع البتات نحو الجانب الأيمن بتًا بتت ، بشكل متسلسل.

بناء الجملة:

موف أ ، # 25 ساعة
RR أ

استدارة لليسار (RL):

في عملية التحويل هذه ، تصبح MSB LSB وتتحول جميع البتات نحو الجانب الأيسر بتاتًا بتتالية.

بناء الجملة:

موف أ ، # 25 ساعة
RL أ

تدوير RRC إلى اليمين من خلال Carry:

في عملية النقل هذه ، يتحرك LSB للحمل ويصبح الحمل MSB ، ويتم إزاحة جميع البتات نحو موضع الجانب الأيمن بت تلو الأخرى.

بناء الجملة:

موف أ ، # 27 ساعة
RRC أ

تدوير RLC لليسار من خلال الحمل:

في عملية النقل هذه ، يتحرك MSB للحمل ويصبح الحمل LSB وتتحرك جميع البتات نحو الجانب الأيسر في موضع بتة.

بناء الجملة:

موف أ ، # 27 ساعة
RLC أ

برامج C الأساسية المضمنة:

المتحكمتختلف البرمجة لكل نوع من أنواع أنظمة التشغيل. يوجد العديد من أنظمة التشغيل مثل Linux و Windows و RTOS وما إلى ذلك. ومع ذلك ، تتمتع RTOS بالعديد من المزايا لتطوير الأنظمة المدمجة. فيما يلي بعض أمثلة البرمجة على مستوى التجميع.

يومض LED باستخدام 8051متحكم:

  • يتم عرض الأرقام على شاشة عرض من 7 أجزاء باستخدام متحكم 8051
  • برنامج وحسابات عداد / عداد باستخدام 8051متحكم
  • حسابات الاتصال التسلسلي والبرنامج باستخدام 8051متحكم

برامج LED 8051 مicrocontrller

1. WAP للتبديل بين مصابيح PORT1 LED

ORG 0000H
تبديل: MOV P1 ، # 01 //نقل00000001 إلى p1 سجل //
تأخير المكالمة // تنفيذ التأخير //
MOV A ، P1 // تحركقيمة p1إلى المجمع //
CPL A // مكمل قيمة //
MOV P1 ، A // انقل 11111110 إلى سجل المنفذ 1 //
تأخير المكالمة // تنفيذ التأخير //
SJMP TOGLE
تأخير: MOV R5 ، # 10H // تحميل سجل R5 مع 10 //
اثنان: MOV R6 ، # 200 // تحميل سجل R6 مع 200 //
ONE: MOV R7 ، # 200 // تحميل سجل R7 بـ 200 //
DJNZ R7 ، $ // decrement R7 حتى الصفر //
DJNZ R6 ، ONE // decrement R7 حتى الصفر //
DJNZ R5 ، اثنان // إنقاص R7 حتى يصبح صفرًا //
RET // العودة إلى البرنامج الرئيسي //
نهاية

برنامج وحسابات عداد الوقت / عداد باستخدام 8051 مicrocontroller:

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

1. WAP لحساب التأخير الزمني 500us.

MOV TMOD ، # 10H // حدد وضع المؤقت من خلال المسجلات //
MOV TH1 ، # 0FEH // تخزين وقت التأخير في بت أعلى //
MOV TL1 ، # 32H // تخزين وقت التأخير في بت منخفض //
JNB TF1 ، $ // إنقاص قيمة المؤقت حتى يصبح صفرًا //
CLR TF1 // امسح علامة المؤقتقليلا//
CLR TR1 // إيقاف المؤقت //

2. WAP لتبديل المصابيحمع ال5ثانيةتأخير الوقت

ORG 0000H
العودة: MOV PO ، # 00H
ACALL DELAY
MOV P0 ، # 0FFH
ACALL DELAY
SJUMP RETURN
تأخير: MOV R5 ، # 50H // تحميل سجل R5 مع 50 //
DELAY1: MOV R6 ، # 200 // تحميل سجل R6 مع 200 //
DELAY2: MOV R7 ، # 229 // تحميل سجل R7 مع 200 //
DJNZ R7 ، $ // decrement R7 حتى الصفر //
DJNZ R6 ، DELAY2 // decrement R6 حتى الصفر //
DJNZ R5 ، DELAY1 // decrement R5 حتى الصفر //
RET // العودة إلى البرنامج الرئيسي //
نهاية

3. WAP لحساب 250 نبضة باستخدام mode0 count0

بناء الجملة:

ORG 0000H
MOV TMOD ، # 50H // حدد العداد //
MOV TH0 ، # 15 // حرك نبضات العد أعلى بت //
MOV TH1 ، # 9FH //نقلنبضات العد ، بت أقل //
ضبط TR0 // ON the timer //
JNB $ // إنقاص قيمة العد حتى الصفر //
CLR TF0 // امسح العداد ، العلمقليلا//
CLR TR0 // إيقاف المؤقت //
نهاية

برمجة الاتصالات التسلسلية باستخدام 8051 مicrocontroller:

الاتصال التسلسلي يستخدم عادة لنقل واستقبال البيانات. 8051متحكمتتكون من اتصال تسلسلي UART / USART ويتم إرسال الإشارات واستقبالها بواسطةTXودبابيس Rx. ينقل اتصال UART البيانات شيئًا فشيئًا بشكل تسلسلي. UART هو بروتوكول أحادي الاتجاه ينقل البيانات ويستقبلها ، ولكن ليس في نفس الوقت.

1. WAP لنقل الأحرف إلى Hyper Terminal

MOV SCON ، # 50H // اضبط الاتصال التسلسلي //
MOV TMOD ، # 20H // حدد وضع المؤقت //
MOV TH1 ، # -3 // تعيين معدل الباود //
ضبط TR1 // ON the timer //
MOV SBUF ، # 'S' // إرسال S إلى النافذة التسلسلية //
JNB TI ، $ // قيمة التناقص للمؤقت حتى الصفر //
CLR RI // مسح تلقي المقاطعة //
CLR TR1 // مؤقت واضح //

2. WAP لنقل الحرف عن طريق Hyper Terminal

MOV SCON ، # 50H // اضبط الاتصال التسلسلي //
MOV TMOD ، # 20H // حدد وضع المؤقت //
MOV TH1 ، # -6 // ضبط معدل الباود //
SET TR1 // على المؤقت //
MOV SBUF ، # 'S' // إرسال S إلى النافذة التسلسلية //
JNB RI ، $ // إنقاص قيمة المؤقت حتى صفر //
CLR RI // مسح تلقي المقاطعة //
MOV P0 ، SBUF // أرسل قيمة سجل SBUF إلى المنفذ 0 //
CLR TR1 // مؤقت واضح //

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