آموزش ميكرو كنترلر AVR به زبان بيسيك || قسمت دوم

دستورات حلقه<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

دستور Do-Loop

اين دستور يه حلقه بينهايت ايجاد مي كند كه شما مي توانيد دستورات خودتان را دراين حلقه بنويسيد تا مدام توسط CPU تكرار شود. به عنوان مثال شما مي خواهيد كه يكي از بيت هاي پورت D به صورت يك چشكا زن عمل كنه و تا بي نهايت اين كار رو انجام بده كه برنامه رو به اين صورت مي نويسيم:

$regfile "m16def.dat"

$crystal=8000000

Config portd.0=output

  شروع حلقه    DO       '

Set portd.0  'portd.0 = 1

يك ثانيه تاخيرWait 1  ' 

Reset portd.0   'portd.0= 0

Wait 1

  پايان حلقه    Loop          '

 

End

در مثال بالا ميكرو تا ابد اين چند تا دستور رو انجام ميده و ديگه از اين حلقه هم بيرون نمياد!

البته در همين مثال شما مي توانستيد يك شرط بين دستورات بنويسيد تا ميكرو بتونه از اين حلقه بيرون بياد. مثلا يك ليد به ميكرو وصل كرده باشد و حالا اين كليد رو به صورت شرط درون اين حلقه مي نويسد. كه دستورات شرطي را در ادامه خواهيم گفت.

نوعي ديگري از حلقه loop هم هست كه تنها يك بار حلقه را اجرا مي كند (ولي دستورات داخل اون تا زماني كه شرط برقرار نشه اجرا ميشه) و بعد از اينكه شرط  حلقه محقق شد از حلقه بيرون مياد

.

Do

دستورات

.

.

.

شرط  Loop until

 

از اين نوع حلقه loop در ميكرو براي خواند از صفحه كليد زياد استفاده مي شود. به عنوان مثال شما يه صفحه كليد 12 تايي يا 16 تايي به ميكرو وصل كرده ايد و فرض مي كنيم شما عدد 5 را فشار مي دهيد با توجه سرعت اجرايي ميكرو شما قادر نخواهيد بود كه فورا دستون رو از روي صفحه كليد برداريد (لرزش دست) به همين علت مي بينيد كه يه هو 1000 بار عدد 5 رو از زير دست شما مي خونه و تمام برنامه به هم مي خوره. براي همين ما بعد از اينكه از صفحه كليد عدد 5 را خونديم ميكرو رو مي فرستيم درون اين حلقه و بهش ميگيم تا زماني در ون اين حقله بمون كه كاربر دستش رو از روي كليد ها بر داره. بنابراين ميكرو فقط يك عدد را از زير دستمان مي خونه. كه در ادامه به بحث صفحه كليد هم خواهيم پرداخت.

دستور FOR-NEXT

عملكرد اين دستور هم مانند همون حلقه LOOP مي باشد با اين تفاوت كه ما در اينجا يك شمارنده داريم و تا زماني كه عدد شمارنده به مقداري كه براش تعريف كرده اين نرسه دستورات داخل اين حلقه تكرار ميشه. به مثال زير توجه كنيد! ما مي خواهيم كه همون برنامه چشمك زن رو در اينجا دوباره اجرا كنيم اما با اين تفاوت كه مثلا 20 بار فقط اجرا بشن و بعدش ديگه اجرا نشن:

$regfile "m16def.dat"

$crystal=8000000

Config portd.0=output

Dim m as byte

For m=1 to 20 step 1

Set portd.0  'portd.0 = 1

يك ثانيه تاخيرWait 1  ' 

Reset portd.0   'portd.0= 0

Wait 1

Next m

End

خوب ما اميدم و درخط 4 يك متغيير از نوع بايت تعريف كرديم و در خط بعدي نوشتيم { براي m برابر با 1 باشد تا 20 و گام 1 } ما مقدار اوليه متغير m را برابر با 1 كرديم و بعد هم گفتيم STEP=1 يعني اينكه بعد از اجراي تمام دستورات داخل حلقه و رسيدن به دستور NEXT m يك واحد به m اضافه كن. كه در نهايت بعد از 20 بار اجرا شدن اين دستورات ميكرو از حلقه بيرون مياد. STEP گام حلقه مي باشد و شما مي توانيد هر عددي براي اون در نظر بگيريد كه بستگي به شما برنامه تان دارد مثلا اگر STEP 3 قرار داديد بعد از اجراي دستورات و رسيدن به NEXT m 3 واحد به مقدار m اضافه ميشه.

