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

   

محمد ع يسى
:: عضو فضي ::
تاريخ التسجيل: May 2015
الدولة: مصر
المشاركات: 1,040
نشاط [ محمد ع يسى ]
قوة السمعة:
قديم 01-03-2016, 05:47 AM المشاركة 9   
افتراضي



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

كود:
while((porta-3)>=1)
معناها لو مثلا بورتA الآن يساوي 7 مثلا قم بالآتي:
اطرح 3 من بورت A سيتبقى 4
هل هذا الناتج أكبر من أو يساوي 1؟
هل فهمت؟

كود:
 portb=(portb<<1)+(!portb);
لقد شرحتها في المشاركة السابقة... هل تحتاج مزيدا من التوضيح؟

كود:
 while(portb) {delay_ms(1000);portb=(portb<<1)+(!portb);}
يمكنك إعادة كتابتها بهذا الشكل من أجل فهمها:

كود:
 while(portb) 
{
delay_ms(1000);
portb=(portb<<1)+(!portb);
}
إن لم تفهم ذلك أخبرني.

كود:
 portb=(portb<<1)+(!portb);
نفس سؤالك قبل الماضي.
كود:
  while(!sw1){}
لاحظ أنه في بداية البرنامج:
كود:
#define   sw1   porta.f0
فحتى تفهمه ستنظر إليه بهذا الشكل:
كود:
  while(!porta.f0){}
بالنسبة للعلامة ! فهي تعني عكس المنطق.. وما كنت أعرفها قبل المسابقة الماضية.
الفرق بين ! وبين ~ أن نتيجة ! إما واحد وإما صفر... أما ~ فهي تعكس كل بت على حدى... على سبيل المثال:
لو بورت B الآن يساوي 0b00111110 فهذا يعني أن x=~port;j (حرف j من عندي ليظهر الكود بالشكل الصحيح) هذه العبارة تعادل x=0b11000001;j بالنظام الثنائي.
لاحظ أن كل بت صار معكوسا.
أما x=!portb;j فهذه العبارة تعني x تساوي صفر.
أما لو كان بورت B تساوي 0b00000000 فإن x=~portb;j تعني x=0b11111111;j بالنظام الثنائي يعني x=255;j بالنظام العشري... أما x=!portb;j فهي تعني x=0b00000001;j فقط...أو بالنظام العشري x=1;j فقط.
أما عند تحديد بت معين واحد فقط فإن ! تؤدي نفس وظيفة ~
مثلا:
x=~porta.f0;j
تعادل:
x=!porta.f0;j
فكلاهما يعادل إن كان هذا البت يساوي صفر:
x=0b00000001;j بالنظام الثنائي.

وهذة التعليمه نفسى افهما وطريقة استخدمها فى الكود ..
كود:
  %
كود:
 (tlong / 100) % 10;
بالنسبة للتعليمة:
x%=43/9;j
فهي تعني أن x بعد المرور على هذا الأمر ستساوي 7
كيف هذا؟
43 على 9 كم تساوي وكم يتبقى؟
تساوي 4 وسيتبقى 7 على 9
أليس كذلك؟
فهذه الدالة تعطي باقي القسمة.
لاحظ أنه إن كان البسط يقبل القسمة على المقام دون كسور فستكون نتيجة هذه الدالة صفر.

يارت يكون فى شرح لمثل هذة التعليمات ... وتكون موضحه ببعص الأمثله ..


وانا وباقى الأخوة معاك لو تكرمة وشرحة هذة الأمور .. فعلا هيكون الموضوع شيق جداااا و مفيد ..


تحياتى لك اخى الكريم .. و بارك الله فيك ...
آمين... وإياك.
السلام عليكم ورحمة الله وبركاته.
جاءت الإجابات أعلاه.

اعلانات

ABOUYAGINE
:: مهندس متواجد ::
تاريخ التسجيل: Jan 2012
المشاركات: 61
نشاط [ ABOUYAGINE ]
قوة السمعة:
قديم 01-03-2016, 09:04 AM المشاركة 10   
افتراضي


أما عن:
portb<<1
فانظر التجربة 18 من هذا الكتاب من دورة أستاذ أحمد سمير فايد:
http://www.4shared.com/file/11919184...__lesson6.html
وأما عن:
j!portb
(الحرف j من عندي ليظهر الكود بشكل مفهوم).
فهي تعني عكس حالة بورت B بمعنى:
إن كان بورت B يساوي 0 فسيضع مكان هذه العبارة 1
بينما إن كان بورت B أكبر من 0 فسيضع مكان هذه العبارة صفر.
لا تتردد في طلب المزيد من الشرح إن كان الأمر صعبا.

