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

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

الصورة الرمزية اكترونى بشري
اكترونى بشري
:: مهندس جيد ::
تاريخ التسجيل: Apr 2010
الدولة: libya-tripoli
المشاركات: 201
نشاط [ اكترونى بشري ]
قوة السمعة:0
قديم 05-11-2012, 10:55 AM المشاركة 1   
افتراضي سؤال عن شيء فى البرمجة؟ Twitter FaceBook Google+



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

كود:
void main() {
char x;
cmcon=7;
portb=0;
trisb=0;
trisa.f0=1;
 while(1){
if(porta.f0==0){
portb.f0=~portb.f0;
delay_ms(250);
}


}
}
المشكلة فى الموضوع هى اننى طبقت المشروع على الحقيقة وجرت لى هذه المشكلة وهى اننى كلما ضغطت على سويتش وبقيت حالة البن a0 بصفر اضاءة اليدات لكن بمجرد رفع ايديى من على السويتش يطفى الليدد ؟
لااعرف ماهى سبب المشكلة هل عندما رفعت يدي من على السويتشات رجعت حالة البن a0 الى صفر ؟
واذا كان الجواب بنعم كيف اتبتها على حالتها حتى يشتغل البرنامج ملاحظة البرنامج اشتغل على البروتيس بى سويتش بوش بوتم ميه ميه ولااعرف سبب المشكلة معى فى الحقيقة اى نتظار ردكم اخوانى.

اعلانات

الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 10,061
نشاط [ حيدر علاج حسن ]
قوة السمعة:395
قديم 05-11-2012, 11:04 AM المشاركة 2   
افتراضي


قبل عبارة :
كود:
portb.f0=~portb.f0;
اضف هذه العبارة :
كود:
while(porta.f0==0){}
وبذلك فان الامر لن ينفذ ما لم ترفع يدك من المفتاح و تكون لك كامل السيطرة على البرنامج ..

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

الصورة الرمزية اكترونى بشري
اكترونى بشري
:: مهندس جيد ::
تاريخ التسجيل: Apr 2010
الدولة: libya-tripoli
المشاركات: 201
نشاط [ اكترونى بشري ]
قوة السمعة:0
قديم 05-11-2012, 11:22 AM المشاركة 3   
ha


قبل عبارة :
كود:
portb.f0=~portb.f0;
اضف هذه العبارة :
كود:
while(porta.f0==0){}
وبذلك فان الامر لن ينفذ ما لم ترفع يدك من المفتاح و تكون لك كامل السيطرة على البرنامج ..
اخى حيدر بارك الله فيك انا قمت بتعديل الكود كما قلت لى وقمن باضافة جملة التكرار التى تكرمت واعطيتنى اياها لكن الان اصبح الليد يضى 5 مرات ويطفى لااعرف ماهو السبب وهذا الكود بعد التعديل

كود:
void main() {
char x;
cmcon=7;
portb=0;
trisb=0;
trisa.f0=1;
 while(1){
if(porta.f0==0){
while(1){
portb.f0=~portb.f0;
delay_ms(250);
}

         }

}
}
ملاحظة اخى الكود يعمل على البروتيس سليم ميه فى الميه وينفد البرنامج بدون اى مشاكل تذكر ؟

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


الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 10,061
نشاط [ حيدر علاج حسن ]
قوة السمعة:395
قديم 05-11-2012, 12:11 PM المشاركة 4   
افتراضي


اخي انت لم تضف الجملة التي اعطيتك اياها ...
رجاءا دقق بها جيدا .. او اعمل لها نسخ و لصق مباشرة ...


الصورة الرمزية اكترونى بشري
اكترونى بشري
:: مهندس جيد ::
تاريخ التسجيل: Apr 2010
الدولة: libya-tripoli
المشاركات: 201
نشاط [ اكترونى بشري ]
قوة السمعة:0
قديم 05-11-2012, 02:25 PM المشاركة 5   
ha تفضل اخى الكريم


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

كود:
void main() { 
char x; 
cmcon=7;
 portb=0;
  trisb=0;
   trisa.f0=1;
    while(1){ 
    if(porta.f0==0){
      while(porta.f0==0){ }
     portb.f0=~portb.f0; 
     delay_ms(250); } } }


banna1980
:: مهندس متميز ::
تاريخ التسجيل: Apr 2010
الدولة: مصر - السويس
المشاركات: 409
نشاط [ banna1980 ]
قوة السمعة:0
قديم 05-11-2012, 03:21 PM المشاركة 6   
افتراضي


هناك حل جربه::

الغي جملة while تماما


الصورة الرمزية lovevb6
lovevb6
:: عضو فضي ::
تاريخ التسجيل: May 2010
الدولة: LIBYA-BENGHAZY
المشاركات: 1,479
نشاط [ lovevb6 ]
قوة السمعة:128
قديم 05-11-2012, 05:45 PM المشاركة 7   
افتراضي


السلام عليكم

اخي الكترو جرب هذا الكود

كود:
#define sw1 porta.f0
#define led1 portb.f0
#define on 1
#define off 0
#define pressed 0


void main()
{

trisb=0;                   
portb=0;
porta=0;
trisa=0b0000001;


    while(1)
    {
    if(sw1==pressed )
     {led1=on;



   }



 }



}
وهذه طريقه التوصيل



تحياتي لك بالتوفيق


الصورة الرمزية اكترونى بشري
اكترونى بشري
:: مهندس جيد ::
تاريخ التسجيل: Apr 2010
الدولة: libya-tripoli
المشاركات: 201
نشاط [ اكترونى بشري ]
قوة السمعة:0
قديم 05-11-2012, 07:02 PM المشاركة 8   
افتراضي تفضل اخى الكريم


هناك حل جربه::

الغي جملة while تماما
السلام عليكم اخى بانا جربت شلت جملة
while
بس كانت النتيجة انه مش بيستجيب للاموامر واعتقد ان الامر منطقى لانه لم بعمل تكرار للتشيك على السويتش فى انتظار حل اخر اخى بارك الله فيك

إضافة رد

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

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

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


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

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