153
1 ی س ی و ن ه م ا رن ب ط ی ح مBASCOM 4

AVR2

Embed Size (px)

Citation preview

Page 1: AVR2

1

نویسی برنامه محیطBASCOM

4

Page 2: AVR2

2

محيط منوهاي معرفي BASCOM

AVR ميكروكنترلرهاِي�

Page 3: AVR2

3

FILEمنوِي

( جدید فایل (FILE NEWایجادهستید آن در برنامه نوشتن به قادر شما که جدید پنجره یک گزینه این انتخاب با

شود . می ایجاد( فایل کردن ( OPEN FILEباز

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

BASCOM استاندارد بصورت را می . ASCIIفایلها شمکا بنابراین کند می ذخیرهمثل ویرایشگری از سپس NOTEPAD توانید و کنید استفاده برنامه نوشتن برای. دهید انتقال محیط به آنرا

فایل ( (CLOSE FILEبستنابتدا . اید کرده ایجاد تغییری فایل در اگر بندد می را فعال برنامه پنجره گزینه این

نمایید . ذخیره را آن بستن از قبل باید فایل (FILE SAVE )ذخیره

بصورت فایل ذخیره به قادر شما گزینه این بود .ASCIIبا خواهید کامپیوتر در بعنوان کردن (FILE SAVE AS)ذخیره

. کنید ذخیره دیگر نام با را موجود فایل بود خواهید قادر گزینه این با

Page 4: AVR2

4

... FILE ادامه منوی

فایل نمایش (FILE PRINT PREVIEW)پرینت

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

یل فا (FILE PRINT)پرینت

نمایید . پرینت را برنامه در موجود فایل توانید می شما گزینه این با فایل ( (CLOSE FILEبستن

محیط از بود خواهید قادر شما گزینه این در BASCOMبا ولی شوید خارجاید , نکرده ذخیره را آن و اید داده تغییری تان برنامه در شما که صورتی

. میدهد هشدار خروج از پیش

Page 5: AVR2

5

EDIT منوی

EDIT UNDOببرید . بین از را برنامه در اخیرتان دستکاری توانید می شما گزینه این با

EDIT REDOبرگردانید دوباره بودید برده بین از که را اخیرتان دستکاری توانید می شما گزینه این .با

EDIT CUTدهید . انتقال جدیدی محل به و بریده را شده انتخاب متن توانید می شما گزینه این با

EDIT COPYدهید . انتقال جدیدی محل به و کرده کپی را شده انتخاب توانیدمتن می شما گزینه این با

EDIT PASTقبال که را متنی توانید می شما گزینه این مورد CUTیا COPYبا محل در بودید کرده

بچسبانید . نظر

Page 6: AVR2

6

...EDIT منوی

EDIT FINDکنید . جستجو تان برنامه در را متنی توانید می شما گزینه این با

EDIT FIND NEXTنمایید جستجو دوباره را جستجو مورد متن توانید می شما گزینه این .با

EDIT REPLACEدر یعنی نمایید برنامه در موجود متن جایگزین را متنی توانید می شما گزینه این با

جایگزین TEXT TO FINDقسمت دیگری متن توسط باید که جستجو مورد متنقسمت در و کنید تایپ را شود REPLACE WITHشود جایگزین باید که را متنی

کنیم . می تایپ EDIT GOTO

بروید . دلخواهی خط به سرعت به و توانیدمستقیما می شما گزینه این با

Page 7: AVR2

7

...EDIT منوی

EDIT TOGGLE BOOKMARKنظر مورد که برنامه از خاصی جاهای در توانید می شما توانید می شما گزینه این با

دستور دستور توسط آنها به و کنید گذاری نشانه EDIT GOTOشماستBOOKMARK . کنید پیدا دسترسی

EDIT GOTO BOOKMARKاید . گذاشته قبال که هایی نشانه به توانید می شما گزینه این با

EDIT IDENT BLOCKیک اندازه به را شده انتخاب متن توانید می شما گزینه این راست TABبا سمت به

کنید . منتقل EDIT UNIDENT BLOCK

یک اندازه به را شده انتخاب متن توانید می شما گزینه این چپ TABبا سمت بهکنید . منتقل

Page 8: AVR2

8

PROGRAM منوی

PROGRAM COMPILEکلید ) یا گزینه این ماشین( )F7با زبان به برنامه ترجمه به قادر ( COMPILEشما

از . پیش گزینه این انتخاب با شما برنامه بود شد COMPILEخواهید خواهد ذخیرهدر شما انتخاب به زیر فایلهای خواهند OPTION COPILER SETTINGو ایجاد

شد :– XX.BIN میکروکنترلر در تواند می که باینری شود . PROGRAMفایل– XX.DBG فایلDEBUG ساز شبیه افزار نرم برای نیاز BASCOMکه مورد

است .– XX.OBJ فایلOBJECT افزار نرم برای است .AVR STUDIO که نیاز مورد–XX.RPT گزارشی فایل–XX.HEX انواع از بعضی برای که اینتل هگزادسیمال PROGRAMMER فایل

است . نیاز مورد ها–XX.ERR . شود می ایجاد خطا بروز هنگام در فقط که خطا فایل–XX.EPP در باید که های نگهداری EPROMداده فایل این در شود ریزی برنامه

میگردند .

Page 9: AVR2

9

... PROGRAM منوی

محاوره کادر یک در را خطا پیغام شما باشد موجود برنامه در خطایی اگرو کرد خواهید دریافت . COMPILEای هر روی بر کلیک با میشود متوقف

کرد . خواهید پرش داده رخ آن در خطا که خطی به انها از کدامPROGRAM SYNTAX CHECK

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

PROGRAM SHOW RESULTدیدن برای گزینه این کرد .COMPILEنتیجه از استفاده میتوان

ایجاد OPTION COMPILE OUTPUT گزینه باید فایلها کدام اینکه تعیین برای رااند . مشاهده قابل آنها محتوای که فایلهایی ببینید را می REPORT ERROR شوند

باشند .

Page 10: AVR2

10

... PROGRAM منوی

PROGRAM SIMULATOR

کلید فشردن منو F2با از گزینه این فعال PROGRAMیا داخلی ساز شبیهکلیدی . کلمه نوشتن با برنامه در شما شد شبیه SIM$خواهد به قادر

شبیه . از توانید می شما تمایل صورت در میباشید برنامه سریعتر سازیمانند دیگر های سازی . AVR STUDIOسازی شبیه برای کنید استفاده نیز

فایل . OBJو DBJفایلهای باشند شده ایجاد شبیه OBJ باید برنامه درفایل AVR STUDIOسازی استفاده DBJو مورد داخلی ساز شبیه برای

گیرد . می قرارSEND TO CHIP

کلید یا گزینه این خواهد F4توسط ظاهر ریزی برنامه محیط پنجرهرا . خود نظر مورد میکرو گزینه این توسط توانید می شما شد

PROGRAM . کنید

Page 11: AVR2

11

TOOLS منوی

TERMINAL EMULATOR

کلیدهای یا گزینه این آوردن CTR + Tتوسط باال TERMINALباEMULATOR و ارسالی داده نمایش برای محیط این از توانید می

سریال ارتباط در نمایید .RS-232دریافتی استفاده کامپیوتر و میکرو بینLCD DESIGNER

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

Page 12: AVR2

12

... TOOLS منوی

GRAPHIC CONVERTOR

محیط پنجره منو این روی بر کلیک برای GRAPHIC CONVERTORباپسوند با تصویر پسوند BMP*.تبدیل با تصویری قابل BGF*.به که

روی بر شود . GRAPHIC LCDنمایش می ظاهر استپسوند با را خود دلخواه دکمه BMP*.فایل و LOADتوسط کرده وارد

دکمه با پسوند SAVEسپس با خود برنامه کنار در BGF*.آنرا) BASCOM GRAPHIC FILE( . بصورت شده تبدیل فایل کنید ذخیره

دکمه روی بر کلیک با و شود می داده نمایش دوباره سفید و می OKسیاهقابل . برنامه در فراخوانی با شده ذخیره فایل شد خارج محیط از توان

روی بر نوع . LCDنمایش انتخاب است قسمت LCDگرافیکی توسطLCD TYPE . تواند می نیز نوشتاری فونت گیرد می 8*8یا 8*6انجام

باشد . پیکسل

Page 13: AVR2

13

OPTION منوی

OPTION COMPILER

نمایید : اصالح زیر طبق را کامپایلر مختلف های گزینه توانید می شما منو این با•OPTION COMPILER CHIP

که . صورتی در شود می انجام گزینه این توسط ریزی برنامه برای میکرو انتخابدستور این REGFILE$از توسط میکرو انتخاب به اید کرده استفاده برنامه در

نیست . نیازی گزینه• OPTION COMPILER OUTPUT

را هستیم کامپایل از پس آنها ایجاد به مایل که هایی فایل توان می گزینه این باگزینه . انتخاب با کرد حجم SIZE WARNINGانتخاب که مقدار CODEزمانی از

تولید FLASH ROM حافظه کامپایلر کرد کند .WARNINGتجاوز می• OPTION COMPILER 12C,SPI,1WIRE

ارتباطات به مربوط های پایه توان می گزینه این را WIRE 1و 12C SPIتوسطکرد . تعیین

Page 14: AVR2

14

...OPTION منوی

• OPTION COMPILER COMMUNICATION انتقال ) می( BOUD RATEنرخ که شود می تعیین گزینه این توسط سزیال ارتباط

گزینه . کرد تایپ نیز جدید نرخ یک کریستال FREQUENCY توان فرکانس انتخابباشد . نیز اختیاری فرکانس تواند می که است شده استفاده

• OPTION COMPILER LCD باشد : می زیر های قابلیت دارای گزینه این

قسمت گزینه . LCDنوع LCD TYPEدر کنیم می مشخص BUS MODEراکند می یا 8بصورت LCDمشخص گزینه . 4بیتی توسط کند می کار DATAبیتی

MODE کنیم می یا PINبصورت LCDتعیین کند گزینه BUSکار LCDوADDRESS آدرس کننده مد LCDمشخص است . BUS در

آنها کردن تنظیم به نیازی برنامه در فوق امکانات از یک هر بندی پیکره صورت درنیست . منو این در

•OPTION PROGRAMMERتوانید • می شما منو این نمایید .PROGRAMMERدر انتخاب را خود نظر مورد

Page 15: AVR2

15

سازی شبیه محیط معرفی(SIMULATOR)

AVR ميكروكنترلرهاِي�

Page 16: AVR2

16

نوار ابزار در اين محيط

RUN

شود . می آغاز سازی شبیه دکمه این فشردن باPAUSE

دکمه فشردن با و شود می سازی شبیه موقت توقف شبیه RUN باعثکند . می پیدا ادامه سازی

STOP

شود . می جاری برنامه سازی شبیه کامل توقف باعثSTEP INTO CODE

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

کلید فشردن با را اجرای . F8 کار بار هر از بعد دهید انجام توانید می نیزحالت به سازی شبیه دستور رود . PAUSEاین می

Page 17: AVR2

17

نوار ابزار در اين محيط ...

STEP OVER

توابع فراخوانی هنگام در که تفاوت این با است قبلی دکمه شبیه دکمه اینداخل رفت SUB ROUTINE به با . نخواهید توانید می را کار این

کلید دهید .SHIFT F8فشردن انجام نیزRUN TO

به RUN TOدکمه سپس و میدهد انجام شده انتخاب خط تا را سازی شبیهباشد ) ( . PAUSEحالت اجرا قابل کدهای شامل باید جاری خط میرود

Page 18: AVR2

18

...نوار ابزار در اين محيط

افزاری سخت سازی THE HARDWARE SIMULATOR شبیهیک ÷ . باالیی قسمت که شود می ظاهر ای نجره گزینه این روی بر کلیک مجازی LCDبا

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

با . LEDشدن که است شده تعبیه نیز کلید صفحه یک است پورت پایه کردن یک بمنزلههم . ) (GETKBDدستور نیز آنالوگ مقدار ضمن در باشد می خواندن قابل برنامه در

مختلف های کانال برای هم و آنالوگ کننده مقایسه .ADCبرای است اعمال قابلREGISTERS

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

کنید . وارد را جدید مقدار و کردهI/O REGISTERS ثباتهای نمایش مانند . I\Oبرای که شود می است .Rاستفاده دهی مقدار قابل

Page 19: AVR2

19

نوار ابزار در اين محيط ...

VARIABLESستون در کردن کلیک بار دو با متغیر انتخاب به قادر میباشید . VARIABLESشما

دکمه فشار جدید ENTERبا مقدار مشاهده به قادر برنامه اجرای هنگام درتوسط . را متغیر هر مقدار میتوانید همچنین بود خواهید برنامه در VALUEمتغیر

دهید . تغییرتایپ آنرا اندیس با همراه متغیر نام توانید می ای آرایه متغیر یک تماشای برای

دکمه توانید می سطر هر حذف برای و دهید .CTRL+DELکنید فشار راWATCH

ارزیابی سازی شبیه خالل در است قرار که وضعیتی کردن وارد برای گزینه اینشد صحیح نظر مورد وضعیت که هنگامی و گیرد می قرار استفاده مورد شود

حالت در سازی مکان . PAUSEشبیه در را نظر مورد حالت گرفت خواهد قراردکمه و نموده تایپ نظر دکمه . ADD-BUTTONمورد هنگامیکه دهید فشار را

MODIFY-BUTTON , قرار بازنگری مورد را نظر مورد وضعیت شود داده فشارآنرا . باید شما وضعیت هر حذف برای داد تغییر آنرا ارزش میتوان و میدهد

دکمه و کرده دهید .REMOVEانتخاب فشار را

Page 20: AVR2

20

نوار ابزار در اين محيط ...

LOCAL

در موجود محلی البته . FUNCTION یا SUBمتغیرهای میدهد نشان رانمود . اضافه آن به را متغیری نمیتوان

UPوضعیت ) ثبات میدهد( . STATUS REGوضعیت نشان میتوان FLAGرا را ها

روی بر کلیک داد .CHECK BOXتوسط وضعیت تغییر هاINTERRUPTS

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

می , اجرا مربوطه وقفه ها دکمه از کدام هر روی بر کلیک با و شود می فعال آننمود . . ایجاد نیز پالس خاص پایه یک روی میتوان ضمن در شود

Page 21: AVR2

21

ریزی برنامه محیط معرفی

AVR ميكروكنترلرهاِي�

Page 22: AVR2

22

ISP STK PROGRAMMER

هنگامیکه میکرو به برنامه ارسال شود RUN PROGRAMMERپنجره می انتخابمیگردد . ظاهر

منویFILE•EXIT :. ریزی برنامه محیط از خروج•TEST : . شود استفاده تواند می زمانی تنها گزینه این پورت های پایه کردن یک

از شود .SAMPLR ELECTRONIC PROGRAMEEERکه استفاده منویBUFFER

•BUFFER CLEAR : . بافر کردن پاک•LOAD FROM FILE: میکرو حافظه در آن ریزی برنامه و فایل با بافر کردن پر•SAVE TO FILE : . حافظه محتوای تواند می بافر دلخواه فایل در بافر ذخیره

باشد . میکرو یک منویCHIP

•CHIP IDENTIFY : به متصل میکرو . PROGRAMMERشناسایی

Page 23: AVR2

23

ISP STK PROGRAMMER…

•WRITE BUFFER TO CHIP : حافظه در بافر محتوای ریزی برنامهROM یاEEPROM.

•READ CLIPCODE INTO BUFFER: . میکرو کدی حافظه داده خواندن•BLACK CHECK : . کند می مشخص را میکرو حافظه بودن خالی•ERASE: داده و برنامه حافظه محتوای کردن . EEPROMپاک•VERIFY: شده ریزی برنامه میکرو در که آنچه و بافر محتوای گزینه این

پیغام تساوی صورت در و کند می مقایسه را نمایش VERIFY OKاستشود . می داده

•AUTO PROGRAM : را نظر مورد برنامه و کرده پاک را میکرو حافظهحافظه عمل FLASHدر سپس و کند می ریزی به VERIFY برنامه را

. دهد می انجام خودکار صورت•RESET : به متصل کند . PROGRAMMERمیکرو می ریست را

Page 24: AVR2

24

محیط معرفی TERMINAL EMULATOR

AVR ميكروكنترلرهاِي�

Page 25: AVR2

25

TERMINAL EMULATOR

سریال ارتباط در دریافتی و ارسالی داده نمایش برای توان می محیط این ازRS-232. نمود استفاده کامپیوتر و میکرو بین

از که اطالعاتی و ارسال میکرو به شود می تایپ محیط این در که اطالعاتیهنگامیکه . شود می داده نمایش پنجره دراین شود می دریافت کامپیوتر پورت

از برنامه یا SERIAL INدر از , SERIAL OUT و پس شود می استفادهPROGRAM سریال پورت به آن اتصال و میکرو درون برنامه می , PCکردن

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

INKEY , پنجره طریق از را خود داده میتوان شود استفاده برنامه درTERMINAL EMULATOR . از که باشید داشته توجه نمود ارسال میکرو به

BOUD RATE . نمایید استفاده کامپیوتر و میکرو در مشابه

Page 26: AVR2

26

منوهای محيط TERMINAL EMULATOR

FILE UPLOAD : فرمت در جاری میکند . UPLOADرا HEXبرنامهFILE ESCAPE : از کردن فایل . UPLOADصرفنظر کردنFILE EXIT : برنامه از .EMULATORخروجTERMINAL CLEAR : . کند می پاک را ترمینال پنجرهSETTING : پورت دیگر COMتنظیمات صورت OPTIONو منو این توسط ها

گیرد . میTERMINAL OPEN LOG: فایلLOG . فایل هنگامیکه کند می بسته یا باز را

LOG . تمام کند می گزارش فایل برای نامی درخواست باشد نداشته وجودپنجره در که فایل TERMINALاطالعاتی داخل شود می ثبت LOGپرینت

شود . می

Page 27: AVR2

27

برنامه محیط توابع و دستوراتBASCOM نویسی

5

Page 28: AVR2

28

در برنامه یک محيطبدنه BASCOM

AVR ميكروكنترلرهاِي�

Page 29: AVR2

29

در برنامه یک ...BASCOM محيطبدنهمیکرو معرفی

$REGFILE = VARمحیط در برنامه یک شروع گردد . BASCOMبرای تعریف نظر مورد میکرو باید مورد VARابتدا چیپ نام

باشد . زیر موارد از یکی تواند می که است استفاده$regfile = “ At12def.dat “ ‘ATtiny12 MCU$regfile = “ At15def.dat “ ‘ATtiny15 MCU$regfile = “ At22def.dat “ ‘ATtiny22 MCU$regfile = “ At26def.dat “ ‘ATtiny26 MCU

$regfile = “ 2323def.dat “ ‘AT90s2323 MCU$regfile = “ 2333def.dat “ ‘AT90s2333 MCU$regfile = “ 2343def.dat “ ‘AT90s2343 MCU$regfile = “ 4414def.dat “ ‘AT90s4414 MCU$regfile = “ 4433def.dat “ ‘AT90s4433 MCU$regfile = “ 4434def.dat “ ‘AT90s4434 MCU

Page 30: AVR2

30

در برنامه یک ...BASCOM محيطبدنهمیکرو ... معرفی

$regfile = “ 8515def.dat “ ‘AT90s8515 MCU$regfile = “ 8535def.dat “ ‘AT90s8535 MCU

$regfile = “ M8535.dat “ ‘MEGA 8535 MCU$regfile = “ M8515.dat “ ‘MEGA 8515 MCU

$regfile = “ M8def.dat “ ‘MEGA 8 MCU$regfile = “ M103def.dat “ ‘MEGA 103 MCU

$regfile = “ M16def.dat “ ‘MEGA 16 MCU$regfile = “ M163def.dat “ ‘MEGA 163 MCU$regfile = “ M161def.dat “ ‘MEGA 161 MCU

$regfile = “ M32def.dat “ ‘MEGA 32 MCU$regfile = “ M323def.dat “ ‘MEGA 323 MCU$regfile = “ M603def.dat “ ‘MEGA 603 MCU

$regfile = “ M64def.dat “ ‘MEGA 64 MCU$regfile = “ M128def.dat “ ‘MEGA 128 MCU

$regfile = “ M128103.dat “ ‘MEGA 128 IN MEGA 103 MODE MCU

Page 31: AVR2

31

در برنامه یک ...BASCOM محيطبدنهکریستال

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

$CRYSTAL = X

X. است هرتز حسب بر شده استفاده کریستال فرکانس

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

مثال$CRYSTAL = 14000000 ’14MHZ external osc

$CRYSTAL = 8000000 ’8MHZ external osc

$CRYSTAL = 1000000 ’1MHZ internal osc

نکته

Page 32: AVR2

32

در برنامه یک ...BASCOM محيطبدنه) اختیاری ) بیسیک و اسمبلی

می استفاده زیر دستور از بیسیک برنامه بین در اسمبلی برنامه نوشتن برای نیاز صورت درنماییم

$ASM ASSEMBLY PROGRAMME

$ENDASMدستور پس ASM$با و کرده اسمبلی موردنظر برنامه نوشتن به شروع برنامه در توان می

دستور با اسمبلی برنامه اتمام نوشتن ENDASM$از به و رساند پایان به را اسمبلی برنامهپرداخت . برنامه ادامه

مثالDim c As Byte

Loadadr c,x ‘load address of variable c into register x$Asm ‘start assembly program

Ldi r24,1 ‘load register R24 with the constant 1 St x,R24 ‘store 1 into var c

$End Asm ‘end of assembly program Print c ‘send c to serial portEnd

Page 33: AVR2

33

در برنامه یک ...BASCOM محيطبدنه) اختیاری ) یادداشت

شود . اضافه برنامه در بیشتر اطالعات برای یادداشتهایی است نیاز گاهیREMیا ‘

یادداشت برای برنامه در و بوده فعال غیر دستور این از بعد های نوشته و یاددلشتهاآیند . می در سبز رنگ به همچنین و شد نخواهد کامپایل و رود می کار به

شروع برای عالمت دو از توان می از ‘) همچنین یادداشتی ‘( و متن اتمام براینمایید .استفاده

مثالREM this sentence will not be compiled Or

‘this sentence will not be compiled مثال

(‘start block comment This will not be compiled

)‘end block comment

Page 34: AVR2

34

در برنامه یک ...BASCOM محيطبدنهحافظه ریزی برنامه شروع (FLASHآدرس اختیاری )

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

$ROMSTART = ADDRESS

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

آدرس خودکار طور به کامپایلر نشود گیرد .H0000&استفاده می نظر در را

مثال$ROMSTART = &H4000

Page 35: AVR2

35

در برنامه یک ...BASCOM محيطبدنه) اختیاری ) کالک تعیین

سری میکروهای از بعضی در دستور این جمله MEGA AVRبا یا MEGA103 ازMEGA603 . کالک تقسیم داد تغییر را سیستم کالک توان می افزاری نرم صورت به

شود . می استفاده تغذیه مصرف کاهش برای مثال بطورCLOCKDIVISION = var

Var اعداد بین معتبر باشد .128تا 2مقادیر تواند می

کار , سیستم کالک با مستقیما که دستوراتی نمایید استفاده دستور این از اگرکنند نکنند . می کار درست است ممکن

مثال$boud = 2400

Clockdivision = 2Print “Hello”

End

نکته

Page 36: AVR2

36

در برنامه یک ...BASCOM محيطبدنهبرنامه پایان

END

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

یابد . می خاتمه

مثالPRINT “ Hello” ‘print this

END ‘ end program execution and disable all interrupt

Page 37: AVR2

37

جداول و ها متغیر و اعدادLOOKUP

AVR ميكروكنترلرهاِي�

Page 38: AVR2

38

جداول و ها متغیر و ...LOOKUPاعدادمتغیرها دیمانسیون

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

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

VAR . جانبی حافظه از استفاده صورت در میشود برده بکار برنامه در که متغیری نامبا و XRAMآنرا کنید در SRAMمشخص را متغیرها خواهید می که کنید اختیار زمانی را

و SRAMحافظه دهید در ERAMقرار را نظر مورد میدهد EEROMمتغیر جای داخلی .Data type زیر جدول طبق تواند می که است داده نوع

STRING ,WORD ,LONG ,INTEGER ,BYTE, BIT یا SINGLE. باشدمتغیر از استفاده صورت گزینه , . STRINGدر شود نوشته باید نیز آن طول بیشترین

بصورت OVERLYاختیاری را شده تعریف فضایی POINTER متغیر و میگیرد نظر درگیرد . نمی نظر در متغیر برای را

AT LOCATION حافظه در میخواهید که آدرسی در را متغیرتان که میدهد اجازه شما بهاستفاده , حافظه در خالی جای اولین باشد اشغال آدرسدهی محل که زمانی کنید ذخیره

شود . می

Page 39: AVR2

39

جداول و ها متغیر و ...LOOKUPاعدادمتغیرها ... دیمانسیون

داده : نوع انتخاب DATA TYPESTORE ASVALUE RANGEجدول

BITA BIT0 OR 1

BYTEUNSIGNED 8 BITS0 TO 255

INTEGERSIGNED 16 BITS-32767 TO 32767

WORDUNSIGNED 16 BITS0 TO 65535

LONGSIGNED 32 BITS-214783648 TO 214783647

SINGLESIGNED 32 BITS1.5* 10-^45 TO 3.4*10^38

STRING0-245 BYTES-

Page 40: AVR2

40

جداول و ها متغیر و ...LOOKUPاعدادمتغیرها ... دیمانسیون

مثالDIM B AS BIT ‘BIT can be 0 or 1DIM A AS BYTE ‘BYTE range from 0 - 255DIM K AS INTEGER AT 120 ‘you can specify the address of the

‘variable . The next dimensioned variable will be placed after A

عالمت HEXعدد با عدد H&را عالمت BINARYو با دهید B&را نشان

مثال A= &H01DE ‘HEX NUM

B= &B01011011 ‘BIN NUM مثال

DIM B1 AS BYTE AT $60 OVERLY

نکته

Page 41: AVR2

41

جداول و ها متغیر و ...LOOKUPاعدادCONSTدستور

شود : می استفاده دستور این از ثابت یک تعریف برایCONST SYMBOL= NUMCONSTCONST SYMBOL= STRINGCONSTCONST SYMBOL= EXPRESSION

SYMBOL و ثابت به NUMCONSTنام یافته انتساب عددی مقدارSYMBOL , STRINGCONST به یافته انتساب و SYMBOLرشته

EXPRESSION به آن نتیجه که باشد عبارتی یابد .SYMBOLمیتواند انتساب

مثالCONST S = “TEST”

CONST A = 5CONST B1 =&B1001CONST X = )B1 * 3 ( + 2

Page 42: AVR2

42

جداول و ها متغیر و ...LOOKUPاعدادALIASدستور

شود . می استفاده متغیر نام تغیر برای دستور این از

مثالDIRECTION ALIAS PORTB.1

بجای توانید می شما متغیر PORTB.1حال نمایید . DIRECTIONاز استفادهSET DIRECTION ‘is equal with SET PORTB.1

Page 43: AVR2

43

جداول و ها متغیر و ...LOOKUPاعدادCHRدستور

زمانی . شود می استفاده کاراکتر به ثابت یک یا عددی متغیر تبدیل برای دستور این ازروی بر کاراکتر یک دارید قصد استفاده LCDکه توانید می دستور این از دهید نمایش

نماتید .نمایید استفاده صورت این به دستور این از صورتیکه ) PRINT CHR ) VARدر