نكته: اگر گام شما در حلقه for برابر با عدد 1 هست ديگه نيازي نيست كه بنويسد STEP 1 و همچنين نوشتن نام متغيير بعد از NEXT هم الزامي نيست.

 

دستور while-wend

عملكرد اين دستور مانند حلقه for مي باشد با اين تفاوت كه براي رسيدن به مقدار شرط اون مي تونيد خودتون در برنامه اين شراط رو محقق كنيد. يعني اينكه با دستورات افزايشي يا كاهشي اين شرط رو ايجاد كنيد. مثال بالا رو براي اين نوع حلقه اينطور مي نويسيم:

 

 

$regfile "m16def.dat"

$crystal=8000000

Config portd.0=output

Dim m as byte

M=20

While m=0

Set portd.0  'portd.0 = 1

يك ثانيه تاخيرWait 1  ' 

Reset portd.0   'portd.0= 0

Wait 1

Decr m

wend

End

در اين برنامه ما در خط 5 مقدار پيش فرض m را برابر با 20 قرار داديم و در خط بعدي ابتداي حلقه و شرط حلقه رو ايجاد كرديم. يعني گفتيم كه تا دستورات داخل را مدام تكرار كن و زماني مي توني ديگه تكرار نكني و از حله بري بيرون كه m=0 شده باشد. و در خط 11 هم با هر بار اجراي دساورات بالايي يك واحد از 20 كم ميشه و خط بعدي هم يعني انتهاي حلقه. Wend . و خط آخر هم END مي باشد كه در هر برنامه اي كه ميكرو به اين دستور رسيد ديگه متوقف ميشه.!

و اما دستور IF

دستوري كه زياد كاربرد داره و در كل مي تونيد ميكرو رو باهاش كاملا تو چنگ بگيريد.( من كه زياد به اين دستور علاقه دارم)

اين دستور چندين حالت داره كه يكي يكي اونها رو توضيح ميديم:

1)         دستور   Then  شرط  IF

اين دستور اينو ميگه:  اگر اين شرط برقرار هست سپس دستور را جرا كن. و اگر هم شرط برقرار نيست دستور بعد از Then  را اجرا نكن و خط بعدي برنامه رو بخون.

نمونه كاربرد اين دستور براي مقايسه دو عد هست كه اگر دو عدد با هم برابر بود دستور رو اجرا ميكنه و اگر هم نبود دستور اجرا نيشه و خط بعدي برنامه اجرا ميشه.   به اين مثال توجه كنيد؟!

فرض مي كنيم كه ما از صفحه كليد يه عدد خونديم (به عنوان مثال يك رمز تك رقمي) حالا مي خواهيم كه اگر اين عدد با عدد رمز ما برابر بود LED روشن بشه و در غير اين صورت LED خاموش بشه.

$regfile "m16def.dat"

$crystal=8000000

Config portd.0=output

 فرض مي كنيم كه عدد از صفحه كليد خونده ميشه و تو K ريخته ميشه   Dim k as byte

Reset portd.0

If k=8  then  set portd.0

End

قبل از اينكه ميكرو به شرط برسه ما LED رو خاموش ميكنيم حالا اگر ما عدد 8 را از صفحه كليد وارد كرده باشيم خوب شرط برقرار ميشه و LED رو روشن ميكنه و اگر هم عددي غير از عدد 8 خونده باشه در نتيجه دستور

Set  portd.0 اجرا نميشه و LED‌ همچنان خاموش مي ماند

2)

Then  شرط IF

مجموعه دستورات مربوط به اين شرط صحيح

Else

 مجموعه دستورات مربوط به اين شرط غلط

End if

اگر شرط ما برقرار بود يعني صحيح بود خوب فقط مجموعه دستورات مربوط به اين شرط صحيح اجرا ميشه. و ميكرو ميره به END IF

در خط بعد يعني Else ما گفتيم در غير اين صورت مجموعه دستورات مربوط به اين شرط غلط رو انجام بده.

و خط آخر هم نوشيم end if يعني پايان اين دو اگر. مثلا ما مي تونيم مثال بالا رو هم اينطوري بنويسيم:

 

