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


امتیاز موضوع:
  • 17 رای - 2.12 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
Title: آموزش کامل بسکام به همراه مثال
حالت خطی
#6
High و Low و Highw :
: Low اين دستور (LSB (Least Significant Byte يک متغير را برمي گرداند . (LSB بايد کمتر از 8 بيت باشد)
High : اين دستور( MSB (Most Significant Byte يک متغير را برمي گرداند . (MSB بايد کمتر از 8 بيت باشد)
Highw : اين دستور( MSB (Most Significant Byte يک متغير را برمي گرداند . (MSB بايد کمتر از 16 بيت باشد)
Var = High (s)
MSB متغير S در Var قرار مي گيرد . (Var بايد از جنس Byte باشد)
Var = Low (s)
LSB متغير S در Var قرار مي گيرد . (Var بايد از جنس Byte باشد)
X = Highw )s(
MSB متغير S در Var قرار مي گيرد . (Var بايد از جنس Word باشد)
مثال :

$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 I As Integer
Dim Z As Byte
Dim Q As Byte
Cls
I = &H1001
Z = Low(i) '1
Locate 1 , 1
Lcd Z
Q = High(i) '16
Locate 2 , 1
Lcd Q
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 X As Word , L As Long
L = &H12345678
X = Highw(l) ' 4660(des)=1238(hex)
Locate 2 , 1
Lcd X
End


Lcase و Ucase :
دستور Lcase : اين دستور تمام حروف رشته مورد نظر را تبديل به حروف کوچک مي کند .
Target = Lcase (source)
تمام حروف رشته source کوچک شده و در رشته Target جاي داده مي شود .
دستور Ucase : اين دستور تمام حروف رشته مورد نظر را تبديل به حروف بزرگ مي کند .
Target = Ucase (source)
تمام حروف رشته source بزرگ شده و در رشته Target جاي داده مي شود .
مثال :
$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 * 12
Dim Z As String * 12
Dim Q As String * 12
S = "Hello World"
Q = "QWERTGFDD"
Z = Ucase(s) 'Z = "HELLO WORLD"
Locate 1 , 1
Lcd Z
Z = Lcase(q) 'Z = "qwertgfdd"
Locate 2 , 1
Lcd Z
End
Right و Left :
دستور Right: با اين دستورقسمتي از يک رشته را جدا مي کنيم .
Var = Right (Var1 , N)
از سمت راست رشته Var1 به تعداد کاراکتر N , رشته اي جدا شده و در رشته Var قرار مي گيرد .
دستور Left: با اين دستور کاراکترهاي سمت چپ يک رشته را به تعداد تعيين شده جدا مي کند .
Var = Left (Var1 , N)
از سمت چپ رشته Var1 به تعداد کاراکتر N , رشته اي جدا شده و در رشته Var قرار مي گيرد .
مثال :
$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 , Z As String * 15
Cls
S = "abcdefg"
Z = Left(s , 5) 'Z = abcde
Locate 1 , 1
Lcd Z
Z = Left(s , 1) 'Z = a
Locate 1 , 8
Lcd Z
Z = Right(s , 5) 'Z = CDEFG
Locate 2 , 1
Lcd Z
Z = Right(s , 2) 'Z = FG
Locate 2 , 8
Lcd Z
End
و مشاهده متن اصلی و متن جدا شده :

Mid :
با اين دستور مي توان قسمتي از يک رشته را برداشت و يا قسمتي از يک رشته را با قسمتي از يک رشته ديگر عوض کرد .
Var = Mid (Var1 , St [,L])
1- قسمتي از رشته Var1 با شروع از کاراکتر Stام و طول L برداشته شده و در متغير Var قرار مي گيرد.
Mid (Var , St [,L]) = Var1
2- رشته Var1 در رشته Var با شروع از کاراکتر St ام و طول L قرار مي گيرد .
در صورت قيد نکردن گزينه اختياري L بيشترين طول در نظر گرفته مي شود .
مثال :
$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 Z As String * 10
Cls
S = "adswer"
Z = Mid(s , 2 , 3)
Locate 1 , 1
Lcd Z 'lcd "dsw"
Z = "5685"
Mid(s , 2 , 3) = Z
Locate 2 , 1
Lcd S 'lcd "a568er"
End

Len :
اين دستور طول، يا به عبارتي تعداد کاراکترهاي يک رشته را برميگرداند .
Var = Len (String)
طول رشته String در متغير عددي Var قرار مي گيرد . رشته String نهايتا مي تواند 255 بايت طول داشته باشد . توجه داشته باشيد که فضاي خالي (Space Bar) خود يک کاراکتر به حساب مي آيد .
مثال :
$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 * 12
Dim A As Byte
Cls
S = "test"
A = Len(s)
Locate 1 , 1 '4
Lcd Len(s)
S = "test "
A = Len(s)
Locate 2 , 1
Lcd A '6
End

Ltrim:
اين دستور فضاي خالي يک رشته را حذف مي کند .
Var = Ltrim (Q)
فضاي خالي رشته Q برداشته مي شود و رشته بدون فضاي خالي در متغير رشته اي Var قرار مي گيرد .
مثال :
$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 A As String * 10
Cls
S = "1 2 3 4"
S = Ltrim(s)
Locate 1 , 1
A = S
Lcd A '1234
S = "Q Q Q"
Locate 2 , 1
Lcd Ltrim(s) 'QQQ
End

Space :
براي ايجاد فضاي خالي در ميان يک رشته ، ازاين دستور استفاده مي شود .
Var = space (X)
X تعداد فضاي خاليست که بعنوان رشته در متغير رشته اي var جاي مي گيرد.
مثال :
$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 Z As String * 10
Cls
S = Space(5)
Z = "qwer"
Locate 1 , 1
Lcd "(" ; S ; Z ; ")"
End

ديگر دستور ات حلقه و پرش و شرط :
گاهي نياز است که يک قسمت از برنامه چندين بار اجرا شود يا در حين اجراي برنامه در يک خط به خط ديگري رجوع شود ، براي اين کار از دستورات حلقه و پرش که چندين نوع است ، استفاده مي شود .


Goto :
با اين دستورات مي توان به برچسب Label پرش کرد .
برچسب Label بايد با علامت : (colon) پايان يابد و مي تواند تا 32 کارکتر طول داشته باشد .
Label:
برنامه
Goto Label
مثال :
$regfile = "m16def.dat"
$crystal = 1000000
Config PORTA = Output
Q:
Set PORTA.0
Waitms 200
Reset PORTA.0
Waitms 200
Goto Q
End

Gosub :
با اين دستور ميتوان به يک زیرروال پرش کرد ، باز گشت ار زیرروال با دستور Return انجام مي شود ، اين دستور به فرم کلي زير است :
Gosub Label

Label:
برنامه
Return
مثال:
$regfile = "m16def.dat"
$crystal = 1000000
Config PORTA = Output
Do
Gosub Q
Set PORTA.0
Waitms 600
Loop
End

Q:
Reset PORTA.0
Waitms 600
Return
On Var:
اين دستور به فرم کلي زير است:
On Var [Goto] [Gosub] Label1 [, Label2 ] [,Check]
در اين دستور به ازاي متغير Var به برچسب nم پرش مي شود ، مثلا اگر Var=2 باشد به پرچسب سوم پرش مي شود ( تعداد برچسب ها نامحدود است ( بستگي به حافظه ميکرو دارد) . در صورتي که از دستور Gosub استفاده کنيد باز گشت از زير برنامه (برچسب) با دستورReturn انجام مي شود و در صورت استفده از Goto بايد به حلقه اصلي پرش کرد که شما ميتوانيد از دستور Goto يا ديگر دستورات استفاده کنيد .
مثال با دستور Gosub:
$regfile = "m16def.dat"
$crystal = 1000000
Config PORTA = Output
Dim S As Byte
Do
On S Gosub Q , W , E
Incr S
Wait 1
Loop
End

Q:
Set PORTA.0
Return

W:
Set PORTA.1
Return

E:
Set PORTA.2
Return
مثال با دستور Goto:
$regfile = "m16def.dat"
$crystal = 1000000
Config PORTA = Output
Dim S As Byte
A:
Wait 1
On S Goto Q , W
End

Q:
Incr S
Goto A

W:
Set PORTA.1
Goto A
در مثال هاي بالا ، در اول کار مقدار S صفر است پس به پرچسب اول پرش شده و پورت PORTA.0 يک مي شود مي شود و به S يک واحد افزوده مي شود ، بعد از اين عمل دوباره به حلقه اصلي پرش ، S برابر با 1 مي شود ، پس به پرچسب دوم پرش مي شود در آنجا پورت ...

Do - Loop :
فرم کلي دستورات DO … LOOP بصورت زير مي باشد .
Do
برنامه
Loop
اين حلقه يک حلقه بينهايت است ، که با Exit Do مي توان از درون حلقه خارج شد و اجراي برنامه در خط بعد از Loop ادامه يابد.
همچنان می توان شرطی تعریف کرد که با بر قرار شدن شرط از حلقه خارج شویم :
Do
برنامه
Loop Until A = X
هر گاه متغیر A برابر X شد از حلقه خارج می شویم , تست شرط در آخر حلقه انجام می شود پس حلقه فوق حداقل یک بار اجرا می شود . در مثال زير در هر بار تکرار حلقه يک واحد به A اضافه مي گردد و هرگاه مقدار A به 10 رسيد خط بعد از حلقه اجرا مي گردد.
مثال :
$regfile = "m16def.dat"
$crystal = 1000000
Config PORTA = Output
Dim A As Byte
Do
Incr A
Set PORTA.0
Waitms 600
Reset PORTA.0
Waitms 600
Loop Until A = 10
Toggle PORTA
End
[عکس: bnk.png]

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


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

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

پرش به انجمن:


Browsing: 6 مهمان