اسکی شد . VARکاراکتر خواهد فرستاده سریال پورت به

مثالDIM a AS Byte ‘dim variable

A = 65 ‘assign variable

Print a ‘print value ) 65 (

Print HEX) a ( ‘print hex value )41(

Print Chr ) a ( ‘print ASKII character 65 )A (

End

Page 44: AVR2

44

جداول و ها متغیر و ...LOOKUPاعدادINSTRدستور

کند . می مشخص دیگر رشته در را رشته زیر یک موقعیت و دستورمحل اینVar =Instr )start , String ,Subset (Var =Instr )String ,Subset (

Var محل کننده مشخص که است اصلی SUBSTRعددی رشته و STRING در باشد میشود . می برگردانده صفر نباشد اصلی رشته در شده مشخص رشته زیر نیز STARTزمانیکه

در . کند می مشخص را اصلی رشته در رشته زیر جستجو شروع مکان که است دلخواه عددینوع . STARTصورتیکه از باید تنها اصلی رشته شود می جستجو ابتدا از رشته تمام نشود قید

رشته زیر ولی باشد باشد . (SUBSTR)رشته هم ثابت عدد و رشته تواند می مثال

DIM S AS String * 15, Z As String * 5DIM Bp As Byte

S = “This is a test“ Z= “is”

Bp = Instr )S , Z ( : Print Bp ‘should print 3Bp = Instr )4 , S ,Z ( : Print Bp ‘should print 6End

Page 45: AVR2

45

جداول و ها متغیر و ...LOOKUPاعدادINCRدستور

عددی این متغیر به واحد یک افزاید . VARدستور میINCR VAR

مثال

DO ‘ start loopIncr A ‘ increment A by 1 A=A+1Print A ‘ print ALoop Until A>10 ‘ repeat until A is greater than 10

Page 46: AVR2

46

جداول و ها متغیر و ...LOOKUPاعدادDECRدستور

متغیر این کند . VARدستور می کم واحد یک راDECR VAR

مثال

Dim A As ByteA = 5 ‘ assign value to aDecr A ‘ decrement by one A= A-1Print A ‘ print A =4End

Page 47: AVR2

47

جداول و ها متغیر و ...LOOKUPاعدادCHECKSUMدستور

رشته دستور این اسکی دسیمال کد مجموع VARمجموع اگر البته که گرداند برمی راعدد از رشته اسکی مقدار 255کد شود شود .256بیشتر می کم مجموع از

مثالDim S As String*10 ‘ Dim VariableS = “test” ‘ assign VariablePrint Checksum )S( ‘ print value )192 (S = ‘test next “ ‘ assign variable

Print Cecksum)S( ‘ Print value 127 )127=383 – 256 (

Page 48: AVR2

48

جداول و ها متغیر و ...LOOKUPاعدادLOWدستور

گرداند .) LSB )least significant byteدستور این برمی را متغیر یکVar = LOW ) s(

LSB متغیرS درVar . گیرد می قرار

مثالDim I As Integer , Z As ByteI = &h1001Z = LOW )I ( ‘ is 1End

Page 49: AVR2

49

جداول و ها متغیر و ...LOOKUPاعدادHIGHدستور

گرداند .) MSB )most significant byteدستور این برمی را متغیر یکVar = HIGH ) s(

MSB متغیرS درVar . گیرد می قرار

مثالDim I As Integer , Z As ByteI = &H1001Z = HIGH )I ( ‘ Z is 16 z = &H10I = &H1101Z = HIGH )I ( ‘Z is 17 z = &H11I = 1012Z = HIGH )I ( ‘I = &H3F4 z is 3End

Page 50: AVR2

50

جداول و ها متغیر و ...LOOKUPاعدادLCASEدستور

کند . این می کوچک حروف به تبدیل را نظر مورد رشته حروف تمام دستورTarget = Lcase )source(

رشته حروف رشته sourceتمام در و شده شود . targetکوچک می داده جای مثال

Dim S As String * 12 , Z As String * 12S = “Hello World“

Z = Lcase )S ( ‘Z = hello worldPrint ZEnd

Page 51: AVR2

51

جداول و ها متغیر و ...LOOKUPاعدادUCASEدستور

کند . این می بزرگ حروف به تبدیل را نظر مورد رشته حروف تمام دستورTarget = Ucase )source(

رشته حروف رشته sourceتمام در و شده شود . targetبزرگ می داده جای

مثالDim S As String * 12 , Z As String * 12

S = “Hello World“ Z = Ucase ) s ( ‘Z = HELLO WORLDPrint ZEnd

Page 52: AVR2

52

جداول و ها متغیر و ...LOOKUPاعدادRIGHTدستور

این کنیم . با می جدا را رشته یک از دستورقسمتیVar = RIGHT )var1 , n (

رشته راست سمت کاراکتر var1 از تعداد رشته , n به در و شده جدا ای varرشتهگیرد . می قرار

مثالDim S As String * 15 , Z As String * 15

S = “ABCDEFG“ Z = Right) s , 2( ‘Z = FGPrint ZEnd

Page 53: AVR2

53

جداول و ها متغیر و ...LOOKUPاعدادLEFTدستور

این کند . با می جدا شده تعیین تعداد به را رشته یک چپ سمت کاراکترهای دستورVar = LEFT)var1 , n (

رشته چپ سمت کاراکتر var1 از تعداد رشته , n به در و شده جدا ای قرار varرشتهگیرد . می

مثالDim S As String * 15 , Z As String * 15

S = “abcdefg“ Z = Left) s , 5( ‘Z = abcdePrint ZZ = Left) s , 1( ‘Z = aPrint ZEnd

Page 54: AVR2

54

جداول و ها متغیر و ...LOOKUPاعدادLENدستور

برمیگرداند . این را رشته یک کاراکترهای تعداد بعبارتی یا طول دستورVar = Len)string (

رشته عددی stringطول متغیر رشته . VARدر گیرد می تواند stringقرار می 255نهایتاخالی . فضای که باشید داشته توجه باشد داشته طول به (SPACE BAR)بایت کاراکتر یک خود

آید . می حساب مثال

Dim S As String * 12

Dim A As Byte

S = “test“

A= Len)S (

Print A ‘Print 4

Print Len )S ( ‘Print 4

S=“test“

A = Len ) A (

Print A ‘Print 5

Page 55: AVR2

55

جداول و ها متغیر و ...LOOKUPاعدادLTRIMدستور

کند . این می حذف را یکرشته خالی فضای دستورVar = LTRIM) org (

رشته خالی متغیر orgفضای در خالی فضای بدون رشته و شود می برداشتهای گیرد . varرشته می قرار

مثالDim S As String * 10

S = “ AB“

Print LTRIM) s ( ‘AB

S = “ A B“

Print LTRIM) s ( ‘A B

End

Page 56: AVR2

56

جداول و ها متغیر و ...LOOKUPاعدادSWAPدستور

SWAP var1 , var2این اجرای متغیر با محتوای متغیر var1دستور متغیر var2 در محتوای var2و

متغیر گیرد . var1در می قرار

متغیر باشند .var2و var1دو نوع یک از بایستی

مثالDim A As Integer , B1 As Integer

A = 1 :B1 = 2 ‘assign two integerSWAP A , B1 ‘swap themPrint A ‘ prints 2Print B1 ‘ prints 1End

نکته

Page 57: AVR2

57

جداول و ها متغیر و ...LOOKUPاعدادMIDدستور

رشته یک از قسمتی یا و برداشت را رشته یک از قسمتی توان می دستور این باکرد . عوض دیگر رشته یک از قسمتی با را

1 -Var = Mid)var1,St[,L]2 -Mid)var , St[,L] = Var

