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

   

الصورة الرمزية باسم ماجد
باسم ماجد
:: مهندس متميز ::
تاريخ التسجيل: Jan 2009
الدولة: Amman-Jordan
المشاركات: 316
نشاط [ باسم ماجد ]
قوة السمعة:
قديم 23-04-2012, 11:42 AM المشاركة 17   
افتراضي



شكرا على التفاعل

اشتغل الكود تمام لكن فقط في الداله الرئيسية
لكن عندما يعمل عبر دوال لايعمل


فكيف اجعل اجعلة جنرال حيث عند التغير في قيمة البورت دي يمكن ان افحصة عبر اي دالة ..
أخي الكريم zoro238
أرجو توضيح ما تريد من الميكروكنترولر القيام به
تمنياتي لك بالتوفيق

اعلانات

Imozar
:: مهندس متميز ::
تاريخ التسجيل: Dec 2011
المشاركات: 315
نشاط [ Imozar ]
قوة السمعة:
قديم 23-04-2012, 12:30 PM المشاركة 18   
افتراضي


نعم هو ما قصدته بالضبط ... و هذا التنقل منطقي و ليس فيه اي مشكلة مع جميع لغات البرمجة ..
كن مطمئنا ....
شكرا أخي حيدر ..انا مطمئن ، ومطمئن أكثر على الدعم الذي توفره للمبرمجين بالميكروسي وللمبتدئين معه .
جازاك الله خيرا.
أخي العزيز Imozar
دعنا نستخدم البك PIC16F84A
لكي نتوصل لنتيجة دعنا نناقش سويةً :
عند الضغط على f0 من البورت A يضيئ الليد المتصل مع البت f3 من البورت B
if(porta.f0==0)iiiiiiiiiiiiiiiiiiiiiiiiiiii
portb.f3=1iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
و 1000 0000 بالنظام الثنائي و هي 8 بالنظام العشري
حسنا" إذا أردت إظهار الرقم 2 إي البت f1 من البورت B
نكتب بدل السطر الثاني من الكود :
portb.f1=1iiiiiiiiiiiiiiiiiiiiiiiiiiiii
إذن تحدد البت الذي تريد كدخل و تحدد القيمة التي تريدها كخرج
ملف المحاكاه و الكود



أخي العزيز باسم ..
شكرا لك على المتابعة والتوضيح .
في الكود الذي تفضلت به خصصت أحد اطراف البورت A كدخل وحددت أحد أطراف بورت آخر وهو البورت B كخرج ..
وطبعا حددت في بداية الكود اتجاه المنفذ A كمنفذ للدخل بالمسجل TRISA=255
وحددت اتجاه المنفذ B كمنفذ للخرج بالمسجل
TRISB=0

هذا هو المعتاد ولا نقاش حوله ..

لكن كود الاخ zoro يستخدم نفس المنفذ كدخل وخرج في جملة واحدة ..
وحتى نبقى في البيك 16F84 الذي اخترته عندي سؤال :
ممكن تعيد نفس الكود الذي تفضلت برفعه لكن باستخدام نفس الفكرة اي: العمل كله يكون على PORTB ؟
يعني تعمل طرف من PORTB كدخل وطرف آخر من PORTB كخرج؟

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

zoro238
:: مهندس جيد ::
تاريخ التسجيل: Apr 2006
المشاركات: 290
نشاط [ zoro238 ]
قوة السمعة:
قديم 23-04-2012, 12:57 PM المشاركة 19   
افتراضي


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

في احد الدوال عند الضغط على المفتاح portb.f4 وهو يعمل حسب اوامر المقاطعات

تعمل دالة وتشغل اللمبة على البورت دي وترسل له القيمة 8 وبالتالى من المفترض ان تكون 1000 وهو يعني ان الرجل f3 هي التى ستعمل وفعلا هي تعمل ..

لكن عندما يظغط على زر اخر portb.f5 يتجة الى دالة اخرى وفي الدالة تلك يتاكد من ان القيمة على البورت دي كام بالضبط

فالو كانت 8 يرسل للبورت دي القيمة 4 ولو كانت 2 يرسل القيمة 10

والمشكلة انة لايتاكد من الشرط نهائي

