مرجع دستورات بیسیک avr (قسمت1)
جمعه, ۴ آذر ۱۳۹۰، ۰۴:۱۹ ق.ظ
میکرو ها چه جوری به وجود اومدند!
خب ببینید در ابتدا تراشه های اولیه به صورت ROMبودند که مخفف Read Only
Memoryاست یعنی تو کارخونه یه سری اطلاعات روی اونا می ریختن و اونا فقط با استفاده
از اون اطلاعات پردازش می کردند یعنی سطح پردازش محدودی داشتند.اطلاعات روی اونا هم
قابل پاک شدن یا تعویض نبود و فقط خواندنی بودند. یعنی مثلا طوری برنامه ریزی شده
بودند که اگه یک پایه ی اونا 1 شد پایه ی دیگر 0 شود ولی مثلا اگه می خواستین
این عمل برعکس اجرا شود باید از یه رله استفاده می کردین .
به تدریج ملت اومدن دیدن این حافظه های ROM خیلی ضایعه ! لذا اومدن حافظه های
ERom رو ساختند یعنی Eraseable ROM حافظه های که قابل برنامه ریزی بودند و می
توانستید به تعداد محدودی برنامه روی آنها بنویسید ولی اینکار به وسیله ی اشعه ی
فرابنفش انجام می شد به طوریکه به هنگام نوشتن یه تعداد سلول داخل تراشه را می
سوزاند و به هنگام پاک کردن اونا رو باز آوری می کرد.
یواش یواش ملت دیدن که به دلیل سرطان زا بودن فرابنفش و خاصیت پرتوزایی تراشه
بعد از هر بار نوشتن یا پاک کردن دهنشون داره آسفالت می شه ! لذا حافظه های EEROMرو
اختراع کردند که مخفف Electricaly Erasaeble ROM یعنی حافظه با قابلیت برنامه ریزی
الکترونیکی که میکرو کنترلر ها جزء
این دسته می باشند .
البته حافظه های مدرن تری به نام Flashهم اختراع شد که الان برای ذخیره و حمل
اطلاعات ازشون استفاده می کنیم ولی یه نوع EEROM هستند.
معرفی میکرو
برای شروع یک برنامه در این محیط در ابتدا باید میکرو مورد نظر
خود را معرفی کنید که این کار با دستور زیر انجام می شود.
regfile=var$
var نام میکرو مورد نظر است که می تواند یکی از موارد زیر باشد:
مدل avr یا مدل atmega یا مدل atiny مثال:
معرفی کریستال
برای مشخص کردن فرکانس کریستال مورد استفاده از دستو زیر استفاده می
کنیم.
crystal=x$
x فرکانس کریستال بر حسب هرتز است.
crystal=8000000$
اسمبلی(اختیاری)
برای نوشتن به زبان اسمبلی در میان بیسیک می توان از این دستور
استفاده کرد.
ASM$
assembly programme
ENDASM$
با این دستور می توان در بین برنامه بیسیک به نوشتن برنامه اسمبلی
پرداخت و پس از اتمام برنامه با دستور endasm$ برنامه اسمبلی تمام شده و به نوشتن
به زبان بیسیک پرداخت.
یادداشت(اختیاری)
گاهی نیاز دارید در برنامه خود یادداشت هایی را اضافه کنید در
اینصورت از( ' ) یا Rem در برنامه خود استفاده می کنید به این صورت که ابتدا این
علامت ( ' )را گذاشته سپس توضیح خود را بعد از آن ذکر می کنیم. توضیحات بعد از این
علامت در برنامه بی اثر بوده و کامپایل نمی شوند و به رنگ سبز در می آیند.مثال:
config lcd=2*16
' we use lcd with 16 and 2 chracter
شاید برای شما این سوال پیش بیاید که کلمه (کامپایل) که در بالا
به آن اشاره شد چیست؟ تمامی میکروکنترلر ها و عموماً کامپیوتر ها از سیستم مبنای دو
اعداد یا همان باینری استفاده می کنند که این ماشین ها به جز 0 و 1 چیز دیگری نمی
فهمند بنابراین در هر محیط برنامه نویسی بعد از نوشتن برنامه باید آن را به زبان
ماشین یا همان 0 و 1 تبدیل کرد که به این عملیات کامپایل کردن می گویند.
پایان برنامه
END
این دستور در انتهای تمامی برنامه های شما قرار می گیرد که با این
دستوربرنامه به پایان رسیده و خاتمه می یابد.
تعریف متغیر با این دستور می توان متغیر های به کار برده شده در برنامه را تعریف
کرد.
DIM var AS [xram/sram/eram] data type[at location]0
به عنوان توضیح باید بگم که در کل در دستورات هر عبارتی که داخل
آکولاد [] باشد اختیاری است و لزومی به نوشتن آن نیست.
var نام متغیر به کار برده شده در برنامه است.گزینه اختیاری xram
را برای استفده از حافظه جانبی استفاده کنید و استفاده از گزینه اختیاری sram متغیر
را در حافظه sram قرار می دهد و استفاده از گزینه اختیاری eram متغیر مورد نظر را
در EEPROM داخلی جای می دهد. data type نوع متغیر است که می تواند طبق جدول زیر
bit,byte,integer,long,word,string, یا single باشد. در صورتی که متغیر خود را از
نوع داده string تعریف کردید باید بیشترین طول آن را نیز ذکر کنید.
value range
stores as
data type
0 1OR
A BIT
BIT
0TO 255
UNSIGNED 8-BITS
BYTE
32767TO32767-
SIGNED 16-BITS
INTEGER
0TO 65535
UNSIGNED 16-BIT
WORD
2147483648TO 214783647 -
SIGNED 32-BITS
LONG
SIGNED 32-BITS
SINGLE
-
0-254 BYTES
STRING
متغیر STRING به طول 15 کاراکتر
DIM F AS STRING*15
گزینه اختیاری AT LOCATION به منظورذخیره کردن متغیر در آدرس دلخواه
حافظه به کار می رود. مثال:
DIM B1 AS BYTE AT 120
دستور ALIAS
از این دستور برای تغییر اسم متغیر استفاده می شود.مثال:
Ld ALIAS PORTA.4
SET Ld
'=SET PORTA.4
دستور INCR
این دستور یک واحد به متغیر VAR می افزاید.
INCR VAR
مثال:
A=0
INCR A:PRINT A
'A=1
www.Cmos.irدستور DECR
این دستور از متغیر VAR یک واحد می کاهد.
DECR VAR
مثال:
DIM D AS BYTE
D=6
DECR D: PRINT D
'D=5
دستور LCASE
این دستور تمام حروف رشته
تعیین شده را تبدیل به حروف کوچک می کند.
(Target=Lcase(source
که source رشته مورد نظر
است که به حروف کوچک تبدیل و در رشته Target قرار می گیرد.مثال:
Dim P As
String * 12 , H As String * 12"P = "FARZAN
SHOJAEE(H = Lcase(p
"Lcd H
'lcd"farzan shojaeeEnd
دستور UCASE
این دستور تمام حروف رشته تعیین شده را تبدیل به حروف بزرگ می کند.
(Target=Ucase(source
که source
رشته مورد نظر است که به حروف بزرگ تبدیل و در رشته Target قرار می گیرد.مثال:
Dim P As String * 12 , H As String * 12"P = "in
the name of god(H = Ucase(p
"Lcd H
'lcd"IN THE NAME OF GODEnd
دستور LEN
این دستور
تعداد کارکترهای یک رشته را حساب کرده و در متغیر VAR قرار می دهد که تعداد
کارکترهای آن همان طول رشته است.
(var=LEN(string
طول رشته
string در متغیر var قرار می گیرد.رشته string می تواند حداکثر 255 بایت طول داشته
باشد به این نکته نیز باید توجه داشت که فضای خالی خود یک کاراکتر محسوب می
شود.مثال:
Dim A As String * 12 , B As Byte"A = "god
(B = Len(aLcd B
'lcd 3 "A = "lo v e
(B = Len(aLcd B
'lcd 6End
همانطور که
دیدید کلمه love چهار کاراکتر طول دارد که با دو فاصله بین حروف آن 6 کاراکتر می
شود.
دستور swap
این دستور
محتوای دو متغیر var1 و var2 را با هم عوض می کند.یعنی محتوای متغیر var1 را در
متغیر var2 ومحتوای متغیر var2 را در متغیر var1 می ریزد.
نکته: دو متغیر باید از یک نوع داده تغریف شوند.مثال:
Dim A As Byte , B As ByteA = 20 : B = 35
Swap A , BLcd A
'lcd 35Lcd B
'lcd 20End
دستور space
از این دستور برای ایجاد فضای خالی استفاده می شود که x تعداد فضای خالی است که به
عنوان رشته در متغیر var قرار می گیرد.
(var=space(x
مثال:
Dim A As
String * 10A = Space(4)Lcd "{" ; S ; "}"
'{ }4 spaceEnd
دستور LTRIM
این دستور
فضای خالی یک رشته را از سمت چپ حذف می کند که STRING رشته ای است که فضای خالی آن
برداشته می شود و رشته بدون فضای خالی در متغیر VAR قرار می گیرد.مثال:
Dim A As String * 10 , B As String * 10"A = "
AB(B = Ltrim(a"Lcd
B
'LCD"ABEnd
دو نوع LCD وجود
دارد: LCD های کاراکتر و اعداد(متن) و LCD های گرافیکی.
LCD 2x16 به طور
مثال یک LCD متنی است و دارای دوسطر است که هر سطر دارای 16 مکان برای نمایش
کاراکتر می باشد.www.Cmos.ir
LCD2x16دارای 16
پایه می باشد.
توضیحات
سمبول
شماره پایه
زمین منبع تغذیه
ولتاژ+5 ولت منبع تغذیه
ولتاژ کنترل کنتراست
VSS
VDD
V0
1
2
3
اگر RS=0 باشد ثبات دستور انتخاب می شود
و اگر RS=1 باشد ثبات داده انتخاب می
شود.
RS
4
R/W=0 برای نوشتن در LCD
R/W=1 برای خواندن از LCD
R/W
5
فعال ساز
E
6
بیت های 0 تا 7 دیتا
D0 – D7
14-7
آنود لامپ LED پشت
LCD
کاتود لامپ LED پشت
LCD
-
-
15
16
۹۰/۰۹/۰۴