رشته- 1 از کاراکتر var1قسمتی از شروع طول stبا و در Lام و شده برداشته. varمتغیر گیرد می قرار

رشته var1رشته- 2 کاراکتر varدر از شروع طول Stبا و گیرد .Lام می قراراختیاری گزینه نکردن قید صورت شود , . Lدر می گرفته نظر در طول بیشترین

مثالDim A As XRAM String *15 , Z As XRAM String *15S = ‘ABCDEFG”

Z = Mid)S,2,3(Print Z ‘BCDEnd

Page 58: AVR2

58

جداول و ها متغیر و ...LOOKUPاعدادROTATEدستور

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

ROTATE var ,LEFT/RIGHT [,shifts]Var نوع از ای داده تواند باشد . LONG,WORD ,INTEGER , BYTE می

LEFT/RIGHT و بیتها چرخش چرخش shiftجهت تعداد باشد می اختیاری که . می گرفته نظر در یک مقدار نشدن قید صورت در کند می مشخص را بیتها

شود .

مثالDim A As Byte

A = 128Rotate A, Left ,2Print A ‘a=2

Page 59: AVR2

59

جداول و ها متغیر و ...LOOKUPاعدادSPACEدستور

شود . می استفاده دستور ازاین خالی فضای ایجاد برایVar = SPACE )x (

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

مثالDim S As String *15S = Space )5(Print “{“ ;S ;”}” ‘{ } 5spacePrint “{“ ; Space)6( ; “}” ‘{ } 6 spaceEnd

Page 60: AVR2

60

جداول و ها متغیر و ...LOOKUPاعدادFORMATتابع

کند . می دهی شکل را عددی رشته یک دستور این target = Format )source , “mask”(

source در نتایج و شود دهی شکل که است ای گیرد . targetرشته می نوع maskقراراست . دهی شکل

مثالDim S As String *10, I As Integer

S = “ 123“ S= Format )s, “ “( ‘5 spacePrint S ‘s=“ 123” two space first ,then 123S =“12345”

S = Format)s , “000.000”(Print S ‘s =“012.345S = Format)s , “ + ”(Print S ‘s =“+12345End

Page 61: AVR2

61

جداول و ها متغیر و ...LOOKUPاعدادFUSINGتابع

شود . می استفاده عددی های رشته کردن روند برای دستور این از target = Fusing )source , “mask”(

source در نتایج و دهی شکل برای موردنظر می targetرشته قرارعمل . maskگیرد . است دهی شکل شروع # maskنوع عالمت با باید حتما

. با # & باشد داشته ممیز از بعد را یا عالمات از یکی باید حداقل و شودنمی # & صورت روندی از استفاده صورت در و شود می روند عدد از استفاده

گیرد .

مثالDim S As Single,Z As String*10S = 123.45678Print Fusing)S , .”#.# #”( ‘Print 123.46Print Fusing)S , .”#.& #”( ‘Print 123.45End

