بازدیدها: 356
براي آموزش اين ميكرو از كامپايلر BASCOM و پروتيوس 7.2 استفاده مي كنيم.
زبان بيسك يك زبان راحت و سريع مي باشد يعني اينكه آنچه شما بر زبان مي آوريد رو اگر درقالب دستورات بيسكام بنويسيد اون كاري كه شما از ميكرو مي خواهيد رو براي شما انجام مي دهد. اكثر دستورات بيسكام يك واژه معني دار انگليسي مي باشد كه اگر معني اونا رو بدونيد ديگه دستورات براي همشه تو ذهن شما مي ماند.
ابتدا دستوراتي كه براي شروع يك برنامه لازم است بدانيم را توضيح مي دهيم:
معرفي ميكرو:
اولين دستور مهم و هميشگي كه توي همه برنامه ها بايد بنويسيم دستور $regfile هست كه ما به كمك اين دستور ميكرو خودمون رو به كامپايلر معرفي مي كنم و كامپايلر هم بر اساس اين مدل ميكرو دستورات را به زبان ماشين ترجمه مي كند. (فايل هاي هگز و باينري)
مثلا شما مي خواهيد از ميكروي ATMEGA8 استفاده كنيد كه به اين صورت اونو معرفي مي كنيد:
$regfile= "m8def.dat"
كه m8 معادل atmega8 و def.dat كه اكثرا ثابت هست.
معرفي كريستال:
براي معرفي كريستالي كه به ميكرو وصل مي كنيم از دستور $crystal استفاده مي كنيم به عنوان مثال اگر شما مي خواهيد به ميكرو كريستال 12 مگاهرتزي وصل كنيد اين طوري مي نويسيم:
فركانس را بر حسب هرتز مي نويسيم $crystal= 12000000
متغييرها:
براي تعريف كردن يك متغيير از دستور Dim استفاده مي كنيم.Dim= Dimension يعني (بعد،اندازه) قالب دستوري آن به شكل زير هست:
Dim Var as type
كه Var نام متغيير مان هست كه شما هر اسمي كه دوست داريد مي تونيد به جاي اون بزاريد. و type هم اندازه يا مقدار اون متغيير هست.
محدوده رنج
|
اندازه بر حسب بيت
|
نوع متغيير
|
0 يا 1
|
يك بتي
|
Bit
|
0 تا 255
|
8 بيت
|
Byte
|
32767 تا 32767-
|
16 بيتي
|
Integer
|
0 تا 65536
|
16 بيتي
|
Word
|
214783647 تا 2147483648-
|
32 بيتي
|
Long
|
1.5*10^-45 تا 3.4*10^38
|
32 بيتي
|
Single
|
–
|
0تا 254 بايت
|
String
|
مثلا ما مي خواهيم يك متغيير تعريف كنيم كه اين متغيير 16 بيتي هست. همانطور كه در جدول بالا مشاهد مي كنيد 2 تا 16 بيتي داريم يه word كه شامل اعداد منفي نميشه و يه Integer كه نصف اون مال اعداد مثبت و نصف ديگه مال اعداد منفي.
Dim mc8051 as word يا Dim mc8051 as Integer
براي قرار دادن اعداد در متغيير ها اگر فقط عدد خالي بنويسيم كامپايلر اين عدد را در مبناي دسيمال حساب مي كند. كه اگر بخواهيم در مباناي هگز بنويسم به اين صورت عمل مي كنيم: &H و براي اعداد باينري هم به اين صورت : &B
Dim a as byte
Dim b as byte
Dim c as byte
A= 230
B= &hE6
C= &B11100110
در مثال بالا مي توانيم به صورت زير هم بنويسم:
Dim a as byte , b as byte , c as byte
A= 230 : B= &hE6 : C= &B11100110
براي اينكه تعداد خطهاي برنامه زياد نشه مي تونيم به اين صورت عمل كنيم كه براي تعريف متغيير ها از علامت , استفاده مي كنيم و براي اينكه چند دستور رو در يك خط بنويسم هم بين دستورات : مي گذاريم.
دستور Const
از اين دستور براي تعريف كردن يك ثابت استفاده مي كني يعني اينكه ما مي توانيم يك عدد يا تعدادي كاراكتر را به يك ثابت نسبت دهيم. و رد طول برنامه هرجا كه لازم داشتم از اون استفاده كنيم.
هر جا كه ما عدد 1378 رو لازم داشتيم كافي فقط اسم اون يعني a رو بنويسيم Const a= 1378
Const a="MC8051"
هر جا كه خواستيم عبارت MC8051 رو بنويسيم فقط كافي كه اسم ثبات اون يعني A رو بنويسيم
براي نوشتن يك كلمه يا چند كاراكتر بايد حتما كاراكتر ها را درون " " قرار دهيم.
دستورات افزايشي و كاهشي
براي افزايش يك واحدي يك متغيير مي توانيم از Incr استفاده كنيم و براي كاهش يك واحدي يك متغيير از Decr استفاده كنيم.
Dim mgh as byte
Mgh=56
Incr mgh "mgh=57
Incr mgh "mgh=58
Decr mgh "mgh=57
Decr mgh "mgh=56
Decr mgh "mgh=55
براي نوشتن يك توضيح يا راهنمايي در خط هاي برنامه مي توانيد از " استفاده كنيد.
دستورات تاخير
براي ايجاد تاخير مي توانيم از سه نوع تاخير استفاده كنيم:
1) دستور wait
از اين دستور مي توانيد براي ايجاد تاخير در رنج هاي ثانيه اي استفاده كنيد: wait 5 يعني 5 ثانيه توقف كن.
2) دستور waitms
از اين دستور مي توانيد براي ايجاد تاخير در رنج هاي ميلي ثانيه اي استفاده كنيد: waitms 5 يعني 5 ميلي ثانيه توقف كن. كه مي تونيد از 1 ميلي ثانيه تا 65535 ميلي ثانيه بهش بديد.
1) دستور waitus
از اين دستور مي توانيد براي ايجاد تاخير در رنج هاي ميكرو ثانيه اي استفاده كنيد: waitus 5 يعني 5 ميكرو ثانيه توقف كن. كه مي تونيد از 1 ميلي ثانيه تا 255 ميكرو ثانيه بهش بديد.
دستورات I/O
براي استفاده از پورت هاي AVR حتي يك بيت اون بايد اول برنامه اون پورت يا پين رو پيكره بندي كنيم كه به كمك دستور config اين كا رو انجام ميديم.
Config porta=output يا config porta=Input كه بسته به نوع ميكرو و تعداد پورتها اوها رو پيكره بندي كنيد مثلا من در اينجا پورت A را به عنوان ورودي و يه بار ديگه به عنوان خروجي معرفي كردم.
همچنين اگه شما بخواهيد يكي از پين هاي پورت مثلا A رو ورودي و يه پين ديگه رو خروجي تعريف كنيد به صورت زير عملي مي كنيم:
Config porta.2=Output
Config porta.3=Input
كه بسته به نوع ميكرو ما از پورت A تا پورت F داريم.
مثلا atmga16 ,atmga32 چهار پورت دارند با اسم هاي A,B,C,D
خوب ديگه فعلا تا اينجا كافي به كمك اين دستورات كه تا اينجا خونديم چند تا مثال مي زنيم:
$regfile= "m16def.dat"
$crystal= 8000000
Config portb= output
Dim mgh as byte
Mgh=20
Portb=mgh "port b = 20
Waitms 500
Incr mgh
Portd= mgh "port b = 21
Waitms 1000
End
در خط اول مدل ميكرو رو معرفي كرديم و خط دوم هم فركانس كريستال ميكرو رو مشخص كرديم. خط سوم پورت B رو به عنوان خروجي تعريف كرديم. و خط چهارم هم يك متغيير به نام mgh كه از نوع بايت مي باشد تعريف كرديم. خط پنجم امديم و به mgh مقدار 20 رو داديم. خط ششم هم محتواي mgh رو روي پورت B ريختيم. خط بعدي هم به مدت 500 ميلي ثانيه ميكرو رو در همين حالت متوقف كرديم و در خط بعدي يك واحد به Mgh اضافه كرديم كه مي شود 21 و در خط بعدي هم محتواي Mgh كه عدد 21 است رو روي پورت B ريختيم و در خط آخر هم به مدت 1000 ميلي ثانيه ميكرو رو متوقف كرديم و در پايان هم به END رسيد كه ديگه ميكرو كاملا متوقف ميشه. ديگه اين برنامه رو اجرا نميكنه. تا زماني كه ريست بشه!
خوب فعلا چون تعداد دستورات كمي رو آموزش داديم ديگه از اين بيشتر نميشه مثال هاي خوبي بزنم انشاء الله در قسمت بعدي اين كار رو انجام ميدم.
1 Comment
خیلی عالی بود .