اخي حسن هادي محمود جزاك الله خيرا لم افهم شرحك
السفن من نوع انود المشترك المصفوفة هذه، اين اضيف
الرقم 127 او 128
كود:
unsigned long seg[]={64,121,36,48,25,18,2,120,0,16};
|
اولا اخي لماذا مصفوفه من نوع long فهذه تاخذ 4 بايت وسفن سكمنت لايتجاوز رقم فيها عن 9 اي اجعل مصفوفه من char
ثانيا مصفوفه ارقامها خاطئه لانها ضمنت فارزه يعني اذا ظهرت على سفن سكمنت رقم 2 راح تظهر فارزه ايضا
هذه هي مصفوفه بدون فارزه
كود:
char seg[]={192,248,164,176,153,146,130,248,128,144}
الان لاظهار الفارزه نضيف رقم 128 (وليس 127 كما ذكرت انا سابقا اعتذر عن هذا خطأ ) مع رقم نريد اظهار الفارزه معه
مثلا انا اريد اظهر رقم 2 انت بالتاكيد راح تكتب[ portb=seg[2
سوف يظهر عندك على سفن سكمنت رقم 2 الان اريد اظهر مع رقم 2 فارزه
اكتب ;portb=seg[2]+128
نجي نحلل شنو راح يصير على بورت b
164=10100100
128=10000000
طبعا اخي انا حولت رقم عشري الى ثنائي و164 هو يمثل رقم 2 انظر للمصفوفه
هنا تتم عمليه جمع في عمليه جمع 1+1=0 نعم تساوي 0 ولكن اين يذهب 1 يجمع مع بتات تاليه
انطي مثال اريد جمع 2 مع 2 كيف تكتب بالثنائي
2=00000010
2=00000010
بت1 + بت1 =0+0=0
بت2 + بت2 =1+1=0 وباقي 1
بت 3+بت3=0+0+باقي=0+0+1=1
وهكذا
نتيجه نهائيه 00000100
=============================
ناتي لمثالنا سابق
164=10100100
128=10000000
نتيجه جمع من بت 0 الى بت 6 نتيجه تبقى لاتتاثر لاني اجمع مع صفر
بت7+بت7=1+1=0 والباقي 1
نتيجه نهائيه 00100100 تلاحظ بت الاخير =0 يعني فارزه سوف تعمل
سؤال كيف اطفئ فارزه فقط جواب بسيط سفن سكمت من نوع الانود مشترك ايضا اجعل بت اخير=1 كيف ذلك اخبره ان تجعل portb.f7=1.
ارجو اني وضحت لك ماتريد