سلام
دوست عزیز منظورتون اینه که میخواین طوری برنامه بنویسین که برنامه دو تا while داشته باشه؟
چیزی که من متوجه شدم اینه که شما برنامتون رو به دو قسمت تقسیم کردین و هر قسمت رو میخواین تو یه دونه while قرار بدین، اولا اصلا چرا اینکارو انجام بدین کل برنامتون رو تو یه while بنویسین و اگر برای جدا کردن قسمت ها از همدیگه:
#اگه قسمت اول تعداد دفعات کاری که انجام میده مشخصه ار حلقه for استفاده کنید
#اگر زمان رخ داد مشخص نیست با استفاده از یک tag از اینتراپت استفاده کنید
اگر هم کارتون اینه که دو تا while داشته باشید کافی هست برای while اول شرطی رو بزارید که در زمان مورد نیاز نقض بشه مثلا (while(tag==0 و از حلقه اول خارج میشه و به حلقه بعدی میره این دو حلقه تو main برنامه هست.
امیدوارم که تونسته باشم سوالتون رو پاسخ داده باشم.
با احترام
وبلاگ اطلاعات در مورد کنترل صنعتی و PLC و میکروکنترلرهای AVR و ARM
www.armplc.ir
شما در while اول شرط بزارید که اگه پین فلان 1 شد حلقه را ترک کنه و به حلقه ی بعدی بره. روش اولشرط درون پرانتز while هستش:
مثال:
(while (pinX.Y==1
{
//برنامه ی حلقه ی شماره یک
}
//-----------------
(while(1
{
//حلقه ی شماره دو
}
البته منظور از pinX.Y همون دستوری هستش که باهاش میشه پین هارو خوند، شما اون دستور را بجای این دستور بزارید. (دلیل اینکه دستور اصلی را ننوشتم اینه که شما نوع میکرو را مشخص نکردید.)
روش دوم: استفاده از یک شرط و دستور ;break
(while(1
{
;if pinX.Y==1 break
//حلقه ی شماره یک
}
(while(1
{
//حلقه ی شماره دو
}
با دستور braek میکرو از حلقه ی اول خارج میشه و به حلقه بعدی میره.
===================
ربطی به اینتراپت نداره، ایشون بد مثال زدند.
دیدگاه