خانه / آموزش میکروکنترلرهای AVR / آموزش برنامه نویسی مقدماتی BASIC – دستورات اولیه

آموزش برنامه نویسی مقدماتی BASIC – دستورات اولیه

آموزش برنامه نویسی مقدماتی BASIC – دستورات اولیه

آموزش برنامه نویسی, مهم ترین بخش یک میکروکنترلر است, چراکه بدون آشنایی با شیوه های برنامه نویسی هرچه مقدار هم دستورات را حفظ باشیم به ما کمکی نمی کند.

نیازی به حفظ کردن دستورات نیست, تنها کافی ست بدانید چنین دستوری وجود دارد, در اصل برنامه نویسی نیازی به خلاقیت شما بستگی دارد, نه به حفظ بودن فرمان ها و دستورات یک نرم افزار و این تنها با انجام پروژه های متعدد و کسب تجربه در هریک از آن ها به وجود خواهد آمد.

در این بخش آموزش برنامه نویسی در محیط نرم افزار BASCOMAVR را آغاز می کنیم. برنامه ها را در حالت کلی فرا خواهید گرفت و در ادامه با شیوه ها و ترفندهای برنامه نویسی برای استفاده از دستورات آشنا خواهید شد.

آموزش برنامه نویسی مقدماتی BASIC - دستورات اولیه

فرم کلی یک برنامه در نرم افزار برنامه نویسی BASCOMAVR

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

1- میکروکنترلر مورد استفاده خود را انتخاب کنید.

2- فرکانس کار میکروکنترلر را تعیین کنید.

3- امکانات میکروکنترلری را که می خواهید در برنامه از آن ها استفاده کنید را پیکربندی کنید.

4- متغیرهای مورد نیاز خود را نام گذاری کنید.

5- برنامه اصلی خود را پیاده کنید.

با این کار برنامه شما با نظم خاص نوشته شده و امکان رفع ایرادات احتمالی آن آسان خواهد بود.

برنامه ای را که در حال نوشتن آن هستید, ممکن است بسیار پیچیده شود, برای جلوگیری از ای کار راه حلی وجود دارد. در جلوی هر خط از برنامه مقصود خود را بیان کنید, برای این کار بعد از نوشتن خط دستور خود از علامت (‘) استفاده کنید یا اینکه از دستور REM استفاده کرده و توضیحات خود را در جلوی آن بنویسید.

توضیحات مربوطه      ‘      دستورات مورد نظر برنامه

دستورات مورد نظر برنامه   REM    توضیحات مربوطه

در ادامه کار دستورات را طبقه بندی کرده و به ذکر مشخصات آن ها می پردازیم.

دستورات اولیه

:: معرفی میکرو

$REGFILE = “Micro”

Micro : نام تراشه مورد استفاده

اولین مرحله برای نوشتن یک برنامه, مشخص کردن نام میکروی مورد استفاده است. برای نوشتن نام میکروکنترهای AVR طبق دسته بندی های خاصی به صورت زیر استفاده می کنیم.

میکروکنترلرهای AVR سری هایی که دارای کلمه ATtiny هستند:

$REGFILE = “ATtiny12.dat”          ‘ATtiny 12

$REGFILE = “ATtiny13.dat”          ‘ATtiny ۱۳

$REGFILE = “ATtiny15.dat”          ‘ATtiny ۱۵

$REGFILE = “ATtiny22.dat”          ‘ATtiny 22

$REGFILE = “ATtiny2313.dat”          ‘ATtiny 2313

$REGFILE = “ATtiny24.dat”          ‘ATtiny 24

$REGFILE = “ATtiny25.dat”          ‘ATtiny 25

$REGFILE = “ATtiny26.dat”          ‘ATtiny 26

$REGFILE = “ATtiny44.dat”          ‘ATtiny 44

$REGFILE = “ATtiny45.dat”          ‘ATtiny 45

$REGFILE = “ATtiny461.dat”          ‘ATtiny 461

$REGFILE = “ATtiny84.dat”          ‘ATtiny 84

$REGFILE = “ATtiny85.dat”          ‘ATtiny ۸۵

$REGFILE = “ATtiny861.dat”          ‘ATtiny 861

نکته : در ویرایش های قدیم BascomAVR به جای ATtiny از AT و بعد از شماره تراشه, DEF گذاشته می شوند (AT12def.dat).

میکروکنترلر های AVR سری های PWM:

$REGFILE = “AT90pwm2_3.dat”          ‘AT90pwm2,AT90pwm3

میکروکنترلر های AVR سری های Z-LINK:

$REGFILE = “86RF401.dat”          ‘AT86RF401

میکروکنترلر های AVR سری های CAN:

$REGFILE = “M128CAN.dat”          ‘AT90CAN128

میکروکنترلر های AVR سری های ATmega و Xmega:

