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

أدوات الموضوع

abban270
:: مهندس متواجد ::
تاريخ التسجيل: Jul 2009
المشاركات: 89
نشاط [ abban270 ]
قوة السمعة:0
قديم 04-09-2014, 10:25 AM المشاركة 1   
افتراضي مساعدة في تجاهل بعض المخارج Twitter FaceBook Google+



السلام عليكم
أرجو المساعدة في تجاهل بعض المخارج

أريد أن أعمل بالمخارج من rb0---->rb3
وتجاهل المخارج من rb4------>rb7 لأنها ستستعمل لغرض آخر

والمخارج الأربعة الأولى سأستعمل عليه العديد من الشروط
مثال
i
كود:
f (portb==0) أمر
if (portb==1) أمر آخر
if (portb==2) أمر آخر
if (portb==3) أمر آخر
if (portb==7) أمر آخر
ولكن هذه الأوامر لن تقوم بتجاهل المخارج rb4------>rb7
أرجو طرية لتفادي هذا المشكل بارك الله فيكم

اعلانات

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


السلام عليكم
بدل أن تسند قيمة معينة للبورت كله ، برمج كل مخرج على حدا ، إما تعطيه 1 أو 0..
مثال
;Portc.b0=1 هنا أسندنا القيمة 1 منطقي للطرف RC0 (البت 0) من البورت C
أو ;Portc.b0=0 و هنا أسندنا لنفس الطرف القيمة 0 منطقي
يعني الطرف الذي تريد أن يخرج لك 5 فولت تعطيه القيمة 1 والطرف الذي تريده 0 تعطيه القيمة 0 طبعا.

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

abban270
:: مهندس متواجد ::
تاريخ التسجيل: Jul 2009
المشاركات: 89
نشاط [ abban270 ]
قوة السمعة:0
قديم 04-09-2014, 01:19 PM المشاركة 3   
افتراضي


السلام عليكم
بدل أن تسند قيمة معينة للبورت كله ، برمج كل مخرج على حدا ، إما تعطيه 1 أو 0..
مثال
;Portc.b0=1 هنا أسندنا القيمة 1 منطقي للطرف RC0 (البت 0) من البورت C
أو ;Portc.b0=0 و هنا أسندنا لنفس الطرف القيمة 0 منطقي
يعني الطرف الذي تريد أن يخرج لك 5 فولت تعطيه القيمة 1 والطرف الذي تريده 0 تعطيه القيمة 0 طبعا.
طبعا لكن هناك أسطر فيها عدة شروط
مثال
كود:
if (portb.f0==1 && portb.f1==0 وتجاهل المخارج الأخرى )   
if (portb.f0==1 && portb.f1==1 && portb.f2==0 portb.f3==0 وتجاهل المخارج الأخرى ) 
if (portb.f0==1 && portb.f1==1 && portb.f2==1 portb.f3==0 وتجاهل المخارج الأخرى )
ولكن هكذا طويلة جدا ويجب علي تحديد وضعية كل البورتات
لهذا أردت إستعمال خاصية تجاهل بعض المخارج


التعديل الأخير تم بواسطة : abban270 بتاريخ 04-09-2014 الساعة 01:23 PM

Logic
:: عضو فضي ::
تاريخ التسجيل: Mar 2014
المشاركات: 682
نشاط [ Logic ]
قوة السمعة:79
قديم 04-09-2014, 02:35 PM المشاركة 4   
افتراضي


هي فعلا طويلة وهذا عيبها .
ربما طريقة masking هي ما تحتاجه..


sskk77
:: مهندس متميز ::
تاريخ التسجيل: Jan 2005
المشاركات: 714
نشاط [ sskk77 ]
قوة السمعة:0
قديم 04-09-2014, 04:37 PM المشاركة 5   
افتراضي


أخي استعمل التعليمة AND فهي ما سيساعدك
مثال
NUM=PORTB AND %00001111
لا اعرف صياغتها في لغة البرمجة التي لديك
لكن النتيجة في قيمة المتغير ستكون قيمة البتات الاربعة الاولى متجاهلة البتات الاربعة الثانية

