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

   

محمد ع يسى
:: عضو فضي ::
تاريخ التسجيل: May 2015
الدولة: مصر
المشاركات: 1,040
نشاط [ محمد ع يسى ]
قوة السمعة:
قديم 10-02-2016, 09:26 PM المشاركة 33   
افتراضي إعلان عن كود الأخ حسن هادي محمود



بسم الله الرحمن الرحيم.
السلام عليكم ورحمة الله وبركاته.
أعلن أن كود الأخ حسن هادي محمود قد اكتمل... وهو الآن يؤدي الوظيفة على أتم وجه.
عدد تعليمات الكود 73 تعليمة بالطريقة التي نعد بها.
كما يمكنه تعديل الكود ليقلل عدد التعليمات.
كما أنه سيخصم 10 تعليمات من كوده لأنه هو أول من تقدم بكود كامل تقريبا وهو أول من اكتمل كوده.
ليصبح عدد تعليمات كوده 63 تعليمة يمكنه التعديل ليقلل من هذا العدد.
بارك الله فيه وفيكم أيها الإخوة.
في انتظار المزيد من التفكير.
والسلام عليكم ورحمة الله وبركاته.

اعلانات

rashad shubita
:: مهندس متواجد ::
تاريخ التسجيل: Jul 2014
الدولة: Palestine
المشاركات: 80
نشاط [ rashad shubita ]
قوة السمعة:
قديم 10-02-2016, 09:50 PM المشاركة 34   
افتراضي السلام عليكم


الرجاء التوضيح المقصود ما هي "الأوامر التي لا فائدة منها "؟!

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

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


الرجاء التوضيح المقصود ما هي "الأوامر التي لا فائدة منها "؟!
مثل:
كود:
#define led  portb
//*******************************************//


الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,673
نشاط [ حسن هادي محمود ]
قوة السمعة:
قديم 11-02-2016, 06:20 AM المشاركة 36   
افتراضي


مثل:
كود:
#define led  portb
//*******************************************//
السلام عليكم

بالعكس اخي هذه مفيده جدا وطبعا لو كنا نتعامل مع الاطراف معينه يفضل استخدام
كود:
sbit sw1 at RA0_bit;
  sbit sw1_dir at TRISA0_bit;
لانك لوكتبت هذا بهذا الاسلوب سيكون اكثر احترافيا
انت لو تلاحظ لايأخذ اي حيز بالذاكره وانما اتعامل مع مسميات تكون سهله عليه فهم كود

ولنفترض ان كود كان كبير جدا وفجأه طلب منك تغير موقع سويج الى RA3 اذا كنت متعامل مع ريجسيتر trisa اي بالكود كتبت trisa.f0=1 راح تكون مشكله وهي انه انا سوف اكون مجبر على تغير كل كود من ra0_bit الى RA3_bit
وهذه طريقه ليست صحيحه لانك ربما قد لاتضمن بان الكود تم تعديله بشكل سليم اي تحويل كل RA0 الى RA3
لان كومبايلر لايعطيك اي error

بينما لوكنت مستخدم مثلا sbit فأنه فقط سيكون هذا التعديل
كود:
  sbit sw1 at RA3_bit;
  sbit sw1_dir at TRISA3_bit;
يعني نصيحه لاتتعامل مع ريجيستر tris و port , lat مباشره وانما يتم تعامل معها عن طريق define او sbit
وللعلم هذه مجرد اعطاء اسم حقيقي للاطراف الي تتعامل معها
بأختصار فوائد هي
1- امكانيه تغير الاطراف بدون حاجه للتغير في داخل الكود
2- تعطيك فهم اكثر للكود
3- تتعامل فقط مع الاطراف الي تريدها

طبعا نقطه 3 مهمه ؟؟
يعني لو قلت trisa=255 اي جعلت كل الاطراف مداخل واستخدمت فقط طرف 0 و 1 وتركت البقيه
لربما في البروتيس لن ترى مشاكل ولكن عمليا سوف تراها
وسبب في ذلك هو انك اعرفت الاطراف لاتريدها وتركتها فالبيك هنا مره يعتبرها 0 و مره 1 وربما هذا يؤدي للتأثير على ريجيستر trisa لذا يجب حذر من تعريف الاطراف على انها مداخل ولاتستخدم