$REGFILE = “M8DEF.dat”          ‘ATmega 8

$REGFILE = “M88DEF.dat”          ‘ATmega 88

$REGFILE = “M8515.dat”          ‘ATmega 8515

$REGFILE = “M8535.dat”          ‘ATmega 8535

$REGFILE = “M64DEF.dat”          ‘ATmega ۶۴

$REGFILE = “M649DEF.dat”          ‘ATmega ۶۴۹

$REGFILE = “M645DEF.dat”          ‘ATmega ۶۴۵

$REGFILE = “M644DEF.dat”          ‘ATmega ۶۴۴

$REGFILE = “M603DEF.dat”          ‘ATmega ۶۰۳

$REGFILE = “M406DEF.dat”          ‘ATmega ۴۰۶

$REGFILE = “M32DEF.dat”          ‘ATmega ۳۲

$REGFILE = “M329DEF.dat”          ‘ATmega ۳۲۹

$REGFILE = “M325DEF.dat”          ‘ATmega ۳۲۵

$REGFILE = “M324PDEF.dat”          ‘ATmega ۳۲۴P

$REGFILE = “M323DEF.dat”          ‘ATmega ۳۲۳

$REGFILE = “M2560DEF.dat”          ‘ATmega ۲۵۶۰

$REGFILE = “M2561DEF.dat”          ‘ATmega ۲۵۶۱

$REGFILE = “M16DEF.dat”          ‘ATmega ۱۶۹

$REGFILE = “M168DEF.dat”          ‘ATmega ۱۶۸

$REGFILE = “M165DEF.dat”          ‘ATmega ۱۶۵

$REGFILE = “M164PDEF.dat”          ‘ATmega ۱۶۴P

$REGFILE = “M163DEF.dat”          ‘ATmega ۱۶۳

$REGFILE = “M162DEF.dat”          ‘ATmega ۱۶۲

$REGFILE = “M161DEF.dat”          ‘ATmega ۱۶۱

$REGFILE = “M128DEF.dat”          ‘ATmega ۱۲۸

$REGFILE = “M1281DEF.dat”          ‘ATmega ۱۲۸۱

$REGFILE = “M1280DEF.dat”          ‘ATmega ۱۲۸۰

$REGFILE = “M103DEF.dat”          ‘ATmega ۱۰۳

میکروکنترلر های AVR سری USB:

$REGFILE = “USB1287.dat”          ‘AT90USB1287

:: فرکانس کار میکرو

$CRYSTAL = Var

Var :  مقدار فرکانس کاری میکروکنترلر AVR بر حسب هرتز Hz

$CRYSTAL = 8000000          ‘۸MHz

$CRYSTAL = 16000000          ’۱۶MHz

:: استفاده از کتابخانه ها در برنامه نویسی میکروکنترلرهای AVR

نرم افزار Bascom-AVR بعضی از وسایل جانبی را تحت پوشش قرار داده, مانند LCD های رنگی, برای این نوع قطعات کتابخانه هایی ساخته شده و برای کار با این وسایل باید نام کتابخانه را فراخوانی کنید.

$LIB “libname1″ [,”libname2″]

libname : نام کتابخانه مورد نظر

نکته : علامت های [] به معنی این است که شما در صورت نیاز حالت داخل این علامت را می نویسید و در برنامه از نوشتن خود این علامت ها خودداری کنید.

$LIB “glcdSED.LBX”          ‘SED استفاده از ال سی دی های سری

:: استفاده از زبان اسمبلی در میان زبان برنامه نویسی بیسیک Basic

در صورت لزوم می توانید از زبان اسمبلی در برنامه خود استفاده کنید. برای شروع از ASM$ و برای پایان قسمت اسمبلی از ENDASM$ استفاده کنید.

$ASM

.

.

$ENDASM

:: تعیین آدرس شروع برنامه ریزی حافظه FLASH – دستوری اختیاری

$ROMSTART = ADDRESS

ADDRESS : آدرس شروع برنامه ریزی که به صورت HEX نوشته می شود.

نکته : مقادیر HEX را با علامت H& و مقادیر باینری را با علامت B& شروع کنید.

$ROMSTART = &H030F

:: حذف دستورات تاخیری

$SIM

این دستور باعث می شود که تمام دستورات تاخیری که در ادامه گفته خواهد شد را در برنامه نادیده می گیرد و اگر از این دستورات تاخیری در برنامه استفاده کرده اید, بی اثر خواهند بود. کاربرد این دستور تنها در زمان شبیه سازی برنامه در محیط شبیه سازی BASCOM می باشد که باعث افزایش سرعت عمل شبیه سازی می شود.

نکته : این دستور مقدار تمام دستورات تاخیری را صفر در نظر می گیرد, پس تنها در زمان شبیه سازی از این دستور استفاده نمائید تا برنامه شما دچار مشکل نشود.