Page 62: AVR2

62

جداول و ها متغیر و ...LOOKUPاعداد LOOKUPجدول

. برگرداند جدولی از را دلخواهی مقدار توان می جدول این توسطvar = LOOKUP)value , label (

Label و جدول متغیر . valueبرچسب در جدول از برگشتنی داده است دلخواه داده varاندیسگیرد . می داده . value =0قرار مقدار و ها اندیس تعداد گرداند برمی را جدول در داده اولین

تواند می نهایتا ترتیب به باشد .65535و 255برگشتی

یابد % . پایان عالمت با بایستی جدول داخل بایتی دو داده

مثالDim B1 As Byte, I As IntegerB1= lookup)2 , Dta(Print B1 ‘Print 2 )zero based (I = lookupstr) 0, Dta2 (Print I ‘Print 1000Dta:Data 1 , 2 , 3, 4 , 5 Dta2:Data 1000% , 2000%

نکته

Page 63: AVR2

63

جداول و ها متغیر و ...LOOKUPاعداد LOOKUPSTRجدول

. برگرداند جدولی از را دلخواهی رشته توان می جدول این توسطvar = LOOKUPSTR)value , label (

Label و جدول از . valueبرچسب برگشتنی رشته است دلخواه رشته اندیسای رشته متغیر در گیرد .varجدول می را value =0قرار جدول در رشته اولین

تواند . می نهایتا ها اندیس تعداد گرداند باشد .255برمی

مثالDim S As String*4 , Idx As ByteIdx = 0 : S = lookupstr) idx , Sdata (Print S ‘ ThisEnd

Sdata:Data “This” , “is” , “a test”

Page 64: AVR2

64

محاسباتی و ریاضی توابع

AVR ميكروكنترلرهاِي�

Page 65: AVR2

65

و ریاضی توابعمحاسباتی...ریاضی عملگرهای

توانید می روبرو ریاضی عملگرهای ازمحیط نماییدو BASCOMدر استفاده

دهید . انجام را خود ریاضی عملیات

عالمتنماد

ضرب * عالمت

جمع + عالمت

تفریق - عالمت

ممیز . عالمت

تقسیم / عالمت

از < کوچکتر عالمت

تساوی = عالمت

از < بزرگتر عالمت

بتوان ^ عالمت

یا =< کوچکتر عالمتمساوی

یا <= بزرگتر عالمتمساوی

مخالف << عالمت

Page 66: AVR2

66

... محاسباتی و ریاضی توابعمنطقی عملگرهای

منطقی های است : BASCOMعملگر زیر قرار به

معرفینمادANDCONJUNCTION

ORDISJUNCTION

XOREXCLUSIVE OR

NOTCOMPLIMENTمثال

A = 63 and 19

Print A ‘’19 print

Page 67: AVR2

67

... محاسباتی و ریاضی توابع ABSتابع

ریاضی معنای به دستور ( .| VAR = |VAR2این است ) قدرمطلق

مثالDim A As Integer , C As Integer

A = -1000

C = ABS )A( ‘c=|a|

Print C ‘C= 1000

End

Page 68: AVR2

68

... محاسباتی و ریاضی توابع EXPتابع

Target = Exp )source(

Target با داده Targetاست . source بتوان e برابر نوع از SINGLEمتغیریاست .

مثالDim X As Single

X= Exp) 1.1(

Print X ‘Print 3.004166124

X = 1.1

X= Exp) X(

Print X ‘Print 3.004166124

End

Page 69: AVR2

69

... محاسباتی و ریاضی توابع LOG10تابع

Target = Log10 )source(پایه ثابت 10لگاریتم یا متغیر sourceمتغیر گیرد . targetدر می Targetقرار

نوع sourceو داده دو هستند . singleهرمثال

Dim S1 As Single, S2 As SingleS1 = 0.01S2 = Log10)S1(Print S2

For S1=1 to 100 S2 = Log10)S1(

Print S1 ;” “ ;S2 NEXT

End

Page 70: AVR2

70

... محاسباتی و ریاضی توابع LOGتابع

نوع از داده یک طبیعی لگاریتم دستور گرداند .SINGLEاین برمی را

Target = Log )source(

ثابت یا متغیر داده sourceلگاریتم نوع متغیر . singleاز ودر شود می targetگرفتهگیرد می .قرار

مثالDim X As Single

X = Log)100( ‘4.605170

Print X

End

Page 71: AVR2

71

... محاسباتی و ریاضی توابع RNDتابع

گرداند . برمی تصادفی عدد یک دستور اینVAR= RND )limit(

بین تصادفی متغیر limitو 0 عدد در و آمده عدد . varبدست دستور این از استفاده هربار با گیرد می قرارآمد . خواهد بدست دیگری تصادفی مثبت

limit . باشد مثبت عدد یک باید

مثالDim X As IntegerDo

I = Rnd )100( ‘get random number Print I Wait 1

LoopEnd

نکته

Page 72: AVR2

72

... محاسباتی و ریاضی توابع SINتابع

متغیر یا ثابت سینوس دستور متغیر sourceاین در نوع varرا می SINGLEاز قراررادیان . بایستی دستور این ورودی و کنند می کار رادیان با مثلثاتی دستورات تمام دهد

باشد .

مثالDim X As Single

Dim Vsin As Single

Const Pi= 3.14159265

X= Pi/2

Vsin = Sin )X( ‘Vsin = sin)p/2(

Print Vsin ‘0.9999332

End

Page 73: AVR2

73

... محاسباتی و ریاضی توابع COSتابع

متغیر یا ثابت کسینوس دستور متغیر sourceاین در نوع varرا می SINGLEاز قراررادیان . بایستی دستور این ورودی و کنند می کار رادیان با مثلثاتی دستورات تمام دهد

باشد .

مثال

Dim X As Single

Dim Vcos As Single

Const Pi= 3.14159265

X= Pi/2

Vcos = Cos )X( ‘Vcos = cos)p/2(

Print Vcos ‘0.0000066

End

Page 74: AVR2

74

... محاسباتی و ریاضی توابع TANتابع

Var = TAN )source (

متغیر یا ثابت تانژانت دستور متغیر sourceاین در نوع varرا دهد . SINGLEاز می قرارباشد . رادیان بایستی دستور این ورودی و کنند می کار رادیان با مثلثاتی دستورات تمام

مثالDim X As Single

Dim Vtan As tangle

Const Pi= 3.14159265

X= Pi*2

Vtan = tan )X( ‘Vtan = tan)p*2(

Print Vtan ‘ -0.00000357

End

Page 75: AVR2

75

... محاسباتی و ریاضی توابع SINHتابع

Var = SINH) source(

متغیر یا ثابت هایپربولیک سینوس دستور متغیر sourceاین در نوع varرا ازSINGLE . این ورودی و کنند می کار رادیان با مثلثاتی دستورات تمام دهد می قرار

باشد . رادیان بایستی دستور

مثالDim X As Single

Dim Y As Single

X= 0.512

Y = Sinh )X(

Print X ; “ ; “ ;Y

End

Page 76: AVR2

76

... محاسباتی و ریاضی توابع COSHتابع

Var = COSH) source(

متغیر یا ثابت هایپربولیک کسینوس دستور متغیر sourceاین در نوع varرا ازSINGLE . این ورودی و کنند می کار رادیان با مثلثاتی دستورات تمام دهد می قرار

باشد . رادیان بایستی دستور

مثالDim X As Single

Dim Y As Single

X= 0.512

Y = Cosh )X(

Print X ; “ ; “ ;Y

End

Page 77: AVR2

77

... محاسباتی و ریاضی توابع TANHتابع

Var = TANH) source(

متغیر یا ثابت هایپربولیک تانژانت دستور متغیر sourceاین در نوع varرا ازSINGLE . این ورودی و کنند می کار رادیان با مثلثاتی دستورات تمام دهد می قرار

باشد . رادیان بایستی دستور

مثالDim X As Single

Dim Y As Single

X= 0.512

Y = Tanh )X(

Print X ; “ ; “ ;Y

End

Page 78: AVR2

78

... محاسباتی و ریاضی توابع ASINتابع

Var = ASIN) source(

متغیر یا ثابت آرکسینوس دستور متغیر sourceاین در نوع varرا SINGLEازبین . عددی تابع ورودی دهد می باشد .1+و 1-قرار می

مثالDim X As Single

Dim Y As Single

X= 0.5

Y = Asin )X(

Print X ; “ ; “ ;Y

End

Page 79: AVR2

79

... محاسباتی و ریاضی توابع ACOSتابع

Var = ACOS) source(

متغیر یا ثابت آرککسینوس دستور متغیر sourceاین در نوع varرا SINGLEازدستور . این ورودی و کنند می کار رادیان با مثلثاتی دستورات تمام دهد می قرار

باشد . رادیان بایستی

مثالDim X As Single

Dim Y As Single

X= 0.5

Y = ACOS )X(

Print X ; “ ; “ ;Y

End

Page 80: AVR2

80

... محاسباتی و ریاضی توابعATNتابع

Var = ATN) source(

متغیر یا ثابت تانژانت آرک دستور متغیر sourceاین در نوع varرا SINGLEازدستور . این ورودی و کنند می کار رادیان با مثلثاتی دستورات تمام دهد می قرار

باشد . رادیان بایستی

مثالDim X As Single

Dim Y As Single

X= 1

Y = atn )X( * 4

Print X ; “ ; “ ;Y

End

Page 81: AVR2

81

... محاسباتی و ریاضی توابعDEG2RADتابع

Var =DEG2RAD) single(

شود . می دستوراستفاده این از رادیان به درجه تبدیل برایمتغیر singleزاویه در و شود می تبدیل رادیان داده VARبه نوع قرار SINGLEاز

گیرد . می مثال

Dim X As Single

Dim Y As Single

X= 180

Y = Deg2rad )X(

Print Y ‘3.141592

End

Page 82: AVR2

82

... محاسباتی و ریاضی توابعRAD2DEGتابع

Var =RAD2DEG) single(

شود . می دستوراستفاده این از درجه به رادیان تبدیل برایمتغیر singleرادیان در و شود می تبدیل درجه داده VARبه نوع قرار SINGLEاز

گیرد . می مثال

Dim X As Single

Dim Y As Single

X= 3.141592

Y = Rad2Deg )X(

Print Y ‘179.9999

End

Page 83: AVR2

83

... محاسباتی و ریاضی توابعROUNDتابع

Var =ROUND) x(

داده یا نوع Xمتغیر متغیر SINGLEاز در و شده داده VARروند نوع SINGLEازگیرد . می قرار

مثالRound)2.3( =2 ; Round)-2.3(= -2

Round)2.8(=3 ; Round)-2.8(= -3

Page 84: AVR2

84

یکدیگر به متغیرها و کدها تبدیل

AVR ميكروكنترلرهاِي�

Page 85: AVR2

85

یکدیگر ... به متغیرها و کدها تبدیل ASCدستور

Var = ASC )string(

داده نوع از متغیر یک کاراکتر اولین دستور آن STRINGاین اسکی مقدار به راکند . می تبدیل

مثالDim A As Byte , S As string

S= “ABC”

A = ASC)s(

Print A ‘will print 65

End

Page 86: AVR2

86

یکدیگر ... به متغیرها و کدها تبدیل HEXدستور

Var = Hex )x(

نوع از داده یک دستور مقدار BYTE,INTEGER , WORD , LONGاین به راکند . می تبدیل هگزادسیمال

ثابت HEXمقدار یا متغیر X متغیر گیرد .VARدر می جای

مثالDim A As Byte , S As string*10

A= 123

S= Hex)A(

Print S ‘7B will print

Print Hex)A( ‘7B will print too

End

Page 87: AVR2

87

یکدیگر ... به متغیرها و کدها تبدیل HEXVALدستور

Var = HexVal )x(

کند . می تبدیل عددی مقدار به را هگزدسیمال داده یک دستور اینهگزدسیمال داده عددی تواند Xمقدار می , LONG , WORD , INTEGERکه

BYTE متغیر در گیرد .VARباشد می جای

مثالDim A As Integer , S As string*15

S= “0A”

A = Hexval )S(

Print A ‘10 will be print

End

Page 88: AVR2

88

یکدیگر ... به متغیرها و کدها تبدیل MAKEBCDدستور

Var1 = MAKEBCD )Var2(

ثابت یا متغیر دستور مقدار var2این به تبدیل متغیر BCDرا در و کند می اشvar1. دهد می جای

مثالDim A As Byte

A = 65

A = Makebcd )A(

Lcd A ‘101 will show

End

Page 89: AVR2

89

یکدیگر ... به متغیرها و کدها تبدیل MAKEDECدستور

Var1 = MAKEDEC )Var2(داده یک تبدیل مقدار INTEGER , WORD , BYTEنوع BCDبرای به

DECIMAL . ثابت یا متغیر دسیمال مقدار شود می دستوراستفاده این var2ازمتغیر گیرد .var1در می جای

مثالDim A As Byte

A = 65Lcd A

LowerlineLcd Bcd )A(A = Makedec )A( ‘ A = 101Lcd “ “;AEnd

Page 90: AVR2

90

یکدیگر ... به متغیرها و کدها تبدیل MAKEINTدستور

Varn = MAKEINT )LSB , MSB(نوع داده یک و کند می متصل هم به را بایت دو دستور یا WORDاین

INTEGER که سازد و LSBمی ارزش کم دو MSBبایت متغیر ارزش پر بایتدهد .Varnبایتی می تشکیل را

Varn = )256*MSB (+LSB

مثالDim A As Integer, I As IntegerA = 2I = Makeint )A , 1( ‘)1*256(+2 =258End

Page 91: AVR2

91

یکدیگر ... به متغیرها و کدها تبدیل STRدستور

Var = STR )X (

عددی متغیر یک توان می دستور این رشته (X) با به کرد .( VAR)را تبدیل

مثالDim A As Byte , S As String*10

A = 123 ‘ A is a num

S= Str )A ( ‘now A is a string

Print S

End

Page 92: AVR2

92

یکدیگر ... به متغیرها و کدها تبدیل VALدستور

Var = VAL )S (

رشته یک توان می دستور این عددی (S)با متغیر به کرد .(VAR)را تبدیل

مثالDim A As Byte , S As String*10

S= “123” ‘now S is a string

A = Val)S( ‘convert string to num

Print A

A = A*2 ‘now you can use it as a num

Print A ‘ 246 Prints

End

Page 93: AVR2

93

یکدیگر ... به متغیرها و کدها تبدیل STRINGدستور

Var = STRING )m , n (

اسکی کد دستور تکرار mاین تعداد با متغیر nرا در و کرده رشته به تبدیلvar . دادن قرار صورت در دهد می بطول m =0قرار رشته کاراکتر 255یک

. دادن قرار و شود می نیست .n = 0تولید قبول قابل

مثالDim S As String*15

S= String )5 , 65 (

Print S ‘AAAAA

End

Page 94: AVR2

94

یکدیگر ... به متغیرها و کدها تبدیل BIN2GREYدستور

Var1 = BIN2GREY )Var2 (

نوع var2متغیر از ای داده تواند می , WORD , INTEGER , BYTEکهLONG متغیر در و شده تبدیل گری کد به گیرد .VAR1باشد می قرار

مثالDim B As Byte

For B = 0 To 15

Print Bin2grey )B ( ‘0 1 3 2 6 7 5 4 12 13 15…

Next

End

Page 95: AVR2

95

یکدیگر ... به متغیرها و کدها تبدیل GREY2BINدستور

Var1 = grey2bin )Var2 (

گری متغیر var2کد در و شده تبدیل باینری مقدار داده var1به تواند می کهنوع از گیرد .WORD , INTEGER , BYTE , LONGای می قرار باشد

مثالDim B As Byte

For B = 0 To 15

Print Grey2bin )B ( ‘0 1 3 2 7 6 4 5 15 14…

Next

End

Page 96: AVR2

96

حافظه های آدرس و رجیسترها

AVR ميكروكنترلرهاِي�

Page 97: AVR2

97

... حافظه های آدرس و رجیسترها

میکروهای در (R0 –R31)بیتی 8رجیستر 32دارای AVRتمام منظوره همهCPU . هستند خود

و LSB(R28با )LSB( , R29)MSB(R30با )R31)MSBرجیسترهای R27)MSB( باR26)LSB( رجیستر سه نامهای 16تشکیل با ترتیب با بیتی

X,Y,Z. دهند می را

Page 98: AVR2

98

... حافظه های آدرس و رجیسترها SETدستور

Set Bit/PinSet Var.x

کرد . یک را بیت یک توان می دستور این توسطBit یک یا و بیت یک تواند از Varباشدو PORTB.1مانند SFRمی متغیری

داده می BYTEبرای Xباشد . BYTE , INTEGER , WORD , LONGنوعبرای WORD برای 15تا 0 , 7تا 0تواند تواند LONGو باشد .31تا 0می

مثالDim B1 As Bit , B2 As Byte , C As Word , L As LongSet Portb.1 ‘set bit 1 of port BSet B1 ‘bit variableSet B2.1 ‘set bit 1 of var b2Set C.15 ‘set highest bit of wordSet L.31 ‘set MS bit of LONG

Page 99: AVR2

99

... حافظه های آدرس و رجیسترها TOGGLEدستور

کند . می معکوس را بیت یک یا پایه یک منطقی مقدار دستور اینTOGGLE pin/bit

PIN یک تواند باشد .PORTB.1مانند SFRمی بیت یک یا و

مثالDim VAR As Byte

Config Pinb.0 = output ‘portb.0 is an output now

Toggle portb.0 ‘toggle state

Waitms 1000 ‘wait for 1 second

Toggle Portb.0 ‘toggle state again

Page 100: AVR2

100

... حافظه های آدرس و رجیسترها RESETدستور

کرد . صفر را بیت یک توان می دستور این توسطRESET pin/bitRESET Var.x

Bit یک یا و بیت یک تواند از Varباشدو PORTB.1مانند SFRمی متغیریداده می BYTEبرای Xباشد . BYTE , INTEGER , WORD , LONGنوع

برای WORD برای 15تا 0 , 7تا 0تواند تواند LONGو باشد .31تا 0می

مثالDim B1 As Bit , B2 As Byte , I As Integerreset Portb.3 ‘reset bit 3 of port Breset B1 ‘bit variableresreset B2.0 ‘reset bit 0 of var b2reset I.15 ‘reset highest bit of I

Page 101: AVR2

101

... حافظه های آدرس و رجیسترها BITWAITدستور

BITWAIT X, SET/RESET

بیت که زمانی تا برنامه اجرای دستور این =( RESETیا X, )SET) = 1توسطصورت . ) 0 در ماند می متوقف جاری خط در شرایط , TRUEشود شدن

