السلام عليكم
void main() {
trisb.b2=0 ; // rb2 output
trisb.b3=0; // rb3 output
trisb.b4=0; // rb4 output
trisb.b5=0; // rb5 output
trisb.b6=0; // rb6 output
trisb.b7=0; // rb7 output
portb=0; // all pin from portb low
trisc.b2=1; // rc2 input
while(1){
if( portc.f2==0) // if push button
{portb.f2=1; // rb2 high
delay_ms(1000 ); // wait 1000ms
portb.f3=1; // rb3 high
delay_ms(1000 ); // wait 1000ms
portb.f4=1; // rb4 high
delay_ms(1000 ); // wait 1000ms
portb.f5=0; // rb5 low
delay_ms(1000 ); // wait 1000ms
portb.f6=1; // rb6 high
delay_ms(1000 ); // wait 1000ms
portb.f7=1; // rb7 high
delay_ms(1000 ); // wait 1000ms
}
else {
portb.f3=0; // rb3 low
delay_ms(1000 );
portb.f2=0; // rb2 low
delay_ms(1000 );
portb.f4=0; // rb4 high
}
}
}
الاوامر تنفد بمجرد الضغط على البوتون.
ما اريد تجربته هو اني ادا بقيت ضاغط على button ينفد البيك الاوامر بعد while .
و ادا تركت button ينفد الاوامر بعد else ,
وجزيل الشكر
|
السلام عليكم ورحمه الله ..
أخى الكريم السؤال يحتاج بعض التوضيح !!!
مثلا عند تشعيل البرنامج البك هيدخل يختبر البوتن وايذا كان مضغوط عليه هينفز اﻷوامر داخل حلقة while مباشرة وايذا كان غير مضغوط على البوتن هينفز اﻷوامر خارج حلقه while ..
السؤال هنا؟ هل عند تشغيل البرنامج ﻷول مرة تلبك هيدخل يختبر البوتن على طول وينفذ اﻷوامر حسب حالة البوتن ... ام عند تشغيل البرنامج ﻷول مرة هينتظر البك لحين الضغط على البوتن وبعد ذالك يعيد اختتبار البوتن اذا مضغوط ينفذ اﻷوامر داخل حلقة while وايذا لم يكن مضغوط عليه ينفذ اوامر خارج حلقه while ...
على العموم يمكنك استخدام اوامر التوجيه ... مثل أمر goto loop; وللتوضيح اليك هذ المثال ...
هتعمل حلقتين مت نوع while والحلقه اﻷولى هيكون فيها اﻷوامر التى تنفذ فى حين كان المفتاح مضغوط عليه ...
والحلقه الثانيه يتم وضع اﻷوامر اللتى تنفذ فى حين كان المفتاح غير مضغوط عليه ...
ولكن انت تعلم ان البك لا يمكن أن يخرج من حلقه while ابدااااا ...
ايذا الحل هو وضع امر شرط يختبر المفتاح هل المفتاح مضغوط عليه ايذا نفذ هذة اﻷوامر ... ونضع امر شرط أخر يختبر المفتاح ايذا كان المفتاح غيرمضغوط عليه ايذااا اذهب الى حلقة while الثانيه وهذا هيكون من خلال هذ اﻷمر goto loop; ...
وبنفس الفكرة هتعمل امر يختبر المفتاح هل المفتاح مضغوط عليه ايذا اذهب الى حلقة while اﻷولى وبنفس امر التوجيه هذا goto loop1; لو تلاحظ تم تغير العنوان الثانى فى العبارة اﻷمر اﻷول هو goto loop; واﻷمر الثانى هو goto loop1; لوتلاحظ يوجد فرق بين كلمة loop; انا اسف مش عارف اديلك مثال بالكود ﻷنى بعمل المشاركة دى من الموبايل ...
هحاول اعملك مثال . .
void() main{
while(1){
if(portb.fo==1){ نفذ هذة اﻷوامر }
if(portb.fo==0){ goto loop; }وهذا الشرط يجعل البك يخرج من حلقة while ويذهب الى العنوان loop: وطبعااا هذا العنوان هيتم وضعة فوق حلقة while الثانيه لكى يدخل البك فى داخلها وينفذ ما فيها من اوامر ....
مثل هكذا ..
loop:
while
ونضع اﻷوامر اللتى تنفذ فى حالة عدم الضغك على المفتاح ...
ارجو تكون الفكرة وصلتلك واسف مش عارف اشرح ﻷنى بستخدم الموبايل