• ¡Welcome to Square Theme!
  • This news are in header template.
  • Please ignore this message.
مهمان عزیز خوش‌آمدید. ورود عضــویت


امتیاز موضوع:
  • 17 رای - 2.12 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
Title: آموزش کامل بسکام به همراه مثال
حالت خطی
#5
Const :
براي تعريف يک ثبات از اين دستور استفاده مي شود :

Const Symbol= Numconst
Const Symbol= Stringconst
Const Symbol= Expression
Symbol نام ثابت و Numconst مقدار عددي انتساب يافته به Symbol و Stringconst رشته انتساب يافته به Symbol و Expression مي تواند عبارتي باشد که نتيجه آن به Symbol انتساب يابد .
مانند:
Const S = "TEST"
Const A = 5
Const B1 = &B1001
Const X =(b1 * 3 ) + 2

Incr و Decr :
دستور Incr يک واحد به متغيير عددي X مي افزايد و دستور Decr يک واحد از آن کم مي کند .
Incr X
Decr X
مثال :
$regfile = "m16def.dat"
$crystal = 1000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = PORTD.0 , Db5 = PORTD.1 , Db6 = PORTD.2 , Db7 = PORTD.3 , E = PORTD.4 , Rs = PORTD.5
Dim A As Byte
Dim B As Long
Dim Bp As Byte
Do
Incr A
Decr B
Locate 1 , 1
Lcd B
Locate 2 , 1
Lcd A
Waitms 500
Loop
End
Swap:
با اجراي اين دستور محتواي متغير Var1 در متغير Var2 و محتواي متغير Var2 در متغير Var1 قرار مي گيرد .
Swap Var1 , Var2
دو متغير Var1 وVar2 بايستي از يک نوع باشند .
مثال :
$regfile = "m16def.dat"
$crystal = 1000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = PORTD.0 , Db5 = PORTD.1 , Db6 = PORTD.2 , Db7 = PORTD.3 , _
E = PORTD.4 , Rs = PORTD.5
Dim A As Byte
Dim B As Byte
Cls
A = 10
B = 20
Swap A , B 'swap them
Locate 1 , 1
Lcd 'A=20
Locate 2 , 1
Lcd B 'B=10
End
با مشاهده متن نمایش داده شده می توان به جابجایی داده دو متغیر پی برد :

Config Single :
با اين دستور ميتوان تعداد رقم اعشار متغير از جنس Singleرا معين کرد ، اين دستور به فرم کلي زير است:
Config Single = Scientific , Digits = x
X : عددي بين 1 تا 7 است که تعداد رقم اعشار را نشان ميدهد ، درصورت که از اين دستور استفاده کنيد ، کليه متغير هاي Singleموجود در برنامه تحت پوشش قرار مي گيرند .
مثال :
$regfile = "m16def.dat"
$crystal = 1000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = PORTD.0 , Db5 = PORTD.1 , Db6 = PORTD.2 , _
Db7 = PORTD.3 , E = PORTD.4 , Rs = PORTD.5
Config Single = Scientific , Digits = 1
Cls
Dim A As Single
A = 10
A = A / 9
Lcd A
End
و نمایش اطلاعات برنامه فوق در شکل بالا مشاهده می شود .

Format :
اين دستور يک متغير عددي را شکل دهي مي کند .
X = Format (Var , "Form")
Var رشته اي است که شکل دهي شود و نتايج در X قرار مي گيرد .Form نوع شکل دهي است .
مثال :
$regfile = "m16def.dat"
$crystal = 1000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = PORTD.0 , Db5 = PORTD.1 , Db6 = PORTD.2 , Db7 = PORTD.3 , E = PORTD.4 , Rs = PORTD.5
Dim S As String * 10 , I As Integer
S = " 123"
S = Format(s , " ")
Locate 1 , 1 '5 Space
Lcd S ' S = " 123"Two Space First , Then 123
S = "12345"
S = Format(s , "000.000")
Locate 1 , 8
Lcd S ' S = "012.345"
S = Format(s , "+")
Locate 2 , 1
Lcd S ' S = "+12345"
End


