قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

   

ahmadazez
:: مهندس جيد ::
تاريخ التسجيل: Mar 2009
المشاركات: 251
نشاط [ ahmadazez ]
قوة السمعة:
قديم 05-09-2014, 02:31 AM المشاركة 9   
افتراضي



كود:
         PORTB=0B01101010; 
      
         x=PORTB&0B11110000;
         PORTD=x;
تفضل هذا المثال
في البداية وضعنا قيمة على البورت بشكل عشوائي
ثم اخذنا قيمة البورت ونقلناها الى متحول مع عملية (اند ) بهذه الحالة سيتم تجاهل
كل البتات التي جعلناها صفر مهما كانت قيمتها على البورت وفي النهاية اخرجنا القيمة على البورت D لنتأكد من ان العملية صحيحة

اعلانات

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,673
نشاط [ حسن هادي محمود ]
قوة السمعة:
قديم 05-09-2014, 08:22 AM المشاركة 10   
افتراضي


شكرا أخي حسن
ولكن كيف أستعمل هذا الكود مع الشرط if
هل يمكن مثال على ذلك
السلام عليكم
هذا مثال بسيط وهنا أخبرته اذا كان portb.f0=1 && portb.f1=1 && portb.f2=1 && portb.f3=0
بغض النظر عن قيمه RB4-RB7
كود:
if( (portb & 0b00001111)==7){ ......}
لنحلل الكود
اولا & هي تعني and وبتالي اي قيمه تأخذ لها & مع 0 يكون النتيجه=0 اما القيمه الي تأخذ لها & مع 1 فالنتيجه = نفس القيمه اي لا تتأثر

اما OR ويرمز لها | وبتالي اي قيمه تأخذ لها | مع 0 يكون النتيجه=نفس القيمه اي لا تتأثر اما القيمه الي تأخذ لها | مع 1 فالنتيجه = 1

مثلا انت ربطت اربعه سويجات الى RB0-RB3 وتريد أختبارها يمكننا كتابه نفس الكود اعلاه
مثلا نفرض portb=0b11000111
then
portb=0b1100 0111
&
0b0000 0111
النتيجه
portb & 0b00001111=0b00000111
تذكر ان النتيجه لاتعني portb=7 ولن تتغير قيمه portb الا اذا وضعت بعدها علامه = فهذه علامه تعني أجعل طرف يساوي نتيجه طرف اخر
اي تعني علامه = كلمه store وبدونها تبقى النتيجه مجرد عمليات حسابيه
هسى لفترض انه اذا تحقق الشرط تريد جعل RB5,RB6 كلاهما يساوي 1 دون تأثير على البقيه عندها تكتب هكذا
كود:
portb & 0b00001111)==7){ portb=portb|0b00110000;}
هنا قلت له اجعل الاطراف 1=RB5=1,RB6 ودون تأثير على RB6,RB7


التعديل الأخير تم بواسطة : حسن هادي محمود بتاريخ 05-09-2014 الساعة 08:25 AM
اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,673
نشاط [ حسن هادي محمود ]
قوة السمعة:
قديم 05-09-2014, 08:37 AM المشاركة 11   
x4


راح أعطيك داله مايكرو وهي جاهزه ويمكنك تعريفها في البدايه البرنامج من خلال هذه داله
1- يمكن فحص اي بت من البورت مثلا اريد اعرف حاله RB5
وهاي هي داله
كود:
#define Check_bit(var,pos)  var&(1<<pos)
2- اريد أجعل اي بت =1 مثلا اريد RB4_bit=1
كود:
#define set_bit(var,pos)  (var|=(1<<pos) )

3- اريد أجعل اي بت =0 مثلا اريد RB4_bit=0

كود:
#define clear_bit(var,pos) ( var&=~(1<<pos) )
4- اريد أعكس حاله اي بت مثلا اريد عكس حاله RB4 فأذا كان =1 يصبح قيمته=0 والعكس بالعكس
كود:
#define toggle_bit(var,pos)  (var^=(1<<pos) )
ويمكنك كتابتها معا لكي تستخدمها في اي مشروع
كود:
#define Check_bit(var,pos)  var&(1<<pos) 
#define set_bit(var,pos)  (var|=(1<<pos) )
#define clear_bit(var,pos) ( var&=~(1<<pos) )
#define toggle_bit(var,pos)  (var^=(1<<pos) )
تلاحظ كل داله تأخذ اسم البورت ورقم البن
مثلا اريد أختبر هل RB2=1 عندها أجعل RB5=1
كود:
if( Check_bit(portb,2) !=0){set_bit(portb,5); }
على فكره هذه معلومات عامه ممكن الاستفاده منها في مشاريع مختلفه


Logic
:: عضو فضي ::
تاريخ التسجيل: Mar 2014
المشاركات: 682
نشاط [ Logic ]
قوة السمعة:
قديم 05-09-2014, 11:39 AM المشاركة 12   
افتراضي


هذا ما كنت أعنيه بتقنية masking المستخدمة في الاسمبلي والسي وغيرها
http://cplus.about.com/od/glossar1/g/masking.htm
شكرا أيها الإخوة على التوضيحات القيمة.
وفي Flowcode الخاصية جاهزة ضمن مجموعة خصائص الخرج الأخرى .
وبذلك يمكن التعامل معها ببساطة وإذخالها في جمل الشرط المختلفة..

كان هذا فقط للتوضيح بما أن الموضوع هام لجميع لغات البرمجة .
وفي النت أسئلة وأمثلة وشروح عنها بالميكروسي ايضا.
البرمجة علم والعلوم تؤخذ بمصطلحاتها..
تحياتي للجميع.


abban270
:: مهندس متواجد ::
تاريخ التسجيل: Jul 2009
المشاركات: 89
نشاط [ abban270 ]
قوة السمعة:
قديم 05-09-2014, 02:55 PM المشاركة 13   
افتراضي


هذا ما كنت أعنيه بتقنية masking المستخدمة في الاسمبلي والسي وغيرها
http://cplus.about.com/od/glossar1/g/masking.htm
شكرا أيها الإخوة على التوضيحات القيمة.
شكرا على الطريقة لكني لم أفهمها جيدا


abban270
:: مهندس متواجد ::
تاريخ التسجيل: Jul 2009
المشاركات: 89
نشاط [ abban270 ]
قوة السمعة:
قديم 05-09-2014, 03:07 PM المشاركة 14   
افتراضي



وفي Flowcode الخاصية جاهزة ضمن مجموعة خصائص الخرج الأخرى .
وبذلك يمكن التعامل معها ببساطة وإذخالها في جمل الشرط المختلفة..

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


abban270
:: مهندس متواجد ::
تاريخ التسجيل: Jul 2009
المشاركات: 89
نشاط [ abban270 ]
قوة السمعة:
قديم 05-09-2014, 03:10 PM المشاركة 15   
افتراضي


شكرا مهندسنا حسن هادي محمود
لولاك لكنا هالكين في البرمجة
فهمت جيدا الأمثلة
وحتى الإضافات التي وضعتها كانت واضحة جدا مع أني مبتدئء
بارك الله فيكم جميعا



الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 05:39 PM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)