صفحه 1:
محیط برنامه نویسی
BASCOM
هم نسم
صفحه 2:
معرفي منوهاي محیط
BASCOM
BOR میکروکنترلرهاي
صفحه 3:
* ايجاد فايل جدید (660 6۳۵)
با انتخاب این گزینه یک پنجره جدید که شما قادر به نوشتن برنامه در آن هستید ایجاد می شود .
* باز کردن OPEO EVE) di (
با انتخاب این گزینه شما قادر به فراخوانی فایلی که در حافظه موجود است می باشید .
00009000 فايلها را بصورت استاندارد 0005800 ذخيره مى كند .بذ
اتوانيد از ويرايشكرى مثل 07001002000900 براى نوشتن برنامه استفاده
محيط انتقال دهيد.
* بستن فایل هراعج 0۵۵6))
اين كزينه ينجره برنامه فعال را مى بندد . اكر در فايل تغييرى ايجاد كرده ايد ابتدا بايد قبل از
بستن آن را ذخیره نمیید .
* ذخیره فیل (۵8006 هم)
با این گزینه شما قادر به ذخیره قایل بصورت 96962/71) در کامپیوتر خواهید بود .
* ذخیره کردن بعنوان (68 ۵600 ها )
با این گزینه قادر خواهید بود فایل موجود را با نام دیگر ذخیره کنید.
صفحه 4:
ادامه منوی ۳۱۱۴ ...
9 نمایش پرینت فایل (۵60160 یس ها )
اين كزينه نشان مى دهد كه فايل متنى موجود برنامه در هنكام بر
بود .
* پرینت فا یل (PUG bd)
با اين كزينه شما مى توانيد فايل موجود در برنامه را پرینت نمایید .
* بستن یل هر 0۷۵۵6 ) )
با اين گزینه شما قادر خواهید بود از محیط (06069606000) خارج شوید ولی در صورتی که
شما در برنامه تان تغییری داد ايد و أن را ذخيره نكرده ايد , پیش از خروج هشدار میدهد.
به چه صورت خواهد
صفحه 5:
۰ ۵0۵۰۰0
با این گزینه شما می توانید دستکاری اخیرتان در برنامه را از بین ببرید .
۶ ۵00 601
با این گزینه شما می توانید دستکاری اخیرتان را که از بین برده بودید دوباره برگردانید ,
۰ 600۵
ابا اين كزينه شما مى توانيد متن انتخاب شده را بریده و به محل جدیدی انتقال دهید .
۰ 006۷ 60
با ان گزینه شما می توانیدمتن انتخاب شده را کپی کرده و به محل جدیدی انقال دهید .
٠ ۵۵۲ 60
با اين گزینه شما می توانید متنی را که قبلا 6060"۷() یا (200) کرده بودید در محل مورد نظر بچسبانید .
صفحه 6:
۵0۸۵۵
ابا اين كزينه شما مى توانيد متنى را در برنامه تان جستجو كنيد .
۰ ۵۵ ۵۵ 60۳۲
با این گزینه شما می توانید متن مورد جستجو را دوباره جستجو نماید ,
۶ 6۵6۵06۵ 0
با این گزینه شما می توانید متنی را جایگزین متن موجود در برنامه نمایید
PDO متن مورد جستجو که بايد توسط متن دیگری جایگزین شود را
,0۲۳۲ 600000۷/66 متنی را كه بايد جايكزين شود تايب مى كنيم .
60۳۲ GOTO ٠
. با این گزینه شما می توانیدستقیما و به سرعت به خط دلخواهى برويد
نی در قسمت ۳0 4۳00260
کنید و در قسمت
صفحه 7:
GOT TOGGLE 6
با این گزینه ما می فونید. قما می توانید د.جاهای تخآسبی از رنه مود فطل قماستا نان ری
كنيد و به آنها توسط دستور دستور 0000000090806 0000100 COI دسترسى بيدا كنيد .
GOT GOTO GOOKDGRK *
با اين كزينه شما مى توانيد به نشائه هايى كه قبلا كذاشته ايد .
۰ ۵0۹۵۵۵۲۲
با این گزینه شما می توانید متن انتخاب شده را به اندازه یک ۳6060/ به سمت راست منتقل کنید .
۶ ۵0۵۵۵ ۵0۲
ابا اين كزيئه شما مى توائيد متن انتخاب شده را به اندازه يك 410009 به سمت جب منتقل كنيد .
صفحه 8:
PROGRAM منوی
* 009000106 وموممهم
ابا اين كزينه (يا كليد 02)) شما قادر به ترجمه برنامه به زبان sald (COMPU) onthe
بود .برنامه شما با انتخاب اين گزینه بيش از 0000000/1,09© ذخيره خواهد شد و فايلهاى زير به
انتخاب شما در 908101010000 0000010008 slat OPMOD خواهند 2
- 010 فايل باينرى كه مى تواند در ميكروكنترلر (00800808000) شود .
- 000908.<)ا فايل 0009090000 که برای نرم افزار شبیه ساز (00(900(6) مورد نیاز است .
- 2,00 فایل 000060۳ که برای نرم افزار 800000010 000008 مورد نياز است .
0 فایلگزارشی
206۷/۵ فايلهكرادسيما/إينتلكه برلئيعضئز لنولع +0)0008090900000:0) هط مورد
Sel
-0088). فايلخطا كاء فقط در هنكام بسروز خطا لیجاد میشود.
-080000.)ا دادم هاوكه بايد در (00000000 برنامه ريزوشود در ليزفايلنكهدارىميكودند .
صفحه 9:
منوی ۳8۵68۸۵۱ ...
اگر خطایی در برنامه موجود باقد شما پیغام خطا را در یک کادر محاوره ای دریافت
خواهید کرد و 6()06/1,6۶() متوقف ميشود. با کلیک بر روی هر کدام از انها به خطی که
خطا در آن رخ داده پرش خواهید کرد .
PROGROD GYOTOX OLEOK *
بوسیله این گزینه برنمه شما برای نداشتن خطای املایی چک می شود .اگر خطایی وجود داشته باشد
هیچ فایلی ایجاد نخواهد شد .
۶ هه همه ومههمهم
از اين كزينه برای دیدن نتیجه 6(6(607//,60() ميتوان استفاده كرد .
كزينه “0001:0004 0000008108 (000104100) را براى تعيين اينكه كدام فايلها بايد ايجاد شوند
. فایلهایی که محتوای آنها قابل مشاهده اند EL pe RBPORT BRROR .
صفحه 10:
منوی ۳8۵68۸۵۱ ...
PROGROO GIWOLOTOR *
با فشردن کلید ۳6 یا این گزینه از منو ۳0۲6(69036060) شبیه ساز داخلی فعال خواهد
شد .شما در برنامه با نوشتن كلمه كليدى 090008 قادر به شبيه سازی سریتر برنامه ميباشيد
.در صورت تمایل شما می توانید از شبیه سازی های دیگر مانند 9۳000010 )96(0٩ نیز
استفاده كنيد . براى شبيه سازى فايلهاى ل008) و 0080 بايد ايجاد شده باشند . فايل .068
در برنامه شبيه سازى 0810000910 +0000 و فايل ل009) برای شبیه ساز داخلی مورد
استفاده قرار مى كيرد .
۶ و0 ۵۵000
توسط اين گزینه یا کلید ۳6۴) پنجره محیط برنامه ریزی ظاهر خواهد شد .شما می توانید
توسط این گزینه میکرو مورد نظر خود را (۳0۱6()003690) کنید .
صفحه 11:
۶ ۵00/۵۲۵6 2۵60100
توسط این گزینه یا کلیدهای / + 0/65 با بالا آوردن ,20600/100
EOOLOTOR مى توانيد از اين محيط براى نمايش داده ارسالى و دريافتى در ارتباط
سریال RG-COS بین میکرو و کامپیوتر استفاده نمایید .
۶ 0661۵0066 ۱۵۵
توسط این گزینه می توانید کاراکترهای دلخواه خود را طراحی نمایید و بر روی LOO
نمایش دهید.
صفحه 12:
. TOOLS منوی
GRGPLIC COOCERTOR *
با کلیک بر روی sl BROPWAC COMOERPOR brs spay se Ge! تبدیل
تصویر با پسوند *.0600) به تصویری با پسوند *.0090۳) که قابل نمایش بر روی
0 00۲090۳/۷/۱۵) است ظاهر می شود .
فایل دلخواه خود را با پسوند *.96060) توسط دکمه 06060)را وارد کرده و سپس با دکمه
068 آنرا در کنار برنامه خود با پسوند .00/۷/۵ ۵6000 ) ۵080
PALE) ذخیره کنید .فایل تبدیل شده بصورت سیاه و سفید دوباره نمایش داده می شود و با
كليك بر روى دكمه 006 مى توان از محيط خارج شد . فایل ذخیره شده با فراخوانی در
برنامه قابل نمایش بر روی 260),ا گرافیکی است . انتخاب نوع 60),ا توسط قسمت 1,000
نجام می گیرد . فونت نوشتاری نیز می تواند ©*© يا ©*© ييكسل باشد .
صفحه 13:
OPTION منوى
OPMOO COOPLER *
با اين منو شما مى توانيد كزينه های مختلف کامپایلر را طبق زیر اصلاح نمایید :
OPTMOD COOPER OVP"
انتخاب میکرو برای برنامه ریزی توسط اين گزینه انجام می شود . در صورتی که از دستور
0/8 در برنامه استفاده کرده اید به انتخاب میکرو توسط این گزینه نیازی نیست .
۰ 00۵6۵۴ ۵۵۵۵۵6 20۵0و
با اين گزینه می توان فایل هایی که مایل به ایجاد آنها پس از کامپایل هستیم را انتخاب کرد . با
انتخاب 4458 ej GILE OPROWE که حجم 6(6063() از مقدار حافظه
ROO ۱/969 تجاوز کرد کامپایلر تولید 90300/10068)() می کند .
۰ 160,8۵۵ 00606۷۵6۵ 0621006
توسط این گزینه می توان پایه های مربوط به ارتباطات GOO GPM وا) 0/10368) را تعبین
کرد .
صفحه 14:
منوی 0۴۲۱۵۱۱ .
0۵۳۵0۵ 000۷۵6 00000010000۵ *
مانب نی a pe من ee Sd (ODD FOTO) Ue نرخ
جديد نين ۳0۲6300۷) انتخاب فرکانس کریستال استفاده شده است که می
تواند فرگانس اختیاری نیز باشد .
0۵۵0۵ 0006۵۵ ۰
اين كزينه داراى قابليت هاى زير مى باشد :
در قسمت 2100/0009 LOO £8 LOO را مشخص مى كنيم .كزينه 0000000 00009) مشخص مى
كند (00)| بصورت © بيتى يا *6 بیتی کار مي کند ,توسط گزینه 606000( (000/6) تعیین می کنیم
JSP Sy Har LOO کند یا 00(60) و گزینه 060000800000) (6(),| مشخص کننده درس
LOO مد 006 است .
صورت پیکره بندی هر یک از امکانات فوق در برنامه نيازى به تنظيم كردن آنها در اين منو
00۳/10۵ PROGREOOCR
. “در اين منو شما مى توانيد 000908000(070008) مورد نظر خود را انتخاب نمایید
صفحه 15:
معرفی محیط شبیه سازی (5۱۱۱۱/۲۵۲0)
WOR Ga LAS 5 Se
صفحه 16:
با فشردن اين دكمه شبیه سازی آغاز می شود .
۶ 66066
باعث توقف موقت شبیه سازی می شود و با قشردن دکمه ed DOD سازی ادامه پیدا می
کند .
OTOP ©
باعث توقف کامل شبیه سازی برنامه جاری می شود .
۰ 9۵۵0۵۵۵۵
با استفاده از این دکمه می توان برنامه را خط به خط اجرا نمود و هنگام فراخوانی توابع به
داخل آنها رفته و مراحل اجراى آنها را بررسى اين كار را با فشردن كليد ©) نيز مى
توانيد انجام دهيد .بعد از هر بار اجراى اين دستور شبيه سازى به حالت et PBOGE 333
صفحه 17:
نوار ابزار در این محیط ...
* 0و هوجو
اين دكمه شبیه دکمه قبلی است با اين تفاوت که در هنگام فراخوانی توابع به داخل GOD
8 نخواهید رفت . اين كار را مى توانيد با تشردن کلید 6 91/1۲
نیز انجام دهید .
۰ 80۰0
دکمه PO (110(00) شبیه سازی را تا خط انتخاب شده انجام میدهد و سپس به حالت
00۶ ميرود ( خط جاری باید شامل کدهای قابل اجرا باشد ) .
صفحه 18:
شبیه سازی سخت افزاری 6100۷/۳۵۵ 11۵6۵۵۵86 2
با کلیک بر روی این گزینه جنجره ای ظاهر می شود . که قسمت بالایی یک 00| مجازی می باشد که
برای نشان دادن داده های فرستاده شده به LOD استفاده می شود . نوار 900را های قرمز رنگ پایین
خروجی پورتها را نشان می دهد .با کلیک بر روی هر یک از 6000,| های سبز رنگ که بعنوان ورودی
هستند وضعیت آن معکوس می شود و روشن شدن 60 بمنزله یک کردن پایهپورت است ریک صفحه
کلید نیز تعبیه شده است که با دستور 60607۳666060[ ) در برنامهقابل خواندن می باشد . در ضمن مقدار
آنالوگ نیز هم برای مقایسه کننده آنالوگ و هم برای کانال های مختلف (96(6) قابل اعمال است.
همه
این دکمه پنجره تبتها را با قادیر قبلی نمایش می دهد . مقدارهای نشان داده شده در اي پنجره هگزادسیمال
می باشد که برای تغییر هر کدام از آنها روی خانه مربوطه کلیک کرده و مقدار جديد را وارد كنيد .
٩0 ۵
برای نمایش ثباتهای NO استفاده می شود . که مانند ) قابل مقدار دهی است .
صفحه 19:
نوار ابزار در این محیط ...
O®RWOLEG ۶
شما قادر به انتخاب متغیر با دو بار کلیک كردن در ستون 90۲/6969[,)969)() میباشید . با
قشار دکمه 060600) در هنگام اجرای برنامه قادر به مشاهده مقدار جدید متغیر در برنامه
خواهید بود . همجنين ميتوانيد مقدار هر متغير را توسط 0)81,0009) تغيير دهيد
براى تماشاى يك متغير آرايه اى مى توانيد نام متغير همراه با انديس آنرا تايب كنيد و براى
حذف هر سطر می توانید دکمه را6۶()+,ا۳08/) را فشار دهید .
۶ ۵۵0
این گزینه برای وارد كردن وضعيتى كه قرار است در خلال شبیه سازی ارزیابی شود مورد
استفاده قرار می گیرد و هنگامی که وضعیت مورد نظر صحیح شد شبیه سازی در حالت
۶ قرار خواهد گرفت . حالت مورد نظر را در مکان مورد نظر تایپ نموده و دکمه
6000 را فشار دهید . هنگامیکه دکمه 00071۳۷-۵0۳0
فشار داده شود , وضعیت مورد نظر را مورد بازنگری قرار میدهد و میتوان ارزش آنرا تغییر
داد . براى حذف هر وضعيت شما بايد آنرا انتخاب کرده و دکمه ٩06000000 را فشار
دهید .
صفحه 20:
۶ ۵00
متغیرهای محلی موجود در 90009) یا POOCMOD را نشان میدهد . البته ن
متغيرى را به آن اضافه نموا
٠ 6م
وضعيت ثبات وضعيت (8080) 9/1000400(09) ) را نشان میدهد . 960),/) ها را میتوان توسط کلیک
بر روی 00 0/۷,/۱06) ها تغییر وضعیت داد .
10660165 ٠
اين كزينه منابع وقفه را نشان ميدهد . هنكاميكه هيج 10908 برنامه نويسى نشده باشد , همه دكمه ها غير
فعال خواهند بود و اكر 710908 نوشته شود , دكمه مربوط به آن فعال مى شود و با كليك بر روى هر
کدام از دکمه ها , وقفه مربوطه اجرا مى شود . در ضمن ميتوان روى يك بايه خاص بالس نيز ايجاد
نمود .
صفحه 21:
معرفی محیط برنامه ریزی
WOR ميكروكنترلرهاي
صفحه 22:
ISP STK PROGRAMMER
_پنجره ارسال برنامه به میکرو هنگامیکه g2 HSS! ROD PROGROODER شود ظاهر
بگردد .
* منوى PLE
۰ 02۳ : خروج از محیط برنامه ریزید
8940© : يككردزيايه هلوپورت لیگ زینه تنها زمانیمیتولند لستفاده شود که از
Apt add GHOPLAR ELEOMROOIC PROCGROOECER +
۶ منوی ۵۵600
0 006006 : پاککردنباقر .
2۸۵ 0800 0000| : بر كردزبافر با فايلو برنامه ريزىآندر حافظه ميكرو
6,۵ 0 8608© : ذخيره بافر در فایلدلخولد . بافر میتولند محتولیحافظه يك
میکرو باشد .
۶ منوی 006
۰ 1060۳۷ 00/6 : شناساییمیکرر متصلبد ۳00۵0۷0000000 .
صفحه 23:
مع الا الاك 27500 112 5 وا ...
۰ 016 ۲0 6066 06۲۲۳۵ : برنامه ریزیحتولبافر در حافظه
0 با BEPROD -
۰ 0666 0۷/۳0006100 60 : خولندندادم حافظه کدییکرر .
۰ 0۳۷/۵00 0/900 : خالویودنحافظه میکرو را مشخصمیکند .
+ 00060 : پاک ردنمحتولیحافظه برنامه و دادد 900000 .
۰ 000۲10۷ :لینگزینه محتولعبافر و آنچه که در میکرو برنامه ریزیشده لسترا
مقایسه میک ند و در صورتتساویپیغام 00 003107۷) نمایشدادم میشود .
۰ 600600 60/0 : حافظه میکرو را پاککرده و برنامه مورد نظر را در
LOC Abd برنامه ریزیمیک ند و سپسعمل 0001۲10۷() را باه صورت
خودکار لنجام میدهد.
: میکرو متصلبه (۳030)90300000090) را ریستمیکند .
صفحه 24:
معرفی محیط
TERMINAL EMULATOR
WOR ميكروكنترلرهاي
صفحه 25:
TERMINAL EMULATOR
*_ از اين محیط می توان برای نمایش داده ارسالی و دریفتی در ارتباط سریال 6۲69-000 بین
ميكرو و كامييوتر استفاده نمود .
© اطلاعاتى كه در اين محيط تايب مى شود به ميكرو ارسال و اطلاعاتى كه از بورت كامبيوتر
دريافت مى شود دراين بنجره نمايش داده مى شود . هنگامیکه در برنامه از 10 ,909010 و
یا 000 ,000110) استفاده می شود , يس از (008000902090) كردن برنامه درون ميكرو
و اتصال آن به پورت سریال (۳6) , می توان داده های ارسالی توسط 6903۳() میکرو به بيرون
را دریافت کرده و نمایش داد و از صحت و سقم آنها اطلاع یافت . همچنین اگر از دستوری مانند
1010060807 در برنامه استفاده شود , ميتوان داده خود را از طريق بنجره ر۳09001006»
6000 به میگرو ارسال نمود .توجه داشته باشید که از 0۹9/0۶ 000000 مشابه
در میکرو و کامپیوتر استفاده تماید .
صفحه 26:
منوهای محیط
TERMINAL EMULATOR
. میکند DPLODO 1) WEXEH 4 pase HL PLE OPLOGO
wee -S DPLOCO صرفنظر کردناز : ۳:۶ 08
۳,۶ : خروج از برنامه 9000/9/۳0 .
0 00۲0100 : پنجرد ترمینالرا پاکمیکند .
08 : تنظیماتپورت(0)0) و دیگر0۳۳1000) ه توسط لینمنو صورتمی
aes
LOBLLE : MEROWOL OPBOLO® * را از یبا بسته میکند .هنگمیکه فایل
LOG. وجود نداشته باشد درخواستنامیب راءف یلگ زارشمیک ند .تمام لطلاعاتیکه در
پنجره ,۳)9030106/ پرینتمیشود دلخلفایل00)را ثبتمیشود .
صفحه 27:
دستورات و توابع محیط برنامه نویسی
BASCOM
صفحه 28:
بدنه یک برنامه درمحیط
BASCOM
BOR میکروکنترلرهاي
صفحه 29:
بدنه یک برنامه درمحیط 2۸۵۸50 ...
معرفی میکرو
08 > محصههه
برای شروع یک برنامه در محیط 60000000000 بت بايد ميكرو مورد نظر تعريف كردد . 0000) نام جيب مورد استفاده است كه مى تواتد
Sh یکی از موارد
‘OPA OOOS
‘OPiS 008
‘OPmLE 0۵8
موی ۵۶
۱
008 وحوهههج:
'PPODSCOES 0۵8
0015 اك
00 ۵9ج
‘OPOOM ESE DOOS
OE eP ska”
USP ska”
WOOP she
WOO she
COP OM che”
PRUE EP ska”
PRISM Ah”
مج cha”
۸۸ 2
صفحه 30:
بدنه یک برنامه درمحیط 2۸۵۸50 ...
معرفی میکرو ...
۵090:۵909 0009
‘OT9O20999 OOO$
‘MEGH وه MOOS
10660 960 MOOS
‘OEGH 9 0008
0۵۵6؛ ۵5 09
10۵60 ۵ 09
10۵60 69 09
۱
0۵۵0؛ 99 08
‘OBGG 9E9 OOS
‘OECH 809 OCOS
‘EGG OF OCOS
0۵60 89 09
066۵ (CO 10 OEGH 109 HOWE OOOS
مد حاط 0606 2۲ بارس
0
*دد. 06666 * - بارس
det * 06606 * - ماسر
DO dP kt" = ماخر
DID Oce dt “= ماخر
* د خط 006 * = reefs
مج 096 2۰ بارس
"سل 0900 2۲ ماس
0
“د حاط 00066 * - ارس
reef - * 00660006 es *
صفحه 31:
بدنه یک برنامه درمحیط 8۸۵۸50 ...
کریستال
برای مشخص کردن فرکانس کریستال استفاده شده برحسب هرتز از دستور زیر استفاده می نماییم .
06۷۵۵۷ 28
اکاسک ریستا لاستفاده شده بر حسبهوتز است
اين دستور را حتى براى زمانى كه با اسيلاتور داخلى ميكرو كار ميكنيد بنويسيد .
006۷۵۲۵ 2 ۵۵۵۵۵۵ ون مت راب110
006۲۷۵۲۵۷ 2 ۵000 COWL exterca vsv$
ORYVEPVOL = (OOOOO OWL تلصوت ام
صفحه 32:
بدنه یک برنامه درمحیط 8۸۵۸50 ...
اسمبلی و بیسیک ( اختیاری)
زٍ برای نوشتن برنامه اسمبلی در بین برنامه بیسیک از دستور زیر استفاده می نماييم
09
PGCCOBLY PROCGROOOE
POOGOOS
با دستور 9090(8) مى توان در برنامه شروح به نوشتن برنامه موردنظر اسمیلی کرده و پس از اتمام برنامه
اسمبلى با دستور 0900070909005 برنامه اسمبلى را به بايان رساند و به نوشتن ادامه برنامه پرداخت .
«مثال
ro ve Oye
of wean © ee rece مولعم Leo ee
Omer |
۱ 0
۳ مه
oP exert renee لس ol Bowe
‘oral w ser pet دلا
صفحه 33:
بدنه یک برنامه درمحیط 8۸۵۸50 ...
یادداشت ( اختیاری)
گاهی نیاز است یادداثثهایی برای اطلاعات بیشتر در برنامه اضافه شود .
RED 4 *
ياددلشتها و نوشته هاى بعد از اين دستور غير فعال بوده و در برنامه برای یادداشت به كار مى
رود و کامپایل نخواهد شد و همجنين به رنگ سبز در مى أيند .
همجنين مى توان از دو علامت براى شروع '( و از ') براى اتمام متن يادداشتى استفاده نماييد .
dhe
ROO hy sever wilt be cane
Or
اسان رسمه تب *
due
tart block vane)!
‘Phe wll ot be ove
Linck einai ) لجس
صفحه 34:
بدنه یک برنامه درمحیط 5۸500 ...
آدرس شروع برنامه ریزی حافظه ۴۱۵5۱۲٩ ( اختیاری)
گاهی نیاز است که برنامه خود را از آدرسی دلخواه در حافظه (۱,)969/۷,۸۲6(60() قرار دهید .
ROOEGTORT = BDORECES$
5 مكانىاز حافظه لستكه برنامه )71,09 از لينأدرسدر حافظه ميكرو كنترلر ,
شروع به نوشته شدنمیشود . در صورتیکه ازلیندستور لستفلده نشود کامپایلر بسه
طور خودکار آدرس2006008)راا" را در نظر میگیرد .
dh
ROODGTORT = &LEOOOS
صفحه 35:
بدنه یک برنامه درمحیط BASCOM ...
تعيين كلاك ( اختیاری)
با این دستور در بعضی از میکروهای سری 606۲ 00000 از جمله 0660005 با 0666665
به صورت نرم افزاری می توان کلاک سیستم را تغيبر داد .تقسيم كلاك بطور مثال برای کاهش مصرف تغذی
استفاده می شود .
مر 09۵001۵۵۵0
-() مقادیر معتبر بینلعداد 6 تا 460 میتولند بساشد ,
أكر از اين دستور استفاده تماييد , دستوراتى كه
با کلاگ سیستم کار می کنند ممكن
ت درست كار نكنقد .
مثال
صفحه 36:
بدنه یک برنامه درمحیط 6010/1 885 ...
پایان برنامه
COO
اين دستور در انتهاى برنامه قرار مى كيرد و اجراى برنامه را متوقف مى كند . با اين دستور تمام وقفه
ها غير فعال شده و يك حلقه بى نهايت توليد و برنامه خاتمه مى يابد .
dh ©
fed“ Wels” Sted thie
COO “eed progr exerulicr cod disable امه اه
صفحه 37:
اعداد و مثغیر ها و جداول
LOOKUP
BOR میکروکنترلرهاي
صفحه 38:
اعداد و متغیر ها و جداول 1001۱
ديمانسيون متغيرها
اين دستور بعد يك متغير را نشان ميدهد . با اين دستور مى توانيد متغيرهايى كه در برنامه به كار برده
مى شوند تعريف كنيد .
OAD ve BG [XROD/SROV/CROO ] das pre [BT beaten] [OOCRLOY]
نام متغیری که در بسرنامه بسکار بسرده ميشود . در صورتلستفاده از حافظه جانبیآنرا با 208
مشخصكنيد و 09080900 را زمانىإختيار كنيد كه مىخواهيد متغيرها را در حافظههم 0
)0 . قرار دهید و 0086000) متفیر مورد نظر را در 8)6016060) دلخلیجایمیدهد 0
سور نوع دادم لستکه میتسولند طبقجدولزير
BL OWHLE LOTRMOG OOK LOOG ۵۳۵۵۵۸ 0۷۵ 011“ -
ادر صورت استفاده از متغير 9000/0009 , بیشترین طول آن نیز باید نوشته شود .گزینه اختیاری
000000017 متغير تعريف شده را بصورت +00010010080 در نظر میگیرد و فضایی را برای
متغير در نظر نمى كيرد .
00 9010 به شما لجازه ميدهد كه متغيرتانرا در آدرسوكه ميخولهيد در حافظه
ذخیره كنيد زمانوكه محلآدرسدهىإشغ ال اشد , اولينجاوخالودر حافظه لستفادم ميشود .
صفحه 39:
اعداد و متغير ها و جداول5 01610 10...
ديمانسيون متغيرها ...
CMDR ROBB >
OR AO
۳09990
TO GORE? BOPO?-
10 66666 0
DO 60656666
6م900
00 9.60 وودم FG-NID* LS
۵0۵ 685
© حككه
OVCIGOED 6 ۵
GIBOED 19 GING
OOCIGOED 13 BING
GIGMED SC ۵
GIGWED SC BING
CYTES 0-CFS
OOTO TYPE
صفحه 40:
اعداد و متغير ها و جداول5 01610 10...
ديمانسيون متغيرها ...
» مثل
OW © OG OVP ‘OP canbe ۵ 1
OW © OC OYE ‘VDE reece Pow ١ - 066
OW K CG IODTEEGER OT CEO ‘Yours speviy the address oP he
‘vernble . Dke cent dkevecsizced variable will be pared Pier
عدد 1/8" را پا علامت 1,8 و عدد Ly OIMORY علامت ,08) نشان دهيد
0 1۸ ۵ 2
00۵ 1۵ 84600000000000 حم
010 60 06 ۵ ۵ 890 00۵6۷
صفحه 41:
اعداد و متغیر ها و جداول۴ 10016...
ستور 00۱157۲
برای تعریف یک ثابت از اين دستور استفاده می شود :
۵۵ ۷0۵0۸۲ 000610
۷0۵0۲ 00061
LOWS GYOBOL= EXPREGE1OO
DODCOMGT 43 oi GYM@OL مقدار عددىإنتسابيافته به , را9۷000)
0 رشته نتسابیفته به 6۳00 ر 96066600
میتولند عبارتی اشد که نتیجه آنبسه را(9۱/60606) لنتسابیابد .
«مثل
"COWEN G = "*PEGT
© 000600
۸ 0008
©+(50*6) د ع LOM
صفحه 42:
اعداد و متغير ها و جداول5 01610 1-0...
دستور 1185م
از اين دستور براى تغير نام متغير استفاده مى شود .
۰ منل
OIRECMOD BLABG PORTE.A
حال شما می توانید بجای ۳9.0 /۳)(6۹) از متغیر (0/10368)(/160) استفاده نمایید .
‘pe equ wih GET PORTO. ۵ 9)۳)
صفحه 43:
اعداد و متغیر ها و جداول۴ 10016...
دستور 1118©
از اين دستور براى تبديل متغير عددى يا يك ثابت به كاراكتر استفاده مى شود . زمانى كه قصد
دارید یک کاراکتر بر روی 260),| نمایش دهید از اين دستور می توانید استفاده نماتید .
در صورتيكه از اين دستور به این صورت استفاده نمایید ( 0000 ) 0/۷/4۲ سا کاراکتر
اسکی 6068() به پورت سربال فرستاده خواهد شد .
٠ مثل
لاجو ليا OW oO Ove
جهن ییا ۵-0
‘ed che (OS ) یت
bd WOX(«) ‘ed hex che (PC)
ed Cr (a1) ‘ted BGK سوه 06 )6(
صفحه 44:
اعداد و متغير ها و جداول 01610 10...
دستور INSTR
این دستورمحل و موقعیت یک زير رشته را در رشته دیگر مشخص می کند .
( ست , مجرت , حمو) ماك و0
( سل )اوه
Our عددیاستکه مشخصک ننده محل(96(6009710) بر رشته لصلی (9/016۷100) مریساشد و زمانیکه زیر رشته
مشخصشده در لصلینباشد صفر بسرگردانده. میسود 9/0690۷0۰) نیز عددیداخولد استکه مکنتسروع
جستجو زیر رشته در رشته لصلیرا مشخصمیکسند . در صورتیکه 070600۷7) قید نشود تماب رشته از بدا
ope رشته لصلوتتها بايد از دوع رشقه باشد ولوزير رشته (5000051:08) ) متوائد رشقه و عدد
as
One
OW 6 OG Gray * 1S, L Br Grieg" S
D1 Op Br Oper
* ج) = "Phe ott
“Ge
Op = “tow (G ,L ) sed Bp ‘phon ked ©
Op = too (PG L) ed Op ‘phoukl 9
xd
صفحه 45:
اعداد و متغير ها و جداول1001(۴...
دستور INCR
اين دستور یک واحد به متغیر عددى 00908) مى افزايد .
AOR OOR
مثال
0 * orart bop
۸ 0 مس 0
© لجا" © لجا
Lowy Ded D>dD “repeat weil Dt greater ther CD
صفحه 46:
اعداد و متغير ها 5 LOOKUPU slam
دستور 0
اين دستور متغیر ODR را یک واحد کم می کند .
00000۸
مثال
سره 0 0۳0
929 یی uke to
Over ® “ceorennat by سدس 02 0-0
kd “bd @ =P
end
صفحه 47:
اعداد و متغیر ها و جداول۴ 10016...
دستور CHECKSUM
اين دستور مجموع کد دسیمال اسکي رشته 00۱)() را برمی گرداند که البته اگر مجموع کد اسکی رشته از
عدد 2606 بیشتر شود مقدار 00 از مجموع کم می شود
he
فا "دجوت د( © برد * xv Oornde
© = "rst" * ewok Ocrtble
kel Okeke (0) “ted che (10 )
© = ‘rot ent“ emia vartobee
bed Orchornn(8) ' سل لجا 468 )06/ 2۵65 - 666 (
صفحه 48:
اعداد و متغیر ها و جداول۴ 10016...
ستور ]۱10۸۵5
این . دستور تمام حروف رشته مورد نظر را تبدیل به حروف کوچک می کند .
(سسس سا سم
تمام حروف رشته یمه کوچک شده و در رشته سور جای داده مى شود .
uke
Orv © Ov Grea * dB, L Ov Orrtery * (2
“© = “ele Dorkd
Y= Lowe (6 ) “= belly workd
kL
end
صفحه 49:
اعداد و متغیر ها و جداول۴ 10016...
دستور UCASE
اين دستور تمام حروف رشته مورد نظر را تبیل به حروف بزرگ می کند .
Oowe (ove) ۱[
تمام حروف رشته وحم بزرك شده وادر رشته همسجم جای داده می شود .
*مثل
Ore © Ov Oren "IE, L Ov Oren * 12
“ede Dorkd = ©“
Wexwe (») “b= WOLLO MORLO =
سا
end
صفحه 50:
اعداد و متغير ها و جداول 01610 10...
دستور 510111
با اين دستورقسمتى از يك رشته را جدا مى كنيم .
Ow = ROU (xl, a)
از سمث راست رشته 1و به تعداد كاراكتر » , رشته ای جدا شده و در رشته موس قرار مى كيرد .
dhe
Okv © Ov Ortey "IS ,L Ov Orrtery * US
* 6 2 0
د 1 (©, د )»ل د بك 003
نك لجا
end
صفحه 51:
اعداد و متغير ها و جداول5 01610 10...
دستور LEFT
با این نستور کاراکترهای سفت چپ یک رشته را به تعدادتعین شده جدا می کند .
Ow =LOPP (vad, a)
از سمت جب رشته چم به تعدادکارکتر « , رشه ای جداشده و در رشته va قرار مى كيرد .
he
Ore © Ov Gran" 06 , بك 05 * US
"0 = "daxky
Leh», 8) “= dae = رل
نك لطا
ودر (0, د )ماك بك
kD
end
صفحه 52:
اعداد و متغير ها 5 LOOKUPU slam
دستور LEN
( ساسا 6
طول رشته wire در متغیر عددی 600903 قرار می گیرد . رشته ge hed wrt تواند 2676 بایت طول داشته
باشد . توجه داشته بشید که فضای خالی (/00) 900600040)) خود یک کاراکتر به حساب می آید .
he
Oro © @x Grey * ۵
Oxo ® Oe Oe
“OE "et
Leal ) =
صفحه 53:
اعداد و متغير ها و جداول1001(۴..
دستور 17۲1
این دستور فضای خالی یکرشته را حذف می کند .
Ow =LPRIO( ory)
فضاى خالى رشته ببس برداشته می شود و رشته بدون فضای خالی در متغیر رشته ای ADA vr
as
*مثل
Oxo © Bs Grrr ۵
“G=" 0
bd LPRUD( =) 08۰
۰۵-۰ 9
الط 0۲0)( 6 9
Cod
صفحه 54:
اعداد و متغیر ها و جداول۴ 10016...
دستور SWAP
GOCE vl , varQ
()جم و محتوای متغیر ()جم در متغیر 38 98 var ابا اجراى اين دستور محتوای متغیر
. قرار می گیرد ved My
. دو متغیر وس و 0و بایستی از یک نوع باشند Sak
gue
Oro © 2 وس 02 0 , ما
© =4:00=9 ما وه fetes
6006 0, ٩ ‘owop hew
و طحا" © يا
kd Od. “bx 0
Gud
صفحه 55:
اعداد و متغير ها و جداول5 01610 10...
دستور (1/111
ابا اين دستور مى توان قسمتى از يك رشته را برداشت و يا قسمتى از يك رشته را با قسمتی از یک
ارشته ديكر عوض کرد .
Ow = On(va GL] 41
Onivar , Gill] = Oa ©
)- قسمتى از رشته وس با شروع از كاراكتر دام و طول ,ا برداشته شده و در متغير مه قرار
می گیرد.
©- رشته هم در رشته سوم با شروع از کاراکتر ,9) ام و طول را قرار می گیرد .
در صورت قید نکردن گزینه اختیاری را ,بیشترین طول در نظر گرفته می شود .
مثل
Oxo © Be XROO Gries IS , 1: 022۵۵ مه
ج) 2 ۵
1 = On(6,2,9)
000 لجا
Cod
صفحه 56:
اعداد و متغير ها و جداول1001(۴..
دستور ]۴۵۲۸۵۲
دستور زیر تمام بیتها را به چپ یا راست منتقل می کند ولی تمام بیتها محفوظ هستند و هیچ بیتی
بیرون فرستاده نمی شود .
ROPONE var LEEMRIGWD [ohFe]
BULOOG, DOR AOPEGOR , OVINE E55 5st a2 yee Our
as ISI AS og ee a BS ate LEP TIA IOUT اشد تعداد جرخثربيتها را
. در صورتفید نشدزمقدار یکدر نظر گرفته میشود .
gue
One ® Be Ope
6-20
۱
ee © يا
صفحه 57:
اعداد و متغیر ها و جداول۴ 10016...
دستور SPACE
برای ایجاد فضای خالی ازاین دستور استفاده می شود .
(») 6006 < و
X تعداد ف ضایخا لیستکه بعنوانرشته در متغیر رشته یوم جایمیگیرد .
«مثل
Ore ۵ سس وه CS
صفحه 58:
اعداد و متغیر ها و جداول100168...
FORMAT gt
این دستور یک رشته عددی را شکل دهی می کند .
( او , مس Porunt = جور
مور رشته لواستکه شکلدهیشود و نتایج در بوم قرار ممكسيرد .امن نوع شکلدهیلستر
dhe
Oke © Ov Grieg UD, 1 Ov وس
۰6-۰ 60
سم 5 5 ما Porm =
6 مسر با سوه سب "469 “دوا bo
موه ۵"
0006.50 و
0ب و
صفحه 59:
اعداد و متغير ها و جداول6 (10016...
تابع ۴۱15۱۱16
. روند کردن زشقه های عددی استفاده نی شود oly AON
ع Pores (are, Sek")
.حاص نو ا agen ae یه رشته موردنظر برلیشکلدهی و نتایج در
دهراست علاسی حتما باید با طمت شره ع مود و حدلقی اد یکی را
بعداز 2 دلشته بساشد. با لستفلام از # عدد روند موود و در صدوز تاستفاده از زوئدی
صورت دا
«مثل
0 مت 0۶ اس 6 مه
69.60 6
bd Post , #7 #( ۲ 0
99 (# #6 , )سح لحا
Gud
صفحه 60:
اعداد و متغیر ها و جداول 1001۱
جدول ۱۵0۵1۱
توسط این جدول می توان مقدار دلخواهی را از جدولی برگرداند.
var = LOOK (vake , kibet )
var =D. Sea Nb yx pe دلخولم لست دادم سركشتنىاز جدولدر all ya stein bel
و مكار دادم بسركشتويه ترتيبفهايتا مىوائد 666و Iya alae 5, sl Soa وید و جدولرا
دادم دو ایتی داخل جدول بایستی با علامت 9 پایان یبد
مثل
مسد" 035 21 عرق 039 000 xy
(«0 , )ساسا 002
kod bd (wry bed )
( 0 ,۵ )سیسات
مه نید
esa MDOO% , HOOO%
صفحه 61:
اعداد و متغير ها و جداول5 01610 10...
جدرل 100121125711
توسط اين جدول مى توان رشته دلخواهی را از جدولی برگرداند.
rer = LOOKDPE DR (che, bet )
her J tee bbe لندیسرشته دلخوله لست رشته برگشتتیاز جدولدر متغیر رشته لی
pote. ور میک hacked هت جدولرا ببرمیگرداند . تعداد لندیسه نهایتا می
تولند
dhe
Ore © Be Gira , Ihe Bs Byer
‘bbe = D : © = boohuwmtr( he , Oct)
HG ۲
Cod
م6
"Daa “This”, “ts”, “atest
صفحه 62:
توابع ریاضی و محاسباتی
BOR میکروکنترلرهاي
صفحه 63:
از عملگرهای ریاضی روبرو می توانید در ۰ | علامت کوچکتر از
oll BOGOOD bse
. ریاضی خود را انجام دهید
Jue) عملياك ts
علامت بزرگتر از
علامت بتوان
علامت کوچکتر یا مساوی
علامت بزرگتر یا مساوی
علامت مخالف
صفحه 64:
عملگر های منطقی (0600962620) به قرار زیر است :
معرفی
00000۳۵۵
۳0
0۵
00
00
"00 ket
نماد
00
OR
xXOR
oor
© لع ©
صفحه 65:
این دستور به معنای ریاضی 00036 < 0000۲ (قدرمطلق) است .
٠ مثل
Br Teter 0 , بت Bs 9 57(
6-0
‘pele (0) ۵806 ع مر
HO عم 00
ud
صفحه 66:
Darpt = xp (sowre)
ه21 متغيرىاز نوع داده 09,ا9/0(08) لست Sed spur Ui اه برلبر ببا و
٠ مثل
0 0
(0.0 )2 دكا
۲ ۱
۷ 4
X= Cxn( X)
bd X ed O.0OHIBOILE
Cod
صفحه 67:
Daret = LooflD (sree)
امه و سسحت هر دو . 8 4 108 tareet tle لگاریتم پایه (40 متغير يا ثابت جومت در
داده ke Es هستند .
«مثال
مه و0 ۵6 لت 02 ۳۵0
d= 0.00
GO = Lox (4)
kd GO
۳ ۵020۷ GOO
۵9 <۱۵)۵0(
* 0
صفحه 68:
توابع ریاضی و محاسبائی...
تابع 106
اين دستور لكاريتم طبيعى يك داده از نوع +0,ا8/0(8) را برمى كرداند .
= Loy (saree)
لگاریتم متغیر یا ثابت سیم از نوع داده لمح كرفته مى شود .ودر متغير بم قرار مى كيرد
٠ مثل
۳90900۵
صفحه 69:
توابع رییاضی و محاسبانی...
تابع 8۱۱0
این دستور یک عدد تصادفی برمی گرداند .
R= ROO (bo)
بدست آمده و در متغیر مج قرار می گیرد . با هربار استفاده از اين دستور عدد مثبت تصادفی دیگرا beet 9D عد تصلافی ین
. پدست خواهد مد
هی بید یک عد مثبت پاش
٠ مثل
ماع )ا
جحاسة صم pt (00000) ادج
0
صفحه 70:
توابع ریاضی و محاسباتی.
SIN a
اين دستور سینوس ثابت یا متغیر میرح را در متغیر عم از نوع 910068 قرار می دهد .
دستورات مثلثاتی با رادیان کار می کنند و ورودی این دستور بایستی رادیان باشد .
٠ مثل
X Be Credo
Osta Os Grape
۳ 0069
wie
= Gin (0) ‘Orta (/م)مه ع
Oo و0۵۵
صفحه 71:
توابع ریاضی و محاسباتی.
COS a
این دستور کسینوس ثابت یا متغیر یمیت را در متغیر vor )3 نوع ,90000) قرار می دهد
تمام دستورات مثلثاتی با رادیان کار می کنند و ورودی اين دستور بایستی رادیان باشد .
dhe
X Bs لب
Ovvs Os Gterde
)۳۶ 20
we
= Ove (X) ‘Ones = ven (rI)
Ove 0 0000099
صفحه 72:
توابع ریاضی و محاسبانی...
تابع TAN
( )00
اين دستور تانژانت ثابت یا متغیر عصعحح را در متغیر عم از نوع NE CUDDLE می دهد . تمام
دستورات مئلثاتی با رادیان کار می کنند و ورودی این دستور بایستی رادیان باشد .
dhe
X Os Grete
Orca Bs terercfe
۳ ۵06666
wre
= ras (0) ‘Ora = (0*ماس
rac 0.00009
صفحه 73:
= G11 smeve)
اين دستور سينوس هايبربوليك ثابت يا متغير سمحت را در متغیر چم از نوع 61060 قرا
. می دهد . تمام دستورات مثلثاتى با راديان كار مى كنند و ورودى اين دستور بايستى راديان باشد
٠ مثل
X Bs Gree
له ع) ۷
00.608
صفحه 74:
= COCO save)
GADOLE £555) ver اين دستور كسينوس هايبربوليك ثابت يا متغير سمح را در متغير
. می دهد . تمام دستورات مثلثاتى با راديان كار مى كنند و ورودى اين دستور بايستى راديان باشد
* مثل
ص6 <© X
Y اجه
ose
00 و < ۲
صفحه 75:
DOW seve) ۱ =
sia ly cud Sly 0 8
اليك ثابت يا متغير موحت را در متغير عو از نوع 601000
اتى با راديان كار مى كنند و ورودى اين دستور بايستى راديان باشد . 0
Y= Danks (00)
صفحه 76:
توابع رییاضی و محاسبائی...
ASIN af
= @PG( sree)
این دستور آرکسینوس vor se 1) wore sate Wal از نوع /900069) قرار می د:
ورودی تابع عددی بین -) و +0 می باشد .
dh ۶
۲ < 0۰00
صفحه 77:
(مسمحد )00008 -
اين دستور أرككسينوس ثابت يا متغير ممح را در متغير و از نوع 09/000309 قرار مى
دهد . تمام دستورات مثلثاتی با رادیان کار می کنند و ورودی این دستور بایستی رادیان باشد .
« مثل
= GOOG (x)
صفحه 78:
توابع ریاضی و محاسباتی.
تابع ATN
= @PO( srave
et IA GIDBLE این دستور آرک تانژانت ثابت یا متفیر یی را در متغیر -جم از نوع
. دهد . تمام دستورات مثلثاتی با رادیان کار می کنند و ورودی این دستور بایستی رادیان باشد
« مثل
صفحه 79:
(طسه)060600-<
برای تبدیل درجه به رادیان از اين دستوراستفاده می شود .
ste 2515) به رادیان تبدیل می شود و در متغیر (2690) از نوع داده 9/10060/,68) قرار می گیرد
٠ مثل
<<) 02 Grete
V @e ات
deo
= Drw@red (X)
39 99
صفحه 80:
توابع ریاضی و محاسباتی...
RAD2DEG aks
=RODEOEO( kno)
برای تبدیل رادیان به درجه از این دستوراستفاده می شود .
راديان جه به درجه تبديل مى شود و در متغیر ؟090() از نوع داده 901068/,6۵) قرار می گیرد؛
٠ مثل
X (2 اج
ات ۵ ۲
5 ۵8
= 00 00
©666. 6 ب
صفحه 81:
ROUND at
=ROOOO( x)
متغیر یا داده از نوع 900068/۶) روند شده و در متغیر ؟90)() از نوع داده 9000)8/,6۶) قرا
. می گیرد
مثل «
(2.9) =O; Raen(-2.9)
(رممسمه: معرهم)
صفحه 82:
تبدیل کدها و متغیرها به یکدیگر
BOR میکروکنترلرهاي
صفحه 83:
(مسمم) 060 ع وه
این دستور اولین کاراکتر یک متغیر از نوع داده 90۳0۲10060) را به مقدار اسکی آن تبدیل می کند .
* مد
موه ۵ , سره Ore ® Bx
"G= “OC
6 < 660
‘waked OS © يا
Cod
صفحه 84:
تبدیل کدها و متغیرها به یکدیگر ...
دستور HEX
Ow = ex (x)
را به مقدار هگزادسیمال )0۱7۳۵ MOPEGER , DORD , LOWG این دستور یک داده از نوع
. تبدیل می کند
. متغیر یا ثابت 6 در متغیر 6068() جای می گیرد EX la
» مثل
Oro 0۵ Os Ove , © 02 0
0-09
Lex(P) ده
9 “20 walled
kd Wex(®) “20 wil kel wo
1
صفحه 85:
تبدیل کدها و متغیرها به یکدیگر ...
دستور ۸۵۸۱ ۲۱:2۷
(م) دسا عون
اين دستور یک داده هگزدسیمال را به مقدار عددی تبدیل می کند .
مقدار عددی داده هگزدسیمال ) که می تواند , LODGE , DORD , TWPEGER
۳۵ ) باشد در متغیر 0090) جاى مى كيرد .
he
Dre © Ps بت , © Bx sirens’
"G= OO
© = Wem (5)
UO ud be ted © يا
مج
صفحه 86:
تبدیل کدها و متغیرها به یکدیگر ...
دستور ۱۷۸۵۸۲6۶50۲
Ow = DOKEGOO (CaO)
اين دستور متغير یا ثبت 2 عم را تبديل به مقدار (000) اش مى كند و در متغیر »مر جای
. می دهد
«مثال
Ore ® Os Ove
هو و
۵ - اسسه0 )0(
bod ©
Gud
‘00 wil show
صفحه 87:
تبديل كدها و متغیرها به یکدیگر .
دستور MAKEDEC
(صو) 066060 < ممه
برای تبدیل یک داده 00000) نوع 9۳۳۵ , 00000 , 100/8080965 به مقدار
00 4 از اين دستوراستفاده مى شوذ .مقدار دسیمال متغیر یا ثابت هس در متذیر 1
جای می
one
One ® Ox Ove
9 <ه
© لجنا
هرا
bed Br (B)
Ockerer (0) ۱ 2 0 = ©
bed“ م
Cod
صفحه 88:
تبدیل کدها و متغیرها به یکدیگر ...
دستور MAKEINT
Oars = DOKEIMT (LEG , O60)
را به هم متصل مى كند و يك داده نوع (0000) يا 100900000 می
بايت كم ارزش و 70909) بايت ير ارزش متغير دو بايتى-() را تشكيل مى
مرج( 899*0606806) ع مود
dhe
تا ۵2 هو ۱ eter
=e
1= Ockers (© , () ١): ممه- مبرومت
Gud
صفحه 89:
تبدیل کدها و متغیرها به یکدیگر ...
دستور STR
Our = GPR (X)
. ابا اين دستور مى توان يك متغير عددی ( 06) را به رشته (0000)) تبدیل کرد
dhe
Ore ® Bx Be, G Ps GriniO
6-9 1
G= Gr (®) ‘oow te a orient
HG
ud
صفحه 90:
تبدیل کدها و متغیرها به یکدیگر ...
دستور VAL
Ow = O@L (6 )
با اين دستور می توان یک رشته ()) را به متغیر عددی (0608)) تبدیل کرد .
«مثال
One © Os Ope , ۵ Os 0
=e" ‘any O tea sirkny
Oa) ‘prover sink to oR = ©
۲۷9
وميه جد لص ممت Seay pnt 0*6 - ©
‘OPO fede © عا
Gud
صفحه 91:
تبدیل کدها و متغیرها به یکدیگر ...
ستور STRING
Our = GPRWE (wa)
را با تعداد تکرار ب. تبدیل به رشته کرد a این دستور کد اسکی
در صورت قرار دادن 260 مب یک رشته بطول 000 کارا .
(0) < قابل قبول نیست .
در متغیر مر قرار می دهد
تولید می شود و قرار دادن و
he
Ore 6 Be “بست
= Gren (GOS )
HG 00
cd
صفحه 92:
تبدیل کدها و متغیرها به یکدیگر ...
ستور BIN2GREY
( موج) 61060606067 = Owl
متغیر مر که می تواند داده ای از نوع 06069 , TOTEGER , OY VE , 0000
باشد به کد گری تبدیل شده و در متغیر 6060() قرار می گیرد .
#مثل
Ox ® Or Ce
© 0 2
6 06 06 © 5 6 6 15 0 (5) بصوضرو لد ...
Went
God
صفحه 93:
تبدیل کدها و متغیرها به یکدیگر ...
ستور 6۳۴۷28۱0۱
Owl = wevObia (Ore )
كد كرى ve به مقدار باینری تبدیل شده و در متغیر وس كه مى تواند داده ای از نوع
۵ ۷ , 10/۳0090908 , 200300() باشد قرار می گیرد .
#مثل
Ox ® Or Ce
2 0 ©
. (0)ماعموت 0 5 6 FOF Sasa
Went
God
صفحه 94:
رجیسترها و آدرس های حافظه
BOR میکروکنترلرهاي
صفحه 95:
رجیسترها و آدرس های حافظه...
تمام میکروهای 9608) دارای 20 رجیستر 0 بیتی (0۲60- 0300 ) همه منظوره در 00000
خود هستند .
ROOLGE) , REGGE) & ROMOGO) ss jase y با 6600 ر
YD Heb SSL MO ye M4 IKE ROO(LOO) b ROP (DCO)
رامیدهلدار
صفحه 96:
وه
سود Get
توسط این دستور می توان یک بیت را یک کرد .
میتواند يكبيتو يا يكج:00) مانند 2A: PORTO. عی() متغیریاز نوع دادم
۵ ۵ , 10/۳0 , 0۳/۳۵ باشد . ۷( برلی0۳/۳6) میتولند 0 تا
0 تا 6) برلی 006080 و برلی006()رامیتولند 4۵ تا 00 باشد .
«مثال
Oxo Bd Bs Ot, BO Bs Ope ,O Os Oord , b Os Lown
‘set bi (oP port B شوه وه
عم با 0 Get
Ge CO. ‘eet ba oP var ©
۵6 ‘set highest bit oF word
۵ و 0۵ ود 4اه
صفحه 97:
رجیسترها و آدرس های حافظه...
دستور TOGGLE
این دستور مقدار منطقی یک پایه یا یک بیت را معکوس می کند .
POBEBLE probit
PID میتولند یک90۳0۲) مانند MLS 5 PORTO. 2
ube
One OBR Bs Byte
Cocbig Picb.O = ruiput ‘port. نجه نحص من جز
000 porb.D ‘ponte ere
اجه ) (DOD ‘wait Por ده
ممه اه ارم <) عببو
صفحه 98:
توسط این دستور می توان یک بیت را صفر کرد .
8۵6 pialba
۵۵۵6 ون
میتولند یکبیتو یا یکط۴0) مانند ,3600369 باشدو مم() متغیریاز نوع دادم 0
باشد . ۷( برلی0۷۳/۳) میتولند 0 تا )0۷۳۵۶ , 100/۵060 , 0۵ ۵
. تا 08 بسرلی 0000800 و بسرلی0068()را میتولند 0) تا 00 بساشد 0 , ۶
«مثال
Orv O0 2 6۰ , )09 62 6 , ٩ 02 eteyer
revet Port. ‘reset bi O oF port ®
revet (BA ‘ba vorbleres
هط reset 00.0 ‘reset ba O oP var
bit oF 1 ها سس سس
صفحه 99:
رجیسترها و آدرس های حافظه...
BITWAIT 5354
9۲۳۹۵۸۵/۲۲ ۱, 0:1١
4۲6۵0 توسط اين دستور اجراى برنامه تا زمانى كه بيت ا, () - )509/15 با ( 0 ع)
شود در خط جاری متوقف مى ماند .در صورت 10080009 شدن شرايط , اجراى برنامه از خط
می VP ASML PORNO بعد ادامه مى يابد . ا مى تواند يك بيت رجيستر داخلى مانند
. اتوائد بين اعداد صفر تا 78 تغيير كند
dhe
Ore © Bs Bt
Barc @ , Get “writ wail Bit B is Get
] , reset ‘ urat uci Bit P oF Port ® is D
صفحه 100:
رجیسترها و آدرس های حافظه...
دستور ۳۴۴۷
Ow = OP EEK (kere)
از این دستور برای برگرداندن بایتی که در ادرسی از حافظه کدی ذخیره شده است استفاده می
کنیم .با اين دستور می توانید به رجیسترهای داخلی نیز دسترسى بيدا كنيد . البته با این دستور نمی
توان در حافظه داخلی چیزی نوشت .
dhe
Ore 1 Be “tatecer , BI Be Byte
or 1= 0 Te Od
000 م صصص ©6 بلس ' )1( Peek = 0
kel Lex (Hal) * cpt byte Pro tered ww (XD-r811)
rat
صفحه 101:
رجیسترها و آدرس های حافظه...
دستور ۳۴۴۱۲۲
Our = CPCECWH (actress)
) ۱,9۵۷, )00900( با اين دستور می توان بایت ذخیره شده در صفحه بالای حافظه کدی
. میکرو 0690009006) یا دیگر میکروها که دارای 06 4 حافظه است را خواند
. آدرسحافظه و محتولیآدرسدر متغیر یکبسایت!)0() قرار میگیرد 22000000905
(0 )سیم() محتولعاولینب ایتحافظه ب 000 6۲ را برمیگرداند.
صفحه 102:
رجیسترها و آدرس های حافظه...
دستور ]۱۵0۸۵۸۵۲0
مر سس ۵۵۵0۵
با این دستور می توانید آدرس یک متغیر را در یک جفت رجیستر ذخیره کنید . () متغیری است که آدرس آ
در متغيرهاى دوبايتى ),٠/,1, ذخيره مى شود و RBG رجیسترهای ,1 ,6,۷( هستند ,
این دستور جز دستورات اسمبلی است و برای کمک به برنامه نویسان اضافه شده است .
dhe
Ore © Ov Grey B Ov Ope
م
عاديا 3 ‘bad addres tate REO und ROP
۲۱ سر , X مها اه سای لجسا )3/6۵۲ rate
066: ) سس
سس امس
Get
صفحه 103:
رجیسترها و آدرس های حافظه...
دستور OUT
00 لبم , cher
توسط این دستور می توان یک بایت به یک پورت سخت افزاری یا آدرس حافظه داخلی /خارجی
. ارسال کرد
dress) 4G Ockee که میتولند بین ,|" ۳)۳6۳6۲) - را (1) باشد فرستادم میشود
. دستور /2)0) میتولند در تمام مکانهایحافظه WOR بسنویسد . توجهه كنيد كه برلى
سل ی 0(05()() تعریفمیشود .
۰ مئل
One © Os Oye
Ou &LOOOO , 4 ‘secd (to the datcbus ((D — dP) ot okbess OOOO
Gud
صفحه 104:
رجیسترها و آدرس های حافظه...
دستور INP
(مسللم) 10
توسط این دستور می توان یک بایت از پورت سخت افزاری یا آدرس حافظه داخلی بخارجی خواند .
محتوای آدرس حمسی که می تواند بین را" PEPE — را01) باشد خوانده شده و در متغیر جر
قرار مى كيرد .دستور 10002 می تواند از تمام مکانهای حافظه )96(0٩ بخواند .
» مثل
Ove عه ۵ م۳
0
0000 مسب
0
Cot
صفحه 105:
رجیسترها و آدرس های حافظه...
دستور ۳۴۴۶۱
(سسلم) ۳ - و
این دستور محتوای یک رجیستر را برمی گرداند .
و4( آدرس رجیسترهایم 0۷ - )٩0( لستکه بین () - 20 میباشد ,محتولورجیستر
ver ke جایمیگیرد . دستور ۳09690 ( ) فقط میتولند محتولعرجیسترها را
بخولند ولی۳10060 ) میتولند از تمام مکانهایحافظه بخولند .
dhe
0 ۵ Be Ove
®=PCCK (D) — ‘retwra tee Prot byte oP the tetera wrewory (RO) Berd
صفحه 106:
رجیسترها و آدرس های حافظه...
دستور ۴۵۷۴
POKE address , vchue
با اين دستور می توانیم یک بایت داده را در یکی از رجیسترها بنویسیم .
مقدار متغير يا ثابت يك بايتى معث در أدرس 4/4 كه بين 0 - 0© براى رجیسترهای
- (30) است نوشته می شود .
٠ مثل
Poke 1, S
‘write S to RO
Gud
صفحه 107:
رجیسترها و آدرس های حافظه...
دستور ]۱۷۸۵۲۳۲
( سم ۵-0606
این دستور آدزس یک متغبر را در مکان حافظه بر می گرداند.
آدرس متغیر وم در مکان حافظه بدست آمده و در متغیر عجرر قرار مى كيرد .
dhe
Ore ۵ ملاع Gye Bt &VIOO , 1 Be Ietecer , D Be Dord
© = Op (b)
tA Wex(() ‘td & OOOO
مج
صفحه 108:
دستورالعملهای حلقه و
BOR میکروکنترلرهاي
ع
9
صفحه 109:
دستورالعملهای حلقه و پرش ...
دستورالعمل 0۳[ و 607۲0
اسلا 0160)
اس 1006
با اين دستورات مى توان به برجسب إاا يرش كرد .برجسب إسادا بايد با علامت : (olen)
بايان يابد و مى توائد نا 060 كاركتر طول داشته باشد . به خاطر داشته باشید زمانیکه از دول
هم نام استفاده شود كامبايلر به شما برب مى دهد . دستور جمعجیم برای برگشت از برچسب
وجود ندارد .
٠ مثل
ما ه جات لت اس لس ٩6 :6
© مسا 0+ © - ©
0۵ 1۳
ow stort ‘Or sop stort
Cod F ‘Ober PF
Crud
صفحه 110:
دستورالعملهای حلقه و پرش ...
دستورالعمل 120-1001
فرم کلی دستورات ۱/606۲ ... (06) بصورت زیر می باشد .
0
سود
[ سوت 00۲ ] ۱۱۵۵۵
دستورالعمل مرسمه تا زمانی که بمهیمسیمورس دارای ارزش ۷0060 یا غیر صفر باشد تکرار خواهد
شد .بنابراين اين توح جلف هل ابا OS ای ود SE Aiba ules OO LOOP,
با 000 090610 مى توان از درون حلقه خارج شد و اجرای برنامه در از حلقه ا:
٠» مثل
Oxo O Ov Over
Ov ‘rant the boy
0 میا 0+ 2-0 ©
kd ® ‘ed
Lowy Deal © = 0 ‘repeat weil 0 < 0
۷
صفحه 111:
دستورالعملهای حلقه و پرش
دستورالعمل ۳۲۵۲-۱۱۲2۲
فرم کلی دستورات 00020 .. ۳006) بصورت زير می باشد .
POR va > سس PO نمی ]9 ۵ ۵0۲0۵ [
سوت
OEXT var
SOLAS tye مقدار سایانیاستو هو دو eum SL A ibe ott AS Seale SS Ss Oar
pla Lg عندو بت . سلا( تار Late ape AS a ag | jp 6a مقفیساشد , وجود سام جب بعد
Sel LI OEXT 5
مثال
ra © Os Wyre , OM Ow سجحف! 0 0 تمر
Por D = 0PM Ory @
bd "her نس "©
Orn d
Por O= A Po-6 Op 1
bd he موه "0
Wen
Cor O1= AP AD
bod her a bd" Dd
Ort
صفحه 112:
دستورالعملهای حلقه و پرش ...
دستور العمل ۴۱۱۲ ۱۷۷۳۲۱۱۲-۱۷۷
۱
ون
oCoo
دستور LEE he Derd Jal یک حلقه تکرار می دهد که تکرار این حلقه تا زمانی ادامه می یبد
که عبارت بکاربرده شده POLOE | tps کند و یا مقدار صفر ers | دستورالعمل جنر
بصورت ورود به حلقهبه شرط مى باشد , بنابراين كفا( ممكن است در خاقهایی اصلًاجرانشود ,
بخش اهمد تا رقتی که حاصل بجر صفر يا POLO نشده است تکرار خواهد شد .
مثل
Oxv © Ov سره
0-0
Ober ® <0
۲۷9
ها
Orval
صفحه 113:
در كليه حالتهاى زير عبارت »همح مى تواند یک دستورالعمل ساده یا چند دستورالعمل مرکب
باشد .
OD حالت
ها و ۱
دستورالعمل یبد زمانی اجرا می شود که PROC 253) 62 expression Ske
باشد .
dale
AP @xpressica Vheo
مجم
Cle
تا
Cod IF
درصورتى كه عبارت بندد بوب داراى ارزش 1080009 باشد دستو العمل اسم اجرا
. خواهد شد , در غير اين صورت دستورالعمل سره اجرا می شود
صفحه 114:
1۳ اسسسو Pkea
اسر
سسسب] سا ۱۳[
ae)
be
سس
Cond
درصورتى كه عبارت [»>دد وب دارای ارزش۳4۹0()9/ باشد دستور العمل سب اجرا
عبارت اختیاری ly POLOE G5) GU! expression She 4S hy pe 3, خواهد شد
ارزش <00۹000/ باشد دستورالعمل مرسمه اجرا می شود و در غير اين SL) expression
. اجرا خواهد شد state ell sit صورت
. همچنین با دستور *10 می توان صفر یا یک بودن یک بیت از یک متغیر را امتحان کرد
۱
صفحه 115:
دستورالعملهای حلقه و پرش nw
دستورالعمل 1۴ ...
Ore Ow Os Oye , Ide Os Bye
“Icke = (1
1۳ Own. dx = Vike
Get porb.O
....
ها عه ۵ مه
© 2 ©
دا 40 < ©) حك
اجه ها موم عالطا
له
"bd “ thio wal cever be exerted
Cod &
صفحه 116:
دستورالعملهای حلقه و پرش ...
دستورالعمل ]6۸۵5
اگر متفیر ۱090) با مقدار )بیع برابر باشد )سس اجرا می شود و سپس اجرای برنامه
بعد از بحاصو لمح ادامه می یابد .
در غیر اینصورت اگر متغیر -وم با مقدار tee برابر نباشد ولی با مقدار ی برابر باشد
سیب اجرا می شود و سپس اجرای برنامه بعد از بسطعه لس ادامه می یاید.
و نهایتا اگر متغیر عومر با هیچکدام از مقادیر 0ب و (6ه برابر نباشد ,سوب اجرا
می شود و سپس اجرای برنامه بعد از بسح ward ادامه می یابد .
شما می توانید به صورتهای زیر نیز متغیر را امتحان کنید :
اگر متغیر موردنظر بزرگتر از 63 باشد . ۵< سوه
و یا مى توان محدوده ای را برای امتحان کردن در نظر كرفت :
اگر متغیر موردنظر بين © تا © باشد . و 0
صفحه 117:
دستورالعملهای حلقه و پرش nw
دستورالعمل CASE....
صفحه 118:
دستورالعملهای حلقه و پرش ...
دستور ۴21۲
ابا اين دستور مى توانيد فقط از يك ساختار يا حلقه خارج شويد و ادامه برنامه را بعد از ساختار يا حلقه ادامه دهيد .
EXIT COR
XI? OO
EXIT OULE
EXIT GOB
EXIT POOOMOD
Ov
0 - © +0
AE © = (OO Phew
Gxt Ov
Cod FE
boo
ud
صفحه 119:
دستورالعملهای حلقه و يرش
دستور العمل ۶ ۷۸۵۱۱ 0۱
هب ها معتلقیپزش کرد
OO sxx [CONC] [BOGOO] kek! [bt]
SLOBELM 522s PORTO ss 90۳05 متغیر مورد نظر برلیمتحانشدنکه میتولند )(«-
. و ..برچببهییهتند که بسا توجه به مقدار 600068 بسه نها پرشمیشود ]/)000/0
با این دستور با توجه به مقدار متغیر می توان به توابع
ue
Oxo X Dw Dyer
xed
OW X @emds LUE, aoe web BO
x=
OW X Bem VAAL, LORE سنا م مجعو LAL
ار
oor X
bx
we
Oat
bd
صفحه 120:
ایجاد تاخیر در برنامه
BOR میکروکنترلرهاي
صفحه 121:
ایجاد تاخیر در برنامه ...
دستور ۲۱۱۴۱۸۵۷
این دستور برای مدت کوتاهی به مقدار 0000000 میکرو ثانیه در اجرای برنامه تاخیر ایجاد می
کند .
۰ مثل
MELOY “Dot Por hardware ty be reody
صفحه 122:
ایجاد تاخیر در برنامه .
دستور ۱۷۸۵۱۲۸5
برای ایجاد تاخیر در برنامه از اين دستور می شود .
سس OO
اجرای برنامه به مدت !»حدس جم ميكرو ثانيه متوقف مى شود .يس از سپری شدن زمان
اندم أجراى برنامة از.خط بعد لاله مى د أب Ge ore IS Din )=
باشد
دستورات تاخیری زمان دقیق را به شما نمی دهد . برای بدست آوردن زمان دقیق از
تايمرها استفاده كنيد
dhe ©
Octrs ID
"ed “BOECOO
Cod
صفحه 123:
ایجاد تاخیر در برنامه ...
دستور ۱۷۷۸۵۱۲۲۳5
برای ایجاد تاخیر در برنامه از اين دستور می شود .
ل«مصمصاب 0۵
اجراى برنامه به مدت لح ميلى ثانيه متوقف مى شود .يس از سيرى شدن زمان مشخص
شده اجرای برنامه از خط بعد ادامه می یابد. لمسسعا() می تواند عددی بین ()-
0 6) باشد .
dhe
Dats 1D
000
Gud
صفحه 124:
ایجاد تاخیر در برنامه ...
WAITus 5544
برای ایجاد تاخیر در برنامه از اين دستور می شود .
اه ۵0۵۲
اجرای برنامه به مدت لح ثانيه متوقف مى شود .بس از سپری شدن زمان مشخص شده
اجرای برنامه از خط بعد ادامه می یابد.
9
با 000
Gud
صفحه 125:
زیر برنامه و تابع
ميكروكنترلرهاي +0900
صفحه 126:
زير برنامه و تأیع ...
معرفی تابع ۴۱۱۱6۲۱۵۱ ۴61۵۴۶
از اين دستور برای معرفی تابع در ابتدای برنامه استفاده می شود . زمانی که بخواهیم تابعی را معرفی
یم بارستی یم معرفی شد: بشد . در صوزت انففده از کم می باستی یک نله بوگرفانه شود .
0۵ ۳۵۵۵/۱۷۵۵ ۵۵/۲) 0۷۱۵/۵۷۵0 سره Ov wre
2 نام تابع موردنظر لست لنتقالاده بصورتر/(0۱۳)(6) بساعثمیشود که یککپیاز متغیر بسه 10009“
فسرستادم شود و در محتولیآنهیچ تسغیریلیجاد نشود ,ولیدر حاللتا1(۱:/)1100)0) آدرسمتغیر ارسانلو تغیرلتدر
لثر میگذارد برگشتیبر صورتلنجام علیاتبر روینبا مقدار اولیه خود برلبر نخولهد بود . در
7610 صور حدم لستفادم از گزینه [,07010201/00176(00)] بمصورتپیشف رضداده ببصورت
فسرستاده میشود. ۱(" نوع داد ارسانلشده و 2و نوع دادم بركشتىلست كه هر دو میتسولنند دادم
. شرع ۵00۲00 ۲۵۵۵, ۵۵۵۵ ,۵/۵۵۵0 0۷/۱۵ بشند
صفحه 127:
زير برنامه و تأیع ...
معرفی تابع ۴۱۱۱۲۱۵۱۱ ...DECLARE
» مثل
می شود و هیچ وا شود 5
شود تج ری Scores AL OVEDHOMOD of clade
0۸ و 6070۲۲00 است و مقدار برگشتی از نوع 710۱68606068 است که در متغیر
قرار می گیرد . شما می توانید در محدوده تابع یک متغیر محلی تعریف کنید .
صفحه 128:
زير برنامه و تأیع ...
DECLARE FUNCTION@H (4 ...
ها بط De Grreny © وس 0 ٩ )م0 معط
سبحت و0 ,00و Le تسا ۳
صفحه 129:
زير برنامه و تأیع ...
معرفی 535 :)44 DECLARE SUB
از این دنتور براق معرفی زیر بزنامه انتفاده می شود . زير بزنامه اف که قصد فراخوانی آن زا دار
بایستی در ابتدای برنامه یا حداقل قبل از فراخوانی آن معرفی شده باشد .
رس POLHRE GOO POON ( [PVYROCIOYOOL] vr we
زیر برنامه برخلاف تابع مقداری برنمی گرداند ردر زمان ارسال داده بصورت Gas) DWRBP داده به زیر بر
فرستاده می شود و در محتوای آن تغیر ایجاد می شود .ولی در حالت ,ل0۷/)(60) یک کپی از داده فرستاده مى شود
به هیچ وجه در محتوای آن تغیری ایجاد DBO. 254 od نام زیربرنامه و (6()() نام متغیر ارسالی به زیر
برنامه و 0۷۳۵ نوع آن است که می تواندداده نوع OYE, WHOGGR, OCORO OTRO
برای نوشتن زیر برنامه ابتدا نام آنرا توسط دستور زیر
تعریف کرده و سپس شروع به نوشتن زیربرنامه می کنیم .
[( ام ) ] سس DD
000 نام زیربرنمه که بساید توسط دستور سجارب0) معرفیشده بساشد و بسا دستور رف این
صفحه 130:
زير برنامه و تابع oor
معرفى زيربرنامه 8لا5 ..DECLARE
7D Ds Oye, OU Do Dye , O Do Oye
che Oud Pers (D Dv Oye )
0د : 00-6 :0 8
© ; WAC
Pent (BA)
©; @4,0
21 (0 De Over )
©; 04;0 (20 waked
1b
صفحه 131:
زير برنامه و تأیع ...
فراخوانی 0۸۵۱1
توسط این دستور زیر برنامه یا تابعی را فراخوانی می کنیم .
(... , 08086 , 0۱006۲0 )۳6۵۵/۳ بابلا
26 , 6680( متغیر هاییکه بسه زیر بسرنامه لنتقانلمییابند , هستند . میتسوانزیر بسرنامه را بصوره
زیر نیز فترلخوتیکرد
, 6۱00 /9)
21 است که ناه نامه قبل از فراخوانی آن .2 il 5818 Devkare د. ا 1
برجا سخ م لزي يراد بل ی رن مت مد و( فرخونیشرد. گر بخواهم
صفحه 132:
زير برنامه و تأیع ...
فراخوانی ۸۵11 ...
8 62 و6 , 0 02 0
Gb Peet (Od 62 0 , Ord BC Br Ove )
“ud kel ® = dD
صفحه 133:
زير برنامه و تأیع ...
بکارگیری متغیر محلی یا LOCAL
() نام متغیر و سمورو نوع داد لستکه میتولنند , 1/۵0۵0 000:00 , GPRWG
۵ 00۵/۵ , 0۷۳۳۵۵ باشند نوع دادم ROD , GROO , XRODSE و أرليه هائمى
تولنند محلیتعریفشوند 1
محلى يك متغير موقت ست كه فقط در هكم قراخ انى زير برنامه مربوطه براى أن فضا در نظر كر
با برگشت از زیر برنامه عمر متغیر (۳6068 ۱/6۳60 ) به اتمام مى رسد .
متخیرهای بیتی نمی توانند بصورت محلی تعریف شوند .
صفحه 134:
زير برنامه و تأیع ...
بکارگیری متغیر محلی یا LOCAL
صفحه 135:
زير برنامه و تأیع ...
بکارگیری متغیر محلی یا LOCAL
این دستور به زیربرنامه پرش می کند و اجرای برنامه را از آدرس برچسب ادامه می دهد .
اسه! 00200
با0000),| نام برجسبوزير بسرنامه لستکسه بسه آنپرشمیشود ,توسط دستور 06(70/10) میتسواناز
60 برگشتکرد و لجراعيسرنامه بسعد از دستور 006090000 ادلمه ملد
due
‘dup to rotons
انا سم Prow novice bed “Tee
صفحه 136:
پیکره بندی و کار با امکانات ]۸۸۷ در
BASCOM
صفحه 137:
پیکره بندى يورت ها
ميكروكنترلرهاي 060005
صفحه 138:
پیکره بندی پورت ها ...
برای تعیین جهت پایه پورتها از اين پیکره بندی استفاده می نماییم .جهت یک پایه می تواند
ورودی یا خروجی باشد .
Ports = Grate لو
Onebigy Proxy = Grate
٠7 , لا بسته به ميكرو مىتولنند به ترتيبيايه hg PO Gb
4, ©4, ©, ©, 8, 8) باشند. و9 مىتواند يكواز كزينه هاوزير باشد :
OL WOT : در لينحالتوجيستر جهتدادم بايه يا بورتانتخابشدم صفر مىشود و
بايهيا بورتبعنولنورودوإستفادم موشود .
۲ يا ): در لينحا لتوجيستر Ly AL alates يوردانتخابشدم يكمشود و
بايه يا يورتبعنولنخروجىإستفادم موشود .
زمانيكه بخواهيد از يورتى بخوانيد بايستى از رجيستر (60/) يورت مربوطه استفاده كنيد و در
هنكام نوشتن در بورت بايستى در رجيستر “0000080 بنويسيد .
صفحه 139:
پیکره بندی پورت ها ...
* مثل
Oxo ® Os Bye , Cot Bs Byte
CocPig Portd = tout ‘poP cure PORT Por taput wode
Prt “Read data a Portd = @
Oud Pod 5 - 8 ۵ < 4
bd B
بنط ط قط ألمت يذ acct Pid? , reset
له < اسر لسن
‘set port to 0 0 2 ۲)
orb = Por ad
Get Por. ‘set bt D oP por to
“eer Port
صفحه 140:
پیکره بندی پورت ها ...
برررسی پورتهای میکرو ۸۲۱/۶۸۵32
* پورت 9
پورت 69 یک 1/0 دو طرفه 0 بیتی است . سه آدرس از مکان حافظه 1/60 اختصاص به پورت 9)
دارد .يك آدرس برای رجیستر داده ۵600٩06۵ , دومی رجیستر جهت داده A DORE
بايه ورودى يورت 020100093 , 9) است .آدرس پایه های ورودی پورت 9) فقط قابل خواندن است
در صورتی که رجیستر داده و رجیستر جهت داده هم خواندئی و هم نوشتنی هستند . تمام پایه های
پورت دارای مقاومت می .6 مجزا هستند .
8 یک جیستر نیست, لینآدرسدسترسویه مقدار فیزیکییر رویهو یکاز پایه هوپورت
8 را ممکنمیسازد .زمانیکه ۳)(0/6۵) خولنده میشود , دادم لچ پورت) خولنده میشود
و زمانیکه از ۳/0(68) خولنده میشود مقدار منطقیکه بر رووپایه ها موجود لستخوانده می
شود
صفحه 141:
پیکره بندى يورت ها ...
برررسی پورتهای میکرو ۸۲۱/۶۸۵32
* رجیسترهای پورت 0
D- PORTH [PORT ۵ 00۲/۳۵ ۱۵0۵/۳/00 [ رجیستر داده پورت *
PORTO
am ©
PORTO
aun ©
PORTO
o
aia
PORPOT
RO
PORTOT
a
PORTO
ele
1 Rk
PORTO I
a] coms
RK
= DOR [PORT B OGPO OWREOMOY REGISTER J S54 2312 Ses Savas +
1 PORTO
ار دا
* بایت آدرس پایه های ورودی پورت [ 0000000 ۳۵۵ 1۵۵۵ ۵ D PWO- [PORT
PORTO
WO? fo
PORTO
8
am
PORTO
pl. 9
001
0
001
صفحه 142:
پیکره بندی پورت ها ...
برررسی پورتهای میکرو ۸۲۱/۶۸۵32
* استفاده از يورت ©) به عنوان یک VO عمومی دیجیتال
تمام 2 پایه موجود زمانیکه بعنوان يايه هاى 1/0 ديجيتال استفاده می شوند دارای عملکرد مساوی هستند .۳ , پا
VO عمومى : بيت 000090) در رجیستر (000686) مشخص کننده جهت پایه است . اگرم(0606) یک باشد , 8:09
بعنوان یک پایه خروجی مورد استفاده قرار مى كيرد و اكر 06060)/صفر باشد , (۳0) بعنوان یک پایه ورودی در
نظر گرفته می شود .اگر ۳0(01/160(0) یک باشد هنگامیکه پایه بعنوان ورودی تعریف می شود ,مقاوت Path
می شود . برای خاموش کردن مقاومت باید »۳6(607060) صفر شود يا اينكه بايه بعنوان خروجى تعریف 2
های پورت زمانیکه ریست اتفاق می افتد به حالت cet Drab روند .
۵۵۰ 0 Puy Comment
میب 0 ما 03
3 مه 7
0 سان 0 PhP Dery cups
0 رق Wo, PhP ow nape
صفحه 143:
پیکره بندی پورت ها ...
برررسی پورتهای میکرو ۸۲۱/۶۸۵32
* پورت 0
پورت 0) یک 1 دو طرفه 0 بیتی است . سه آدرس از مکان حافظه VO اختصاص به يورت
© دارد ,یک آدرس برای رجیستر داده 86()8/060) , دومی رجیستر جهت داده DOR 3
سومى بايه ورودى يورت 0200009 , 9) است .آدرس پایه های ورودی پورت 9) فقط قابل خواندن
است در صورتی که رجیستر داده و رجیستر جهت داده هم خواندنی و هم نوشتنی هستند . تمام پایه
های پورت دارای مقاومت مب آ۳) مجزا هستند .
08 یکوجیستر نیست لینآدرسدسترسیبه مقدار فسیزیکویر رویو یکاز پایه هوپورت
6 را ممکنمیسازد .زمانیکه ۳)()9/9) خولنده میشود , دادم لچ پورت9) خولنده میشود
و زمانیکه از ۳0060 خولنده میشود مقدار منطقیکه بر رووپایه ها موجود لستخولندم مى
شود .
صفحه 144:
پیکره بندی پورت ها ...
برررسی پورتهای میکرو ۸۲۱/۶۸۵32
* رجيسترهاى بورت ©
* رجیستر داده پورت [ ۵۵/۵/۵ ۵۵/۵ ۵ PORTH [PORT - ۵
PORTO
00 ©
PORTOT
RID
PORTO
we
Ri ل
PORTO] PORTO
/0
PORTO
PORTO
۵ 8 هه 5
PORTO
a
۵ - 00 [PORT ۵ ۵0۵/۳۵ OLROOMOD ROCIO POR ] S54 238 رجیستر جهت *
PORTO
am ©
PORTOT
evan
PORTO
bh avi
ae PORTO
Sohn 1
a
PORTO
8
Rid)
PORTO
8
aa
PORTO
°
* بایت آدرس پایه های ورودی بورت ] PAWO- [PORT © WPOT POG GOOOREOS ®
PORTO
o
530
0
play
PORTO
ak
Gain Rad
PORTO] PORTO
35
بها
PORTO
Rig 2
PORTS
aa 8
PORTO
°
صفحه 145:
پیکره بندی پورت ها ...
برررسی پورتهای میکرو ۸۲۱/۶۸۵32
* استفاده از پورت 0) به عنوان یک VO عمومی دیجیتال
تمام 2 پایه موجود زمانیکه بعنوان پایه های VO ديجيتال استفاده می شوند دارای عملکرد مساوی هستند .»,ا» , پا
VO عمرمی : بیت »00000) در رجیستر 000860) مشخص کننده جهت پایه است . اگرم0)060) یک باشد , 1860
بعنوان یک پایه خروجی مورد استفاده قرار می گیرد و اگر »00060)صفر باشد , »60) بعنوان يك پایه ورودی در
نظر گرفته می شود .اگر »0600۲60 یک باشد هنگامیکه پایهبعنوان ورودی تعریف می شود ,مقاوت ما۳
می شود . برای خاموش کردن مقاومت pies POR MDa BY شود يا اينكه بايه بعنوان خروجى تعريف شود .يايه
هاى يورت زمانيكه ریست اتفاق می افتد به حالت هب0۳ می روند .
۵۵۰ 0 Puy Comment
03 میب 0 ما
3 ما Yeo مه لس و66۵ cured Pra. pulp bw
0 نحت Wo PehPU Lev ont
0 رق Wo, PhP ow nape
صفحه 146:
پیکره بندی پورت ها ...
برررسی پورتهای میکرو ۸۲۱/۶۸۵32
* پورت 0
پورت () یک 1/6 دو طرفه 0 بیتی است . سه آدرس از مکان حافظه (1/6 اختصاص به يورت ©
دارد .يك آدرس براى رجيستر داده 00008000 , دومی رجیستر جهت داده 000008) و سومى
بايه ورودى بورت 400000 , () است .آدرس پایه های ورودی پورت () فقط قابل خواندن است
در صورتی که رجیستر داده و رجیستر جهت داده هم خواندئی و هم نوشتنی هستند . تمام پایه های
پورت دارای مقاومت می .6 مجزا هستند .
9S PADO جیستر نیست, لینآدرسدسترسویه مقدار فیزیکییر رویهو یکاز پایه هوپورت
()را ممکنمیسازد .زمانیکه (۳6()/06) خولنده میشود , دادم لچ پسورت() خوالنده میشود و
زمانیکه از (۳100) خولنده میشود مقدار منطقیکه بسر رووپایه موجود لستخوانده می
شود .
صفحه 147:
پیکره بندی پورت ها ...
برررسی پورتهای میکرو ۸۲۱/۶۸۵32
* رجیسترهای پورت ©
* رجیستر داده پورت [ ۵0/۵/00 ۵0/۵ 0 C= PORNO [PORT
PORTO
aw ©
0 - OORO [PORP O OOTH OARCOMOY ROGWPOR [ رجیستر جهت داده پورت *
PORTO
ay?
* بايت آدرس يايه هاى ورودى بورت ] PWO- [PORT CAWPOT HOG OOORCOEE ©
PORTS
©
aly
PORTCA
RO
PORTA
aa
PORTOM
am
RO
RPO
PORTO
2
0010
2
صفحه 148:
پیکره بندی پورت ها ...
برررسی پورتهای میکرو ۸۲۱/۶۸۵32
* استفاده از پورت 0 به عنوان یک 1/0 عمومى ديجيتال
تمام 9 پایه موجود زمانیکه بعنوان پایه های VO دیجیتال استفاده می شوند دارای عملکرد مساوی هستند ,6۳0
پایه 1/0 عمومى : بيت 0000000 در رجيستر (000080) مشخص کننده جیت پایه است . اگرم(006) یک باشد ,
)0 بعنوان یک پایه خروجی مورد استفاده قرار می گیرد و اگر 0600صفر باشد , »(۳6) بعنوان یک پایه ور
در نظر گرفته می شود Sy PORPOn SI, باشد هنگامیکه پایه بعنوان ورودی تعریف می شود ,مقاوت ,ین
فعال مى شود . برای خاموش کردن مقاومت باید )*006٩06( صفر شود يا اينكه يايه بعنوان خروجى تعریف
شود .پایه های پورت زمانیکه ريست اتفاق مى افتد به حالت معومریب0۳/ می روند .
PORPCa 0 Puy Comment
میب 0 ما 03
3 ما Yeo (Co ud sow curt P vat. pulp bw
0 سان 0 PhP Dery cups
0 رق Wo, PhP ow nape
صفحه 149:
پیکره بندی پورت ها ...
برررسی پورتهای میکرو ۸۲۱/۶۸۵32
* پورت 0
پورت () یک (1/6 دو طرفه 0 بیتی است . سه آدرس از مکان حافظه 1/6 اختصاص به پورت 0
دارد یک آدرس برای رجیستر داده ۵600٩/۳00 , دومی رجیستر جهت داده 000008) و سومى
پایه ورودی پورت 6۳10060 , () است .آدرس پایه های ورودی پورت 0 فقط قابل خواندن است
در صورتی که رجیستر داده و رجیستر جهت داده هم خواندئی و هم نوشتنی هستند . تمام پایه های
يورت داراى مقاومت مب ) مجزا هستند .
0 یک جیستر نیست, لینآدرسدسترسویه مقدار فیزیکییر رویهو یکاز پایه هوپورت
را ممکنمیسازد .زمانیکه ۳6()/060) خولنده میشود , دادم لچ پسورت) خوالنده میشود و
زمانیکه از ۳/1060) خولنده میشود مقدار منطقوكه بر روويايه ها موجود لستخوانده می
شود .
صفحه 150:
پیکره بندی پورت ها ...
برررسی پورتهای میکرو ۸۲۱/۶۸۵32
* رجیسترهای پورت 0
«پورت [ ۵۵۵/۵۸ ۵۵/۵ ۵ 10۵0۷ 0-۵00۵
* رجیستر
۵ ]۳00۲۳۵0
© مه | ۵ب
* رجيستر جهت داده پورت [ ۵/۲۵/۳۸ ۳۸۵۵۱۵۵۵ ۵۵/۵ ۵ 1۳00۲ 006 - ۵
PORTO
am ©
* بایت آدرس پایه های ورودی پورت [ 000۵0۵0 ۵۵ 0۰1۵۵
PORTO
©
au
PORTO
a
PORTOT
530
PORTO
PORTO
طقس
Bad
0 ۷
| PORTO
۲
PORTO
RIM 6 ۵
PORTO
۵/0 =
0۵ ۳۵۵۰
PORTO
aw °
CORPO
°
00۲۵
4
صفحه 151:
پیکره بندی پورت ها ...
برررسی پورتهای میکرو ۸۲۱/۶۸۵32
* استفاده از پورت 0) به عنوان یک 1/0 عمومی دیجیتال
آتمام © يايه موجود زمانيكه بعنوان پایه هاى 10 ديجيتال استفاده می شوند دارای عملکرد مساری هستند 6۳0 ,
پایه VO عمومی : بیت 6000000 در رجیستر 06(680) مشخص کننده جهت پایه است . اگرم0/0) یک باشد ,
-(6) بعنوان یک پایه خروجی مورد استفاده قرار می گیرد و اگر »6060()صفر باشد , 1*60) بعنوان یک پایه ور؛
در نظر گرفته می شود .اگر 00 6(60۲*) یک باشد هنگامیکه پایه بعنوان ورودی تعریف می شود ,مقاوت بپان1۳
فعال می شود . برای خاموش کردن مقاومت بايد «00)18/00) صفر شود يا اينكه يايه بعنوان خروجى تعريف
شود .بايه هاى بورت زمانيكه ريست اتفاق مى Deter Silay Sh می روند .
PORTO 0 Puy Comment
03 میب 0 ما
3 مه 7
0 نحت Wo PhP Dery cups
0 رق Wo, PhP ow nape
محیط برنامه نویسی
BASCOM
نیما جعفری
jafari@iaut.ac.ir
1
معرفي منوهاي محيط
BASCOM
ميكروكنترلرهايِ AVR
2
منوي FILE
ایجاد فایل جدید ()FILE NEW
با انتخاب این گزینه یک پنجره جدید که شما قادر به نوشتن برنامه در آن هستید ایجاد می شود .
باز کردن فایل () OPEN FILE
با انتخاب این گزینه شما قادر به فراخوانی فایلی که در حافظه موجود است می باشید .
BASCOMفایلها را بصورت استاندارد ASCIIذخیره می کند .بنابراین شمکا می
توانید از ویرایشگری مثل NOTEPADبرای نوشتن برنامه استفاده کنید و سپس آنرا به
محیط انتقال دهید.
بستن فایل ) ) CLOSE FILE
این گزینه پنجره برنامه فعال را می بندد .اگر در فایل تغییری ایجاد کرده اید ابتدا باید قبل از
بستن آن را ذخیره نمایید .
ذخیره فایل () FILE SAVE
با این گزینه شما قادر به ذخیره فایل بصورت ASCIIدر کامپیوتر خواهید بود .
ذخیره کردن بعنوان () FILE SAVE AS
با این گزینه قادر خواهید بود فایل موجود را با نام دیگر ذخیره کنید.
3
ادامه منوی ... FILE
نمایش پرینت فایل () FILE lcd PREVIEW
این گزینه نشان می دهد که فایل متنی موجود برنامه در هنگام پرینت به چه صورت خواهد
بود .
پرینت فا یل () FILE lcd
با این گزینه شما می توانید فایل موجود در برنامه را پرینت نمایید .
بستن فایل ) ) CLOSE FILE
با این گزینه شما قادر خواهید بود از محیط BASCOMخارج شوید ولی در صورتی که
شما در برنامه تان تغییری داده اید و آن را ذخیره نکرده اید ,پیش از خروج هشدار میدهد.
4
منوی EDIT
EDIT UNDO
با این گزینه شما می توانید دستکاری اخیرتان در برنامه را از بین ببرید .
EDIT REDO
با این گزینه شما می توانید دستکاری اخیرتان را که از بین برده بودید دوباره برگردانید .
EDIT CUT
با این گزینه شما می توانید متن انتخاب شده را بریده و به محل جدیدی انتقال دهید .
EDIT COPY
با این گزینه شما می توانیدمتن انتخاب شده را کپی کرده و به محل جدیدی انتقال دهید .
EDIT PAST
با این گزینه شما می توانید متنی را که قبال COPYیا CUTکرده بودید در محل مورد نظر بچسبانید .
5
منوی ... EDIT
EDIT FIND
با این گزینه شما می توانید متنی را در برنامه تان جستجو کنید .
EDIT FIND NEXT
با این گزینه شما می توانید متن مورد جستجو را دوباره جستجو نمایید .
EDIT REPLACE
با این گزینه شما می توانید متنی را جایگزین متن موجود در برنامه نمایید یعنی در قسمت TEXT TO
FINDمتن مورد جستجو که باید توسط متن دیگری جایگزین شود را تایپ کنید و در قسمت
REPLACE WITHمتنی را که باید جایگزین شود تایپ می کنیم .
EDIT GOTO
با این گزینه شما می توانیدمستقیما و به سرعت به خط دلخواهی بروید .
6
منوی ... EDIT
EDIT TOGGLE BOOKMARK
با این گزینه شما می توانید شما می توانید در جاهای خاصی از برنامه که مورد نظر شماست نشانه گذاری
کنید و به آنها توسط دستور دستور EDIT GOTO BOOKMARKدسترسی پیدا کنید .
EDIT GOTO BOOKMARK
با این گزینه شما می توانید به نشانه هایی که قبال گذاشته اید .
EDIT IDENT BLOCK
با این گزینه شما می توانید متن انتخاب شده را به اندازه یک TABبه سمت راست منتقل کنید .
EDIT UNIDENT BLOCK
با این گزینه شما می توانید متن انتخاب شده را به اندازه یک TABبه سمت چپ منتقل کنید .
7
منوی PROGRAM
PROGRAM COMPILE
با این گزینه (یا کلید )F7شما قادر به ترجمه برنامه به زبان ماشین ( ) COMPILEخواهید
بود .برنامه شما با انتخاب این گزینه پیش از COMPILEذخیره خواهد شد و فایلهای زیر به
انتخاب شما در OPTION COPILER SETTINGایجاد خواهند شد :
– XX.BINفایل باینری که می تواند در میکروکنترلر PROGRAMشود .
– XX.DBGفایل DEBUGکه برای نرم افزار شبیه ساز BASCOMمورد نیاز است .
– XX.OBJفایل OBJECTکه برای نرم افزار AVR STUDIOمورد نیاز است .
– XX.RPTفmmmایلگmmmزارشی
هگزادسیماmmلmینتلکmmmه mبmmmراmیبmmmعضیاز اmنواmع PROGRAMMERها مورد
ا
– XX.HEXفmmmایل
نmmیاز اmست.
– XX.ERRفmmmایلخطا کmmmه mفmmmقط در هنگام mبmmmروز خطا اmیجاد میشmmود.
– XX.EPPداده mهایکmmmه mبmmmاید در EPROMبmmmرنامه mریزیشmmود در اmینفmmmایلنmmگهmداریمیگردند .
8
منوی ... PROGRAM
اگر خطایی در برنامه موجود باشد شما پیغام خطا را در یک کادر محاوره ای دریافت
خواهید کرد و COMPILEمتوقف میشود .با کلیک بر روی هر کدام از انها به خطی که
خطا در آن رخ داده پرش خواهید کرد .
PROGRAM SYNTAX CHECK
بوسیله این گزینه برنامه شما برای نداشتن خطای امالیی چک می شود .اگر خطایی وجود داشته باشد
هیچ فایلی ایجاد نخواهد شد .
PROGRAM SHOW RESULT
از این گزینه برای دیدن نتیجه COMPILEمیتوان استفاده کرد .
گزینه OPTION COMPILE OUTPUTرا برای تعیین اینکه کدام فایلها باید ایجاد شوند
را ببینید .فایلهایی که محتوای آنها قابل مشاهده اند REPORT ERRORمی باشند .
9
منوی ... PROGRAM
PROGRAM SIMULATOR
با فشردن کلید F2یا این گزینه از منو PROGRAMشبیه ساز داخلی فعال خواهد
شد .شما در برنامه با نوشتن کلمه کلیدی SIM$قادر به شبیه سازی سریعتر برنامه میباشید
.در صورت تمایل شما می توانید از شبیه سازی های دیگر مانند AVR STUDIOنیز
استفاده کنید .برای شبیه سازی فایلهای DBJو OBJباید ایجاد شده باشند .فایل OBJ
در برنامه شبیه سازی AVR STUDIOو فایل DBJبرای شبیه ساز داخلی مورد
استفاده قرار می گیرد .
SEND TO CHIP
توسط این گزینه یا کلید F4پنجره محیط برنامه ریزی ظاهر خواهد شد .شما می توانید
توسط این گزینه میکرو مورد نظر خود را PROGRAMکنید .
1
منوی TOOLS
TERMINAL EMULATOR
توسط این گزینه یا کلیدهای CTR + Tبا باال آوردن TERMINAL
EMULATORمی توانید از این محیط برای نمایش داده ارسالی و دریافتی در ارتباط
سلایر RS-232بین میکرو و کامپیوتر استفاده نمایید .
LCD DESIGNER
توسط این گزینه می توانید کاراکترهای دلخواه خود را طراحی نمایید و بر روی LCD
نمایش دهید.
11
منوی ... TOOLS
GRAPHIC CONVERTOR
با کلیک بر روی این منو پنجره محیط GRAPHIC CONVERTORبرای تبدیل
تصویر با پسوند * BMP.به تصویری با پسوند * BGF.که قابل نمایش بر روی
GRAPHIC LCDاست ظاهر می شود .
فایل دلخواه خود را با پسوند * BMP.توسط دکمه LOADوارد کرده و سپس با دکمه
SAVEآنرا در کنار برنامه خود با پسوند *BGF ( BASCOM GRAPHIC.
) FILEذخیره کنید .فایل تبدیل شده بصورت سیاه و سفید دوباره نمایش داده می شود و با
کلیک بر روی دکمه OKمی توان از محیط خارج شد .فایل ذخیره شده با فراخوانی در
برنامه قابل نمایش بر روی LCDگرافیکی است .انتخاب نوع LCDتوسط قسمت LCD
TYPEانجام می گیرد .فونت نوشتاری نیز می تواند 8*6یا 8*8پیکسل باشد .
1
منوی OPTION
OPTION COMPILER
با این منو شما می توانید گزینه های مختلف کامپایلر را طبق زیر اصالح نمایید :
•OPTION COMPILER CHIP
انتخاب میکرو برای برنامه ریزی توسط این گزینه انجام می شود .در صورتی که از دستور
REGFILE$در برنامه استفاده کرده اید به انتخاب میکرو توسط این گزینه نیازی نیست .
• OPTION COMPILER OUTPUT
با این گزینه می توان فایل هایی که مایل به ایجاد آنها پس از کامپایل هستیم را انتخاب کرد .با
انتخاب گزینه SIZE WARNINGزمانی که حجم CODEاز مقدار حافظه
FLASH ROMتجاوز کرد کامپایلر تولید WARNINGمی کند .
• OPTION COMPILER 12C,SPI,1WIRE
توسط این گزینه می توان پایه های مربوط به ارتباطات 12C SPIو WIRE 1را تعیین
کرد .
1
منوی ... OPTION
• OPTION COMPILER COMMUNICATION
نرخ انتقال ( )BOUD RATEارتباط سزیال توسط این گزینه تعیین می شود که می توان یک نرخ
جدید نیز تایپ کرد .گزینه FREQUENCYانتخاب فرکانس کریستال استفاده شده است که می
تواند فرکانس اختیاری نیز باشد .
• OPTION COMPILER LCD
این گزینه دارای قابلیت های زیر می باشد :
در قسمت LCD TYPEنوع LCDرا مشخص می کنیم .گزینه BUS MODEمشخص می
کند LCDبصورت 8بیتی یا 4بیتی کار می کند .توسط گزینه DATA MODEتعیین می کنیم
LCDبصورت PINکار کند یا BUSو گزینه LCD ADDRESSمشخص کننده آدرس
LCDدر مد BUSاست .
در صورت پیکره بندی هر یک از امکانات فوق در برنامه نیازی به تنظیم کردن آنها در این منو
نیست .
•
OPTION PROGRAMMER
•در این منو شما می توانید PROGRAMMERمورد نظر خود را انتخاب نمایید .
1
معرفی محیط شبیه سازی ()SIMULATOR
ميكروكنترلرهايِ AVR
1
نوار ابزار در اين محيط
RUN
با فشردن این دکمه شبیه سازی آغاز می شود .
PAUSE
باعث توقف موقت شبیه سازی می شود و با فشردن دکمه RUNشبیه سازی ادامه پیدا می
کند. m
STOP
باعث توقف کامل شبیه سازی برنامه جاری می شود .
STEP INTO CODE
با استفاده از این دکمه می توان برنامه را خط به خط اجرا نمود و هنگام فراخوانی توابع به
داخل آنها رفته و مراحل اجرای آنها را بررسی کرد .این کار را با فشردن کلید F8نیز می
توانید انجام دهید .بعد از هر بار اجرای این دستور شبیه سازی به حالت PAUSEمی رود
.
1
نوار ابزار در اين محيط ...
STEP OVER
این دکمه شبیه دکمه قبلی است با این تفاوت که در هنگام فراخوانی توابع به داخل SUB
ROUTINEنخواهید رفت .این کار را می توانید با فشردن کلید SHIFT F8
نیز انجام دهید .
RUN TO
دکمه RUN TOشبیه سازی را تا خط انتخاب شده انجام میدهد و سپس به حالت
PAUSEمیرود ( خط جاری باید شامل کدهای قابل اجرا باشد ) .
1
نوار ابزار در اين محيط ...
شبیه سازی سخت افزاری THE HARDWARE SIMULATOR
با کلیک بر روی این گزینه ÷نجره ای ظاهر می شود .که قسمت باالیی یک LCDمجازی می باشد که
برای نشان دادن داده های فرستاده شده به LCDاستفاده می شود .نوار LEDهای قرمز رنگ پایین
خروجی پورتها را نشان می دهد .با کلیک بر روی هر یک از LEDهای سبز رنگ که بعنوان ورودی
هستند وضعیت آن معکوس می شود و روشن شدن LEDبمنزله یک کردن پایه پورت است .یک صفحه
کلید نیز تعبیه شده است که با دستور ) (GETKBDدر برنامه قmابل خواندن می باشد .در ضمن مقدار
آنالوگ نیز هم برای مقایسه کننده آنالوگ و هم برای کانال های مختلف ADCقابل اعمال است.
REGISTERS
این دکمه پنجره ثباتها را با مقادیر قبلی نمایش می دهد .مقدارهای نشان داده شده در این پنجره هگزادسیمال
می باشد که برای تغییر هر کدام از آنها روی خانه مربوطه کلیک کرده و مقدار جدید را وارد کنید .
I/O REGISTERS
برای نمایش ثباتهای I\Oاستفاده می شود .که مانند Rقابل مقدار دهی است .
1
نوار ابزار در اين محيط ...
VARIABLES
شما قادر به انتخاب متغیر با دو بار کلیک کردن در ستون VARIABLESمیباشید .با
فشار دکمه ENTERدر هنگام اجرای برنامه قادر به مشاهده مقدار جدید mمتغیر در برنامه
خواهید بود .همچنین میتوانید مقدار هر متغیر را توسط VALUEتغییر دهید .
برای تماشای یک متغیر آرایه ای می توانید نام متغیر همراه با اندیس آنرا تایپ کنید و برای
حذف هر سطر می توانید mدکمه CTRL+DELرا فشار دهید .
WATCH
این گزینه برای وارد کردن وضعیتی که قرار است در خالل شبیه سازی ارزیابی شود مورد
استفاده قرار می گیرد و هنگامی که وضعیت مورد نظر صحیح شد شبیه سازی در حالت
PAUSEقرار خواهد گرفت .حالت مورد نظر را در مکان مورد نظر تایپ نمودmه و دکمه
ADD-BUTTONرا فشار دهید .هنگامیکه دکمه MODIFY-BUTTON
فشار داده شود ,وضعیت مورد نظر را مورد بازنگری قرار میدهد و میتوان ارزش آنرا تغییر
داد .برای حذف هر وضعیت شما باید آنرا انتخاب کرده و دکمه REMOVEرا فشار
دهید. m
1
نوار ابزار در اين محيط ...
LOCAL
متغیرهای محلی موجود در SUBیا FUNCTIONرا نشان میدهد .البته نمیتوان
متغیری را به آن اضافه نمود .
UP
وضعیت ثبات وضعیت ( ) STATUS REGرا نشان میدهد FLAG .ها را میتوان توسط کلیک
بر روی CHECK BOXها تغییر وضعیت داد .
INTERRUPTS
این گزینه منابع وقفه را نشان میدهد .هنگامیکه هیچ ISRبرنامه نویسی نشده باشد ,همه دکمه ها غیر
فعال خواهند بود و اگر ISRنوشته شود ,دکمه مربوط به آن فعال می شود و با کلیک بر روی هر
کدام از دکمه ها ,وقفه مربوطه اجرا می شود .در ضمن میتوان روی یک پایه خاص پالس نیز ایجاد
نمود .
2
معرفی محیط برنامه ریزی
ميكروكنترلرهايِ AVR
2
ISP STK PROGRAMMER
پنجره ارسال برنامه به میکرو هنگامیکه RUN PROGRAMMERانتخاب می شود ظاهر
میگردد .
منوی FILE
• : EXITخmروج از محیط بmmmرنامه mریزی.
• : TESTیککmmmردنپmmmایه mهایپmmmورت .اmینگmmmزینه mتmmmنهmا زمانیمیتmmmواmند اmستفmاده mشmmود کmmmه mاز
SAMPLR ELECTRONIC PROGRAMEEERاmستفاده mشmmود .
منوی BUFFER
• : BUFFER CLEARپmmmاککmmmردنبmmmافر.
• : LOAD FROM FILEپmmmر کmmmردنبmmmافر بmmmا فmmmایلو بmmmرنامه mریزیآmندر حmافظه mمیکرو
• : SAVE TO FILEذخیره mبmmmافر در فmmmایلدلخواmه . mبmmmافر میتmmmواmند محتواmیحmافظه mیک
میکرو بmmmاشد .
منوی CHIP
• : CHIP IDENTIFYشmmناساییمیکرو متصلبmmmه. PROGRAMMER m
2
…ISP STK PROGRAMMER
•
•
•
•
•
•
•
: WRITE BUFFER TO CHIPبmmmرنامه mریزیمحتواmیبmmmافر در حmافظهm
ROMیا . EEPROM
: READ CLIPCODE INTO BUFFERخmواmندنداده mحmافظه mکmmmدیمیکرو .
: BLACK CHECKخmاmmلیبmmmودنحmافظه mمیکرو را مشخصمیکmmmند .
: ERASEپmmmاککmmmردنمحتواmیحmافظه mبmmmرنامه mو داده. EEPROM m
: VERIFYاmینگmmmزینه mمحتواmیبmmmافر و آmنچه mکmmmه mدر میکرو بmmmرنامه mریزیشmmده mاmسترا
مقایسه mمیکmmmند و در صmmورتتmmmساویپmmmیغmام VERIFY OK mنmmمایشداده mمیشmmود .
: AUTO PROGRAMحmافظه mمیکرو را پmmmاککmmmرده mو بmmmرنامه mمورد نmmظر را در
حmافظه FLASH mبmmmرنامه mریزیمیکmmmند و سmmپسعمل VERIFYرا بmmmه mصmmورت
خmودکار اmنجام mمیدهد.
: RESETمیکرو متصلبmmmه PROGRAMMER mرا ریستمیکmmmند .
2
معرفی محیط
TERMINAL EMULATOR
ميكروكنترلرهايِ AVR
2
TERMINAL EMULATOR
از این محیط می توان برای نمایش داده ارسالی و دریافتی در ارتباط سلایر RS-232بین
میکرو و کامپیوتر استفاده نمود .
اطالعاتی که در این محیط تایپ می شود به میکرو ارسال و اطالعاتی که از پورت کامپیوتر
دریافت می شود دراین پنجره نمایش داده می شود .هنگامیکه در برنامه از SERIAL INو
یا SERIAL OUTاستفاده می شود ,پس از PROGRAMکردن برنامه درون میکرو
و اتصال آن به پورت سلایر , PCمی توان داده های ارسالی توسط UARTمیکرو به بیرون
را دریافت کرده و نمایش داد و از صحت و سقم آنها اطالع یافت .همچنین اگر از دستوری مانند
INKEYدر برنامه استفاده شود ,میتوان داده خود را از طریق پنجره TERMINAL
EMULATORبه میکرو ارسال نمود .توجه داشته باشید که از BOUD RATEمشابه
در میکرو و کامپیوتر استفاده نمایید .
2
منوهای محيط
TERMINAL EMULATOR
. میکندUPLOAD راHEXرمتmmmاریدر فm جmرنامهmmmب: FILE UPLOAD
.ایلmmmردنفmmm کUPLOAD ردنازmmmرفنظر کmm ص: FILE ESCAPE
. EMULATOR mرنامهmmmروج از بm خ: FILE EXIT
. ندmmmاکمیکmmmلرا پmmرمیناmmm تmنجرهmmm پ: TERMINAL CLEAR
ورتمیmmینمنو صmوسط اmmm ها تOPTION و دیگرCOMورتmmmنظیماتپmmm ت: SETTING
. یردmmmگ
ایلmmm فmهنگامیکه. ندmmm میکmستهmmmاز یا بmmm را بLOGایلmmm ف: TERMINAL OPEN LOG
درmهmmmطالعاتیکm اmمامmmmت. ندmmmزارشمیکmmmایلگmmmیفmراmmmامیبmmستنmاشد درخواmmm بmشتهmداmm وجود نLOG
. ودmmبتمیشmmm ثLOGایلmmmخلفmود داmmرینتمیشmmm پTERMINAL mنجرهmmmپ
2
دستورات و توابع محیط برنامه نویسی
BASCOM
5
2
بدنه یک برنامه درمحيط
BASCOM
ميكروكنترلرهايِ AVR
2
... BASCOM بدنه یک برنامه درمحيط
معرفی میکرو
REGFILE = VAR$
نام چیپ مورد استفاده است که می تواندVAR . ابتدا باید میکرو مورد نظر تعریف گرددBASCOM برای شروع یک برنامه در محیط
. یکی از موارد زیر باشد
regfile = “ At12def.dat “
‘ATtiny12 MCU$
regfile = “ At15def.dat “
‘ATtiny15 MCU$
regfile = “ At22def.dat “
‘ATtiny22 MCU$
regfile = “ At26def.dat “
‘ATtiny26 MCU$
regfile = “ 2323def.dat “
regfile = “ 2333def.dat “
regfile = “ 2343def.dat “
regfile = “ 4414def.dat “
regfile = “ 4433def.dat “
regfile = “ 4434def.dat “
2
‘AT90s2323 MCU$
‘AT90s2333 MCU$
‘AT90s2343 MCU$
‘AT90s4414 MCU$
‘AT90s4433 MCU$
‘AT90s4434 MCU$
... BASCOM بدنه یک برنامه درمحيط
... معرفی میکرو
regfile = “ 8515def.dat “
regfile = “ 8535def.dat “
regfile = “ M8535.dat “
regfile = “ M8515.dat “
regfile = “ M8def.dat “
regfile = “ M103def.dat “
regfile = “ M16def.dat “
regfile = “ M163def.dat “
regfile = “ M161def.dat “
regfile = “ M32def.dat “
regfile = “ M323def.dat “
regfile = “ M603def.dat “
regfile = “ M64def.dat “
regfile = “ M128def.dat “
regfile = “ M128103.dat “
3
‘AT90s8515 MCU $
‘AT90s8535 MCU $
‘MEGA 8535 MCU $
‘MEGA 8515 MCU $
‘MEGA 8 MCU $
‘MEGA 103 MCU $
‘MEGA 16 MCU $
‘MEGA 163 MCU $
‘MEGA 161 MCU $
‘MEGA 32 MCU $
‘MEGA 323 MCU $
‘MEGA 603 MCU $
‘MEGA 64 MCU $
‘MEGA 128 MCU $
‘MEGA 128 IN MEGA 103 MODE MCU $
بدنه یک برنامه درمحيط ... BASCOM
کریستال
برای مشخص کردن فرکانس کریستال استفاده شده برحسب هرتز از دستور زیر استفاده می نماییم .
CRYSTAL = X$
کmmmریستاmmلmستفاده mشmmده mبmmmر حسبهرتز اmست.
ا
Xفmmmرکانس
نکته
این دستور را حتی برای زمانی که با اسیالتور داخلی میکرو کار میکنید بنویسید .
مثال
’14MHZ external osc$
’8MHZ external osc$
’1MHZ internal osc$
CRYSTAL = 14000000
CRYSTAL = 8000000
CRYSTAL = 1000000
3
بدنه یک برنامه درمحيط ... BASCOM
اسمبلی و بیسیک ( اختیاری)
در صورت نیاز mبرای نوشتن برنامه اسمبلی در بین برنامه بیسیک از دmستور زیر استفاده می نماییم
ASM$
ASSEMBLY PROGRAMME
ENDASM$
با دستور ASM$می توان در برنامه شروع به نوشتن برنامه موردنظر اسمبلی کرده و پس از اتمام برنامه
اسمبلی با دستور ENDASM$برنامه اسمبلی را به mپایان رساند و به نوشتن ادامه برنامه پرداخت .
مثال
Dim c As Byte
‘load address of variable c into register x
‘start assembly program $
‘load register R24 with the constant 1
‘store 1 into var c
‘end of assembly program $
‘send c to serial port
Loadadr c,x
Asm
Ldi r24,1
St x,R24
End Asm
lcd c
End
3
بدنه یک برنامه درمحيط ... 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
3
بدنه یک برنامه درمحيط ... BASCOM
آدرس شروع برنامه ریزی حافظه ( FLASHاختیاری)
گاهی نیاز است که برنامه خود را از آدرسی دلخواه در حافظه FLASHROMقرار دهید .
ROMSTART = ADDRESS$
ADDRESSمکانیاز حmافظه mاmستکmmmه mبmmmرنامه HEX mاز اmینآدرسدر حmافظه mمیکرو کmmmنترلر ,
شmmروع بmmmه mنmmوشته mشmmدنمیشmmود .در صmmورتیکmmmه mازاmیندستور اmستفاده mنmmشود کmmmامپایلر بmmmهm
طور خmودکار آدرس& H0000را در نmmظر میگmmmیرد .
مثال
ROMSTART = &H4000$
3
بدنه یک برنامه درمحيط ... BASCOM
تعیین کالک ( اختیاری)
با این دستور در بعضی از میکروهای سری MEGA AVRاز جمله MEGA103یا MEGA603
به صورت نرم افزاری می توان کالک سیستم را تغییر داد .تقسیم کالک بطور مثال برای کاهش مصرف تغذیه
استفاده می شود .
CLOCKDIVISION = var
Varمقادیر معتبر بmmmیناmعداد 2تmmmا 128میتmmmواmند بmmmاشد .
اگر از این دستور استفاده نمایید ,دستوراتی که مستقیما با کالک سیستم کار می کنند
است درست کار نکنند .
ممکن
نکته
مثال
boud = 2400$
Clockdivision = 2
”lcd “Hello
End
3
بدنه یک برنامه درمحيط ... BASCOM
پایان برنامه
END
این دستور در انتهای برنامه قرار می گیرد و اجرای برنامه را متوقف می کند .با این دستور تمام وقفه
ها غیر فعال شده و یک حلقه بی نهایت تولید و برنامه خاتمه می یابد .
مثال
‘lcd this
‘ end program execution and disable all interrupt
”lcd “ Hello
END
3
اعداد و متغیر ها و جداول
LOOKUP
ميكروكنترلرهايِ AVR
3
اعداد و متغیر ها و جداول...LOOKUP
دیمانسیون متغیرها
این دستور بعد یک متغیر را نشان میدهد .با این دستور می توانید متغیرهایی که در برنامه به کار برده
می شوند تعریف کنید .
]DIM var AS [ XRAM/SRAM/ERAM ] data type [AT location ] [OVERLAY
VARنmmام mمتغیری کmmmه mدر بmmmرنامه mبmmmکار بmmmرده mمیشود .در صmmورتاmستفmاده mاز حmافظه mجmانبیآmنرا بmmmا
XRAMمشخصکmmmنید و SRAMرا زمانیاmختیار کmmmنید کmmmه mمیخmواmهید متغیرها را در حmافظهm
SRAMقmmرار دهید و ERAMمتغیر مورد نmmظر را در EEROMداmخلیجmایمیدهد Data .
typeنmmوع داده mاmستکmmmه mمیتmmmواmند طبقجmدولزیر
STRING ,WORD ,LONG ,INTEGER ,BYTE, BITیا SINGLEبmmmاشد .
در صورت استفاده از متغیر , STRINGبیشترین طول آن نیز باید نوشته شود .گزینه اختیاری
OVERLYمتغیر تعریف شده را بصورت POINTERدر نظر میگیرد و فضایی را برای
متغیر در نظر نمی گیرد .
AT LOCATIONبmmmه mشmmما اmجازه mمیدهد کmmmه mمتغیرتانرا در آدرسیکmmmه mمیخواmهید در حmافظهm
ذخیره mکmmmنید زمانیکmmmه mمحلآدرسدهیاmشغmاmmلبmmmاشد ,اولینجmایخmاmmلیدر حmافظه mاmستفmاده mمیشmmود .
3
...LOOKUPاعداد و متغیر ها و جداول
... دیمانسیون متغیرها
DATA TYPE
3
: نوع داده
جدول انتخاب
VALUE
RANGE
STORE AS
BIT
A BIT
OR 1 0
BYTE
UNSIGNED 8 BITS
TO 255 0
INTEGER
SIGNED 16 BITS
TO 32767 32767-
WORD
UNSIGNED 16 BITS
TO 65535 0
LONG
SIGNED 32 BITS
TO 214783648214783647
SINGLE
SIGNED 32 BITS
TO 3.4*10^38 45-^10* 1.5
STRING
BYTES 0-245
-
...LOOKUPاعداد و متغیر ها و جداول
... دیمانسیون متغیرها
مثال
DIM B AS BIT
‘BIT can be 0 or 1
DIM A AS BYTE ‘BYTE range from 0 - 255
نکته
DIM K AS INTEGER AT 120
‘you can specify the address of the
‘variable . The next dimensioned variable will be placed after A
نشان دهیدB& را با عالمتBINARY و عددH& را با عالمتHEX عدد
مثال
مثال
A= &H01DE
‘HEX NUM
B= &B01011011 ‘BIN NUM
DIM B1 AS BYTE AT $60 OVERLY
4
...LOOKUPاعداد و متغیر ها و جداول
CONST دستور
: برای تعریف یک ثابت از این دستور استفاده می شود
CONST SYMBOL= NUMCONST
CONST SYMBOL= STRINGCONST
CONST SYMBOL= EXPRESSION
SYMBOL , mهmmm بmنتسابیافتهmددیاmدار عm مقNUMCONST ابتوmmm ثmامmm نSYMBOL
EXPRESSION وSYMBOL mهmmm بmنتسابیافتهm اm رشتهSTRINGCONST
. نتسابیابدm اSYMBOL mهmmmنبm آmتیجهmm نmهmmmاشد کmmmند عبارتیبmمیتوا
مثال
”CONST S = “TEST
CONST A = 5
CONST B1 =&B1001
CONST X = (B1 * 3 ) + 2
4
اعداد و متغیر ها و جداول...LOOKUP
دستور ALIAS
از این دستور برای تغیر نام متغیر استفاده می شود .
مثال
DIRECTION ALIAS PORTB.1
حال شما می توانید بجای PORTB.1از متغیر DIRECTIONاستفاده نمایید .
SET DIRECTION
‘is equal with
SET PORTB.1
4
اعداد و متغیر ها و جداول...LOOKUP
دستور CHR
از این دستور برای تبدیل متغیر عددی یا یک ثابت به کاراکتر استفاده می شود .زمانی که قصد
دارید یک کاراکتر بر روی LCDنمایش دهید از این دستور می توانید استفاده نماتید .
در صورتیکه از این دستور به این صورت استفاده نمایید ) lcd CHR ( VARکاراکتر
اسکی VARبه پورت سلایر فرستاده خواهد شد .
مثال
‘dim variable
‘assign variable
) ‘lcd value ( 65
)‘lcd hex value (41
) ‘lcd ASKII character 65 (A
DIM a AS Byte
A = 65
lcd a
) lcd HEX( a
) lcd Chr ( a
4
اعداد و متغیر ها و جداول...LOOKUP
دستور INSTR
این دستورمحل و موقعیت یک زیر رشته را در رشته دیگر مشخص می کند .
) Var =Instr (start , String ,Subset
) Var =Instr (String ,Subset
Varعmددیاmستکmmmه mمشخصکmmmننده mمحل SUBSTRدر رشته mاmصلی STRINGمیبmmmاشد و زمانیکه mزیر رشتهm
مشخصشmmده mدر رشته mاmصلینmmباشد صmmفر بmmmرگرداmنده mمیشmmود START.نmmیز عmددیدلخواmه mاmستکmmmه mمکانشmmروع
جستجو زیر رشته mدر رشته mاmصلیرا مشخصمیکmmmند .در صmmورتیکه START mقmmید نmmشود تmmmمام mرشته mاز اmبتدا
جستجو میشmmود .رشته mاmصلیتmmmنهmا بmmmاید از نmmوع رشته mبmmmاشد ولیزیر رشته ) SUBSTR( mمیتmmmواmند رشته mو عmدد
ثmmmابتهم mبmmmاشد .
مثال
DIM S AS String * 15, Z As String * 5
DIM Bp As Byte
“ S = “This is a test
”Z= “is
Bp = Instr (S , Z ) : lcd Bp
‘should lcd 3
Bp = Instr (4 , S ,Z ) : lcd Bp
‘should lcd 6
End
4
...LOOKUPاعداد و متغیر ها و جداول
INCR دستور
. می افزایدVAR این دستور یک واحد به متغیر عددی
INCR VAR
مثال
DO
Incr A
lcd A
Loop Until A>10
4
‘ start loop
‘ increment A by 1 A=A+1
‘ lcd A
‘ repeat until A is greater than 10
...LOOKUPاعداد و متغیر ها و جداول
DECR دستور
. را یک واحد کم می کندVAR این دستور متغیر
DECR VAR
مثال
Dim A As Byte
A=5
Decr A
lcd A
End
4
‘ assign value to a
‘ decrement by one A= A-1
‘ lcd A =4
اعداد و متغیر ها و جداول...LOOKUP
دستور CHECKSUM
این دستور مجموع کد دسیمال اسکی رشته VARرا برمی گرداند که البته اگر مجموع کد اسکی رشته از
عدد 255بیشتر شود مقدار 256از مجموع کم می شود .
مثال
‘ Dim Variable
‘ assign Variable
) ‘ lcd value (192
‘ assign variable
) ‘ lcd value 127 (127=383 – 256
Dim S As String*10
”S = “test
)lcd Checksum (S
“ S = ‘test next
)lcd Cecksum(S
4
اعداد و متغیر ها و جداول...LOOKUP
دستور LCASE
این دستور تمام حروف رشته مورد نظر را تبدیل به حروف کوچک می کند .
)Target = Lcase (source
تمام حروف رشته sourceکوچک شده و در رشته targetجای داده می شود .
مثال
Dim S As String * 12 , Z As String * 12
“ S = “Hello World
) Z = Lcase (S
‘Z = hello world
lcd Z
End
4
اعداد و متغیر ها و جداول...LOOKUP
دستور UCASE
این دستور تمام حروف رشته مورد نظر را تبدیل به حروف بزرگ می کند .
)Target = Ucase (source
تمام حروف رشته sourceبزرگ شده و در رشته targetجای داده می شود .
مثال
Dim S As String * 12 , Z As String * 12
“ S = “Hello World
) Z = Ucase ( s
‘Z = HELLO WORLD
lcd Z
End
4
اعداد و متغیر ها و جداول...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 = FG
lcd Z
End
5
اعداد و متغیر ها و جداول...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 = abcde
lcd Z
)Z = Left( s , 1
‘Z = a
lcd Z
End
5
اعداد و متغیر ها و جداول...LOOKUP
دستور LEN
این دستور طول یا بعبارتی تعداد کاراکترهای یک رشته را برمیگرداند .
) Var = Len(string
طول رشته stringدر متغیر عددی VARقرار می گیرد .رشته stringنهایتا می تواند 255بایت طول داشته
باشد .توجه داشته باشید که فضای خالی ( )SPACE BARخود یک کاراکتر به حساب می آید .
مثال
‘lcd 4
‘lcd 4
‘lcd 5
Dim S As String * 12
Dim A As Byte
“ S = “test
) A= Len(S
lcd A
) lcd Len (S
“ S=“test
) A = Len ( A
lcd A
5
اعداد و متغیر ها و جداول...LOOKUP
دستور LTRIM
این دستور فضای خالی یکرشته را حذف می کند .
) Var = LTRIM( org
فضای خالی رشته orgبرداشته می شود و رشته بدون فضای خالی در متغیر رشته ای varقرار می
گیرد .
مثال
‘AB
‘A B
Dim S As String * 10
“=“S
AB
) lcd LTRIM( s
“=“S
A B
) lcd LTRIM( s
End
5
اعداد و متغیر ها و جداول...LOOKUP
دستور SWAP
SWAP var1 , var2
با اجرای این دستور محتوای متغیر var1در متغیر var2و محتوای متغیر var2در متغیر
var1قرار می گیرد .
نکته
دو متغیر var1و var2بایستی از یک نوع باشند .
مثال
Dim A As Integer , B1 As Integer
A = 1 :B1 = 2
‘assign two integer
SWAP A , B1
‘swap them
lcd A
‘ lcds 2
lcd B1
‘ lcds 1
End
5
اعداد و متغیر ها و جداول...LOOKUP
دستور MID
با این دستور می توان قسمتی از یک رشته را برداشت و یا قسمتی از یک رشته را با قسمتی از یک
رشته دیگر عوض کرد .
Var = Mid(var1,St[,L] -1
Mid(var , St[,L] = Var -2
-1قسمتی از رشته var1با شروع از کاراکتر stام و طول Lبرداشته شده و در متغیر varقرار
می گیرد.
-2رشته var1در رشته varبا شروع از کاراکتر Stام و طول Lقرار می گیرد .
در صورت قید نکردن گزینه اختیاری , Lبیشترین طول در نظر گرفته می شود .
مثال
Dim A As XRAM String *15 , Z As XRAM String *15
”S = ‘ABCDEFG
)Z = Mid(S,2,3
lcd Z
‘BCD
End
5
اعداد و متغیر ها و جداول...LOOKUP
دستور ROTATE
دستور زیر تمام بیتها را به چپ یا راست منتقل می کند ولی تمام بیتها محفوظ هستند و هیچ بیتی
بیرون فرستاده نمی شود .
]ROTATE var ,LEFT/RIGHT [,shifts
Varمیتmmmواmند داده mاmیاز نmmوع LONG,WORD ,INTEGER , BYTEبmmmاشد .
LEFT/RIGHTجهتچmرخشبmmmیتهmا و shiftکmmmه mاmختیاریمیبmmmاشد تmmmعmداد چmرخشبmmmیتهmا را
مشخصمیکmmmند .در صmmورتقmmید نmmشدنمقmدار یکدر نmmظر گmmmرفته mمیشmmود .
مثال
Dim A As Byte
‘a=2
A = 128
Rotate A, Left ,2
lcd A
5
اعداد و متغیر ها و جداول...LOOKUP
دستور SPACE
برای ایجاد فضای خالی ازاین دستور استفاده می شود .
) Var = SPACE (x
Xتmmmعmداد فmmmضایخmاmmلیستکmmmه mبmmmعنواmنرشته mدر متغیر رشته mاmی varجmایمیگmmmیرد .
مثال
} 5space
} 6 space
{‘
{‘
Dim S As String *15
)S = Space (5
”}”; lcd “{“ ;S
”}“ ; )lcd “{“ ; Space(6
End
5
...LOOKUPاعداد و متغیر ها و جداول
FORMAT تابع
. این دستور یک رشته عددی را شکل دهی می کند
target = Format (source , “mask”)
.ستmکلدهیاmmوع شmm نmask. یردmmmرار میگmm قtarget تایج درmmود و نmmکلدهیشmm شmهmmmستکmیاm اm رشتهsource
مثال
Dim S As String *10, I As Integer
“ S = “ 123
S= Format (s, “
“)
‘5 space
lcd S
‘s=“ 123” two space first ,then 123
”S =“12345
S = Format(s , “000.000”)
lcd S
‘s =“012.345
S = Format(s , “ + ”)
lcd S
‘s =“+12345
End
5
اعداد و متغیر ها و جداول...LOOKUP
تابع FUSING
از این دستور برای روند کردن رشته های عددی استفاده می شود .
)”target = Fusing (source , “mask
sourceرشته mموردنظر بmmmراmیشmmکلدهی و نmmتایج در targetقmmرار میگmmmیرد mask.نmmوع شmmکل
دهیاmست .عمل maskحتما بmmmاید بmmmا عالمت #شmmروع شmmود و حmداmقلبmmmاید یکیاز عالمات #یا & را
بmmmعmد از ممیز داmشته mبmmmاشد .بmmmا اmستفmاده mاز #عmدد روند میشmmود و در صmmورتاmستفاده mاز & روندی
صmmورتنmmمیگmmmیرد .
مثال
Dim S As Single,Z As String * 10
S = 123.45678
)”lcd Fusing(S , .”#.# #
‘lcd 123.46
)”lcd Fusing(S , .”#.& #
‘lcd 123.45
End
5
اعداد و متغیر ها و جداول...LOOKUP
جدولLOOKUP
توسط این جدول می توان مقدار دلخواهی را از جدولی برگرداند.
) var = LOOKUP(value , label
Labelبmmmرچسبجmدولو valueاmندیسداده mدلخواmه mاmست .داده mبmmmرگmشتنیاز جmدولدر متغیر varقmmرار میگmmmیرد value =0.
اولینداده mدر جmدولرا بmmmرمیگmmmرداmند .تmmmعmداد اmندیسها و مقدار داده mبmmmرگmشتیبmmmه mتmmmرتیبن mهmایتا میتmmmواmند 255و
65535بmmmاشد .
داده دو بایتی داخل جدول بایستی با عالمت %پایان یابد .
نکته
مثال
Dim B1 As Byte, I As Integer
)B1= lookup(2 , Dta
lcd B1
) ‘lcd 2 (zero based
) I = lookupstr( 0, Dta2
lcd I
‘lcd 1000
:Dta
Data 1 , 2 , 3, 4 , 5
:Dta2
Data 1000% , 2000%
6
اعداد و متغیر ها و جداول...LOOKUP
جدولLOOKUPSTR
توسط این جدmول می توان رشته دلخواهی را از جدولی برگرداند.
) var = LOOKUPSTR(value , label
Labelبmmmرچسبجmدولو valueاmندmیسرشته mدلخواmه mاmست .رشته mبmmmرگmشتنیاز جmدولدر متغیر رشته mاmی
varقmmرار میگmmmیرد value =0. mاولینرشته mدر جmدولرا بmmmرمیگmmmرداmند .تmmmعmداد اmندیسها ن mهmایتا می
تmmmواmند 255بmmmاشد .
مثال
Dim S As String*4 , Idx As Byte
) Idx = 0 : S = lookupstr( idx , Sdata
lcd S
‘ This
End
:Sdata
”Data “This” , “is” , “a test
6
توابع ریاضی و محاسباتی
ميكروكنترلرهايِ AVR
6
عالمت
توابع ریاضی و محاسباتی...
عملگرmهای ریاضی
از عملگرهای ریاضی روبرو می توانید در
محیط BASCOMاستفاده نماییدو عملیات
ریاضی خود را انجام دهید .
نماد
عالمت ضرب
*
عالمت جمع
+
عالمت تفریق
-
عالمت ممیز
.
عالمت تقسیم
/
عالمت کوچکتر از
>
عالمت تساوی
=
عالمت بزرگتر از
<
عالمت بتوان
^
عالمت کوچکتر یا مساوی
=>
عالمت بزرگتر یا مساوی
<=
عالمت مخالف
<>
6
...یاضی و محاسباتیmتوابع ر
های منطقیmعملگر
: به قرار زیر استBASCOM عملگر های منطقی
نماد
AND
CONJUNCTION
OR
DISJUNCTION
XOR
EXCLUSIVE
OR
NOT
COMPLIMENT
A = 63 and 19
lcd A
6
معرفی
‘’19 lcd
مثال
توابع رmیاضی و محاسباتی...
تابع ABS
این دستور به معنای ریاضی ( |VAR = |VAR2قدرمطلق) است .
مثال
Dim A As Integer , C As Integer
A = -1000
)|C = ABS (A
‘c=|a
lcd C
‘c= 1000
End
6
...یاضی و محاسباتیmتوابع ر
EXP تابع
Target = Exp (source)
.ستm اSINGLE mوع دادهmm متغیریاز نTarget .ستm اsource نmتواmmm بe اmmmبر بmراmmm بTarget
مثال
Dim X As Single
X= Exp( 1.1)
lcd X
X = 1.1
X= Exp( X)
lcd X
End
6
‘lcd 3.004166124
‘lcd 3.004166124
...یاضی و محاسباتیmتوابع ر
LOG10 تابع
Target = Log10 (source)
هر دوsource وTarget . قرار می گیردtarget در متغیرsource متغیر یا ثابت10 لگاریتم پایه
. هستندsingle داده نوع
مثال
Dim S1 As Single, S2 As Single
S1 = 0.01
S2 = Log10(S1)
lcd S2
For S1=1 to 100
S2 = Log10(S1)
lcd S1 ;”
“ ;S2
NEXT
End
6
توابع رmیاضی و محاسباتی...
تابع LOG
این دستور لگاریتم طبیعی یک داده از نوع SINGLEرا برمی گرداند .
)Target = Log (source
لگاریتم متغیر یا ثابت sourceاز نوع داده singleگرفته می شود .ودر متغیر targetقرار می گیرد .
مثال
‘4.605170
Dim X As Single
)X = Log(100
lcd X
End
6
توابع رmیاضی و محاسباتی...
تابع RND
این دستور یک عدد تصادفی برمی گرداند .
نکته
)VAR= RND (limit
عدد تصادفی بین 0و limitبدست آمده و mدر متغیر varقرار می گیرد .با هربار استفاده از این دستور عدد مثبت تصادفی دیگری
بدست خواهد آمد .
limitباید یک عدد مثبت باشد .
مثال
‘get random number
Dim X As Integer
Do
)I = Rnd (100
lcd I
Wait 1
Loop
End
6
توابع رmیاضی و محاسباتی...
تابع SIN
این دستور سینوس ثابت یا متغیر sourceرا در متغیر varاز نوع SINGLEقرار می دهد .تمام
دستورات مثلثاتی با رادیان کار می کنند و ورودی این دستور بایستی رادیان باشد .
مثال
)‘Vsin = sin(p/2
‘0.9999332
Dim X As Single
Dim Vsin As Single
Const Pi= 3.14159265
X= Pi/2
)Vsin = Sin (X
lcd Vsin
End
7
توابع رmیاضی و محاسباتی...
تابع COS
این دستور کسینوس ثابت یا متغیر sourceرا در متغیر varاز نوع SINGLEقرار می دهد .
تمام دستورات مثلثاتی با رادیان کار می کنند و ورودی این دستور بایستی رادیان باشد .
مثال
)‘Vcos = cos(p/2
‘0.0000066
Dim X As Single
Dim Vcos As Single
Const Pi= 3.14159265
X= Pi/2
)Vcos = Cos (X
lcd Vcos
End
7
توابع رmیاضی و محاسباتی...
تابع TAN
) Var = TAN (source
این دستور تانژانت ثابت یا متغیر sourceرا در متغیر varاز نوع SINGLEقرار می دهد .تمام
دستورات مثلثاتی با رادیان کار می کنند و ورودی این دستور بایستی رادیان باشد .
مثال
)‘Vtan = tan(p*2
‘ -0.00000357
Dim X As Single
Dim Vtan As tangle
Const Pi= 3.14159265
X= Pi*2
)Vtan = tan (X
lcd Vtan
End
7
توابع رmیاضی و محاسباتی...
تابع SINH
)Var = SINH( source
این دستور سینوس هایپربولیک ثابت یا متغیر sourceرا در متغیر varاز نوع SINGLEقرار
می دهد .تمام دستورات مثلثاتی با رادیان کار می کنند و ورودی این دستور بایستی رادیان باشد .
مثال
Dim X As Single
Dim Y As Single
X= 0.512
)Y = Sinh (X
lcd X ; “ ; “ ;Y
End
7
توابع رmیاضی و محاسباتی...
تابع COSH
)Var = COSH( source
این دستور کسینوس هایپربولیک ثابت یا متغیر sourceرا در متغیر varاز نوع SINGLEقرار
می دهد .تمام دستورات مثلثاتی با رادیان کار می کنند و ورودی این دستور بایستی رادیان باشد .
مثال
Dim X As Single
Dim Y As Single
X= 0.512
)Y = Cosh (X
lcd X ; “ ; “ ;Y
End
7
توابع رmیاضی و محاسباتی...
تابع TANH
)Var = TANH( source
این دستور تانژانت هایپربولیک ثابت یا متغیر sourceرا در متغیر varاز نوع SINGLEقرار
می دهد .تمام دستورات مثلثاتی با رادیان کار می کنند و ورودی این دستور بایستی رادیان باشد .
مثال
Dim X As Single
Dim Y As Single
X= 0.512
)Y = Tanh (X
lcd X ; “ ; “ ;Y
End
7
توابع رmیاضی و محاسباتی...
تابع ASIN
)Var = ASIN( source
این دستور آرکسینوس ثابت یا متغیر sourceرا در متغیر varاز نوع SINGLEقرار می دهد .
ورودی تابع عددی بین 1-و 1+می باشد .
مثال
Dim X As Single
Dim Y As Single
X= 0.5
)Y = Asin (X
lcd X ; “ ; “ ;Y
End
7
توابع رmیاضی و محاسباتی...
تابع ACOS
)Var = ACOS( source
این دستور آرککسینوس ثابت یا متغیر sourceرا در متغیر varاز نوع SINGLEقرار می
دهد .تمام دستورات مثلثاتی با رادیان کار می کنند و ورودی این دستور بایستی رادیان باشد .
مثال
Dim X As Single
Dim Y As Single
X= 0.5
)Y = ACOS (X
lcd X ; “ ; “ ;Y
End
7
توابع رmیاضی و محاسباتی...
تابع ATN
)Var = ATN( source
این دستور آرک تانژانت ثابت یا متغیر sourceرا در متغیر varاز نوع SINGLEقرار می
دهد .تمام دستورات مثلثاتی با رادیان کار می کنند و ورودی این دستور بایستی رادیان باشد .
مثال
Dim X As Single
Dim Y As Single
X= 1
Y = atn (X) * 4
lcd X ; “ ; “ ;Y
End
7
توابع رmیاضی و محاسباتی...
تابع DEG2RAD
)Var =DEG2RAD( single
برای تبدیل درجه به رادیان از این دستوراستفاده می شود .
زاویه singleبه رادیان تبدیل می شود و در متغیر VARاز نوع داده SINGLEقرار می گیرد .
مثال
Dim X As Single
Dim Y As Single
X= 180
)Y = Deg2rad (X
lcd Y
‘3.141592
End
7
توابع رmیاضی و محاسباتی...
تابع RAD2DEG
)Var =RAD2DEG( single
برای تبدیل رادیان به درجه از این دستوراستفاده می شود .
رادیان singleبه درجه تبدیل می شود و در متغیر VARاز نوع داده SINGLEقرار می گیرد .
مثال
Dim X As Single
Dim Y As Single
X= 3.141592
)Y = Rad2Deg (X
lcd Y
‘179.9999
End
8
توابع رmیاضی و محاسباتی...
تابع ROUND
)Var =ROUND( x
متغیر یا داده Xاز نوع SINGLEروند شده و در متغیر VARاز نوع داده SINGLEقرار
می گیرد .
مثال
; Round(-2.3)= -2
; Round(-2.8)= -3
Round(2.3) =2
Round(2.8)=3
8
تبدیل کدها و متغیرها به یکدیگر
ميكروكنترلرهايِ AVR
8
تبدیل کدها و متغیرها به یکدیگر ...
دستور ASC
)Var = ASC (string
این دستور اولین کاراکتر یک متغیر از نوع داده STRINGرا به مقدار اسکی آن تبدیل می کند .
مثال
Dim A As Byte , S As string
”S= “ABC
)A = ASC(s
lcd A
‘will lcd 65
End
8
تبدیل کدها و متغیرها به یکدیگر ...
دستور HEX
)Var = Hex (x
این دستور یک داده از نوع BYTE,INTEGER , WORD , LONGرا به مقدار هگزادسیمال
تبدیل می کند .
مقدار HEXمتغیر یا ثابت Xدر متغیر VARجای می گیرد .
مثال
Dim A As Byte , S As string*10
A= 123
)S= Hex(A
lcd S
‘7B will lcd
)lcd Hex(A
‘7B will lcd too
End
8
تبدیل کدها و متغیرها به یکدیگر ...
دستور HEXVAL
)Var = HexVal (x
این دستور یک داده هگزدسیمال را به مقدار عددی تبدیل می کند .
مقدار عددی داده هگزدسیمال Xکه می تواند LONG , WORD , INTEGER ,
BYTEباشد در متغیر VARجای می گیرد .
مثال
Dim A As Integer , S As string*15
”S= “0A
)A = Hexval (S
lcd A
‘10 will be lcd
End
8
تبدیل کدها و متغیرها به یکدیگر ...
دستور MAKEBCD
)Var1 = MAKEBCD (Var2
این دستور متغیر یا ثابت var2را تبدیل به مقدار BCDاش می کند و در متغیر var1جای
می دهد .
مثال
‘101 will show
Dim A As Byte
A = 65
)A = Makebcd (A
Lcd A
End
8
تبدیل کدها و متغیرها به یکدیگر ...
دستور MAKEDEC
)Var1 = MAKEDEC (Var2
برای تبدیل یک داده BCDنوع INTEGER , WORD , BYTEبه مقدار
DECIMALاز این دستوراستفاده می شود .مقدار دسیمال متغیر یا ثابت var2در متغیر var1
جای می گیرد .
مثال
Dim A As Byte
A = 65
Lcd A
‘ A = 101
Lowerline
)Lcd Bcd (A
)A = Makedec (A
“ Lcd
“;A
End
8
تبدیل کدها و متغیرها به یکدیگر ...
دستور MAKEINT
)Varn = MAKEINT (LSB , MSB
این دستور دو بایت را به هم متصل می کند و یک داده نوع WORDیا INTEGERمی
سازد که LSBبایت کم ارزش و MSBبایت پر ارزش متغیر دو بایتی Varnرا تشکیل می
دهد .
Varn = (256*MSB )+LSB
مثال
Dim A As Integer, I As Integer
A=2
)I = Makeint (A , 1
‘(1*256)+2 =258
End
8
تبدیل کدها و متغیرها به یکدیگر ...
دستور STR
) Var = STR (X
با این دستور می توان یک متغیر عددی ( )Xرا به رشته ( )VARتبدیل کرد .
مثال
‘ A is a num
‘now A is a string
Dim A As Byte , S As String*10
A = 123
) S= Str (A
lcd S
End
8
... تبدیل کدها و متغیرها به یکدیگر
VAL دستور
Var = VAL (S )
. ) تبدیل کردVAR( ) را به متغیر عددیS( با این دستور می توان یک رشته
مثال
Dim A As Byte , S As String*10
S= “123”
‘now S is a string
A = Val(S)
‘convert string to num
lcd A
A = A*2
‘now you can use it as a num
lcd A
‘ 246 lcds
End
9
تبدیل کدها و متغیرها به یکدیگر ...
دستور STRING
) Var = STRING (m , n
این دستور کد اسکی mرا با تعداد تکرار nتبدیل به رشته کرده و در متغیر varقرار می دهد
.در صورت قرار دادن m =0یک رشته بطول 255کاراکتر تولید می شود و.قرار دادن n
= 0قابل قبول نیست .
مثال
‘AAAAA
Dim S As String*15
) S= String (5 , 65
lcd S
End
9
تبدیل کدها و متغیرها به یکدیگر ...
دستور BIN2GREY
) Var1 = BIN2GREY (Var2
متغیر var2که می تواند داده ای از نوع WORD , INTEGER , BYTE , LONG
باشد به کد گری تبدیل شده و در متغیر VAR1قرار می گیرد .
مثال
Dim B As Byte
‘0 1 3 2 6 7 5 4 12 13 15
For B = 0 To 15
) … lcd Bin2grey (B
Next
End
9
تبدیل کدها و متغیرها به یکدیگر ...
دستور GREY2BIN
) Var1 = grey2bin (Var2
کد گری var2به مقدار باینری تبدیل شده و در متغیر var1که می تواند داده ای از نوع
WORD , INTEGER , BYTE , LONGباشد قرار می گیرد .
مثال
Dim B As Byte
‘0 1 3 2 7 6 4 5 15 14
For B = 0 To 15
) … lcd Grey2bin (B
Next
End
9
رجیسترها و آدرس های حافظه
ميكروكنترلرهايِ AVR
9
رmجیسترmها و آدرmس های حافظه...
تمام میکروهای AVRدارای 32رجیستر 8بیتی ( ) R0 –R31همه منظوره در CPU
خود هستند .
رجیسترهای ) R31(MSBبا ) R30(LSB) , R29(MSBبا R28(LSBو
) R27(MSBبا ) R26(LSBتشکیل سه رجیستر 16بیتی با ترتیب با نامهای X,Y,Z
را می دهند .
9
...رجیسترها و آدرس های حافظه
SET دستور
Set Bit/Pin
Set Var.x
. توسط این دستور می توان یک بیت را یک کرد
mوع دادهmm متغیریاز نVar اشدوmmm بPORTB.1 مانندSFRیتو یا یکmmmند یکبmواmmm میتBit
اmmm ت0 ندmواmmm میتBYTEیmراmmm بX . اشدmmm بBYTE , INTEGER , WORD , LONG
. اشدmmm ب31 اmmm ت0 ندmواmmm میتLONGیmراmmm و بWORD یmراmmm ب15 اmmm ت0 , 7
مثال
Dim B1 As Bit , B2 As Byte , C As Word , L As Long
Set Portb.1
‘set bit 1 of port B
Set B1
‘bit variable
Set B2.1
‘set bit 1 of var b2
Set C.15
‘set highest bit of word
Set L.31
‘set MS bit of LONG
9
...رجیسترها و آدرس های حافظه
TOGGLE دستور
. این دستور مقدار منطقی یک پایه یا یک بیت را معکوس می کند
TOGGLE pin/bit
. اشدmmmیتبmmm و یا یکبPORTB.1 مانندSFRند یکmواmmm میتPIN
مثال
Dim VAR As Byte
Config Pinb.0 = output
Toggle portb.0
Waitms 1000
Toggle Portb.0
9
‘portb.0 is an output now
‘toggle state
‘wait for 1 second
‘toggle state again
...رجیسترها و آدرس های حافظه
RESET دستور
. توسط این دستور می توان یک بیت را صفر کرد
RESET pin/bit
RESET Var.x
mوع دادهmm متغیریاز نVar اشدوmmm بPORTB.1 مانندSFRیتو یا یکmmmند یکبmواmmm میتBit
اmmm ت0 ندmواmmm میتBYTEیmراmmm بX . اشدmmm بBYTE , INTEGER , WORD , LONG
. اشدmmm ب31 اmmm ت0 ندmواmmm میتLONGیmراmmm و بWORD یmراmmm ب15 اmmm ت0 , 7
مثال
Dim B1 As Bit , B2 As Byte , I As Integer
reset Portb.3
‘reset bit 3 of port B
reset B1
‘bit variableres
reset B2.0
‘reset bit 0 of var b2
reset I.15
‘reset highest bit of I
9
رجیسترها و آدرس های حافظه...
دستور BITWAIT
BITWAIT X, SET/RESET
توسط این دستور اجرای برنامه تا زمانی که بیت SET( = 1) ,Xیا ) RESET (= 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
9
رجیسترها و آدرس های حافظه...
دستور CPEEK
)Var = CPEEK(address
از این دستور برای برگرداندن بایتی که در ادرسی از حافظه کدی ذخیره شده است استفاده می
کنیم .با این دستور می توانید به رجیسترهای داخلی نیز دسترسی پیدا کنید .البته با این دستور نمی
توان در حافظه داخلی چیزی نوشت .
مثال
Dim I As Integer , B1 As Byte
For I = 0 To 31
) B1 = Peek (I
‘ only 32 registers in AVR
)lcd Hex (b1
)‘ get byte from internal memory (r0-r31
Next
1
رجیسترها و آدرس های حافظه...
دستور CPEEKH
)Var = CPEEKH(address
با این دستور می توان بایت ذخیره شده در صفحه باالی حافظه کدی () FLASH MEM
میکرو MEGA103یا دیگر میکروها که دارای K 128حافظه است را خواند .
ADDRESSآدرسحmافظه mو محتواmیآدرسدر متغیر یکبmmmایت VARقmmرار میگmmmیرد .
) Cpeek( 0محتواmیاولینبmmmایتحmافظه mبmmmاmmالی K 64را بmmmرمیگmmmرداmند.
1
رجیسترها و آدرس های حافظه...
دستور LOADADR
LOADADR var ,reg
با این دستور می توانید آدرس یک متغیر را در یک جفت رجیستر ذخیره کنید Var .متغیری است که آدرس آن
در متغیرهای دوبایتی X,Y,Zذخیره می شود و REGرجیسترهای X,Y, Zهستند .
این دستور جز دستورات اسمبلی است و برای کمک به برنامه نویسان اضافه شده است .
مثال
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
1
رجیسترها و آدرس های حافظه...
دستور OUT
OUT address , value
توسط این دستور می توان یک بایت به یک پورت سخت افزاری یا آدرس حافظه داخلی /خارجی
ارسال کرد .
Valueبmmmه mآدرس addressکmmmه mمیتmmmواmند بmmmین 0H – FFFF Hبmmmاشد فmmmرستاده mمیشmmود
.دستور OUTمیتmmmواmند در تmmmمام mمکانهmایحmافظه AVR mبmmmنویسد .تmmmوجه mکmmmنید کmmmه mبmmmراmی
addressیک WORDتmmmعmریفمیشmmود .
مثال
‘send 1 to the databus (d0 – d7) at address 8000
Dim A As Byte
Out &H8000 , 1
End
1
رجیسترها و آدرس های حافظه...
دستور 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
lcd A
End
1
رجیسترها و آدرس های حافظه...
دستور PEEK
)Var = PEEK (address
این دستور محتوای یک رجیستر را برمی گرداند .
Addressآدرسرجیسترهای R0 – R7اmستکmmmه mبmmmین 31 - 0میبmmmاشد .محتواmیرجیستر
در متغیر varجmایمیگmmmیرد .دستور ) ( PEEKفmmmقط میتmmmواmند محتواmیرجیسترها را
بmmmخواmند ولی ) (INPمیتmmmواmند از تmmmمام mمکانهmایحmافظه mبmmmخواmند .
مثال
‘return the first byte of the internal memory (R0) End
Dim A As Byte
) A = PEEK (0
1
رجیسترها و آدرس های حافظه...
دستور POKE
POKE address , value
با این دستور می توانیم یک بایت داده را در یکی از رجیسترها بنویسیم .
مقدار متغیر یا ثابت یک بایتی معث در آدرس addressکه بین 31 - 0برای رجیسترهای
R0 – R7است نوشته می شود .
مثال
‘write 5 to R1
Poke 1 , 5
End
1
رجیسترها و آدرس های حافظه...
دستور VARPTR
) Var = VARPTR (var2
این دستور آدرس یک متغیر را در مکان حافظه بر می گرداند .
آدرس متغیر var2در مکان حافظه بدست آمده و در متغیر varقرار می گیرد .
مثال
Dim B As Xram Byte At &H300 , I As Integer , W As Word
)W = Varptr (b
)lcd Hex(W
‘lcd &H0300
End
1
دستورالعملهای حلقه و پرش
ميكروكنترلرهايِ AVR
1
دستورالعملهای حلقه و پرش ...
دستورالعمل JMPو GOTO
GOTO label
JMP label
با این دستورات می توان به برچسب labelپرش کرد .برچسب labelباید با عالمت )colon( :
پایان یابد و می تواند تا 32کارکتر طول داشته باشد .به خاطر داشته باشید زمانیکه از دو label
هم نام استفاده شود کامپایلر به شما warningمی دهد .دستور returnبرای برگشت از برچسب
وجود ندارد .
مثال
‘A label must end with a colon
‘Increment A
‘Or Jmp start
‘Close If
Start :
A = A +1
If A <10
Goto start
End If
End
1
دستورالعملهای حلقه و پرش ...
دستورالعمل DO-LOOP
فرم کلی دستورات DO … LOOPبصورت زیر می باشد .
DO
statements
] LOOP [ UNTIL expression
دستورالعمل statementتا زمانی که expressionدارای ارزش TRUEیا غیر صفر باشد تکرار خواهد
شد .بنابراین این نوع حلقه حداقل یکبار تکرار می شود DO –LOOP.بتنهایی یک حلقه بینهایت است که
با EXIT DOمی توان از درون حلقه خارج شد و اجرای برنامه در خط بعد از حلقه ادامه یابد .
مثال
‘start the loop
‘Increment A
‘lcd It
‘repeat until A = 10
Dim A As Byte
Do
A=A+1
lcd A
Loop Until A = 10
lcd A
11
... دستورالعملهای حلقه و پرش
FOR-NEXT دستورالعمل
. بصورت زیر می باشدFOR .. NEXT فرم کلی دستورات
FOR var = start TO end [STEP VALUE ]
statements
NEXT var
ددیmابتعmmmنند یکثmواmmmستو هر دو میتmایانیاmmm مقدار پend نوm آm مقداراولیهstart mهmmmند کmmmانتر عملمیکmmنیککmعنواmmm بVar
دmعmmm بvar mامmm وجود ن. اشدmmmند مثبتیا منفیبmواmmm میتmهmmmشانمیدهد کmm را نstepددیm مقدار عValue . اشندmmmددیبmیا متغیر ع
.یستmmمینmلزاmm اNEXT از
مثال
Dim A As Byte , B1 As Byte , C As Integer
For A = 1 To 10 Step 2
lcd “this is a A “ ; A
Next A
For C = 10 To -5 Step -1
lcd “this is a C “ ; C
Next
For B1 = 1 To 10
lcd “this is a B1 “ ; B1
Next
11
دستورالعملهای حلقه و پرش ...
دستورالعمل WHILE-WEND
WHILE condition
statements
WEND
دستورالعمل While-Wendتشکیل یک حلقه تکرار می دهد که تکرار این حلقه تا زمانی ادامه می یابد
که عبارت بکاربرده شده نتیجه را FALSEکند و یا مقدار صفر بگیرد .دستورالعمل while
بصورت ورود به حلقه به شرط می باشد ,بنابراین Whileممکن است در حالتهایی اصال اجرا نشود .
بخش statementتا وقتی که حاصل conditionصفر یا FALSEنشده است تکرار خواهد شد .
مثال
Dim A As Byte
A=1
While A <10
lcd A
Incr A
Wend
11
دستورالعملهای حلقه و پرش ...
دستورالعمل IF
در کلیه حالتهای زیر عبارت statementمی تواند یک دستورالعمل ساده یا چند دستورالعمل مرکب
باشد .
حالت :0
If Expression THEN statement
دستورالعمل statementزمانی اجرا می شود که عبارت expressionدارای ارزش TRUE
باشد .
حالت :1
If Expression Then
statement1
Else
statement2
End If
درصورتی که عبارت expressionدارای ارزش TRUEباشد دستورالعمل statement1اجرا
خواهد شد ,در غیر این صورت دستورالعمل statement2اجرا می شود .
11
دستورالعملهای حلقه و پرش ...
دستورالعمل ... IF
حالت :2
If Expression1 Then
statement1
]Elseif [Expression2 Then
statement2
Else
statement3
End If
درصورتی که عبارت expression1دارای ارزش TRUEباشد دستورالعمل statement1اجرا
خواهد شد ,در صورتی که عبارت expression1دارای ارزش FALSEولی عبارت اختیاری
expressionدارای ارزش TRUEباشد دستورالعمل statement2اجرا می شود و در غیر این
صورت دستورالعمل statement3اجرا خواهد شد .
همچنین با دستور IFمی توان صفر یا یک بودن یک بیت از یک متغیر را امتحان کرد .
IF bit =1 THEN OR IF bit =0 THEN
11
11
... دستورالعملهای حلقه و پرش
... IF دستورالعمل
مثال
Dim Var As Byte , Idx As Byte
Idx = 1
If Var.Idx = 1 then
Set portb.0
.... Else
Dim A As Integer
A = 10
If A = 10 then
“ lcd “this part is executed
Else
”lcd “ this will never be executed
End if
دستورالعملهای حلقه و پرش ...
دستورالعمل CASE
اگر متغیر VARبا مقدار test1برابر باشد statement1اجرا می شود و سپس اجرای برنامه
بعد از end selectادامه می یابد .
در غیر اینصورت اگر متغیر varبا مقدار test1برابر نباشد ولی با مقدار test2برابر باشد
statement2اجرا می شود و سپس اجرای برنامه بعد از end selectادامه می یابد.
و نهایتا اگر متغیر varبا هیچکدام از مقادیر test1و test2برابر نباشد statement3,اجرا
می شود و سپس اجرای برنامه بعد از end selectادامه می یابد .
شما می توانید به صورتهای زیر نیز متغیر را امتحان کنید :
Case is >2
اگر متغیر موردنظر بزرگتر از 2باشد .
و یا می توان محدوده ای را برای امتحان کردن در نظر گرفت :
Case 2 to 5
اگر متغیر موردنظر بین 2تا 5باشد .
11
11
... دستورالعملهای حلقه و پرش
CASE.… دستورالعمل
مثال
Dim X As Byte
Do
Input “ X?” , X
Select Case X
”Case 1 To 3
”Case 4
”Case Is >10
“ Case Else
End Select
Loop
End
‘test X
:lcd “ 1 or 2 or 3
:lcd “4
:lcd “> 10
:lcd “no
دستورالعملهای حلقه و پرش ...
دستور EXIT
با این دستور می توانید فقط از یک ساختار یا حلقه خارج شوید و ادامه برنامه را بعد از ساختار یا حلقه ادامه دهید .
EXIT FOR
EXIT DO
EXIT WHILE
EXIT SUB
EXIT FUNCTION
مثال
Do
A = A +1
If A = 100 Then
Exit Do
End If
Loop
End
11
11
... دستورالعملهای حلقه و پرش
ON VALUE دستورالعمل
. با این دستور با توجه به مقدار متغیر می توان به توابع یا برچسب های مختلفی پرش کرد
ON var [GOTO] [GOSUB] label1 [,label2]
وLABEL1 اشد وmmm بPORTD مانندSFRند یکmواmmm میتmهmmmدنکmmمتحانشmیاmراmmmظر بmm متغیر مورد نVar
. ودmmرشمیشmmmا پmنهm آmهmmm بVAR مقدارmهmmm بmوجهmmmا تmmm بmهmmmرچسبهاییهستند کmmm ب.. وLABEL2
مثال
Dim X As Byte
X=1
ON X Gosub Lbl2,Lbl3
X=0
ON X Goto Lbl1, Lbl4
:Lbl1
Incr X
lcd X
:Lbl2
End
lcd X
return
‘jump to sub lbl3
‘jump to label lbl1
ایجاد تاخیر در برنامه
ميكروكنترلرهايِ AVR
1
ایجاد تاخیر در برنامه …
دستور DELAY
این دستور برای مدت کوتاهی به مقدار 1000میکرو ثانیه در اجرای برنامه تاخیر ایجاد می
کند .
مثال
‘Wait for hardware to be ready
DELAY
1
ایجاد تاخیر در برنامه …
دستور WAITus
برای ایجاد تاخیر در برنامه از این دستور می شود .
WAITus microsecond
اجرای برنامه به مدmت microsecondمیکرو ثانیه متوقف می شود. mپس از سپری شدن زمان
مشخص شده اجرای برنامه از خط بعد ادامه می یابد Microsecond .می تواند عددی بین (– 1
) 255باشد .
نکته
دستورات تاخیری زمان دقیق را به شما نمی دهد .برای بدست آوردن زمان دقیق از
تایمرها استفاده کنید .
مثال
Waitus 10
”lcd “BASCOM
End
1
ایجاد تاخیر در برنامه …
دستور WAITms
برای ایجاد تاخیر در برنامه از این دستور می شود .
WAITms milisecond
اجرای برنامه به مدت milisecondمیلی ثانیه متوقف می شود .پس از سپری شدن زمان مشخص
شده اجرای برنامه از خط بعد ادامه می یابد Milisecond .می تواند عددی بین (– 1
) 65535باشد .
مثال
Waitms 10
”lcd “BASCOM
End
1
ایجاد تاخیر در برنامه …
دستور WAITus
برای ایجاد تاخیر در برنامه از این دستور می شود .
WAIT second
اجرای برنامه به مدت secondثانیه متوقف می شود .پس از سپری شدن زمان مشخص شده
اجرای برنامه از خط بعد ادامه می یابد.
مثال
Wait 3
”lcd “BASCOM
End
1
زیر برنامه و تابع
ميكروكنترلرهايِ AVR
1
زیر برنامه و تابع …
معرفی تابع DECLARE FUNCTION
از این دستور برای معرفی تابع در ابتدای برنامه استفاده می شود .زمانی که بخواهیم تابعی را معرفی
کنیم بایستی تابع معرفی شده باشد .در صورت استفاده از تابع می بایستی یک داده برگردانده شود .
DECLARE FUNCTION TEST[( [BYREF/BYVAL]var as type1)] As type2
TESTنmmام mتmmmابع mموردنظر اmست .اmنتقاmmلداده mبmmmصورت BYVALبmmmاعثمیشmmود کmmmه mیککmmmپیاز متغیر بmmmه mتmmmابعm
فmmmرستاده mشmmود و در محتواmیآmنهیچ تmmmغیریاmیجاد نmmشود .ولیدر حmاmmلت BYREFآدرسمتغیر ارساmmلو تmmmغیراmتدر آmن
اmثر میگmmmذارد و داده mبmmmرگmشتیدر صmmورتاmنجام mعملیاتبmmmر رویآmنبmmmا مقدار اولیه mخmود بmmmراmبر نmmخواmهد بmmmود .در
صmmورتعmدم mاmستفاده mاز گmmmزینه ]BYREF/BYVAL[ mبmmmصورتپmmmیشفmmmرضداده mبmmmصورتBYREF
فmmmرستاده mمیشmmود Type1 .نmmوع داده mارساmmلشmmده mو type2نmmوع داده mبmmmرگmشتیاmست .کmmmه mهر دو میتmmmواmنند دادهm
نmmوع BYTE , INTEGER, WORD , LONG ,STRINGبmmmاشند .
1
زیر برنامه و تابع …
معرفی تابع ...DECLARE FUNCTION
مثال
در مثال زیر Iبصورت BYVALفرستاده شده است بنابراین یک کپی از مقدار Iبه زیر تابع فرستاده
می شود و هیچ تغیری در محتوای آن ایجاد نمی شود S .بصورت BYREFفرستاده می شود و تغیر
در آن صورت می گیرد .فراخوانی تابع MYFUNCTIONبا Kو Zاز نوع داده
INTEGERو STRINGاست و مقدار برگشتی از نوع INTEGERاست که در متغیر
Tقرار می گیرد .شما می توانید در محدوده تابع یک متغیر محلی تعریف کنید .
1
1
… زیر برنامه و تابع
... DECLARE FUNCTIONمعرفی تابع
مثال
Declare Function Myfunction (Byval I As Integer , S As String )As Integer
Dim K As Integer , Z As String*10, T As Integer
K =5 :Z = “123 “ : T = Myfunction(K , Z )
Lcd T
‘25
Lcd Z
‘Bascom
Lcd K
‘5
End
Function 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 = T
End Function
زیر برنامه و تابع …
معرفی زیر برنامه DECLARE SUB
از این دستور برای معرفی زیر برنامه استفاده می شود .زیر برنامه ای که قصد فراخوانی آن را داریم
بایستی در ابتدای برنامه یا حداقل قبل از فراخوانی آن معرفی شده باشد .
])DECLARE SUB TEST[( [BYREF/BYVAL] var as type
زیر برنامه برخالف تابع مقداری برنمی گرداند .در زمان ارسال داده بصورت BYREFآدرس داده به زیر برنامه
فرستاده می شود و در محتوای آن تغیر ایجاد می شود .ولی در حالت BYVALیک کپی از داده فرستاده می شود و
به هیچ وجه در محتوای آن تغیری ایجاد نمی شود TEST.نام زیربرنامه و VARنام متغیر ارسالی به زیر
برنامه و TYPEنوع آن است که می تواند داده نوع BYTE , INTEGER, WORD ,STRING
باشند .
برای نوشتن زیر برنامه ابتدا نام آنرا توسط دستور زیر تعریف کرده و سپس شروع به نوشتن زیربرنامه می کنیم .
] ) SUB Name [ ( var1
NAMEنmmام mزیربرنامه mکmmmه mبmmmاید تmmmوسط دستور Declareمعmرفیشmmده mبmmmاشد و بmmmا دستور End Subپmmmایانمی
یابد .
1
1
… زیر برنامه و تابع
...DECLARE SUB معرفی زیربرنامه
مثال
Dim A As Byte , B1 As Byte , C As Byte
Declare Sub Test ( A As Byte )
A =1 : B1 = 2 : C = 3
lcd A ; B1;C
,123 will lcd
Call Test (B1)
lcd A ; B1;C
‘ 223 will lcd
End
Sub test (A As Byte )
lcd A ; B1 ; C
‘123 will lcd
End Sub
زیر برنامه و تابع …
فراخوانی CALL
توسط این دستور زیر برنامه یا تابعی را فراخوانی می کنیم .
)… CALL TEST( VAR1 , VAR2 ,
VAR1 , VAR2متغیرهاییکmmmه mبmmmه mزیر بmmmرنامه mاmنتقاmmل مییابند ,هستند .میتmmmواmنزیر بmmmرنامه mرا بmmmصورت
زیر نmmیز فmmmراmخواmنیکmmرد .
TEST VAR1 , VAR2
الزم بتذکر است که نام زیر برنامه قبل از فراخوانی آن ,باید توسط دستور Declareفراخوانی شود .اگر بخواهیم عدد
ثابت را به زیر برنامه انتقال دهیم بایستی حتما با آرگومان BYVALآن را انتقال دهیم .
1
1
… زیر برنامه و تابع
... CALL فراخوانی
مثال
Dim A As Byte , B As Byte
Declare Sub Test ( B1 As Byte , Byval B2 As Byte )
A =65
Call Test ( A , 5 )
Test A , 5
lcd A
‘ will lcd A = 10
End
Sub Test ( B1 As Byte , Byval B2 As Byte )
Lcd B1
LowerLine
Lcd BCD(B2)
B1 = 10
B2 = 15
End Sub
زیر برنامه و تابع …
بکارگیری متغیر محلی یا LOCAL
از این دستور برای تعریف متغیر محلی در زیربرنامه استفاده می کنیم .
LOCAL VAR As Type
VARنmmام mمتغیر و typeنmmوع داده mاmستکmmmه mمیتmmmواmنند STRING , WORD , INTEGER ,
BYTE , SINGLE , LONGبmmmاشند نmmوع داده mهای ERAM , SRAM , XRAMو آراmیه mها نmmمی
تmmmواmنند محلیتmmmعmریفشmmوند.
یک متغیر محلی یک متغیر موقت است که فقط در هنگام فراخوانی زیر برنامه مربوطه برای آن فضا در نظر گرفته
می شود و با برگشت از زیر برنامه عمر متغیر ( ) LIFE TIMEبه اتمام می رسد .
نکته
متغیرهای بیتی نمی توانند بصورت محلی تعریف شوند .
1
1
… زیر برنامه و تابع
...LOCAL بکارگیری متغیر محلی یا
مثال
Declare Sub Test2
Do
Call test2
Loop
End
Sub Test2
Local A As Byte
Incr A
Lcd A
End Sub
زیر برنامه و تابع …
بکارگیری متغیر محلی یا LOCAL
این دستور به زیربرنامه پرش می کند و اجرای برنامه را از آدرس برچسب ادامه می دهد .
GOSUB label
LABELنmmام mبmmmرچسبیزیر بmmmرنامه mاmستکmmmه mبmmmه mآmنپmmmرشمیشmmود .تmmmوسط دستور RETURNمیتmmmواmناز
SUBبmmmرگmشتکmmmرد و اmجراmیبmmmرنامه mبmmmعmد از دستور GO SUBاداmمه mمییابد .
مثال
‘Jump to routine
‘After come back from routine lcd “Hello
Dim X As Byte
Gosub Routine
””lcd “ Hello
End
Routine
X=X+2
lcd X
Return
1
پیکره بندی و کار با امکانات AVRدر
BASCOM
6
1
پیکره بندی پورت ها
ميكروكنترلرهايِ AVR
1
پیکره بندی پورت ها ...
برای تعیین جهت پایه پورتها از این پیکره بندی استفاده می نماییم .جهت یک پایه می تواند
ورودی یا خروجی باشد .
Config Portx = State
Config Pinx.y = State
X , Yبmmmسته mبmmmه mمیکرو میتmmmواmنند بmmmه mتmmmرتیبپmmmایه mهای 7- 0پmmmورتهای
A ,B ,C ,D ,E ,Fبmmmاشند State .میتmmmواmند یکیاز گmmmزینه mهایزیر بmmmاشد :
INPUTیا : 0در اmینحmاmmلترجیستر جهتداده mپmmmایه mیا پmmmورتاmنتخابشmmده mصmmفر میشmmود و
پmmmایه mیا پmmmورتبmmmعنواmنورودیاmستفاده mمیشmmود .
OUTPUTیا :1در اmینحmاmmلترجیستر جهتداده mپmmmایه mیا پmmmورتاmنتخابشmmده mیکمشود و
پmmmایه mیا پmmmورتبmmmعنواmنخmروجیاmستفاده mمیشmmود .
زمانیکه بخواهید از پورتی بخوانید بایستی از رجیستر PINپورت مربوطه استفاده کنید و در
هنگام نوشتن در پورت بایستی در رجیستر PORTبنویسید .
1
1
... پیکره بندی پورت ها
مثال
Dim A As Byte , Count As Byte
Config Portd = input
‘configure PORT D for input mode
A = Pind
‘Read data on Portd
A = A And Portd
‘A = A & PORTD
lcd A
Bitwait Pind.7 , reset
‘wait until bit is low
Config portb = output
Portb = 10
‘set portb to 10
Portb = Portb And 2
Set Portb.0
‘set bit 0 of portb to 1
Incr Portb
پیکره بندی پورت ها ...
برmرسی پورmتهای میکرو ATMEGA32
پورت A
پورت Aیک I/Oدو طرفه 8بیتی است .سه آدرس از مکان حافظه I/Oاختصاص به پورت A
دارد .یک آدرس برای رجیستر داده , PORTAدومی رجیستر جهت داده DDRAو سومی
پایه ورودی پورت A , PINAاست .آدرس پایه های ورودی پورت Aفقط قابل خواندن است
در صورتی که رجیستر داده و رجیستر جهت داده هم خواندنی و هم نوشتنی هستند .تمام پایه های
پورت دارای مقاومت Pull upمجزا هستند .
PINAیکرجیستر نmmیست .اmینآدرسدسترسیبmmmه mمقدار فmmmیزیکیبmmmر رویهر یکاز پmmmایه mهایپmmmورت
Aرا ممکنمیسmmازد .زمانیکه PORTA mخmواmنده mمیشmmود ,داده mلmmچ پmmmورت Aخmواmنده mمیشmmود
و زمانیکه mاز PINAخmواmنده mمیشmmود مقدار منطقیکmmmه mبmmmر رویپmmmایه mها موجود اmستخmواmنده mمی
شmmود .
1
1
... پیکره بندی پورت ها
ATMEGA32 تهای میکروmرسی پورmبر
A رجیسترهای پورت
A - PORTA [PORT A DATA REGISTER ] رجیستر داده پورت
PORTA
PORTA
PORTA
PORTA
PORTA
PORTA
7 R/W
6 R/W
5 R/W
4R/W
3
2
R/W
R/ W
PORTA1
R/W
PORTA
R/W 0
A - DDRA [PORT A DATA DIRECTION REGISTER ] رجیستر جهت داده پورت
PORTA
7
PORTA
6
R/W
PORTA
5
R/W
PORTA
4
R/W
PORTA
3
R/W
R/W
PORTA
2
R/ W
PORTA1
R/W
PORTA
0
R/W
A PINA- [PORT A INPUT PINS ADDRESS ] بایت آدرس پایه های ورودی پورت
PORTA
7
PORTA
6
R/W
PORTA
5
R/W
PORTA
4
R/W
PORTA
3
R/W
R/W
PORTA
2
R/ W
PORTA1
R/W
PORTA
0
R/W
پیکره بندی پورت ها ...
برmرسی پورmتهای میکرو ATMEGA32
استفاده از پورت Aبه عنوان یک I/Oعمومی دیجیتال
تمام 8پایه موجود زمانیکه بعنوان پایه های I/Oدیجیتال استفاده می شوند دارای عملکرد مساوی هستند , Pan.پایه
I/Oعمومی :بیت DDAnدر رجیستر DDRAمشخص کننده جهت پایه است .اگر DDAnیک باشد PAn ,
بعنوان یک پایه خروجی مورد استفاده قرار می گیرد و اگر DDAnصفر باشد PAn ,بعنوان یک پایه ورودی در
نظر گرفته می شود .اگر PORTAnیک باشد هنگامیکه پایه بعنوان ورودی تعریف می شود ,مقاوت Pull-upفعال
می شود .برای خاموش کردن مقاومت باید PORTAnصفر شود یا اینکه پایه بعنوان خروجی تعریف شود .پایه
های پورت زمانیکه ریست اتفاق می افتد به حالت Tri-stateمی روند .
Comment
Pull up
I/O
PORTAn
DDAn
Tri-state
No
Input
0
0
PAn will source current if ext. pull up low
Yes
Input
1
0
Push-Pull Zero output
No
Output
0
1
Push-Pull one output
No
Output
1
1
1
پیکره بندی پورت ها ...
برmرسی پورmتهای میکرو ATMEGA32
پورت B
پورت Bیک I/Oدو طرفه 8بیتی است .سه آدرس از مکان حافظه I/Oاختصاص به پورت
Bدارد .یک آدرس برای رجیستر داده , PORTBدومی رجیستر جهت داده DDRBو
سومی پایه ورودی پورت B , PINBاست .آدرس پایه های ورودی پورت Bفقط قابل خواندن
است در صورتی که رجیستر داده و رجیستر جهت داده هم خواندنی و هم نوشتنی هستند .تمام پایه
های پورت دارای مقاومت Pull upمجزا هستند .
PINBیکرجیستر نmmیست .اmینآدرسدسترسیبmmmه mمقدار فmmmیزیکیبmmmر رویهر یکاز پmmmایه mهایپmmmورت
Bرا ممکنمیسmmازد .زمانیکه PORTB mخmواmنده mمیشmmود ,داده mلmmچ پmmmورت Bخmواmنده mمیشmmود
و زمانیکه mاز PINBخmواmنده mمیشmmود مقدار منطقیکmmmه mبmmmر رویپmmmایه mها موجود اmستخmواmنده mمی
شmmود .
1
1
... پیکره بندی پورت ها
ATMEGA32 تهای میکروmرسی پورmبر
B رجیسترهای پورت
B - PORTB [PORT B DATA REGISTER ] رجیستر داده پورت
PORTB
PORTB
PORTB
PORTB
PORTB
PORTB
7 R/W
6 R/W
5 R/W
4R/W
3
2
R/W
R/ W
PORTB1
R/W
PORTB
R/W 0
B - DDRB [PORT B DATA DIRECTION REGISTER ] رجیستر جهت داده پورت
PORTB
7
PORTB
6
R/W
PORTB
5
R/W
PORTB
4
R/W
PORTB
3
R/W
R/W
PORTB
2
R/ W
PORTB1
R/W
PORTB
0
R/W
B PINB- [PORT B INPUT PINS ADDRESS ] بایت آدرس پایه های ورودی پورت
PORTB
7
PORTB
6
R/W
PORTB
5
R/W
PORTB
4
R/W
PORTB
3
R/W
R/W
PORTB
2
R/ W
PORTB1
R/W
PORTB
0
R/W
پیکره بندی پورت ها ...
برmرسی پورmتهای میکرو ATMEGA32
استفاده از پورت Bبه عنوان یک I/Oعمومی دیجیتال
تمام 8پایه موجود زمانیکه بعنوان پایه های I/Oدیجیتال استفاده می شوند دارای عملکرد مساوی هستند , Pbn.پایه
I/Oعمومی :بیت DDBnدر رجیستر DDRBمشخص کننده جهت پایه است .اگر DDBnیک باشد PBn ,
بعنوان یک پایه خروجی مورد استفاده قرار می گیرد و اگر DDBnصفر باشد PBn ,بعنوان یک پایه ورودی در
نظر گرفته می شود .اگر PORTBnیک باشد هنگامیکه پایه بعنوان ورودی تعریف می شود ,مقاوت Pull-upفعال
می شود .برای خاموش کردن مقاومت باید PORTBnصفر شود یا اینکه پایه بعنوان خروجی تعریف شود .پایه
های پورت زمانیکه ریست اتفاق می افتد به حالت Tri-stateمی روند .
Comment
Pull up
I/O
PORTBn
DDBn
Tri-state
No
Input
0
0
PBn will source current if ext. pull up low
Yes
Input
1
0
Push-Pull Zero output
No
Output
0
1
Push-Pull one output
No
Output
1
1
1
پیکره بندی پورت ها ...
برmرسی پورmتهای میکرو ATMEGA32
پورت C
پورت Cیک I/Oدو طرفه 8بیتی است .سه آدرس از مکان حافظه I/Oاختصاص به پورت C
دارد .یک آدرس برای رجیستر داده , PORTCدومی رجیستر جهت داده DDRBو سومی
پایه ورودی پورت C , PINCاست .آدرس پایه های ورودی پورت Cفقط قابل خواندن است
در صورتی که رجیستر داده و رجیستر جهت داده هم خواندنی و هم نوشتنی هستند .تمام پایه های
پورت دارای مقاومت Pull upمجزا هستند .
PINCیکرجیستر نmmیست .اmینآدرسدسترسیبmmmه mمقدار فmmmیزیکیبmmmر رویهر یکاز پmmmایه mهایپmmmورت
Cرا ممکنمیسmmازد .زمانیکه PORTC mخmواmنده mمیشmmود ,داده mلmmچ پmmmورت Cخmواmنده mمیشmmود و
زمانیکه mاز PINCخmواmنده mمیشmmود مقدار منطقیکmmmه mبmmmر رویپmmmایه mها موجود اmستخmواmنده mمی
شmmود .
1
1
... پیکره بندی پورت ها
ATMEGA32 تهای میکروmرسی پورmبر
C رجیسترهای پورت
C - PORTC [PORT C DATA REGISTER ] رجیستر داده پورت
PORTC
PORTC
PORTC
PORTC
PORTC
PORTC
7 R/W
6 R/W
5 R/W
4R/W
3
2
R/W
R/ W
PORTC1
R/W
PORTC
R/W 0
C - DDRC [PORT C DATA DIRECTION REGISTER ] رجیستر جهت داده پورت
PORTC
7
PORTC
6
R/W
PORTC
5
R/W
PORTC
4
R/W
PORTC
3
R/W
R/W
PORTC
2
R/ W
PORTC1
R/W
PORTC
0
R/W
C PINC- [PORT C INPUT PINS ADDRESS ] بایت آدرس پایه های ورودی پورت
PORTC
7
PORTC
6
R/W
PORTC
5
R/W
PORTC
4
R/W
PORTC
3
R/W
R/W
PORTC
2
R/ W
PORTC1
R/W
PORTC
0
R/W
پیکره بندی پورت ها ...
برmرسی پورmتهای میکرو ATMEGA32
استفاده از پورت Cبه عنوان یک I/Oعمومی دیجیتال
تمام 8پایه موجود زمانیکه بعنوان پایه های I/Oدیجیتال استفاده می شوند دارای عملکرد مساوی هستند , PCn.
پایه I/Oعمومی :بیت DDCnدر رجیستر DDRCمشخص کننده جهت پایه است .اگر DDCnیک باشد ,
PCnبعنوان یک پایه خروجی مورد استفاده قرار می گیرد و اگر DDCnصفر باشد PCn ,بعنوان یک پایه ورودی
در نظر گرفته می شود .اگر PORTCnیک باشد هنگامیکه پایه بعنوان ورودی تعریف می شود ,مقاوت Pull-up
فعال می شود .برای خاموش کردن مقاومت باید PORTCnصفر شود یا اینکه پایه بعنوان خروجی تعریف
شود .پایه های پورت زمانیکه ریست اتفاق می افتد به حالت Tri-stateمی روند .
Comment
Pull up
I/O
PORTCn
DDCn
Tri-state
No
Input
0
0
PCn will source current if ext. pull up low
Yes
Input
1
0
Push-Pull Zero output
No
Output
0
1
Push-Pull one output
No
Output
1
1
1
پیکره بندی پورت ها ...
برmرسی پورmتهای میکرو ATMEGA32
پورت D
پورت Dیک I/Oدو طرفه 8بیتی است .سه آدرس از مکان حافظه I/Oاختصاص به پورت D
دارد .یک آدرس برای رجیستر داده , PORTDدومی رجیستر جهت داده DDRBو سومی
پایه ورودی پورت D , PINDاست .آدرس پایه های ورودی پورت Dفقط قابل خواندن است
در صورتی که رجیستر داده و رجیستر جهت داده هم خواندنی و هم نوشتنی هستند .تمام پایه های
پورت دارای مقاومت Pull upمجزا هستند .
PINDیکرجیستر نmmیست .اmینآدرسدسترسیبmmmه mمقدار فmmmیزیکیبmmmر رویهر یکاز پmmmایه mهایپmmmورت
Dرا ممکنمیسmmازد .زمانیکه PORTD mخmواmنده mمیشmmود ,داده mلmmچ پmmmورت Dخmواmنده mمیشmmود و
زمانیکه mاز PINDخmواmنده mمیشmmود مقدار منطقیکmmmه mبmmmر رویپmmmایه mها موجود اmستخmواmنده mمی
شmmود .
1
1
... پیکره بندی پورت ها
ATMEGA32 تهای میکروmرسی پورmبر
D رجیسترهای پورت
D - PORTD [PORT D DATA REGISTER ] رجیستر داده پورت
PORTD
PORTD
PORTD
PORTD
PORTD
PORTD
7 R/W
6 R/W
5 R/W
4R/W
3
2
R/W
R/ W
PORTD1
R/W
PORTD
R/W 0
D - DDRD [PORT D DATA DIREDTION REGISTER ] رجیستر جهت داده پورت
PORTD
7
PORTD
6
R/W
PORTD
5
R/W
PORTD
4
R/W
PORTD
3
R/W
R/W
PORTD
2
R/ W
PORTD1
R/W
PORTD
0
R/W
D PIND- [PORT D INPUT PINS ADDRESS ] بایت آدرس پایه های ورودی پورت
PORTD
7
PORTD
6
R/W
PORTD
5
R/W
PORTD
4
R/W
PORTD
3
R/W
R/W
PORTD
2
R/ W
PORTD1
R/W
PORTD
0
R/W
پیکره بندی پورت ها ...
برmرسی پورmتهای میکرو ATMEGA32
استفاده از پورت Dبه عنوان یک I/Oعمومی دیجیتال
تمام 8پایه موجود زمانیکه بعنوان پایه های I/Oدیجیتال استفاده می شوند دارای عملکرد مساوی هستند , PDn.
پایه I/Oعمومی :بیت DDDnدر رجیستر DDRDمشخص کننده جهت پایه است .اگر DDDnیک باشد ,
PDnبعنوان یک پایه خروجی مورد استفاده قرار می گیرد و اگر DDDnصفر باشد PDn ,بعنوان یک پایه ورودی
در نظر گرفته می شود .اگر PORTDnیک باشد هنگامیکه پایه بعنوان ورودی تعریف می شود ,مقاوت Pull-up
فعال می شود .برای خاموش کردن مقاومت باید PORTDnصفر شود یا اینکه پایه بعنوان خروجی تعریف
شود .پایه های پورت زمانیکه ریست اتفاق می افتد به حالت Tri-stateمی روند .
Comment
Pull up
I/O
PORTDn
DDDn
Tri-state
No
Input
0
0
PDn will source current if ext. pull up low
Yes
Input
1
0
Push-Pull Zero output
No
Output
0
1
Push-Pull one output
No
Output
1
1
1