أجهزة XOR أجهزة الإخراج على مسامير الإخراج على متحكم AVR

May 8, 2022 0 By dlow

هل تعلم أن العديد من رقائق AVR تحتوي على نوع من خيار الأجهزة الحصرية أو (XOR) عندما يتعلق الأمر بالمستويات المنطقية من دبابيس الإخراج؟ إذا نظرت إلى ورقة البيانات (الصورة أعلاه هي لقطة شاشة من ورقة بيانات Attiny13) ستجد قسم في تبديل رقم التعريف الشخصي. اتضح أنه إذا قمت بتعيين منفذ كإخراج، فسيقوم الكتابة في سجل PIN المقابل بتبديل مستويات المنطق من ذلك. من السهل حقا الإهمال إذا كنت تكتب في C، لكنني كنت أعمل على تعلم الكثير من لغة المجمع ووجدت أن هذا مفيد للغاية. استمر في القراءة بعد الاستراحة وسأخبرك كيف حدثت عند هذه المعلومات وما هو جيد ل.

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

1.
Portb ^ = 0xFF؛

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

1.
pinb = 0xFF؛

أنت لا تهتم حقا، لأنه مجرد خط واحد من التعليمات البرمجية. في الواقع، من المحتمل أن تكون أبسط مع XOR Portb لأنه يجعل أكثر منطقية من الناحية النظرية. ولكن قد ينتهي التحويل البرمجي باستخدام دورات أكثر بكثير مما لو كنت قد كتبت إلى سجل PIN.

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

1.
2.
3.
4.
LDI MyREG، 0xFF
في Intreg، بورت
or intreg، myreg
خارج بورتب، Intreg

يتم تحميل Bitmask في سجل واحد، يتم تحميل الأحمال في المنطق الحالي من Portb إلى سجل آخر، يعمل XOR من الاثنين، ويكتب النتيجة مرة أخرى إلى PortB. هذا يأخذ أربعة دورات وتتطلب سجلين. تعد البتات بتبديل هذه العملية البدائية التي دهشتها، لم أكن أمرا لم يكن هناك أمر ل XOR Bits مباشرة لذلك بدأت في البحث عنها. صادفت هذه المقالة القصيرة في avr النزوات التي تكتسبني في ميزة تبديل بت. الآن تمكنت من تقليل رمز المجمع الخاص بي على النحو التالي:

1.
2.
LDI INTREG2، 0xFF؛ مؤقتا استخدم Intreg2 كقنعة بت
خارج PINB، INTREG2؛ الكتابة إلى PINB Custiveivley يقوم بمناسبة حصرية أو على Portb

يؤدي هذا إلى نفس تأثير التنسيق، ولكنه يأخذ دورتين فقط ويتطلب استخدام سجل واحد فقط.

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