على عموم اذا اتفقنا على هذا شيئ فانه سوف نعدل الكود لانه سوف يكون اكثر احترافيا

تحياتي الطيبه للجميع


الصورة الرمزية عبدالله حجازى
عبدالله حجازى
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,682
نشاط [ عبدالله حجازى ]
قوة السمعة:
قديم 11-02-2016, 07:44 AM المشاركة 37   
افتراضي


السلام عليكم

بالعكس اخي هذه مفيده جدا وطبعا لو كنا نتعامل مع الاطراف معينه يفضل استخدام
كود:
sbit sw1 at RA0_bit;
  sbit sw1_dir at TRISA0_bit;
لانك لوكتبت هذا بهذا الاسلوب سيكون اكثر احترافيا
انت لو تلاحظ لايأخذ اي حيز بالذاكره وانما اتعامل مع مسميات تكون سهله عليه فهم كود

ولنفترض ان كود كان كبير جدا وفجأه طلب منك تغير موقع سويج الى RA3 اذا كنت متعامل مع ريجسيتر trisa اي بالكود كتبت trisa.f0=1 راح تكون مشكله وهي انه انا سوف اكون مجبر على تغير كل كود من ra0_bit الى RA3_bit
وهذه طريقه ليست صحيحه لانك ربما قد لاتضمن بان الكود تم تعديله بشكل سليم اي تحويل كل RA0 الى RA3
لان كومبايلر لايعطيك اي error

بينما لوكنت مستخدم مثلا sbit فأنه فقط سيكون هذا التعديل
كود:
  sbit sw1 at RA3_bit;
  sbit sw1_dir at TRISA3_bit;
يعني نصيحه لاتتعامل مع ريجيستر tris و port , lat مباشره وانما يتم تعامل معها عن طريق define او sbit
وللعلم هذه مجرد اعطاء اسم حقيقي للاطراف الي تتعامل معها
بأختصار فوائد هي
1- امكانيه تغير الاطراف بدون حاجه للتغير في داخل الكود
2- تعطيك فهم اكثر للكود
3- تتعامل فقط مع الاطراف الي تريدها

طبعا نقطه 3 مهمه ؟؟
يعني لو قلت trisa=255 اي جعلت كل الاطراف مداخل واستخدمت فقط طرف 0 و 1 وتركت البقيه
لربما في البروتيس لن ترى مشاكل ولكن عمليا سوف تراها
وسبب في ذلك هو انك اعرفت الاطراف لاتريدها وتركتها فالبيك هنا مره يعتبرها 0 و مره 1 وربما هذا يؤدي للتأثير على ريجيستر trisa لذا يجب حذر من تعريف الاطراف على انها مداخل ولاتستخدم

على عموم اذا اتفقنا على هذا شيئ فانه سوف نعدل الكود لانه سوف يكون اكثر احترافيا

تحياتي الطيبه للجميع

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


فعلا معلومات مفيدة .. ذادك الله من علمه وبارك فيك . مشكور


محمد ع يسى
:: عضو فضي ::
تاريخ التسجيل: May 2015
الدولة: مصر
المشاركات: 1,040
نشاط [ محمد ع يسى ]
قوة السمعة:
قديم 11-02-2016, 02:32 PM المشاركة 38   
افتراضي


السلام عليكم

بالعكس اخي هذه مفيده جدا وطبعا لو كنا نتعامل مع الاطراف معينه يفضل استخدام
كود:
sbit sw1 at RA0_bit;
  sbit sw1_dir at TRISA0_bit;
