براي آموزش اين ميكرو از كامپايلر 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 رسيد كه ديگه ميكرو كاملا متوقف ميشه. ديگه اين برنامه رو اجرا نميكنه. تا زماني كه ريست بشه!

خوب فعلا چون تعداد دستورات كمي رو آموزش داديم ديگه از اين بيشتر نميشه مثال هاي خوبي بزنم انشاء الله در قسمت بعدي اين كار رو انجام ميدم.

 

آموزش ميكرو كنترلر AVR به زبان بيسيك (2) ( آموزش AVR)

!!در صورتی که در قسمت نظرات اسقبال شود ادامه آموزش رو می نویسم!!