Upload
api-3744913
View
205
Download
5
Embed Size (px)
Citation preview
1
نویسی برنامه محیطBASCOM
4
2
محيط منوهاي معرفي BASCOM
AVR ميكروكنترلرهاِي�
3
FILEمنوِي
( جدید فایل (FILE NEWایجادهستید آن در برنامه نوشتن به قادر شما که جدید پنجره یک گزینه این انتخاب با
شود . می ایجاد( فایل کردن ( OPEN FILEباز
می است موجود حافظه در که فایلی فراخوانی به قادر شما گزینه این انتخاب باباشید .
BASCOM استاندارد بصورت را می . ASCIIفایلها شمکا بنابراین کند می ذخیرهمثل ویرایشگری از سپس NOTEPAD توانید و کنید استفاده برنامه نوشتن برای. دهید انتقال محیط به آنرا
فایل ( (CLOSE FILEبستنابتدا . اید کرده ایجاد تغییری فایل در اگر بندد می را فعال برنامه پنجره گزینه این
نمایید . ذخیره را آن بستن از قبل باید فایل (FILE SAVE )ذخیره
بصورت فایل ذخیره به قادر شما گزینه این بود .ASCIIبا خواهید کامپیوتر در بعنوان کردن (FILE SAVE AS)ذخیره
. کنید ذخیره دیگر نام با را موجود فایل بود خواهید قادر گزینه این با
4
... FILE ادامه منوی
فایل نمایش (FILE PRINT PREVIEW)پرینت
به پرینت هنگام در برنامه موجود متنی فایل که دهد می نشان گزینه اینبود . خواهد صورت چه
یل فا (FILE PRINT)پرینت
نمایید . پرینت را برنامه در موجود فایل توانید می شما گزینه این با فایل ( (CLOSE FILEبستن
محیط از بود خواهید قادر شما گزینه این در BASCOMبا ولی شوید خارجاید , نکرده ذخیره را آن و اید داده تغییری تان برنامه در شما که صورتی
. میدهد هشدار خروج از پیش
5
EDIT منوی
EDIT UNDOببرید . بین از را برنامه در اخیرتان دستکاری توانید می شما گزینه این با
EDIT REDOبرگردانید دوباره بودید برده بین از که را اخیرتان دستکاری توانید می شما گزینه این .با
EDIT CUTدهید . انتقال جدیدی محل به و بریده را شده انتخاب متن توانید می شما گزینه این با
EDIT COPYدهید . انتقال جدیدی محل به و کرده کپی را شده انتخاب توانیدمتن می شما گزینه این با
EDIT PASTقبال که را متنی توانید می شما گزینه این مورد CUTیا COPYبا محل در بودید کرده
بچسبانید . نظر
6
...EDIT منوی
EDIT FINDکنید . جستجو تان برنامه در را متنی توانید می شما گزینه این با
EDIT FIND NEXTنمایید جستجو دوباره را جستجو مورد متن توانید می شما گزینه این .با
EDIT REPLACEدر یعنی نمایید برنامه در موجود متن جایگزین را متنی توانید می شما گزینه این با
جایگزین TEXT TO FINDقسمت دیگری متن توسط باید که جستجو مورد متنقسمت در و کنید تایپ را شود REPLACE WITHشود جایگزین باید که را متنی
کنیم . می تایپ EDIT GOTO
بروید . دلخواهی خط به سرعت به و توانیدمستقیما می شما گزینه این با
7
...EDIT منوی
EDIT TOGGLE BOOKMARKنظر مورد که برنامه از خاصی جاهای در توانید می شما توانید می شما گزینه این با
دستور دستور توسط آنها به و کنید گذاری نشانه EDIT GOTOشماستBOOKMARK . کنید پیدا دسترسی
EDIT GOTO BOOKMARKاید . گذاشته قبال که هایی نشانه به توانید می شما گزینه این با
EDIT IDENT BLOCKیک اندازه به را شده انتخاب متن توانید می شما گزینه این راست TABبا سمت به
کنید . منتقل EDIT UNIDENT BLOCK
یک اندازه به را شده انتخاب متن توانید می شما گزینه این چپ TABبا سمت بهکنید . منتقل
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داده فایل این در شود ریزی برنامه
میگردند .
9
... PROGRAM منوی
محاوره کادر یک در را خطا پیغام شما باشد موجود برنامه در خطایی اگرو کرد خواهید دریافت . COMPILEای هر روی بر کلیک با میشود متوقف
کرد . خواهید پرش داده رخ آن در خطا که خطی به انها از کدامPROGRAM SYNTAX CHECK
خطایی . اگر شود می چک امالیی خطای نداشتن برای شما برنامه گزینه این بوسیلهشد . نخواهد ایجاد فایلی هیچ باشد داشته وجود
PROGRAM SHOW RESULTدیدن برای گزینه این کرد .COMPILEنتیجه از استفاده میتوان
ایجاد OPTION COMPILE OUTPUT گزینه باید فایلها کدام اینکه تعیین برای رااند . مشاهده قابل آنها محتوای که فایلهایی ببینید را می REPORT ERROR شوند
باشند .
10
... PROGRAM منوی
PROGRAM SIMULATOR
کلید فشردن منو F2با از گزینه این فعال PROGRAMیا داخلی ساز شبیهکلیدی . کلمه نوشتن با برنامه در شما شد شبیه SIM$خواهد به قادر
شبیه . از توانید می شما تمایل صورت در میباشید برنامه سریعتر سازیمانند دیگر های سازی . AVR STUDIOسازی شبیه برای کنید استفاده نیز
فایل . OBJو DBJفایلهای باشند شده ایجاد شبیه OBJ باید برنامه درفایل AVR STUDIOسازی استفاده DBJو مورد داخلی ساز شبیه برای
گیرد . می قرارSEND TO CHIP
کلید یا گزینه این خواهد F4توسط ظاهر ریزی برنامه محیط پنجرهرا . خود نظر مورد میکرو گزینه این توسط توانید می شما شد
PROGRAM . کنید
11
TOOLS منوی
TERMINAL EMULATOR
کلیدهای یا گزینه این آوردن CTR + Tتوسط باال TERMINALباEMULATOR و ارسالی داده نمایش برای محیط این از توانید می
سریال ارتباط در نمایید .RS-232دریافتی استفاده کامپیوتر و میکرو بینLCD DESIGNER
بر و نمایید طراحی را خود دلخواه کاراکترهای توانید می گزینه این توسط. LCDروی دهید نمایش
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انجام
باشد . پیکسل
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توسطکرد . تعیین
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در انتخاب را خود نظر مورد
15
سازی شبیه محیط معرفی(SIMULATOR)
AVR ميكروكنترلرهاِي�
16
نوار ابزار در اين محيط
RUN
شود . می آغاز سازی شبیه دکمه این فشردن باPAUSE
دکمه فشردن با و شود می سازی شبیه موقت توقف شبیه RUN باعثکند . می پیدا ادامه سازی
STOP
شود . می جاری برنامه سازی شبیه کامل توقف باعثSTEP INTO CODE
هنگام و نمود اجرا خط به خط را برنامه توان می دکمه این از استفاده بااین . کرد بررسی را آنها اجرای مراحل و رفته آنها داخل به توابع فراخوانی
کلید فشردن با را اجرای . F8 کار بار هر از بعد دهید انجام توانید می نیزحالت به سازی شبیه دستور رود . PAUSEاین می
17
نوار ابزار در اين محيط ...
STEP OVER
توابع فراخوانی هنگام در که تفاوت این با است قبلی دکمه شبیه دکمه اینداخل رفت SUB ROUTINE به با . نخواهید توانید می را کار این
کلید دهید .SHIFT F8فشردن انجام نیزRUN TO
به RUN TOدکمه سپس و میدهد انجام شده انتخاب خط تا را سازی شبیهباشد ) ( . PAUSEحالت اجرا قابل کدهای شامل باید جاری خط میرود
18
...نوار ابزار در اين محيط
افزاری سخت سازی THE HARDWARE SIMULATOR شبیهیک ÷ . باالیی قسمت که شود می ظاهر ای نجره گزینه این روی بر کلیک مجازی LCDبا
به شده فرستاده های داده دادن نشان برای که باشد نوار . LCDمی شود می استفادهLED . از یک هر روی بر کلیک با دهد می نشان را پورتها خروجی پایین رنگ قرمز هایLED روشن و شود می معکوس آن وضعیت هستند ورودی بعنوان که رنگ سبز های
با . LEDشدن که است شده تعبیه نیز کلید صفحه یک است پورت پایه کردن یک بمنزلههم . ) (GETKBDدستور نیز آنالوگ مقدار ضمن در باشد می خواندن قابل برنامه در
مختلف های کانال برای هم و آنالوگ کننده مقایسه .ADCبرای است اعمال قابلREGISTERS
در . شده داده نشان مقدارهای دهد می نمایش قبلی مقادیر با را ثباتها پنجره دکمه اینکلیک مربوطه خانه روی آنها از کدام هر تغییر برای که باشد می هگزادسیمال پنجره این
کنید . وارد را جدید مقدار و کردهI/O REGISTERS ثباتهای نمایش مانند . I\Oبرای که شود می است .Rاستفاده دهی مقدار قابل
19
نوار ابزار در اين محيط ...
VARIABLESستون در کردن کلیک بار دو با متغیر انتخاب به قادر میباشید . VARIABLESشما
دکمه فشار جدید ENTERبا مقدار مشاهده به قادر برنامه اجرای هنگام درتوسط . را متغیر هر مقدار میتوانید همچنین بود خواهید برنامه در VALUEمتغیر
دهید . تغییرتایپ آنرا اندیس با همراه متغیر نام توانید می ای آرایه متغیر یک تماشای برای
دکمه توانید می سطر هر حذف برای و دهید .CTRL+DELکنید فشار راWATCH
ارزیابی سازی شبیه خالل در است قرار که وضعیتی کردن وارد برای گزینه اینشد صحیح نظر مورد وضعیت که هنگامی و گیرد می قرار استفاده مورد شود
حالت در سازی مکان . PAUSEشبیه در را نظر مورد حالت گرفت خواهد قراردکمه و نموده تایپ نظر دکمه . ADD-BUTTONمورد هنگامیکه دهید فشار را
MODIFY-BUTTON , قرار بازنگری مورد را نظر مورد وضعیت شود داده فشارآنرا . باید شما وضعیت هر حذف برای داد تغییر آنرا ارزش میتوان و میدهد
دکمه و کرده دهید .REMOVEانتخاب فشار را
20
نوار ابزار در اين محيط ...
LOCAL
در موجود محلی البته . FUNCTION یا SUBمتغیرهای میدهد نشان رانمود . اضافه آن به را متغیری نمیتوان
UPوضعیت ) ثبات میدهد( . STATUS REGوضعیت نشان میتوان FLAGرا را ها
روی بر کلیک داد .CHECK BOXتوسط وضعیت تغییر هاINTERRUPTS
هیچ . هنگامیکه میدهد نشان را وقفه منابع گزینه نشده ISRاین نویسی برنامهاگر , و بود خواهند فعال غیر ها دکمه همه به , ISRباشد مربوط دکمه شود نوشته
می , اجرا مربوطه وقفه ها دکمه از کدام هر روی بر کلیک با و شود می فعال آننمود . . ایجاد نیز پالس خاص پایه یک روی میتوان ضمن در شود
21
ریزی برنامه محیط معرفی
AVR ميكروكنترلرهاِي�
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شناسایی
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میکرو می ریست را
24
محیط معرفی TERMINAL EMULATOR
AVR ميكروكنترلرهاِي�
25
TERMINAL EMULATOR
سریال ارتباط در دریافتی و ارسالی داده نمایش برای توان می محیط این ازRS-232. نمود استفاده کامپیوتر و میکرو بین
از که اطالعاتی و ارسال میکرو به شود می تایپ محیط این در که اطالعاتیهنگامیکه . شود می داده نمایش پنجره دراین شود می دریافت کامپیوتر پورت
از برنامه یا SERIAL INدر از , SERIAL OUT و پس شود می استفادهPROGRAM سریال پورت به آن اتصال و میکرو درون برنامه می , PCکردن
توسط ارسالی های داده و UARTتوان کرده دریافت را بیرون به میکرومانند . دستوری از اگر همچنین یافت اطالع آنها سقم و صحت از و داد نمایش
INKEY , پنجره طریق از را خود داده میتوان شود استفاده برنامه درTERMINAL EMULATOR . از که باشید داشته توجه نمود ارسال میکرو به
BOUD RATE . نمایید استفاده کامپیوتر و میکرو در مشابه
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پرینت
شود . می
27
برنامه محیط توابع و دستوراتBASCOM نویسی
5
28
در برنامه یک محيطبدنه BASCOM
AVR ميكروكنترلرهاِي�
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
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
31
در برنامه یک ...BASCOM محيطبدنهکریستال
استفاده زیر دستور از هرتز برحسب شده استفاده کریستال فرکانس کردن مشخص براینماییم . می
$CRYSTAL = X
X. است هرتز حسب بر شده استفاده کریستال فرکانس
بنویسید . میکنید کار میکرو داخلی اسیالتور با که زمانی برای حتی را دستور این
مثال$CRYSTAL = 14000000 ’14MHZ external osc
$CRYSTAL = 8000000 ’8MHZ external osc
$CRYSTAL = 1000000 ’1MHZ internal osc
نکته
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
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
34
در برنامه یک ...BASCOM محيطبدنهحافظه ریزی برنامه شروع (FLASHآدرس اختیاری )
حافظه در دلخواه آدرسی از را خود برنامه که است نیاز قرار FLASHROMگاهیدهید .
$ROMSTART = ADDRESS
ADDRESS برنامه که است حافظه از حافظه HEXمکانی در آدرس این ازدستور , . ازاین که صورتی در شود می شدن نوشته به شروع کنترلر میکرو
آدرس خودکار طور به کامپایلر نشود گیرد .H0000&استفاده می نظر در را
مثال$ROMSTART = &H4000
35
در برنامه یک ...BASCOM محيطبدنه) اختیاری ) کالک تعیین
سری میکروهای از بعضی در دستور این جمله MEGA AVRبا یا MEGA103 ازMEGA603 . کالک تقسیم داد تغییر را سیستم کالک توان می افزاری نرم صورت به
شود . می استفاده تغذیه مصرف کاهش برای مثال بطورCLOCKDIVISION = var
Var اعداد بین معتبر باشد .128تا 2مقادیر تواند می
کار , سیستم کالک با مستقیما که دستوراتی نمایید استفاده دستور این از اگرکنند نکنند . می کار درست است ممکن
مثال$boud = 2400
Clockdivision = 2Print “Hello”
End
نکته
36
در برنامه یک ...BASCOM محيطبدنهبرنامه پایان
END
با . کند می متوقف را برنامه اجرای و گیرد می قرار برنامه انتهای در دستور اینبرنامه و تولید نهایت بی حلقه یک و شده فعال غیر ها وقفه تمام دستور این
یابد . می خاتمه
مثالPRINT “ Hello” ‘print this
END ‘ end program execution and disable all interrupt
37
جداول و ها متغیر و اعدادLOOKUP
AVR ميكروكنترلرهاِي�
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 حافظه در میخواهید که آدرسی در را متغیرتان که میدهد اجازه شما بهاستفاده , حافظه در خالی جای اولین باشد اشغال آدرسدهی محل که زمانی کنید ذخیره
شود . می
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-
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
نکته
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
42
جداول و ها متغیر و ...LOOKUPاعدادALIASدستور
شود . می استفاده متغیر نام تغیر برای دستور این از
مثالDIRECTION ALIAS PORTB.1
بجای توانید می شما متغیر PORTB.1حال نمایید . DIRECTIONاز استفادهSET DIRECTION ‘is equal with SET PORTB.1
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
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
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
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
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 (
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
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
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
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
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
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
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
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
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
نکته
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
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
59
جداول و ها متغیر و ...LOOKUPاعدادSPACEدستور
شود . می استفاده دستور ازاین خالی فضای ایجاد برایVar = SPACE )x (
X ای رشته متغیر در رشته بعنوان که خالیست فضای می varتعداد جایگیرد .
مثالDim S As String *15S = Space )5(Print “{“ ;S ;”}” ‘{ } 5spacePrint “{“ ; Space)6( ; “}” ‘{ } 6 spaceEnd
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
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
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%
نکته
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”
64
محاسباتی و ریاضی توابع
AVR ميكروكنترلرهاِي�
65
و ریاضی توابعمحاسباتی...ریاضی عملگرهای
توانید می روبرو ریاضی عملگرهای ازمحیط نماییدو BASCOMدر استفاده
دهید . انجام را خود ریاضی عملیات
عالمتنماد
ضرب * عالمت
جمع + عالمت
تفریق - عالمت
ممیز . عالمت
تقسیم / عالمت
از < کوچکتر عالمت
تساوی = عالمت
از < بزرگتر عالمت
بتوان ^ عالمت
یا =< کوچکتر عالمتمساوی
یا <= بزرگتر عالمتمساوی
مخالف << عالمت
66
... محاسباتی و ریاضی توابعمنطقی عملگرهای
منطقی های است : BASCOMعملگر زیر قرار به
معرفینمادANDCONJUNCTION
ORDISJUNCTION
XOREXCLUSIVE OR
NOTCOMPLIMENTمثال
A = 63 and 19
Print A ‘’19 print
67
... محاسباتی و ریاضی توابع ABSتابع
ریاضی معنای به دستور ( .| VAR = |VAR2این است ) قدرمطلق
مثالDim A As Integer , C As Integer
A = -1000
C = ABS )A( ‘c=|a|
Print C ‘C= 1000
End
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
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
70
... محاسباتی و ریاضی توابع LOGتابع
نوع از داده یک طبیعی لگاریتم دستور گرداند .SINGLEاین برمی را
Target = Log )source(
ثابت یا متغیر داده sourceلگاریتم نوع متغیر . singleاز ودر شود می targetگرفتهگیرد می .قرار
مثالDim X As Single
X = Log)100( ‘4.605170
Print X
End
71
... محاسباتی و ریاضی توابع RNDتابع
گرداند . برمی تصادفی عدد یک دستور اینVAR= RND )limit(
بین تصادفی متغیر limitو 0 عدد در و آمده عدد . varبدست دستور این از استفاده هربار با گیرد می قرارآمد . خواهد بدست دیگری تصادفی مثبت
limit . باشد مثبت عدد یک باید
مثالDim X As IntegerDo
I = Rnd )100( ‘get random number Print I Wait 1
LoopEnd
نکته
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
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
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
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
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
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
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
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
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
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
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
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
84
یکدیگر به متغیرها و کدها تبدیل
AVR ميكروكنترلرهاِي�
85
یکدیگر ... به متغیرها و کدها تبدیل ASCدستور
Var = ASC )string(
داده نوع از متغیر یک کاراکتر اولین دستور آن STRINGاین اسکی مقدار به راکند . می تبدیل
مثالDim A As Byte , S As string
S= “ABC”
A = ASC)s(
Print A ‘will print 65
End
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
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
88
یکدیگر ... به متغیرها و کدها تبدیل MAKEBCDدستور
Var1 = MAKEBCD )Var2(
ثابت یا متغیر دستور مقدار var2این به تبدیل متغیر BCDرا در و کند می اشvar1. دهد می جای
مثالDim A As Byte
A = 65
A = Makebcd )A(
Lcd A ‘101 will show
End
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
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
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
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
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
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
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
96
حافظه های آدرس و رجیسترها
AVR ميكروكنترلرهاِي�
97
... حافظه های آدرس و رجیسترها
میکروهای در (R0 –R31)بیتی 8رجیستر 32دارای AVRتمام منظوره همهCPU . هستند خود
و LSB(R28با )LSB( , R29)MSB(R30با )R31)MSBرجیسترهای R27)MSB( باR26)LSB( رجیستر سه نامهای 16تشکیل با ترتیب با بیتی
X,Y,Z. دهند می را
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
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
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
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
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
103
... حافظه های آدرس و رجیسترها CPEEKHدستور
Var = CPEEKH)address(
کدی حافظه باالی صفحه در شده ذخیره بایت توان می دستور این FLASH)باMEM) میکروMEGA103 دارای که میکروها دیگر را K 128یا است حافظه
خواند .ADDRESS بایت یک متغیر در آدرس محتوای و حافظه می VARآدرس قرار
گیرد .Cpeek) 0( باالی حافظه بایت اولین .K 64محتوای گرداند برمی را
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
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
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
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
108
... حافظه های آدرس و رجیسترها POKEدستور
POKE address , value
بنویسیم . رجیسترها از یکی در را داده بایت یک توانیم می دستور این با
آدرس در معث بایتی یک ثابت یا متغیر بین addressمقدار برای 31 - 0 کهشود .R0 – R7رجیسترهای می نوشته است
مثالPoke 1 , 5 ‘write 5 to R1
End
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
110
پرش و حلقه دستورالعملهای
AVR ميكروكنترلرهاِي�
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
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
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
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
115
پرش ... و حلقه دستورالعملهایIFدستورالعمل
عبارت زیر حالتهای کلیه چند statementدر یا ساده دستورالعمل یک تواند میباشد . مرکب دستورالعمل
:0حالت If Expression THEN statement
عبارت statementدستورالعمل که شود می اجرا دارای expressionزمانیباشد . TRUE ارزش:1حالت
If Expression Then statement1
Else statement2
End Ifعبارت که ارزش expressionدرصورتی دستورالعمل TRUEدارای باشد
statement1 , دستورالعمل صورت این غیر در شد خواهد اجرا statement2اجراشود . می
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
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
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اگر
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
120
پرش ... و حلقه دستورالعملهایEXITدستور
از بعد را برنامه ادامه و شوید خارج حلقه یا ساختار یک از فقط توانید می دستور این بادهید . ادامه حلقه یا ساختار
EXIT FOREXIT DOEXIT WHILEEXIT SUBEXIT FUNCTION
مثالDo
A = A +1 If A = 100 Then
Exit Do End If
LoopEnd
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
122
برنامه در تاخیر ایجاد
AVR ميكروكنترلرهاِي�
123
برنامه در تاخیر … ایجادDELAYدستور
مقدار به کوتاهی مدت برای دستور برنامه 1000این اجرای در ثانیه میکروکند . می ایجاد تاخیر
مثالDELAY ‘Wait for hardware to be ready
124
برنامه در تاخیر … ایجادWAITusدستور
شود . می دستور این از برنامه در تاخیر ایجاد برایWAITus microsecond
مدت به برنامه سپری . microsecondاجرای از پس شود می متوقف ثانیه میکرو . یابد می ادامه بعد خط از برنامه اجرای شده مشخص زمان Microsecondشدن
بین عددی تواند باشد . (255 – 1)می
آوردن . بدست برای دهد نمی شما به را دقیق زمان تاخیری دستورات
از دقیق زمانکنید . استفاده تایمرها
مثال
Waitus 10Print “BASCOM”
End
نکته
125
برنامه در تاخیر … ایجادWAITmsدستور
شود . می دستور این از برنامه در تاخیر ایجاد برایWAITms milisecond
مدت به برنامه سپری . milisecondاجرای از پس شود می متوقف ثانیه میلی . یابد می ادامه بعد خط از برنامه اجرای شده مشخص زمان Milisecondشدن
بین عددی تواند باشد . (65535 –1 )می
مثال
Waitms 10Print “BASCOM”
End
126
برنامه در تاخیر … ایجادWAITusدستور
شود . می دستور این از برنامه در تاخیر ایجاد برایWAIT second
مدت به برنامه شدن . secondاجرای سپری از پس شود می متوقف ثانیه . یابد می ادامه بعد خط از برنامه اجرای شده مشخص زمان
مثالWait 3Print “BASCOM”
End
127
تابع و برنامه زیر
AVR ميكروكنترلرهاِي�
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. باشند
129
تابع و برنامه … زیرتابع ...DECLARE FUNCTIONمعرفی
مثال
زیر مثال مقدار BYVALبصورت Iدر از کپی یک بنابراین است شده به Iفرستاده . شود نمی ایجاد آن محتوای در تغیری هیچ و شود می فرستاده تابع بصورت Sزیر
BYREF . تابع فراخوانی گیرد می صورت آن در تغیر و شود می فرستادهMYFUNCTION باK و Z داده نوع مقدار STRINGو INTEGERاز و استنوع از متغیر INTEGERبرگشتی در که در . Tاست توانید می شما گیرد می قرار
کنید . تعریف محلی متغیر یک تابع محدوده
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
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. یابد می پایان
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
133
تابع و برنامه … زیرCALLفراخوانی
کنیم . می فراخوانی را تابعی یا برنامه زیر دستور این توسطCALL TEST) VAR1 , VAR2 , …(
VAR1 , VAR2 . , را برنامه زیر توان می هستند یابند می انتقال برنامه زیر به که متغیرهاییکرد . فراخوانی نیز زیر بصورت
TEST VAR1 , VAR2دستور , توسط باید آن فراخوانی از قبل برنامه زیر نام که است بتذکر فراخوانی Declareالزم
آرگومان. با حتما بایستی دهیم انتقال برنامه زیر به را ثابت عدد بخواهیم اگر آن BYVALشوددهیم . انتقال را
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
135
تابع و برنامه … زیریا محلی متغیر LOCALبکارگیری
کنیم . می استفاده زیربرنامه در محلی متغیر تعریف برای دستور این ازLOCAL VAR As Type
VAR و متغیر توانند typeنام می که است داده , STRING , WORD , INTEGERنوعBYTE , SINGLE , LONG های داده نوع نمی ERAM , SRAM , XRAMباشند ها آرایه و . شوند تعریف محلی توانند
برای مربوطه برنامه زیر فراخوانی هنگام در فقط که است موقت متغیر یک محلی متغیر یکمتغیر عمر برنامه زیر از برگشت با و شود می گرفته نظر در فضا اتمام ( LIFE TIME)آن به
رسد . می
شوند . تعریف محلی بصورت توانند نمی بیتی متغیرهای
نکته
136
تابع و برنامه … زیریا محلی متغیر ...LOCALبکارگیری
مثالDeclare Sub Test2Do
Call test2LoopEnd
Sub Test2 Local A As Byte
Incr A Lcd A
End Sub
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
138
امکانات با کار و بندی در AVR پیکرهBASCOM
6
139
ها پورت بندی پیکره
AVR ميكروكنترلرهاِي�
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استفاده
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
142
ها ... پورت بندی پیکرهمیکرو پورتهای ATMEGA32بررسی
پورتA
طرفه I/Oیک Aپورت حافظه . 8دو مکان از آدرس سه است به I/Oبیتی اختصاصداده . Aپورت رجیستر برای آدرس یک داده , PORTAدارد جهت رجیستر دومی
DDRA پورت ورودی پایه سومی پورت . A , PINAو ورودی های پایه آدرس Aاست
هم داده جهت رجیستر و داده رجیستر که صورتی در است خواندن قابل فقطمقاومت . دارای پورت های پایه تمام هستند نوشتنی هم و مجزا Pull upخواندنی
هستند .
PINA . از یک هر روی بر فیزیکی مقدار به دسترسی آدرس این نیست رجیستر یکپورت های زمانیکه . Aپایه سازد می ممکن لچ , PORTAرا داده شود می خوانده
از Aپورت زمانیکه و شود می بر PINAخوانده که منطقی مقدار شود می خواندهشود . می خوانده است موجود ها پایه روی
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
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
145
ها ... پورت بندی پیکرهمیکرو پورتهای ATMEGA32بررسی
پورتB
طرفه I/Oیک Bپورت حافظه . 8دو مکان از آدرس سه است به I/Oبیتی اختصاصداده . Bپورت رجیستر برای آدرس یک داده , PORTBدارد جهت رجیستر دومی
DDRB پورت ورودی پایه سومی پورت . B , PINBو ورودی های پایه آدرس Bاست
هم داده جهت رجیستر و داده رجیستر که صورتی در است خواندن قابل فقطمقاومت . دارای پورت های پایه تمام هستند نوشتنی هم و مجزا Pull upخواندنی
هستند .
PINB . از یک هر روی بر فیزیکی مقدار به دسترسی آدرس این نیست رجیستر یکپورت های زمانیکه . Bپایه سازد می ممکن لچ , PORTBرا داده شود می خوانده
از Bپورت زمانیکه و شود می بر PINBخوانده که منطقی مقدار شود می خواندهشود . می خوانده است موجود ها پایه روی
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
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
148
ها ... پورت بندی پیکرهمیکرو پورتهای ATMEGA32بررسی
پورتC
طرفه I/Oیک Cپورت حافظه . 8دو مکان از آدرس سه است به I/Oبیتی اختصاصداده . Cپورت رجیستر برای آدرس یک داده , PORTCدارد جهت رجیستر دومی
DDRB پورت ورودی پایه سومی پورت . C , PINCو ورودی های پایه آدرس Cاست
هم داده جهت رجیستر و داده رجیستر که صورتی در است خواندن قابل فقطمقاومت . دارای پورت های پایه تمام هستند نوشتنی هم و مجزا Pull upخواندنی
هستند .
PINC . از یک هر روی بر فیزیکی مقدار به دسترسی آدرس این نیست رجیستر یکپورت های زمانیکه . Cپایه سازد می ممکن لچ , PORTCرا داده شود می خوانده
از Cپورت زمانیکه و شود می بر PINCخوانده که منطقی مقدار شود می خواندهشود . می خوانده است موجود ها پایه روی
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
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
151
ها ... پورت بندی پیکرهمیکرو پورتهای ATMEGA32بررسی
پورتD
طرفه I/Oیک Dپورت حافظه . 8دو مکان از آدرس سه است به I/Oبیتی اختصاصداده . Dپورت رجیستر برای آدرس یک داده , PORTDدارد جهت رجیستر دومی
DDRB پورت ورودی پایه سومی پورت . D , PINDو ورودی های پایه آدرس Dاست
هم داده جهت رجیستر و داده رجیستر که صورتی در است خواندن قابل فقطمقاومت . دارای پورت های پایه تمام هستند نوشتنی هم و مجزا Pull upخواندنی
هستند .
PIND . از یک هر روی بر فیزیکی مقدار به دسترسی آدرس این نیست رجیستر یکپورت های زمانیکه . Dپایه سازد می ممکن لچ , PORTDرا داده شود می خوانده
از Dپورت زمانیکه و شود می بر PINDخوانده که منطقی مقدار شود می خواندهشود . می خوانده است موجود ها پایه روی
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
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