Fusing :
از اين دستور براي روند کردن يک متغير عددي استفاده مي شود .
Target = Fusing (Source , "Mask")
Source رشته موردنظر براي شکل دهي و نتايج در Target قرار مي گيرد .Mask نوع شکل دهي است . عمل Mask حتما بايد با علامت # شروع شود و حداقل بايد يکي از علامات # يا & را بعد از مميز داشته باشد. با استفاده از # عدد روند مي شود و در صورت استفاده از & روندي صورت نمي گيرد .
مثال :
$regfile = "m16def.dat"
$crystal = 1000000
Config Lcd = 16 * 4
Config Lcdpin = Pin , Db4 = PORTD.0 , Db5 = PORTD.1 , Db6 = PORTD.2_
, Db7 = PORTD.3 , E = PORTD.4 , Rs = PORTD.5
Dim S As Single
Dim A As Byte
Cls
S = 10
A = 6
S = S / A
Locate 1 , 1
Lcd S 'lcd 1.66666666666666
Locate 2 , 1
Lcd Fusing(s , "#.##") 'lcd 1.67
Locate 3 , 1
Lcd Fusing(s , "#.####") 'lcd 1.6667
Locate 4 , 1
Lcd Fusing(s , "#.&&&") 'lcd 1.666
End
با مشاهده متن نمایش داده شده می توان بیشتر به چگونگی روند کردن پی برد :

Shift :
با اين دستور ميتوان تمام بيت ها را يک بيت به سمت راست يا چپ منتقل کرد ، اين دستور به فرم کلي زير است :
Shift Var , Left/Right
Var : نام متغير يا عدد ثابتي است که ميخواهيم آن را شيفت دهيم (منتقل کنيم) Left/Rightجهت شيفت را مشخص ميکند ، که ميتواند راست يا چپ باشد .
مانند:
$regfile = "m16def.dat"
$crystal = 1000000
Config PORTA = Output
PORTA = 128
Do
Shift PORTA , Right
Wait 1
Loop
End
مثال :
$regfile = "m16def.dat"
$crystal = 1000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = PORTD.0 , Db5 = PORTD.1 , Db6 = PORTD.2_
, Db7 = PORTD.3 , E = PORTD.4 , Rs = PORTD.5
Dim A As Byte
A = 5
Locate 1 , 1
lcd a
Shift A , Left
Locate 2 , 1
Lcd A
End
در مثال بالا مقدار اوليه 5 (0101 باينري) براي A در نظر گرفته شده است ، اين مقدار بر روي سطر وستون اول LCD به نمايش در ميايد ، سپس با دستور Shift A , Left تمام بيت هاي متغير A به سمت چپ منتقل ميشوند ، پس مقدار A برابر با 10 (1010 باينري ) مي شود .

Rotate:
اين دستور تقريبا مانند دستور Shift ميباشد و تمام بيت هاي يک متغير را به سمت راست يا چپ جابجا مي کند با این تفاوت که بیتی بیرون نمی رود و چرخش داده می شود ، شما همنچنين با اين دستور ميتوانيد پين هاي روشن يک پورت را جابجا کنيد وبه فرم کلي زير است:
Rotate Var , Left/Right
Var : نام متغير يا عدد ثابتي يا پورتي است که ميخواهيم آن را شيفت دهيم (منتقل کنيم)
Left/Right : جهت انتقال را مشخص مي کند ، که ميتواند را ست يا چپ باشد .
مثال : ( در پوشه Example\3 - Flasher Rotate موجود است )
$regfile = "m16def.dat"
$crystal = 1000000
Config PORTA = Output
Dim B As Byte
B = 1
Do
Rotate B , Right
PORTA = B
Waitms 250
Loop
End
براي نشان دادن اعداد به فرم باينري از &B و براي نشان دادن اعداد به فرم هگز از &H استفاده مي شود .
مانند :
&B01010111
&Hf6
در اينجا تمامي دستورات مر بوط به اعداد ومتغيير ها که در زبان بيسيک براي ميکرو AVR است گفته شد. در درسهاي بعدي با اين دستورات به صورت کاربردي آشنا مي شويد.
(مثال ها را در بسکام کپي کنيد و طرز کار دستورات را ببينيد )