السلام عليكم أستاذ عيسى
يعني لو كان الــ portb=0b00000001 ,و العبارة هي:
;( portb=(portb<<1)+(!portb

نحلل الجزء الاول (portb<<1) بعني ;portb=0b00000010

أما الجزء الثاني ;portb =0b11111110!
بعني ان العبارة ;( portb=(portb<<1)+(!portb تصبح

portb=0b00000000;
هل هذا صحيح ؟؟؟
وشكرا

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

محمد ع يسى
:: عضو فضي ::
تاريخ التسجيل: May 2015
الدولة: مصر
المشاركات: 1,040
نشاط [ محمد ع يسى ]
قوة السمعة:
قديم 01-03-2016, 09:51 AM المشاركة 11   
افتراضي


السلام عليكم أستاذ عيسى
وعليك السلام ورحمة الله وبركاته.
أنا لست أستاذا ولا مهندسا... أنا لا زلت مبتدئا... قل أخ محمد عيسى أو محمد عيسى مباشر.

يعني لو كان الــ portb=0b00000001 ,و العبارة هي:
;( portb=(portb<<1)+(!portb

نحلل الجزء الاول (portb<<1) بعني ;portb=0b00000010
لحد هنا تمام.
أما الجزء الثاني ;portb =0b11111110!
هنا بقى الغلط...
هذا إن كانت:
j~portb
حرف j من عندي ليظهر الكود بشكل مفهوم.
أما:
j!portb
فستساوي صفر... يعني بالنظام الثنائي:
0b00000000
إلا في حالة واحدة وهي عندما يكون بورت B يساوي صفر.. حينئذ ستكون نتيجة j!portb هي واحد فقط... يعني بالنظام الثنائي:
0b00000001
هل تريد المزيد من الشرح؟


بعني ان العبارة ;( portb=(portb<<1)+(!portb تصبح

portb=0b00000000;
هل هذا صحيح ؟؟؟
كلا...
وشكرا
العفو أخي...
كما أنصحك بقراءة ردي على مشاركة الأخ عبد الله حجازي فقد شرحت فيها ذلك بتفصيل أكثر.
السلام عليكم ورحمة الله وبركاته.
جاءت الإجابة أعلاه.


ABOUYAGINE
:: مهندس متواجد ::
تاريخ التسجيل: Jan 2012
المشاركات: 61
نشاط [ ABOUYAGINE ]
قوة السمعة:
قديم 01-03-2016, 01:21 PM المشاركة 12   
افتراضي


السلام عليكم
الشرح وافي وكافي
أخي الكريم لدي سؤال مباشر ما المغزى من تصفير البورت B؟
مشكور


محمد ع يسى
:: عضو فضي ::
تاريخ التسجيل: May 2015
الدولة: مصر
المشاركات: 1,040
نشاط [ محمد ع يسى ]
قوة السمعة:
قديم 01-03-2016, 07:21 PM المشاركة 13   
افتراضي


السلام عليكم
الشرح وافي وكافي
أخي الكريم لدي سؤال مباشر ما المغزى من تصفير البورت B؟
مشكور
وعليك السلام ورحمة الله وبركاته.
لقد اشترطت ذلك في شروط المسابقة للتعقيد فقط وتصعيب الوظيفة المطلوبة حتى تكون المسابقة أكثر متعة وإثارة.


محمد ع يسى
:: عضو فضي ::
تاريخ التسجيل: May 2015
الدولة: مصر
المشاركات: 1,040
نشاط [ محمد ع يسى ]
قوة السمعة:
قديم 07-03-2016, 08:10 AM المشاركة 14   
افتراضي


السلام عليكم ورحمة الله وبركاته.
إذا لم يتقدم متسابق بشيء جديد سأعلن النتيجة النهائية بعد غد الثلاثاء.


الصورة الرمزية assed
assed
:: عضو فضي ::
تاريخ التسجيل: Jul 2014
الدولة: العراق - بغداد
المشاركات: 1,034
نشاط [ assed ]
قوة السمعة:
قديم 08-03-2016, 07:06 PM المشاركة 15   
افتراضي


بسم الله الرحمن الرحيم.
السلام عليكم ورحمة الله وبركاته.
أعلن انتهاء المسابقة.
وأعلن أن الفائز الأول والوحيد هو المتسابق حسن هادي محمود.
والآن إليكم الرسالة الخاصة الرابعة التي تحتوي على الخطأ الخفي:

والآن سأترككم تستريحون قليلا وأستريح أنا أيضا قبل المسابقة الثالثة.
سنستخدم في المسابقة الثالثة كيباد بشرط عدم استخدام مكتبة الكيباد... كما أن الكيباد سنضعها على بورت لا يحتوي على مقاطعات.
والسلام عليكم ورحمة الله وبركاته.
السلام عليكم

لم تكن بالحسبان فكرة الهاردوير للمتحكم 16f84a مع العلم ان الاستاذ عريبي محمود كان منبه عليها في المسابقة الماضية بالمشاركة رقم 3


والمشاركة رقم 4 توحي انك ................. على علم بذالك
بارك الله بك أخ محمد وزادك من علمه


محمد ع يسى
:: عضو فضي ::
تاريخ التسجيل: May 2015
الدولة: مصر
المشاركات: 1,040
نشاط [ محمد ع يسى ]
قوة السمعة:
قديم 08-03-2016, 08:57 PM المشاركة 16   
افتراضي إعلان انتهاء المسابقة


بسم الله الرحمن الرحيم.
السلام عليكم ورحمة الله وبركاته.
أعلن انتهاء المسابقة.
وأعلن أن الفائز الأول والوحيد هو المتسابق حسن هادي محمود.
والآن إليكم الرسالة الخاصة الرابعة التي تحتوي على الخطأ الخفي:
السلام عليكم ورحمة الله وبركاته.
الملاحظة الأخيرة والأجمل "الخطأ الخفي جدا":
كلنا نعلم أن porta.f4 عندما يكون خرج أنه يمكنه أن يجذب الخرج نحو الصفر لكنه لا يمكنه أن يجذب الخرج نحو الخمسة فولت.
لكن ماذا لو جعلناه خرج ثم أمرناه أن يكون بواحد؟
سيترك نفسه للعالم الخارجي يتحكم فيه... فإن كانت هناك مقاومة رفع سيصبح 5 فولت.. وإن كانت هناك مقاومة خفض سيصبح صفر فولت.
وإن لم تكن هناك مقاومة ستصبح الشوشرة هي المتحكمة فيه.
بالنسبة للكود الذي وضعته إذا جربته على البروتس ستجده يعمل.. أما إذا وضعت على البروتس مقاومة 10 كيلو بين porta.f4 وبين الموجب ستكتشف أن الإزاحة شمال لا تتوقف بعد ثلاث دورات كما كنا نخطط.
ستقول لن نضع في الواقع هذه المقاومة....
سأقول إن الواقع يحتوي على الشوشرة.. وهو الشيء الذي يمكنه أن يحل محل المقاومة لإفساد الخطة.
لقد أجريت تجربة عملية على مسألة الشوشرة.. فجعلت البك يقرأ قراءة أنالوج لطرف حر بدون مقاومات.. فكانت النتيجة أن هذا الطرف وكأن عليه موجة ترددها 50 هرتز.. حيث يعطي صفر فولت لمدة 0.01 ثانية ثم يعطي في ال0.01 ثانية الأخرى شكل يبدأ بالموجة الجيبية حتى يصل بعد زمن قليل جدا إلى 5 فولت لتصبح الموجة مربعة ثم عند اقتراب نهاية هذه النصف موجة تأخذ مرة أخرى الشكل الجيبي حتى تصل للصفر.
معذرة على الوصف بالكتابة من دون صور.
وعلى هذا يتبين أن كودك لكي يعمل بشكل سليم على الهارد وير لا بد من وضع مقاومة 10 كيلو بين porta.f4 وبين الأرضي.. وهذا مخالف للشروط.
هناك تعديل بسيط يمكنه إنقاذ الكود من هذه المشكلة ويحميه من الشوشرة ولا يفشل على البروتس بمقاومة الرفع التي ذكرتها منذ قليل... بل ليس ذلك فقط.. بل هذا التعديل سيخلصك من تعليمة لتصبح عدد التعليمات 35 تعليمة.
مع تمنياتي أخي أن تصل لأفضل كود.
والسلام عليكم ورحمة الله وبركاته.
والآن سأترككم تستريحون قليلا وأستريح أنا أيضا قبل المسابقة الثالثة.
سنستخدم في المسابقة الثالثة كيباد بشرط عدم استخدام مكتبة الكيباد... كما أن الكيباد سنضعها على بورت لا يحتوي على مقاطعات.
والسلام عليكم ورحمة الله وبركاته.



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