احصائية الشكر والاعجاب - 1 شكراً, 0 عدم اعجاب, 1 اعجاب
شكراً Logic ( شكر العضو على هذه المشاركة )
اعجاب Logic ( أعجبته المشاركة )

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,688
نشاط [ حسن هادي محمود ]
قوة السمعة:135
قديم 04-09-2014, 06:15 PM المشاركة 6   
افتراضي


السلام عليكم
أرجو المساعدة في تجاهل بعض المخارج

أريد أن أعمل بالمخارج من rb0---->rb3
وتجاهل المخارج من rb4------>rb7 لأنها ستستعمل لغرض آخر

والمخارج الأربعة الأولى سأستعمل عليه العديد من الشروط
مثال
i
كود:
f (portb==0) أمر
if (portb==1) أمر آخر
if (portb==2) أمر آخر
if (portb==3) أمر آخر
if (portb==7) أمر آخر
ولكن هذه الأوامر لن تقوم بتجاهل المخارج rb4------>rb7
أرجو طرية لتفادي هذا المشكل بارك الله فيكم
السلام عليكم
أخي الكريم لما تقول if (portb==1) لايعني انك جعلت portb=1 وبتالي ماراح يؤثر على مخارج rb4------>rb7

ولكن اذا قلت أجعل portb=7 هنا راح تتأثر مخارج rb4------>rb7 ولكي لاتتأثر أكتب الكود التالي
مثلا اريد أجعل rb0=1,rb1=1,rb2=1,rb3=0 وبدون ان نؤثر على rb4------>rb7
كود:
portb=portb|0x07;
او تكتب بالباينري
كود:
portb=portb|0b00000111;
والرمز | يعني او

لنحلل الكود //
مثلا portb=0b11111000
ولجعل بتات الثلاثه=1 دون ان نؤثر على مخارج الاربعه اخيره
portb=portb|0b00000111

1000 1111 portb old value
|
1110 0000

1111 1111 portb new value

احصائية الشكر والاعجاب - 2 شكراً, 0 عدم اعجاب, 2 اعجاب
شكراً abban270, Logic ( شكر العضو على هذه المشاركة )
اعجاب abban270, Logic ( أعجبته المشاركة )

abban270
:: مهندس متواجد ::
تاريخ التسجيل: Jul 2009
المشاركات: 89
نشاط [ abban270 ]
قوة السمعة:0
قديم 04-09-2014, 08:34 PM المشاركة 7   
افتراضي


شكرا أخي حسن
ولكن كيف أستعمل هذا الكود مع الشرط if
هل يمكن مثال على ذلك


Logic
:: عضو فضي ::
تاريخ التسجيل: Mar 2014
المشاركات: 682
نشاط [ Logic ]
قوة السمعة:79
قديم 04-09-2014, 09:18 PM المشاركة 8   
افتراضي


أخي استعمل التعليمة AND فهي ما سيساعدك
مثال
NUM=PORTB AND %00001111
لا اعرف صياغتها في لغة البرمجة التي لديك
لكن النتيجة في قيمة المتغير ستكون قيمة البتات الاربعة الاولى متجاهلة البتات الاربعة الثانية
السلام عليكم
أخي الكريم لما تقول if (portb==1) لايعني انك جعلت portb=1 وبتالي ماراح يؤثر على مخارج rb4------>rb7

ولكن اذا قلت أجعل portb=7 هنا راح تتأثر مخارج rb4------>rb7 ولكي لاتتأثر أكتب الكود التالي
مثلا اريد أجعل rb0=1,rb1=1,rb2=1,rb3=0 وبدون ان نؤثر على rb4------>rb7
كود:
portb=portb|0x07;
او تكتب بالباينري
كود:
portb=portb|0b00000111;
والرمز | يعني او

لنحلل الكود //
مثلا portb=0b11111000
ولجعل بتات الثلاثه=1 دون ان نؤثر على مخارج الاربعه اخيره
portb=portb|0b00000111

1000 1111 portb old value
|
1110 0000

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

إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


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

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025