$regfile "m16def.dat"

$crystal=8000000

Config portd.0=output

 فرض مي كنيم كه عدد از صفحه كليد خونده ميشه و تو K ريخته ميشه   Dim k as byte

If k=8 then

Set portd.0

Wait 1

Reset portd.0

Wait 1

Else

Set portd.0

waitms 100

Reset portd.0

waitms 100

end if

end

اگر عدد ما برابر با 8 بود LED به مدت يك ثانيه روشن مي شود و بعد خاموش ميشود و ميكر به مدت يك ثانيه كاري انجام نمي دهد. اما اگر شرط برقرار نبود يعني عدد 8 از صفحه كليد خوانده نشده بود سپس ميكرو به مدت 100 ميلي ثانيه LED رو روشن مي كنه و بعد هم 100 ميلي ثانيه كاري انجام نميده و در آخر به END IF و بعد هم به END ميرسد.

3)

Then  شرط1 IF

مجموعه دستورات مربوط به اين شرط 1

Then شرط2 Elseif

 مجموعه دستورات مربوط به اين شرط 2

Else

مجموعه دستورات مربوط به اين شرط 3

End if

اگر شرط 1 برقرار بود دستورات مربوط به اين شرط اجرا خواهد شد و اگر شرط 1 برقرار نبود ولي شرط 2 برقرار بود دستورات مربوط به شرط2 اجرا خواهد شد و اگر هم شرط 2 برقرار نبود (شرط1 هم كه برقرار نبوده) دستورات بعد از Else اجرا مي شوند.

$regfile "m16def.dat"

$crystal=8000000

Config portd=output

If a=5 then

Set portd.0

Wait 1

Reset portd.0

Wait 1

Elseif a=6 then

Set portd.1

Wait 1

Reset portd.1

Wait 1

Else

Set portd.2

Wait 1

Reset portd.2

Wait 1

برنامه به اين صورت عمل ميكنه اگر عددي كه در متغيير A قرار دارد برابر باشد با 5 سپس LED متصل به پورت D.0 به مدت يك ثانيه خاموش و روشن ميشه.

اگر هم برابر با 5 نبود ولي برابر با 6 بود بنابراين LED متصل به پورت D.1 به مدت يك ثانيه روشن و خاموش ميشه .

و اگر هم برابر با 6 نبود يعني هر مقدار ديگري داشت LED متصل به پورت D.2 به مدت يك ثانيه خاموش و روشن ميشه.

خوب در اينجا به پايان قسمت دوم ميرسيم. منظر قسمت هاي بعدي باشيد.!

قسمت اول آموزش ميكروكنترلر AVR به زبان بيسيك.


مطالب مشابه :


برنامه نویسی میکروکنترلر pic به زبان c

دنیای میکروکنترلر ARM & AVR & PIC - برنامه نویسی از مبتدی به آموزش pic به زبان c .




آموزش AVR به زبان سی C

آموزش pic , برنامه نويسي به 8051 به زبان اسمبلي ,برنامه نویسی به زبان c ,محافظ صفحه




آموزش ميكرو كنترلر AVR به زبان بيسيك || قسمت دوم

آموزش pic , برنامه نويسي به pic به زبان بیسیک ,8051 به زبان اسمبلي ,برنامه نویسی به زبان c




آموزش گام به گام برنامه نویسی AVR به زبان C

اصول و قوانین برنامه نویسی به زبان C دانلود مقاله آموزش گام به گام برنامه میکرو pic




برنامه نویسی به زبان Basic برای میکروکنترلرهای PIC

برنامه نویسی به زبان Basic برای حافظه داده EEPROM تراشه PIC را به ترتیب درون اموزش رباتیک و




دانلود کتاب آموزش برنامه نویسی به زبان C

دانلود کتاب آموزش برنامه نویسی به های خوب/pic/avr آموزش برنامه نویسی به زبان c.




برنامه نویسی به زبان Basic برای میکروکنترلرهای PIC

برنامه نویسی به زبان Basic برای داده EEPROM تراشه PIC را به ترتیب آموزش نرم




دانلود کتاب آموزش مبانی کامپیوتر و برنامه نویسی به زبان c++

های الکترونیک آموزش انواع و برنامه نویسی به زبان c++ pic دانلود




برچسب :