مشكلة في البرمجة لavr مع ج

M

m_pourfathi

Guest
أنا لا أفهم ماذا تعني هذه وحدات الماكرو الرجاء المساعدة :

تعريف # GICR ETH_INT_ENABLE | = (1 <<int2)

تعريف # ENC28J60_CS_HI () ENC28J60_PORT | = (1 <<ENC28J60_PIN_CS) ؛

تعريف # ENC28J60_REG_MAADR2 (0x63 | 0x80)

تعريف # ENC28J60_TX_BUFFER_START ((صحيح غير الموقعة) 0x1A00)

تعريف # LO8 (خ) ((خ) & 0xFF)

تعريف # LBBL_ENDIAN_INT (خ) ((خ & 0x00FF) <<8) ((خ & 0xff00)>> 8)

تعريف # LBBL_ENDIAN_LONG (خ) ((خ & 0xff000000)>> 24) ((خ & 0x00ff0000)>> 8) ((خ & 0x0000FF00) <<8) ((خ & 0x000000FF) <<24)

شكرا

 
تعريف # هو نمط استبدال نص التوجيه.
من المثال الخاص بك
تعريف # LBBL_ENDIAN_INT (خ) ((خ & 0x00FF) <<8) ((خ & 0xff00)>> 8)

عند تجميع البرمجي سيتم استبدال كل
LBBL_ENDIAN_INT (خ)
مع
((س & 0x00FF) <<8) ((خ & 0xff00)>> 8)
قبل ترجمة
حتى بعد هذا تعريف # يمكنك الكتابة
LBBL_ENDIAN_INT (خ) وهو أسهل للفهم من
((س & 0x00FF) <<8) ((خ & 0xff00)>> 8)

 
وأنا أعلم ، ولكن ما هو بالضبط معنى للجزء الثاني؟أنا لا أفهم هذا الجزء!

<img src="http://www.edaboard.com/images/smiles/icon_sad.gif" alt="حزين" border="0" />
 
أدناه هو افتراض مني ولكن من أجل التوصل إلى حل عادل أفضل نوع الخط الكامل للقانون حيث يتم استخدامه.

والواقع هنا هو منطقي 'و' المشغل الذي perfoms المنطقي والعمليات في اثنين من المتغيرات ومن هنا س و0x00FF أو 0xff00

و>> ، <<هي المختصة بالبت مشغلي التحولات التي البتات إلى اليمين أو اليسار في قاعدة ثنائية ، ومن هنا وسوف نفعل ذلك 8 مرات ، أي تحول اليسار 8 مرات
، والحق في التحول من 8 مرات.

وأعتقد أن البيان الذي يستخدم لالمنطقية واثنين من المتغيرات ، قيمة مع خ
0x00FF و0xff00 ثم فإنه يؤدي وتحول اليسار وتحول الحق 8 مرات مهما كانت القيمة.

في الواقع في كل نوبة ثنائية الحق devides عدد (2) وقبل كل تحول اليسار يضاعف من عدد 2.

 
LBBL_ENDIAN_INT (خ) ستحول عددا صحيحا من القليل لتنسيق كبير endian -- أو العكس بالعكس.

إذا كنت لا أعرف ما هي ، والتحقق من هنا : http://en.wikipedia.org/wiki/Endianness

/ رام

 

Welcome to EDABoard.com

Sponsor

Back
Top