لانك لوكتبت هذا.......
وعليك السلام ورحمة الله وبركاته.
أقصد بلا فائدة يعني لا تقلل عدد التعليمات... أما هذه الفوائد فأنا متفق معك فيها.
لكن أريد أن أقول شيئا بالنسبة لجعل البورت كله دخل...
كلامك صحيح في هذه النقطة إن كنت بعد ذلك سأستخدم مثلا لو بورت A تساوي ثلاثة مثلا... حينئذ لا بد من جعل بقية البورت مخارج ولا بد من جعلها أصفار.
إما إن كنت سأستخدم قراءة بِنَّة واحدة فلن تؤثر عليَّ جعل البورت مخارج أو مداخل... لأن البنات الأخرى سواء كانت وحايد أو أصفار فأنا لم أطلب من البك قراءتها، وكما تعرفون أنه في حالة جعل البورت مخرج يمكنك قراءته كما تقرأه لو كان مدخل... لهذا يمكنك أن تجعل بقية بورت A مخارج وتجعلها بصفر ثم تعطي أمرا بقراءة بورت A كاملا لتعرف حالة السويتشات.
ولكن هناك شيء آخر أريد أن أستفسر عنه...
سألتك في الرسائل الخاصة كيف تعلمت البك والميكروسي فكانت الإجابة من دورة أستاذ أحمد سمير فايد، لكن...
لكني قرأت التسعة دروس وقرأت جميع المشاركات في دورته المثبتة في هذا القسم مع ملاحظة أن الثمانية دروس الأولى هي أول 170 صفحة من كتاب أستاذ أحمد سمير فايد... المهم أني قرأت التسعة دروس ولم أجد فيها تعليمات ذكرتها في مشاركتك الأخيرة... معذرة فأنا مبتدئ ولم أنتهي من الدروس إلا منذ أيام قليلة.
على سبيل المثال أنت قلت:
يعني نصيحه لاتتعامل مع ريجيستر tris و port , lat مباشره وانما.......
ما هو ريجيستر lat؟
هذا لم يرد في التسعة دروس!!
وكذلك أريد شرحا بسيطا عن الأمر:
بينما لوكنت مستخدم مثلا sbit فأنه فقط سيكون هذا التعديل
كود:
  sbit sw1 at RA3_bit;
  sbit sw1_dir at TRISA3_bit;
كذلك هذا الأمر لم يرد في التسعة دروس!!
وبالنسبة للأمر #define والأمر inclyde أنا لم أعرفهم إلا منكم!!
وكذلك الأمر do_while لم يرد في الدروس التسعة وإنما تعلمته منك!!
سبب أنني وضعت هذه المسابقة أنني وأنا أقرأ في تجربة في أحد الدروس التسعة في دورة أستاذ أحمد سمير فايد قال أنه سيضع كود لينفذ وظيفة كذا... فوضعت الكود قبل أن أكمل القراءة ولم أستخدم متغيرات ولا حلقة for ... كل ما استخدمته tris و port و while و if و else و delay و goto و عناوين مثل aaa: فقط... ثم طورت الكود فجعلت الوظيفة أصعب وأصعب واستغنيت عن العناوين وعن goto وأصبحت كلها tris و port و while و if و else و delay فقط... وكان الكود صغيرا جدا... جدا جدا... حتى أنه يحتوي على 53 تعليمة بالطريقة التي نعد بها.
هذا هو سبب أني وضعت المسابقة.
فأين تعلمتم هذه التعليمات؟
وياريت لو شرح مختصر لها وأكون شاكرا لكم.
كما أن لدي سؤال آخر...
عندما أريد تحديد بن معين في البورت... أرى من يضع porta.f0 وهناك من يضع porta.b0 وهناك من يضع porta.bit لا أتذكر... المهم ما الفرق بينهم؟!
والسلام عليكم ورحمة الله وبركاته.


الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,673
نشاط [ حسن هادي محمود ]
قوة السمعة:
قديم 11-02-2016, 09:33 PM المشاركة 39   
افتراضي