والمطلوب هو التاكد منم القيمة الموجوه على البورت دي


وهناك نقطة اخرى اجد من البعض يقول انني معرف البورت دي دخل وخرج وانا معرفة فقط خرج بالامر التالي

trisd=0; portd=0;

فاين الدخل في الامر ذلك ..


Imozar
:: مهندس متميز ::
تاريخ التسجيل: Dec 2011
المشاركات: 315
نشاط [ Imozar ]
قوة السمعة:
قديم 23-04-2012, 01:25 PM المشاركة 20   
افتراضي


وهناك نقطة اخرى اجد من البعض يقول انني معرف البورت دي دخل وخرج وانا معرفة فقط خرج بالامر التالي
trisd=0; portd=0;
فاين الدخل في الامر ذلك ..
إذا كنت انا المقصود ب"البعض" ..
الكود المرفوع في اول مشاركة لا يتضمن اية اشارة لذلك لذلك بقيت كل الاحتمالات واردة وخاصة ان العادة جرت باستخدام التعليمة if في أكواد الدخول ..
والعادة دائما تكون غلابة .


الصورة الرمزية باسم ماجد
باسم ماجد
:: مهندس متميز ::
تاريخ التسجيل: Jan 2009
الدولة: Amman-Jordan
المشاركات: 316
نشاط [ باسم ماجد ]
قوة السمعة:
قديم 23-04-2012, 01:40 PM المشاركة 21   
افتراضي


المشاركة الأصلية كتبت بواسطة Imozar
أخي العزيز باسم ..
شكرا لك على المتابعة والتوضيح .
في الكود الذي تفضلت به خصصت أحد اطراف البورت A كدخل وحددت أحد أطراف بورت آخر وهو البورت B كخرج ..
وطبعا حددت في بداية الكود اتجاه المنفذ A كمنفذ للدخل بالمسجل TRISA=255
وحددت اتجاه المنفذ B كمنفذ للخرج بالمسجل
TRISB=0

هذا هو المعتاد ولا نقاش حوله ..

لكن كود الاخ zoro يستخدم نفس المنفذ كدخل وخرج في جملة واحدة ..
وحتى نبقى في البيك 16F84 الذي اخترته عندي سؤال :
ممكن تعيد نفس الكود الذي تفضلت برفعه لكن باستخدام نفس الفكرة اي: العمل كله يكون على PORTB ؟
يعني تعمل طرف من PORTB كدخل وطرف آخر من PORTB كخرج؟
طبعا" ممكن :
[IMG][/IMG]


الصورة الرمزية باسم ماجد
باسم ماجد
:: مهندس متميز ::
تاريخ التسجيل: Jan 2009
الدولة: Amman-Jordan
المشاركات: 316
نشاط [ باسم ماجد ]
قوة السمعة:
قديم 23-04-2012, 01:49 PM المشاركة 22   
افتراضي


في مشروع هناك اكثر من 22 دالة وكل دالة مرتبطة بالداله الاخرى

في احد الدوال عند الضغط على المفتاح portb.f4 وهو يعمل حسب اوامر المقاطعات

تعمل دالة وتشغل اللمبة على البورت دي وترسل له القيمة 8 وبالتالى من المفترض ان تكون 1000 وهو يعني ان الرجل f3 هي التى ستعمل وفعلا هي تعمل ..

لكن عندما يظغط على زر اخر portb.f5 يتجة الى دالة اخرى وفي الدالة تلك يتاكد من ان القيمة على البورت دي كام بالضبط

فالو كانت 8 يرسل للبورت دي القيمة 4 ولو كانت 2 يرسل القيمة 10

والمشكلة انة لايتاكد من الشرط نهائي

والمطلوب هو التاكد منم القيمة الموجوه على البورت دي


وهناك نقطة اخرى اجد من البعض يقول انني معرف البورت دي دخل وخرج وانا معرفة فقط خرج بالامر التالي

trisd=0; portd=0;

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


Imozar
:: مهندس متميز ::
تاريخ التسجيل: Dec 2011
المشاركات: 315
نشاط [ Imozar ]
قوة السمعة:
قديم 23-04-2012, 02:03 PM المشاركة 23   
افتراضي