یابد . می ادامه بعد خط از برنامه داخلی Xاجرای رجیستر بیت یک تواند میکه PORTB.Y مانند تا Yباشد صفر اعداد بین تواند کند .7می تغییر

مثالDim A As Bit

Bitwait A , .Set ‘ wait until Bit A is Set

Bitwait PortB.7 , reset ‘ wait until Bit 7 of Port B is 0

Page 102: AVR2

102

... حافظه های آدرس و رجیسترها CPEEKدستور

Var = CPEEK)address(

شده ذخیره کدی حافظه از ادرسی در که بایتی برگرداندن برای دستور این ازنیز . داخلی رجیسترهای به توانید می دستور این با کنیم می استفاده استچیزی . داخلی حافظه در توان نمی دستور این با البته کنید پیدا دسترسی

نوشت .

مثالDim I As Integer , B1 As Byte

For I = 0 To 31

B1 = Peek )I ( ‘ only 32 registers in AVR

Print Hex )b1( ‘ get byte from internal memory )r0-r31(

Next

Page 103: AVR2

103

... حافظه های آدرس و رجیسترها CPEEKHدستور

Var = CPEEKH)address(

کدی حافظه باالی صفحه در شده ذخیره بایت توان می دستور این FLASH)باMEM) میکروMEGA103 دارای که میکروها دیگر را K 128یا است حافظه