وعليك السلام ورحمة الله وبركاته.
أقصد بلا فائدة يعني لا تقلل عدد التعليمات... أما هذه الفوائد فأنا متفق معك فيها.
لكن أريد أن أقول شيئا بالنسبة لجعل البورت كله دخل...
كلامك صحيح في هذه النقطة إن كنت بعد ذلك سأستخدم مثلا لو بورت A تساوي ثلاثة مثلا... حينئذ لا بد من جعل بقية البورت مخارج ولا بد من جعلها أصفار.
إما إن كنت سأستخدم قراءة بِنَّة واحدة فلن تؤثر عليَّ جعل البورت مخارج أو مداخل... لأن البنات الأخرى سواء كانت وحايد أو أصفار فأنا لم أطلب من البك قراءتها، وكما تعرفون أنه في حالة جعل البورت مخرج يمكنك قراءته كما تقرأه لو كان مدخل... لهذا يمكنك أن تجعل بقية بورت A مخارج وتجعلها بصفر ثم تعطي أمرا بقراءة بورت A كاملا لتعرف حالة السويتشات.
ولكن هناك شيء آخر أريد أن أستفسر عنه...
سألتك في الرسائل الخاصة كيف تعلمت البك والميكروسي فكانت الإجابة من دورة أستاذ أحمد سمير فايد، لكن...
لكني قرأت التسعة دروس وقرأت جميع المشاركات في دورته المثبتة في هذا القسم مع ملاحظة أن الثمانية دروس الأولى هي أول 170 صفحة من كتاب أستاذ أحمد سمير فايد... المهم أني قرأت التسعة دروس ولم أجد فيها تعليمات ذكرتها في مشاركتك الأخيرة... معذرة فأنا مبتدئ ولم أنتهي من الدروس إلا منذ أيام قليلة.
على سبيل المثال أنت قلت:
يعني نصيحه لاتتعامل مع ريجيستر tris و port , lat مباشره وانما.......
ما هو ريجيستر lat؟
هذا لم يرد في التسعة دروس!!
وكذلك أريد شرحا بسيطا عن الأمر:
بينما لوكنت مستخدم مثلا sbit فأنه فقط سيكون هذا التعديل
كود:
  sbit sw1 at RA3_bit;
  sbit sw1_dir at TRISA3_bit;
كذلك هذا الأمر لم يرد في التسعة دروس!!
وبالنسبة للأمر #define والأمر inclyde أنا لم أعرفهم إلا منكم!!
وكذلك الأمر do_while لم يرد في الدروس التسعة وإنما تعلمته منك!!
سبب أنني وضعت هذه المسابقة أنني وأنا أقرأ في تجربة في أحد الدروس التسعة في دورة أستاذ أحمد سمير فايد قال أنه سيضع كود لينفذ وظيفة كذا... فوضعت الكود قبل أن أكمل القراءة ولم أستخدم متغيرات ولا حلقة for ... كل ما استخدمته tris و port و while و if و else و delay و goto و عناوين مثل aaa: فقط... ثم طورت الكود فجعلت الوظيفة أصعب وأصعب واستغنيت عن العناوين وعن goto وأصبحت كلها tris و port و while و if و else و delay فقط... وكان الكود صغيرا جدا... جدا جدا... حتى أنه يحتوي على 53 تعليمة بالطريقة التي نعد بها.
هذا هو سبب أني وضعت المسابقة.
فأين تعلمتم هذه التعليمات؟
وياريت لو شرح مختصر لها وأكون شاكرا لكم.
كما أن لدي سؤال آخر...
عندما أريد تحديد بن معين في البورت... أرى من يضع porta.f0 وهناك من يضع porta.b0 وهناك من يضع porta.bit لا أتذكر... المهم ما الفرق بينهم؟!
والسلام عليكم ورحمة الله وبركاته.

السلام عليكم
بالنسبه لدوره احمد سمير فايد هي موجوده في الاعلان وبالطبع تحتاج اشتراك معه وهي دروس رائعه وسوف تتعلم الكثير
http://www.qariya.info/vb/showthread.php?t=108145
وبمتابعه ومحاوله تصميم مشاريع سوف ترى الامور تبدأ تتوضح اكثر

وانا ايضا تعمقت بالبيك وتعلمت الكثير من مواضيع

وايضا اشتركت بدوره استاذ احمد شيمي وخاصه بتعلم برمجه C# والانترنيت و..
https://www.youtube.com/watch?v=0ytXCLuF5Xs

وسحاول الشرح عن البقيه الاستفسارات لاحقا ان شاء الله


magdy_3
:: مهندس متميز ::
تاريخ التسجيل: Aug 2006
الدولة: Philippines
المشاركات: 339
نشاط [ magdy_3 ]
قوة السمعة:
قديم 12-02-2016, 01:46 AM المشاركة 40   
افتراضي السلام عليكم


اخى محمد
اولا احب اشكرك على الفكرة دى
الى خلتنا نعصر دماغنا
وثانيا انا بعتلك الكود بتاعى شوفو وطمنى
سلام



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