:: مقدار اندازه حافظه جانبی

$xRAMSIZE = Var

در زمانی که از حافظه جانبی متصل به میکرو استفاده می کنید باید اندازه مقدار ظرفیت آن را مشخص کنید. در اینجا Var مقدار ظرفیت حافظه جانبی می باشد.

$XRAMSIZE = &HFFFF

:: تعیین آدرس شروع برنامه ریزی حافظه جانبی – دستور اختیاری

$XRAMSTART = ADDRESS

ADDRESS : آدرس شروع برنامه ریزی که به صورت HEX نوشته می شود.

نکته : مقادیر HEX را با علامت H& و مقادیر باینری را با علامت B& شروع کنید.

$XRAMSTART = &H0000

:: استفاده از متغیر در برنامه

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

DIM var AS [XRAM/SRAM/ERAM] type [AT location] [OVERLAY]

var :  نام متغیر

XRAM : استفاده از فضای حافظه جانبی برای متغیر

SRAM : استفاده از فضای حافظه SRAM برای متغیر

ERAM : استفاده از حافظه EEPROM برای متغیر

type : نوع متغیر (*)

LOCATION : با این گزینه در صورت نبود فضا در آدرس مورد نظر, می توان متغیر را به صورت هوشمند در اولین فضای خالی حافظه جای داد. (اختیاری)

OVERLAY : فضایی برای متغیر در نظر نمی گیرد و فقط در زمان استفاده در آن داده می ماند. (اختیاری)

(*) : برای هر متغیر محدودیت فضا وجود دارد که انواع متغیرها در جدول زیر مشاهده می کنید.

آموزش برنامه نویسی مقدماتی BASIC - دستورات اولیه

نکته : متغیر STRING از نوع رشته و متنی است و برای نگه داری متن و رشته استفاده می شود.

:: آرایه

نوعی متغیر وجود دارد که دارای یک نام, اما چندین زیرنام می باشد. به این متغیر آرایه گفته می شود. برای مثال در صورتی که ما دستور را به صورت زیر بنویسیم :

DIM A(5) AS BYTE

ما با این دستور دارای ۵ متغیر با نام A هستیم و نام هر متغیر به صورت A(1) تا A(5) است. می توان به جای عدد قرار گرفته در پرانتز, از یک متغیر دیگر استفاده کرد که عدد مورد نظر ما را در خود دارد مانند A(N) که در متغیر N مقدار ۱ به صورت فرضی قرار گرفته باشد.

DIM ALI AS BIT

DIM D(10) AS BIT

DIM A AS BYTE , B AS INTEGER , C AS BYTE

DIM S6 AS BYTE

DIM FARHAD AS STRING *20

DIM B2B AS XRAM BYTE

DIM NN AS ERAM LONG

DIM L AS DOUBLE AT 160

:: حالتی دیگر برای تعریف یک متغیر

DEFxxx VAR

VAR : نام متغیر

XXX : نوع متغیر

DEFBIT ALI

DEFDOUBLE A4

:: تعریف متغیر همراه با انصاب مقدار یا حالت

CONST symbol = numconst

CONST symbol = stringconst

CONST symbol = expression

numconst : یک مقدار عددی که در داخل متغیر قرار می گیرد.

stringconst : یک رشته (متن) که در می خواهید در درون متغیر قرار گیرد.

expression : یک عملیات بر روی یک عدد را رشته و حاصل آن را در درون متغیر قرار می گیرد.

CONST A1 = 124

CONST A2 = “FARHAD”

CONST A3 = COS (30)     ‘کسینوس ۳۰ درجه گرفته شده و حاصل در متغیر قرار می گیرد

:: تغیر نام متغیر و پورت ها

فرض کنید در یک پروژه در زمان کار با پورت ها برای مثال دو پایه از پورت D را به دو موتور وصل کرده اید. حال به جای اینکه شماره پایه را که به موتور وصل است در طی برنامه حفظ کنید, با این دستور می توان نام آن ها را به MOTOR1 و MOTOR2 تبدیل کرد.

newvar ALIAS oldvar

newvar  : نام دلخواه

oldvar : متغیر یا نام پورت و یا پایه مورد نظر برای تغیر نام

MOTOR1 ALIAS PORTD.0

MOTOR2 ALIAS PORTD.1

آموزش برنامه نویسی avr به زبان بیسیک | بخش دوم

 موسسه خیریه حمایت از کودکان مبتلا به سرطان

 دسته اصلی : زبان برنامه نویسی BASIC

 نویسنده : electronics98

 تاریخ انتشار :

پاسخ دهید

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

مطلب پیشنهادی

I2C-AVR

آموزش برنامه نویسی پیشرفته BASIC – ارتباط سریال I2C

آموزش برنامه نویسی پیشرفته BASIC – ارتباط سریال I2C پایه های مورد استفاده پروتکل I2C …