آموزش جامع برنامه نویسی میکروکنترلر AVR به زبان کدویژن درس سوم دستورات حلقه

آموزش جامع برنامه نویسی میکروکنترلر AVR به زبان کدویژن درس سوم دستورات حلقه 1

دستورات حلقه :

حلقه یعنی چه؟ حلقه یعنی یک مسیر بسته ای که CPU بطور مداوم دستورات داخل آن را اجرا می کند! (البته به نوع حلقه و شرط حلقه هم بستگی دارد)

حلقه for:

تعریف دستور for :

(گام شمارنده حلقه ; شرط حلقه ; مقدار اولیه شمارنده حلقه)for

}

دستور یا مجموعه دستورات

{

مثال:

Int a;
For (a=0; a<19; a++)

{
PORTD=0x00;
delay_ms(300);
PORTD=0xff;
delay_ms(300);
}

کارکرد برنامه:

در این برنامه یعنی دستورات داخل حلقه، ابتدا پورت D رو کلا خاموش میکنه (۰) و ۳۰۰ میلی ثانیه صبر میکنه و بعد پورت D رو کلا روشن میکنه (۱) و بعد ۳۰۰ میلی ثانیه صبر میکنه و همین طور این ۴ تا دستور رو تکرار میکنه. تعداد تکرار این دستور ۱۹ بار است

نکته:

به جای a++ می توانستیم بنویسیم a=a+2 یا) a+=2 یعنی ۲ واحد ۲ واحد ) یا هر مقدار دیگر بنویسیم
اگر می خواستیم حلقه پایین شمار باشد باید به این صورت عمل کنیم:

For (a=19; a>0; a–)

حلقه while :

 ساختار حلقه به این صورت می باشد که باید شرط درون () پرانتز یا صفر باشه یا یک که اگر صفر باشه حلقه اجرا نمیشه یعنی CPU از درون حلقه بیرون می اید و اگر یک باشه حلقه به یک حلقه بی نهایت تبدیل میشه و CPU دستورات داخل حلقه را تا بی نهایت تکرار می کند. حالا می تونیم داخل () شراط یا یک متغیر قرار داهیم تا توسط این شرط یا متغیر، حالتهای صفر یا یک را ایجاد کنیم و در عمل حلقه را کنترل کنیم. که  به چند روش حلقه را به صورت زیر می نویسیم:

(شرط)while

{

دستور یا مجموعه دستورات

}

مثال ۱ :

while (1); ایجاد یک حلقه بی نهایت بدون اجرای هیچ دستوری

مثال ۲ :

while (1)

{
دستورات برای اجرای بی نهایت
}

مثال ۳ :

unsigned char x=2,y=5;
while (y > x)

{
دستورات
}

در این برنامه تا زمانی دستورات داخل حلقه تکرار میشود که متغیر y بزرگتر از x باشد. و در غیر این صورت از حلقه بیرون می اید، هر بار CPU به انتهای حلقه رسید دوباره به ابتدای حلقه میره و شرط رو چک میکنه اگر شرط برقرار بود دستورات داخل حلقه دوباره اجرا میشه در غیر اینصورت از حلقه خارج میشه. به برنامه زیر توجه کنید:

unsigned char x=0;
while (x){
دستورات
}

چون متغیر x=0 می باشد پس CPU هیچ گاه وارد حلقه نمی شود و دستورات داخل حلقه هم اجرا نمیشه.

حلقه do … while:

تعریف دستور do…while:

do

{

دستور یا مجموعه دستورات

;(شرط)while {

 این حلقه برعکس حلقه بالایی که اول شرط چک می شود و بعد اجازه ورود به حلقه را می داد در اینجا ابتدا دستورات داخل حلقه حداقل برای یک بار اجرا می شوند و در انتهای حلقه شرط حلقه برسی می شود که اگر شرط برقرار بود اجازه ورود مجدد رو دارد در غیر اینصورت اجازه ورود مجدد ندارد و فقط همون بار اول که اجرامی شود.

unsigned char x=2,y=5;
 do{
 دستورات
 } while (y > x);

 به مثال زیر توجه کنید. در این مثال تا وقتی که مقدار i کوچیکتر از ۱۰ می باشد این حلقه تکرار میشه با هر بار اجرای حلقه یک واحد به متغیر i افزوده می شود تا به مقدار ۱۰ برسد و الان دیگه شرط برقرار نیست و از حلقه خارج میشه.

 unsigned char i;
 do{
  i++;
 } while (i < 10);

یا در مثال زیر مقدار اولیه i برابر ۵ می باشد و شرط حلقه متغیر i میاشد که با صفر شدن آن دیگر حلقه تکرار نخواهد شد و از آن خارج می شود. با هر بار اجرای حلقه یک واحد از متغیر i کم می شود تا در نهایت به صفر برسد.

 unsigned char i=5;
 do{
  i–;
 } while (i);

بیشتر بخوانید

آموزش برنامه نویسی میکروکنترلر AVR به زبان کدویژن درس ششم اشاره گرها Pointer

 

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

چهار × سه =