دستورات مربوط به کار با رشته ها :
Asc :
اين دستور اولين کاراکتر يک متغير از نوع داده String را به مقدار اسکي آن تبديل مي کند .
Var = Asc (String)
براي ديدن کارکترهاي اسکي و کد متناظر با آنها از منوي Edit گزينه ي Insrt Ascii را انتخاب کنيد .

Instr :
اين دستورمحل و موقعيت يک زير رشته را در رشته ديگر مشخص مي کند .
Var =Instr (start , String ,Subset)
Var =Instr (String ,Subset)
Var عددي است که مشخص کننده محل Substr در رشته اصلي String مي باشد و زمانيکه زير رشته مشخص شده در رشته اصلي نباشد صفر برگردانده مي شود .Start نيز عددي دلخواه است که مکان شروع جستجو زير رشته در رشته اصلي را مشخص مي کند . در صورتيکه Start قيد نشود تمام رشته از ابتدا جستجو مي شود . رشته اصلي تنها بايد از نوع رشته باشد ولي زير رشته (substr ) مي تواند رشته و عدد ثابت هم باشد .
مثال :
$regfile = "m16def.dat"
$crystal = 1000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = PORTD.0 , Db5 = PORTD.1 , Db6 = PORTD.2 , _
Db7 = PORTD.3 , E = PORTD.4 , Rs = PORTD.5
Dim S As String * 15
Dim Z As String * 5
Dim Bp As Byte
Cls
S = "This is a test"
Z = "is"
Bp = Instr(s , Z)
Lcd Bp
Bp = Instr(4 , S , Z)
Home L
Lcd Bp
End
با مشاهده اعدا نمایش داده شده بیشتر می توان به عدد برگشتی تابع فوق پی برد :

: CHECKSUM
اين دستور مجموع کد دسيمال اسکي رشته X را برمي گرداند که البته اگر مجموع کد اسکي رشته از عدد 255 بيشتر شود مقدار 256 از مجموع کم مي شود .
مثال :

$regfile = "m16def.dat"
$crystal = 1000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = PORTD.0 , Db5 = PORTD.1 , Db6 = PORTD.2 , _
Db7 = PORTD.3 , E = PORTD.4 , Rs = PORTD.5
Dim S As String * 10 ' Dim Variable
S = "test"
Locate 1 , 1 ' Assign Variable
Lcd Checksum(s) ' print value (192)
S = "testNext"
Locate 2 , 1 ' assign variable
Lcd Checksum(s) ' lcd value 95
End
[عکس: bnk.png]

برای ورود بر روی تصویر کلیک کنید.
www.avrprj.ir
 
پاسخ
  


پیام‌های این موضوع
RE: آموزش کامل بسکام به همراه مثال - توسط a.mehran - 09-26-2014، 04:15 PM

موضوعات مشابه ...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  آموزش اصطلاحات میکرو AVR a.mehran 1 4,820 09-26-2014، 04:45 PM
آخرین ارسال: a.mehran
  مدار فاصله سنج اولتراسونیک با بسکام a.mehran 2 4,075 09-02-2014، 07:56 AM
آخرین ارسال: a.mehran
  pwm با بسکام a.mehran 0 2,707 09-01-2014، 10:02 PM
آخرین ارسال: a.mehran
  راه اندازی سون سگمنت با بسکام a.mehran 0 2,781 09-01-2014، 09:56 PM
آخرین ارسال: a.mehran

پرش به انجمن:


Browsing: 2 مهمان