خواند .ADDRESS بایت یک متغیر در آدرس محتوای و حافظه می VARآدرس قرار

گیرد .Cpeek) 0( باالی حافظه بایت اولین .K 64محتوای گرداند برمی را

Page 104: AVR2

104

... حافظه های آدرس و رجیسترها LOADADRدستور

LOADADR var ,reg

کنید . ذخیره رجیستر جفت یک در را متغیر یک آدرس توانید می دستور این متغیری Varبادوبایتی متغیرهای در آن آدرس که و X,Y,Zاست شود می X,Y, Zرجیسترهای REGذخیره

هستند . است . شده اضافه نویسان برنامه به کمک برای و است اسمبلی دستورات جز دستور این

مثالDim S As String ,A As Byte

$asm

Loadadr S , X ‘load address into R26 and R27

ld _temp1 , X ‘load value of location R26/R27 into

‘ R24 ) _temp1(

$end asm

End

Page 105: AVR2

105

... حافظه های آدرس و رجیسترها OUTدستور

OUT address , value

آدرس یا افزاری سخت پورت یک به بایت یک توان می دستور این توسطکرد / . ارسال خارجی داخلی حافظه

Value آدرس بین addressبه تواند می می 0H – FFFF Hکه فرستاده باشددستور . حافظه OUTشود مکانهای تمام در تواند کنید . AVRمی توجه بنویسد

برای شود . WORDیک addressکه می تعریف

مثالDim A As Byte

Out &H8000 , 1 ‘send 1 to the databus )d0 – d7( at address 8000

End

Page 106: AVR2

106

... حافظه های آدرس و رجیسترها INPدستور

Var = INP )address(

حافظه آدرس یا افزاری سخت پورت از بایت یک توان می دستور این توسطخواند / . خارجی داخلی

آدرس بین addressمحتوای تواند می در 0H – FFFF H که و شده خوانده باشددستور . varمتغیر گیرد می حافظه INPقرار مکانهای تمام از تواند بخواند .AVRمی

مثالDim A As Byte

A = INP )&H8000 ( ‘read value is placed on databus)d0 – d7( at ‘address 8000 َPrint A

End

Page 107: AVR2

107

... حافظه های آدرس و رجیسترها PEEKدستور

Var = PEEK )address(

گرداند . برمی را رجیستر یک محتوای دستور اینAddress رجیسترهای بین R0 – R7آدرس که می 31 - 0 است

متغیر . در رجیستر محتوای دستور . varباشد گیرد می فقط ) (PEEKجایولی بخواند را رجیسترها محتوای تواند مکانهای ) (INPمی تمام از تواند می

بخواند . حافظه

مثالDim A As Byte

A = PEEK )0 ( ‘return the first byte of the internal memory )R0( End

Page 108: AVR2

108

... حافظه های آدرس و رجیسترها POKEدستور

POKE address , value

بنویسیم . رجیسترها از یکی در را داده بایت یک توانیم می دستور این با

آدرس در معث بایتی یک ثابت یا متغیر بین addressمقدار برای 31 - 0 کهشود .R0 – R7رجیسترهای می نوشته است

مثالPoke 1 , 5 ‘write 5 to R1

End

Page 109: AVR2

109

... حافظه های آدرس و رجیسترها VARPTRدستور

Var = VARPTR )var2 (

گرداند . می بر حافظه مکان در را متغیر یک آدرس دستور اینمتغیر متغیر var2آدرس در و آمده بدست حافظه مکان می varدر قرار

گیرد .

مثالDim B As Xram Byte At &H300 , I As Integer , W As Word

W = Varptr )b(

Print Hex)W( ‘Print &H0300

End

Page 110: AVR2

110

پرش و حلقه دستورالعملهای

AVR ميكروكنترلرهاِي�

Page 111: AVR2

111

پرش ... و حلقه دستورالعملهایGOTOو JMPدستورالعمل

GOTO labelJMP label

برچسب به توان می دستورات این برچسب . labelبا کرد با labelپرش بایدتا (colon)عالمت : تواند می و یابد به . 32پایان باشد داشته طول کارکتر

دو از زمانیکه باشید داشته شما labelخاطر به کامپایلر شود استفاده نام همwarning . دستور دهد ندارد . returnمی وجود برچسب از برگشت برای

مثالStart : ‘A label must end with a colonA = A +1 ‘Increment AIf A >10

Goto start ‘Or Jmp startEnd If ‘Close IfEnd

Page 112: AVR2

112

پرش ... و حلقه دستورالعملهایDO-LOOPدستورالعمل

دستورات کلی باشد .DO … LOOPفرم می زیر بصورتDO

statementsLOOP [ UNTIL expression ]

که statementدستورالعمل زمانی ارزش expressionتا صفر TRUEدارای غیر یاشود . . می تکرار یکبار حداقل حلقه نوع این بنابراین شد خواهد تکرار DO –LOOPباشد

با که است بینهایت حلقه یک و EXIT DOبتنهایی شد خارج حلقه درون از توان مییابد . ادامه حلقه از بعد خط در برنامه اجرای

مثالDim A As ByteDo ‘start the loopA = A + 1 ‘Increment APrint A ‘Print ItLoop Until A = 10 ‘repeat until A = 10Print A

Page 113: AVR2

113

پرش ... و حلقه دستورالعملهایFOR-NEXTدستورالعمل

دستورات کلی باشد .FOR .. NEXTفرم می زیر بصورتFOR var = start TO end [STEP VALUE ]

statementsNEXT var

Var که کند می عمل کانتر یک و startبعنوان آن می endمقداراولیه دو هر و است پایانی مقدارباشند . عددی متغیر یا عددی ثابت یک عددی Value توانند می stepمقدار که دهد می نشان را

نام . وجود باشد منفی یا مثبت از varتواند نیست .NEXTبعد الزامیمثال

Dim A As Byte , B1 As Byte , C As IntegerFor A = 1 To 10 Step 2

Print “this is a A “ ; ANext AFor C = 10 To -5 Step -1

Print “this is a C “ ; CNext For B1 = 1 To 10

Print “this is a B1 “ ; B1Next

Page 114: AVR2

114

پرش ... و حلقه دستورالعملهایWHILE-WENDدستورالعمل

WHILE condition statements

WENDزمانی While-Wend دستورالعمل تا حلقه این تکرار که دهد می تکرار حلقه یک تشکیل

را نتیجه شده بکاربرده عبارت که یابد می بگیرد . FALSEادامه صفر مقدار یا و کندبنابراین , whileدستورالعمل باشد می شرط به حلقه به ورود ممکن Whileبصورت

نشود . اجرا اصال حالتهایی در استحاصل statementبخش که وقتی یا conditionتا تکرار FALSEصفر است نشده

شد . خواهد

مثالDim A As Byte

A = 1While A >10

Print A Incr A

Wend

Page 115: AVR2

115

پرش ... و حلقه دستورالعملهایIFدستورالعمل

عبارت زیر حالتهای کلیه چند statementدر یا ساده دستورالعمل یک تواند میباشد . مرکب دستورالعمل

:0حالت If Expression THEN statement

عبارت statementدستورالعمل که شود می اجرا دارای expressionزمانیباشد . TRUE ارزش:1حالت

If Expression Then statement1

Else statement2

End Ifعبارت که ارزش expressionدرصورتی دستورالعمل TRUEدارای باشد

statement1 , دستورالعمل صورت این غیر در شد خواهد اجرا statement2اجراشود . می

Page 116: AVR2

116

پرش ... و حلقه دستورالعملهای ... IFدستورالعمل

: 2حالت If Expression1 Then

statement1Elseif [Expression2 Then]

statement2Else

statement3End If

عبارت که ارزش expression1درصورتی دستورالعمل TRUEدارای باشدstatement1 , عبارت که صورتی در شد خواهد ارزش expression1اجرا دارای

FALSE اختیاری عبارت ارزش expressionولی دستورالعمل TRUEدارای باشدstatement2 دستورالعمل صورت این غیر در و شود می اجرا statement3اجراشد . خواهد

دستور با کرد .IFهمچنین امتحان را متغیر یک از بیت یک بودن یک یا صفر توان میIF bit =1 THEN OR IF bit =0 THEN

Page 117: AVR2

117

پرش ... و حلقه دستورالعملهای ...IFدستورالعمل

مثالDim Var As Byte , Idx As ByteIdx = 1If Var.Idx = 1 thenSet portb.0

Else....

Dim A As IntegerA = 10If A = 10 then

Print “this part is executed“ Else

Print “ this will never be executed”End if

Page 118: AVR2

118

پرش ... و حلقه دستورالعملهایCASEدستورالعمل

متغیر مقدار VARاگر باشد test1با سپس statement1برابر و شود می اجرااز بعد برنامه یابد end selectاجرای می .ادامه

متغیر اگر اینصورت غیر مقدار varدر مقدار test1با با ولی نباشد test2برابرباشد از statement2برابر بعد برنامه اجرای سپس و شود می endاجرا

select یابد می .ادامهمتغیر اگر نهایتا مقادیر varو از هیچکدام برابر test2و test1با

از statement3نباشد , بعد برنامه اجرای سپس و شود می end selectاجرایابد . می ادامه

کنید : امتحان را متغیر نیز زیر صورتهای به توانید می شمااز بزرگتر موردنظر متغیر Case is >2باشد . 2اگر

گرفت : نظر در کردن امتحان برای را ای محدوده توان می یا وبین موردنظر متغیر Case 2 to 5باشد . 5تا 2اگر

Page 119: AVR2

119

پرش ... و حلقه دستورالعملهایCASE ….دستورالعمل

مثالDim X As Byte Do

Input “ X?” , X Select Case X ‘test X

Case 1 To 3 :Print “ 1 or 2 or 3” Case 4 :Print “4”

Case Is >10 :Print “> 10” Case Else :Print “no“

End SelectLoopEnd

Page 120: AVR2

120

پرش ... و حلقه دستورالعملهایEXITدستور

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

EXIT FOREXIT DOEXIT WHILEEXIT SUBEXIT FUNCTION

مثالDo

A = A +1 If A = 100 Then

Exit Do End If

LoopEnd

Page 121: AVR2

121

پرش ... و حلقه دستورالعملهایON VALUEدستورالعمل

کرد . پرش مختلفی های برچسب یا توابع به توان می متغیر مقدار به توجه با دستور این باON var [GOTO] [GOSUB] label1 [,label2]

Var یک تواند می که شدن امتحان برای نظر مورد و PORTD مانند SFRمتغیر و LABEL1باشدLABEL2 .. مقدار به توجه با که هستند هایی برچسب شود . VARو می پرش آنها به

مثالDim X As ByteX = 1ON X Gosub Lbl2,Lbl3 ‘jump to sub lbl3

X=0 ON X Goto Lbl1, Lbl4 ‘jump to label lbl1Lbl1:Incr XPrint XLbl2:EndPrint Xreturn

Page 122: AVR2

122

برنامه در تاخیر ایجاد

AVR ميكروكنترلرهاِي�

Page 123: AVR2

123

برنامه در تاخیر … ایجادDELAYدستور

مقدار به کوتاهی مدت برای دستور برنامه 1000این اجرای در ثانیه میکروکند . می ایجاد تاخیر

مثالDELAY ‘Wait for hardware to be ready

Page 124: AVR2

124

برنامه در تاخیر … ایجادWAITusدستور

شود . می دستور این از برنامه در تاخیر ایجاد برایWAITus microsecond

مدت به برنامه سپری . microsecondاجرای از پس شود می متوقف ثانیه میکرو . یابد می ادامه بعد خط از برنامه اجرای شده مشخص زمان Microsecondشدن

بین عددی تواند باشد . (255 – 1)می

آوردن . بدست برای دهد نمی شما به را دقیق زمان تاخیری دستورات

از دقیق زمانکنید . استفاده تایمرها

مثال

Waitus 10Print “BASCOM”

End

نکته

Page 125: AVR2

125

برنامه در تاخیر … ایجادWAITmsدستور

شود . می دستور این از برنامه در تاخیر ایجاد برایWAITms milisecond

مدت به برنامه سپری . milisecondاجرای از پس شود می متوقف ثانیه میلی . یابد می ادامه بعد خط از برنامه اجرای شده مشخص زمان Milisecondشدن

بین عددی تواند باشد . (65535 –1 )می

مثال

Waitms 10Print “BASCOM”

End

Page 126: AVR2

126

برنامه در تاخیر … ایجادWAITusدستور

شود . می دستور این از برنامه در تاخیر ایجاد برایWAIT second

مدت به برنامه شدن . secondاجرای سپری از پس شود می متوقف ثانیه . یابد می ادامه بعد خط از برنامه اجرای شده مشخص زمان

مثالWait 3Print “BASCOM”

End

Page 127: AVR2

127

تابع و برنامه زیر

AVR ميكروكنترلرهاِي�

Page 128: AVR2

128

تابع و برنامه … زیرتابع DECLARE FUNCTIONمعرفی

که . زمانی شود می استفاده برنامه ابتدای در تابع معرفی برای دستور این ازاز . استفاده صورت در باشد شده معرفی تابع بایستی کنیم معرفی را تابعی بخواهیم

شود . برگردانده داده یک بایستی می تابعDECLARE FUNCTION TEST[) [BYREF/BYVAL]var as type1(] As type2

TEST . بصورت داده انتقال است موردنظر تابع از BYVALنام کپی یک که شود می باعثحالت . در ولی نشود ایجاد تغیری هیچ آن محتوای در و شود فرستاده تابع به BYREFمتغیر

بر عملیات انجام صورت در برگشتی داده و گذارد می اثر آن در تغیرات و ارسال متغیر آدرسگزینه . از استفاده عدم صورت در بود نخواهد برابر خود اولیه مقدار با آن روی

]BYREF/BYVAL[ بصورت داده فرض پیش . BYREFبصورت شود می نوع Type1فرستادهو شده ارسال نوع . type2داده داده توانند می دو هر که است برگشتی داده , BYTE نوع

INTEGER, WORD , LONG ,STRING. باشند

Page 129: AVR2

129

تابع و برنامه … زیرتابع ...DECLARE FUNCTIONمعرفی

مثال

زیر مثال مقدار BYVALبصورت Iدر از کپی یک بنابراین است شده به Iفرستاده . شود نمی ایجاد آن محتوای در تغیری هیچ و شود می فرستاده تابع بصورت Sزیر

BYREF . تابع فراخوانی گیرد می صورت آن در تغیر و شود می فرستادهMYFUNCTION باK و Z داده نوع مقدار STRINGو INTEGERاز و استنوع از متغیر INTEGERبرگشتی در که در . Tاست توانید می شما گیرد می قرار

کنید . تعریف محلی متغیر یک تابع محدوده

Page 130: AVR2

130

تابع و برنامه … زیرتابع ... DECLARE FUNCTIONمعرفی

مثالDeclare Function Myfunction )Byval I As Integer , S As String (As IntegerDim K As Integer , Z As String*10, T As IntegerK =5 :Z = “123 “ : T = Myfunction)K , Z (Lcd T ‘25Lcd Z ‘BascomLcd K ‘5EndFunction Myfunction )Byval I As Integer , S As String (As Integer

local P As Integer Functions

P = I * 5 I = 5

S = “Bascom“ T = P

Myfunction = TEnd Function

Page 131: AVR2

131

تابع و برنامه … زیربرنامه زیر DECLARE SUBمعرفی

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

باشد . شده معرفیDECLARE SUB TEST[) [BYREF/BYVAL] var as type(]

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

BYVAL نمی ایجاد تغیری آن محتوای در وجه هیچ به و شود می فرستاده داده از کپی یکو TESTشود . زیربرنامه و VARنام برنامه زیر به ارسالی متغیر که TYPEنام است آن نوع

نوع داده تواند باشند .BYTE , INTEGER, WORD ,STRING مینوشتن به شروع سپس و کرده تعریف زیر دستور توسط آنرا نام ابتدا برنامه زیر نوشتن برای

کنیم . می زیربرنامهSUB Name [ ) var1 ( ]

NAME دستور توسط باید که زیربرنامه دستور Declareنام با و باشد شده EndمعرفیSub. یابد می پایان

Page 132: AVR2

132

تابع و برنامه … زیرزیربرنامه ...DECLARE SUBمعرفی

مثالDim A As Byte , B1 As Byte , C As ByteDeclare Sub Test ) A As Byte (A =1 : B1 = 2 : C = 3Print A ; B1;C ,123 will printCall Test )B1(Print A ; B1;C ‘ 223 will printEnd

Sub test )A As Byte ( Print A ; B1 ; C ‘123 will print

End Sub

Page 133: AVR2

133

تابع و برنامه … زیرCALLفراخوانی

کنیم . می فراخوانی را تابعی یا برنامه زیر دستور این توسطCALL TEST) VAR1 , VAR2 , …(

VAR1 , VAR2 . , را برنامه زیر توان می هستند یابند می انتقال برنامه زیر به که متغیرهاییکرد . فراخوانی نیز زیر بصورت

TEST VAR1 , VAR2دستور , توسط باید آن فراخوانی از قبل برنامه زیر نام که است بتذکر فراخوانی Declareالزم

آرگومان. با حتما بایستی دهیم انتقال برنامه زیر به را ثابت عدد بخواهیم اگر آن BYVALشوددهیم . انتقال را

Page 134: AVR2

134

تابع و برنامه … زیر ...CALLفراخوانی

مثالDim A As Byte , B As Byte Declare Sub Test ) B1 As Byte , Byval B2 As Byte (A =65Call Test ) A , 5 (Test A , 5Print A ‘ will print A = 10End

Sub Test ) B1 As Byte , Byval B2 As Byte (Lcd B1LowerLineLcd BCD)B2(B1 = 10B2 = 15End Sub

Page 135: AVR2

135

تابع و برنامه … زیریا محلی متغیر LOCALبکارگیری

کنیم . می استفاده زیربرنامه در محلی متغیر تعریف برای دستور این ازLOCAL VAR As Type

VAR و متغیر توانند typeنام می که است داده , STRING , WORD , INTEGERنوعBYTE , SINGLE , LONG های داده نوع نمی ERAM , SRAM , XRAMباشند ها آرایه و . شوند تعریف محلی توانند

برای مربوطه برنامه زیر فراخوانی هنگام در فقط که است موقت متغیر یک محلی متغیر یکمتغیر عمر برنامه زیر از برگشت با و شود می گرفته نظر در فضا اتمام ( LIFE TIME)آن به

رسد . می

شوند . تعریف محلی بصورت توانند نمی بیتی متغیرهای

نکته

Page 136: AVR2

136

تابع و برنامه … زیریا محلی متغیر ...LOCALبکارگیری

مثالDeclare Sub Test2Do

Call test2LoopEnd

Sub Test2 Local A As Byte

Incr A Lcd A

End Sub

Page 137: AVR2

137

تابع و برنامه … زیریا محلی متغیر LOCALبکارگیری

می ادامه برچسب آدرس از را برنامه اجرای و کند می پرش زیربرنامه به دستور ایندهد .

GOSUB labelLABEL . دستور توسط شود می پرش آن به که است برنامه زیر برچسبی می RETURNناماز دستور SUBتوان از بعد برنامه اجرای و کرد یابد .GO SUBبرگشت می ادامه

مثال

Dim X As ByteGosub Routine ‘Jump to routinePrint “ Hello” ‘After come back from routine Print “Hello”

End

RoutineX = X + 2Print XReturn

Page 138: AVR2

138

امکانات با کار و بندی در AVR پیکرهBASCOM

6

Page 139: AVR2

139

ها پورت بندی پیکره

AVR ميكروكنترلرهاِي�

Page 140: AVR2

140

ها ... پورت بندی پیکره

یک . جهت نماییم می استفاده بندی پیکره این از پورتها پایه جهت تعیین برایباشد . خروجی یا ورودی تواند می پایه

Config Portx = State

Config Pinx.y = State

X , Y های پایه ترتیب به توانند می میکرو به های 7 -0 بسته A ,B ,C ,Dپورت,E ,F . باشد :Stateباشند زیر های گزینه از یکی تواند می

INPUT صفر : 0یا شده انتخاب پورت یا پایه داده جهت رجیستر حالت این درشود . می استفاده ورودی بعنوان پورت یا پایه و شود می

OUTPUT یک: 1یا شده انتخاب پورت یا پایه داده جهت رجیستر حالت این درشود . می استفاده خروجی بعنوان پورت یا پایه و مشود

رجیستر از بایستی بخوانید پورتی از بخواهید مربوطه PINزمانیکه پورترجیستر در بایستی پورت در نوشتن هنگام در و کنید بنویسید .PORTاستفاده

Page 141: AVR2

141

ها ... پورت بندی پیکره

مثالDim A As Byte , Count As Byte

Config Portd = input ‘configure PORT D for input modeA = Pind ‘Read data on PortdA = A And Portd ‘A = A & PORTD

Print A Bitwait Pind.7 , reset ‘wait until bit is lowConfig portb = outputPortb = 10 ‘set portb to 10Portb = Portb And 2Set Portb.0 ‘set bit 0 of portb to 1Incr Portb

Page 142: AVR2

142

ها ... پورت بندی پیکرهمیکرو پورتهای ATMEGA32بررسی

پورتA

طرفه I/Oیک Aپورت حافظه . 8دو مکان از آدرس سه است به I/Oبیتی اختصاصداده . Aپورت رجیستر برای آدرس یک داده , PORTAدارد جهت رجیستر دومی

DDRA پورت ورودی پایه سومی پورت . A , PINAو ورودی های پایه آدرس Aاست

هم داده جهت رجیستر و داده رجیستر که صورتی در است خواندن قابل فقطمقاومت . دارای پورت های پایه تمام هستند نوشتنی هم و مجزا Pull upخواندنی

هستند .

PINA . از یک هر روی بر فیزیکی مقدار به دسترسی آدرس این نیست رجیستر یکپورت های زمانیکه . Aپایه سازد می ممکن لچ , PORTAرا داده شود می خوانده

از Aپورت زمانیکه و شود می بر PINAخوانده که منطقی مقدار شود می خواندهشود . می خوانده است موجود ها پایه روی

Page 143: AVR2

143

ها ... پورت بندی پیکرهمیکرو پورتهای ATMEGA32بررسی

پورت Aرجیسترهای پورت داده A - PORTA [PORT A DATA REGISTER ]رجیستر

R/W R/W R/W R/W R/W R/ W R/W R/WPORTA7PORTA6PORTA5PORTA4PORTA3PORTA2PORTA1PORTA0

پورت داده جهت A - DDRA [PORT A DATA DIRECTION REGISTER ]رجیستر

R/W R/W R/W R/W R/W R/ W R/W R/W

PORTA7PORTA6PORTA5PORTA4PORTA3PORTA2PORTA1PORTA0

پورت ورودی های پایه آدرس A PINA- [PORT A INPUT PINS ADDRESS ] بایت

R/W R/W R/W R/W R/W R/ W R/W R/W

PORTA7PORTA6PORTA5PORTA4PORTA3PORTA2PORTA1PORTA0

Page 144: AVR2

144

ها ... پورت بندی پیکرهمیکرو پورتهای ATMEGA32بررسی

پورت از یک Aاستفاده عنوان دیجیتال I/Oبه عمومیهای 8تمام پایه بعنوان زمانیکه موجود مساوی I/Oپایه عملکرد دارای شوند می استفاده دیجیتال

بیت : I/Oپایه , Panهستند . رجیستر DDAnعمومی است . DDRAدر پایه جهت کننده مشخصباشد , DDAnاگر اگر PAnیک و گیرد می قرار استفاده مورد خروجی پایه یک باشد , DDAnبعنوان صفر

PAn . اگر شود می گرفته نظر در ورودی پایه یک بعنوان PORTAnبعنوان پایه هنگامیکه باشد یکمقاوت , شود می تعریف باید . Pull-upورودی مقاومت کردن خاموش برای شود می PORTAnفعال

به . افتد می اتفاق ریست زمانیکه پورت های پایه شود تعریف خروجی بعنوان پایه اینکه یا شود صفرروند . Tri-stateحالت می

DDAnPORTAnI/OPull upComment

00InputNoTri-state

01InputYesPAn will source current if ext. pull up low

10OutputNoPush-Pull Zero output

11OutputNoPush-Pull one output

Page 145: AVR2

145

ها ... پورت بندی پیکرهمیکرو پورتهای ATMEGA32بررسی

پورتB

طرفه I/Oیک Bپورت حافظه . 8دو مکان از آدرس سه است به I/Oبیتی اختصاصداده . Bپورت رجیستر برای آدرس یک داده , PORTBدارد جهت رجیستر دومی

DDRB پورت ورودی پایه سومی پورت . B , PINBو ورودی های پایه آدرس Bاست

هم داده جهت رجیستر و داده رجیستر که صورتی در است خواندن قابل فقطمقاومت . دارای پورت های پایه تمام هستند نوشتنی هم و مجزا Pull upخواندنی

هستند .

PINB . از یک هر روی بر فیزیکی مقدار به دسترسی آدرس این نیست رجیستر یکپورت های زمانیکه . Bپایه سازد می ممکن لچ , PORTBرا داده شود می خوانده

از Bپورت زمانیکه و شود می بر PINBخوانده که منطقی مقدار شود می خواندهشود . می خوانده است موجود ها پایه روی

Page 146: AVR2

146

ها ... پورت بندی پیکرهمیکرو پورتهای ATMEGA32بررسی

پورت Bرجیسترهای پورت داده B - PORTB [PORT B DATA REGISTER ]رجیستر

R/W R/W R/W R/W R/W R/ W R/W R/WPORTB7PORTB6PORTB5PORTB4PORTB3PORTB2PORTB1PORTB0

پورت داده جهت B - DDRB [PORT B DATA DIRECTION REGISTER ]رجیستر

R/W R/W R/W R/W R/W R/ W R/W R/W

PORTB7PORTB6PORTB5PORTB4PORTB3PORTB2PORTB1PORTB0

پورت ورودی های پایه آدرس B PINB- [PORT B INPUT PINS ADDRESS ] بایت

R/W R/W R/W R/W R/W R/ W R/W R/W

PORTB7PORTB6PORTB5PORTB4PORTB3PORTB2PORTB1PORTB0

Page 147: AVR2

147

ها ... پورت بندی پیکرهمیکرو پورتهای ATMEGA32بررسی

پورت از یک Bاستفاده عنوان دیجیتال I/Oبه عمومیهای 8تمام پایه بعنوان زمانیکه موجود عملکرد I/Oپایه دارای شوند می استفاده دیجیتال

هستند . بیت : I/Oپایه , Pbnمساوی رجیستر DDBnعمومی جهت DDRBدر کننده مشخصاگر . است باشد , DDBnپایه اگر PBnیک و گیرد می قرار استفاده مورد خروجی پایه یک بعنوان

DDBn , باشد اگر . PBnصفر شود می گرفته نظر در ورودی پایه یک باشد PORTBnبعنوان یکمقاوت , شود می تعریف ورودی بعنوان پایه خاموش . Pull-upهنگامیکه برای شود می فعال

باید مقاومت های . PORTBnکردن پایه شود تعریف خروجی بعنوان پایه اینکه یا شود صفرحالت به افتد می اتفاق ریست زمانیکه روند . Tri-stateپورت می

DDBnPORTBnI/OPull upComment

00InputNoTri-state

01InputYesPBn will source current if ext. pull up low

10OutputNoPush-Pull Zero output

11OutputNoPush-Pull one output

Page 148: AVR2

148

ها ... پورت بندی پیکرهمیکرو پورتهای ATMEGA32بررسی

پورتC

طرفه I/Oیک Cپورت حافظه . 8دو مکان از آدرس سه است به I/Oبیتی اختصاصداده . Cپورت رجیستر برای آدرس یک داده , PORTCدارد جهت رجیستر دومی

DDRB پورت ورودی پایه سومی پورت . C , PINCو ورودی های پایه آدرس Cاست

هم داده جهت رجیستر و داده رجیستر که صورتی در است خواندن قابل فقطمقاومت . دارای پورت های پایه تمام هستند نوشتنی هم و مجزا Pull upخواندنی

هستند .

PINC . از یک هر روی بر فیزیکی مقدار به دسترسی آدرس این نیست رجیستر یکپورت های زمانیکه . Cپایه سازد می ممکن لچ , PORTCرا داده شود می خوانده

از Cپورت زمانیکه و شود می بر PINCخوانده که منطقی مقدار شود می خواندهشود . می خوانده است موجود ها پایه روی

Page 149: AVR2

149

ها ... پورت بندی پیکرهمیکرو پورتهای ATMEGA32بررسی

پورت Cرجیسترهای پورت داده C - PORTC [PORT C DATA REGISTER ]رجیستر

R/W R/W R/W R/W R/W R/ W R/W R/WPORTC7PORTC6PORTC5PORTC4PORTC3PORTC2PORTC1PORTC0

پورت داده جهت C - DDRC [PORT C DATA DIRECTION REGISTER ]رجیستر

R/W R/W R/W R/W R/W R/ W R/W R/W

PORTC7PORTC6PORTC5PORTC4PORTC3PORTC2PORTC1PORTC0

پورت ورودی های پایه آدرس C PINC- [PORT C INPUT PINS ADDRESS ] بایت

R/W R/W R/W R/W R/W R/ W R/W R/W

PORTC7PORTC6PORTC5PORTC4PORTC3PORTC2PORTC1PORTC0

Page 150: AVR2

150

ها ... پورت بندی پیکرهمیکرو پورتهای ATMEGA32بررسی

پورت از یک Cاستفاده عنوان دیجیتال I/Oبه عمومیهای 8تمام پایه بعنوان زمانیکه موجود عملکرد I/Oپایه دارای شوند می استفاده دیجیتال

هستند . بیت : I/Oپایه , PCnمساوی رجیستر DDCnعمومی جهت DDRCدر کننده مشخصاگر . است باشد , DDCnپایه اگر PCnیک و گیرد می قرار استفاده مورد خروجی پایه یک بعنوان

DDCn , باشد اگر . PCnصفر شود می گرفته نظر در ورودی پایه یک باشد PORTCnبعنوان یکمقاوت , شود می تعریف ورودی بعنوان پایه خاموش . Pull-upهنگامیکه برای شود می فعال

باید مقاومت های . PORTCnکردن پایه شود تعریف خروجی بعنوان پایه اینکه یا شود صفرحالت به افتد می اتفاق ریست زمانیکه روند . Tri-stateپورت می

DDCnPORTCnI/OPull upComment

00InputNoTri-state

01InputYesPCn will source current if ext. pull up low

10OutputNoPush-Pull Zero output

11OutputNoPush-Pull one output

Page 151: AVR2

151

ها ... پورت بندی پیکرهمیکرو پورتهای ATMEGA32بررسی

پورتD

طرفه I/Oیک Dپورت حافظه . 8دو مکان از آدرس سه است به I/Oبیتی اختصاصداده . Dپورت رجیستر برای آدرس یک داده , PORTDدارد جهت رجیستر دومی

DDRB پورت ورودی پایه سومی پورت . D , PINDو ورودی های پایه آدرس Dاست

هم داده جهت رجیستر و داده رجیستر که صورتی در است خواندن قابل فقطمقاومت . دارای پورت های پایه تمام هستند نوشتنی هم و مجزا Pull upخواندنی

هستند .

PIND . از یک هر روی بر فیزیکی مقدار به دسترسی آدرس این نیست رجیستر یکپورت های زمانیکه . Dپایه سازد می ممکن لچ , PORTDرا داده شود می خوانده

از Dپورت زمانیکه و شود می بر PINDخوانده که منطقی مقدار شود می خواندهشود . می خوانده است موجود ها پایه روی

Page 152: AVR2

152

ها ... پورت بندی پیکرهمیکرو پورتهای ATMEGA32بررسی

پورت Dرجیسترهای پورت داده D - PORTD [PORT D DATA REGISTER ]رجیستر

R/W R/W R/W R/W R/W R/ W R/W R/WPORTD7PORTD6PORTD5PORTD4PORTD3PORTD2PORTD1PORTD0

پورت داده جهت D - DDRD [PORT D DATA DIREDTION REGISTER ]رجیستر

R/W R/W R/W R/W R/W R/ W R/W R/W

PORTD7PORTD6PORTD5PORTD4PORTD3PORTD2PORTD1PORTD0

پورت ورودی های پایه آدرس D PIND- [PORT D INPUT PINS ADDRESS ] بایت

R/W R/W R/W R/W R/W R/ W R/W R/W

PORTD7PORTD6PORTD5PORTD4PORTD3PORTD2PORTD1PORTD0

Page 153: AVR2

153

ها ... پورت بندی پیکرهمیکرو پورتهای ATMEGA32بررسی

پورت از یک Dاستفاده عنوان دیجیتال I/Oبه عمومیهای 8تمام پایه بعنوان زمانیکه موجود عملکرد I/Oپایه دارای شوند می استفاده دیجیتال

هستند . بیت : I/Oپایه , PDnمساوی رجیستر DDDnعمومی جهت DDRDدر کننده مشخصاگر . است باشد , DDDnپایه اگر PDnیک و گیرد می قرار استفاده مورد خروجی پایه یک بعنوان

DDDn , باشد اگر . PDnصفر شود می گرفته نظر در ورودی پایه یک باشد PORTDnبعنوان یکمقاوت , شود می تعریف ورودی بعنوان پایه خاموش . Pull-upهنگامیکه برای شود می فعال

باید مقاومت های . PORTDnکردن پایه شود تعریف خروجی بعنوان پایه اینکه یا شود صفرحالت به افتد می اتفاق ریست زمانیکه روند . Tri-stateپورت می

DDDnPORTDnI/OPull upComment

00InputNoTri-state

01InputYesPDn will source current if ext. pull up low

10OutputNoPush-Pull Zero output

11OutputNoPush-Pull one output