مدتها با بیسیک کار کردم حالا سوئیچ کردم رو c
میدونم سوالم خیلی مبتدیانه است
با فشار هر بار یک کلید می خواهیم حالت یک led عوض بشه
اما نمیدونم چرا یکبار بیشتر اجرا نمیشه
به نظر شما مشکل از کجاست ؟
کد:while (1) { if (PINB.0==0){ PINC.0=!PINC.0; } }
مدتها با بیسیک کار کردم حالا سوئیچ کردم رو c
میدونم سوالم خیلی مبتدیانه است
با فشار هر بار یک کلید می خواهیم حالت یک led عوض بشه
اما نمیدونم چرا یکبار بیشتر اجرا نمیشه
به نظر شما مشکل از کجاست ؟
کد:while (1) { if (PINB.0==0){ PINC.0=!PINC.0; } }
ویرایش توسط masoud58 : 09-01-2016 در ساعت 01:06
سلام
یا اگر از کدویژن استفاده میکنی:کد:while (1){ if (PINB.0==0)PINC.0=0; else PINC.0=1; }
کد:while (1){ if (PINB.0==0)PORTC.0=0; else PORTC.0=1; }
اگر از کدویژن استفاده میکنی.....
while (1)
{
if ( ! ( PINB.0) )
{
PORTC.0 = ~PORT.0;
delay_ms(100);
}
}
شرمنده بابت اشتباه.....
ویرایش توسط microprocesor_2002 : 14-01-2016 در ساعت 10:28
حواسم به جمله "با هر بار فشار کلید حالت عوض بشه" نبود
برای دسترسی به ورودی از PIN و برای مقداردهی به خروجی باید از PORT استفاده کنی
کد:if(PINB.0==0) PORTC.0=~PORTC.0;
سلام
درست است که بحث استفاده از کلید ساده به نظر می رسد ولی گاهی کاربردی هم است. مخصوصا وقتی گزینه هایی در کنار آن بیاید
قسمت اول اینکه تا یک کلید زدید یک کاری انجام شود. سپس توسعه دهید که وقتی کلیدی زدید فقط یک بار آن کار انجام شود نه اینه تا دستان روی ان است مرتب آن کار انجام شود. تفاوت اینجاست که مثلا ارسالی قرار است با زدن کلید انجام شود ولی تا میزنید چند بار دیتا ارسال می شود ولی در روشن شدن یک led این موضوع به چشم نمی آید.
قسمت دوم اینکه این موضوع را بسط دهید برای دو و چند کلید. ولی وقتی این کار را انجام دادید می بینید انگار حجم برنامه یکم زیاد شد! در اینجا به این فکر می افتید یعنی میشه با چند خط چند کلید را خواند؟ و اینکه اگر کلید ها در روی پورت های مختلف و پشت سر هم نباشد چه می شود؟ اگر این رویه ابتدای کار را بخواهم انجام دهم که کلی if و else باید بنویسم !
اینجاست که واژه کاربردی بودن معنا پیدا می کند. نظر شما چیست؟