شكرا أخي باسم على الرد وعلى الاسلوب اللائق في التعامل بارك الله فيك.
وبالمناسبة فإني الغيت عبارة من ردي السابق عليك ، لم يعد لها معنى فأصبحت مشاركتي كالتالي :

شكرا أخي حيدر ..انا مطمئن ، ومطمئن أكثر على الدعم الذي توفره للمبرمجين بالميكروسي وللمبتدئين معه .
جازاك الله خيرا.

أخي العزيز باسم ..
شكرا لك على المتابعة والتوضيح .
في الكود الذي تفضلت به خصصت أحد اطراف البورت A كدخل وحددت أحد أطراف بورت آخر وهو البورت B كخرج ..
وطبعا حددت في بداية الكود اتجاه المنفذ A كمنفذ للدخل بالمسجل TRISA=255
وحددت اتجاه المنفذ B كمنفذ للخرج بالمسجل
TRISB=0

هذا هو المعتاد ولا نقاش حوله ..

وحتى نبقى في البيك 16F84 الذي اخترته عندي سؤال :
ممكن تعيد نفس الكود الذي تفضلت برفعه لكن باستخدام نفس الفكرة اي: العمل كله يكون على PORTB ؟
يعني تعمل طرف من PORTB كدخل وطرف آخر من PORTB كخرج؟
وبذلك أعتقد ان هذه المناقشة أصبحت خارج الموضوع وبناء عليه انسحب منه.
تحياتي لك وللاستاذ حيدر .


zoro238
:: مهندس جيد ::
تاريخ التسجيل: Apr 2006
المشاركات: 290
نشاط [ zoro238 ]
قوة السمعة:
قديم 24-04-2012, 12:45 AM المشاركة 24   
x1


في مشروع هناك اكثر من 22 دالة وكل دالة مرتبطة بالداله الاخرى
في احد الدوال عند الضغط على المفتاح portb.f4 وهو يعمل حسب اوامر المقاطعات
تعمل دالة وتشغل اللمبة على البورت دي وترسل له القيمة 8 وبالتالى من المفترض ان تكون 1000 وهو يعني ان الرجل f3 هي التى ستعمل وفعلا هي تعمل ..
لكن عندما يظغط على زر اخر portb.f5 يتجة الى دالة اخرى وفي الدالة تلك يتاكد من ان القيمة على البورت دي كام بالضبط
فالو كانت 8 يرسل للبورت دي القيمة 4 ولو كانت 2 يرسل القيمة 10
والمشكلة انة لايتاكد من الشرط نهائي
والمطلوب هو التاكد منم القيمة الموجوه على البورت دي
هناك نقطة اخرى اجد من البعض يقول انني معرف البورت دي دخل وخرج وانا معرفة فقط خرج بالامر التالي
trisd=0; portd=0;
فاين الدخل في الامر ذلك ..

شرح اخر ... لاخي العزيز باسم ماجد جزاه الله الف خير
نظرة عامة ..
هناك اكثر من دالة في المشروع
كل دالة مرتبطة بالاخرى
المهم

هو انا اريد ان اتاكد من القيمة الموجوده في البورت دي
لكن ليس في دالة المين
وانما في دالة اخرى تستدعي من المين
كمثال لو ضغط على الزر بورت بي 4 تعمل دالة وتسند قيمة للبورت دي 8
ولو رفعت الضغط على الزر تعمل دالة اخرى وتتاكد من القيمة التى على البورت دي .....

لكن انا جربت يتم التاكد في الدالة الرئسية تمام لكن في الداله الاخرى لايتفذ الشرط نهائي وهي هنا المشكلة ..


إذا كنت انا المقصود ب"البعض" ..
الكود المرفوع في اول مشاركة لا يتضمن اية اشارة لذلك لذلك بقيت كل الاحتمالات واردة وخاصة ان العادة جرت باستخدام التعليمة if في أكواد الدخول ..
والعادة دائما تكون غلابة .
ولايهمك اخي وانا اسف لو كنت فهمتني خطا انا فقط حاولت ان اوضح الفكرة فقط وليس بقصد الاساءة لاحد ..
بل على العكس انا اشكرك من كل قلبي على مجهودك معي من اجل حل مشكلتي فجزاك الله الف خير ..



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