مهندس help بسکام رو بخونی همشون رو توضیح داده !
lookup و lookdown که برعکس هم هستن !
Lookupstr هم واسه رشته هستش !
مهمترین استفاده جدول LOOKUP تو راه اندازی سون سگمنت هستش !!
جدول فوق یه عدد رو واسه ما برمیگردونه !!
کد:
Returns a value from a table.
فرم کلیش اینجوریه :
کد php:
var = LOOKUP( value, label)
var متغیری که عدد برگشتی تو اون قرار میگیره !
value عدد یا متغیری که عدد مورد نظر از جدول رو می خواد !
label هم آدرس جدول هستش !
نمونه :
کد php:
$regfile = "m8def.dat" ' specify the used micro
$crystal = 4000000 ' used crystal frequency
$baud = 19200 ' use baud rate
Dim B1 As Byte , I As Integer
B1 = Lookup(2 , Dta)
Print B1 ' Prints 3 (zero based)
I = Lookup(0 , Dta2) ' print 1000
Print I
End
Dta:
Data 1 , 2 , 3 , 4 , 5
Dta2:
Data 1000% , 2000%
در حالت معمول عدد بین 0-65535 رو می تونه برگردونه ( اونم از جدول بین 0-255 )
ولی با گذاشتم نمادهایی بعد از عددمیشه long و single و .. رو هم برگردوند !
البته این قضیه تو بیشتر قسمت های بسکام هستش !
مثلا واسه sinlge باید بعد عدد % بذاری !!
واسه پرش همون دوتا رو من سراغ دارم !
gosub هم هستش که کارش فرق داره و با return با اونجای رفته بر میگرده !
زير برنامه ها و فراخواني توابع :
: Declare Function
از اين دستور براي معرفي تابع در ابتداي برنامه استفاده مي شود . زماني که بخواهيم تابعي را معرفي کنيم بايستي تابع معرفي شده باشد . در صورت استفاده از تابع مي بايستي يک داده برگردانده شود .
کد php:
Declare Function Test [([Byref / Byval] Var As Type1)] As Type2
Test نام تابع موردنظر است . انتقال داده بصورت Byval باعث مي شود که يک کپي از متغير به تابع فرستاده شود و در محتواي آن هيچ تغيري ايجاد نشود .ولي در حالت Byref آدرس متغير ارسال و تغيرات در آن اثر مي گذارد و داده برگشتي در صورت انجام عمليات بر روي آن با مقدار اوليه خود برابر نخواهد بود .
در صورت عدم استفاده از گزينه [Byref/Byval] بصورت پيش فرض داده بصورت Byref فرستاده مي شود. Type1 نوع داده ارسال شده وType2 نوع داده برگشتي است . که هر دو مي توانند داده نوع Byte , Integer, word , Long ,String باشند .
مثال :
در مثال زير I بصورت Byval فرستاده شده است بنابراين يک کپي از مقدار I به زير تابع فرستاده مي شود و هيچ تغييري در محتواي آن ايجاد نمي شود. S بصورت Byref فرستاده مي شود و تغير در آن صورت مي گيرد .
فراخواني تابع Myfunction با K و Z از نوع داده Integer و String است و مقدار برگشتي از نوع Integer است که در متغير T قرار مي گيرد . شما مي توانيد در محدوده تابع يک متغير محلي تعريف کنيد .
مثال :
کد php:
$regfile = "m16def.dat" : $crystal = 1000000
Config Lcd = 16 * 2 : Cls
Config Lcdpin = Pin , Db4 = PORTD.0 , Db5 = PORTD.1 , Db6 = PORTD.2 _
, Db7 = PORTD.3 , E = PORTD.4 , Rs = PORTD.5
Declare Function Myfunction(byref I As Word , S As String )as Word
Dim K As Word , Z As String * 10 , T As Word
K = 5 : Z = "123 " : T = Myfunction(k , Z)
Locate 1 , 1
Lcd T '10
Locate 1 , 9
Lcd Z 'Bascom
Locate 2 , 1
Lcd K '24
End
Function Myfunction(byref I As Word , S As String )as Integer
I = 4 * 6
S = "Bascom"
Myfunction = 10
End Function
از اين دستور براي معرفي زير برنامه استفاده مي شود . زير برنامه اي که قصد فراخواني آن را داريم بايستي در ابتداي برنامه يا حداقل قبل از فراخواني آن معرفي شده باشد .
کد php:
Declare Sub Test [([Byref / Byval] Var As Type)]
زير برنامه برخلاف تابع مقداري برنمي گرداند .در زمان ارسال داده بصورت Byref آدرس داده به زير برنامه فرستاده مي شود و در محتواي آن تغير ايجاد مي شود .ولي در حالت Byval يک کپي از داده فرستاده مي شود و به هيچ وجه در محتواي آن تغيري ايجاد نمي شود . Test نام زيربرنامه و Var نام متغير ارسالي به زير برنامه و Type نوع آن است که مي تواند داده نوع Byte , Integer , Word , String باشند .
براي نوشتن زير برنامه ابتدا نام آنرا توسط دستور زير تعريف کرده و سپس شروع به نوشتن زيربرنامه مي کنيم .
Name نام زيربرنامه که بايد توسط دستور Declare معرفي شده باشد و با دستور End Subپايان مي يابد .
مثال :
کد php:
$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
Cls
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
Call Test(b1)
End
Sub Test(a As Byte)
Locate 2 , 1
Lcd A ; B1 ; C '223
End Sub
Call :
توسط اين دستور زير برنامه يا تابعي را فراخ واني مي کنيم .
کد php:
Call Test (Var1 , Var2 , ....)
Var1 , Var2 متغيرهايي که به زير برنامه انتقال مي يابند , هستند . مي توان زير برنامه را بصورت زير نيز فراخواني کرد .
لازم بتذکر است که نام زير برنامه قبل از فراخواني آن , بايد توسط دستور Declare فراخواني شود. اگر بخواهيم عدد ثابت را به زير برنامه انتقال دهيم بايستي حتما با آرگومان BYVAL آن را انتقال دهيم .
مثال :
کد php:
$regfile = "m16def.dat"
$crystal = 1000000
Config Lcd = 16 * 2 : Cls
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 , B As Byte
Declare Sub Test(b1 As Byte , Byval B2 As Byte)
A = 65
Call Test(a , 5)
Test A , 5
Locate 2 , 1
Lcd A
End
Sub Test(b1 As Byte , Byval B2 As Byte)
B1 = 10
B2 = 15
Locate 1 , 1
Lcd B1
Locate 1 , 9
Lcd B2
End Sub
Local :
از اين دستور براي تعريف و بکارگیری متغير محلي در زيربرنامه استفاده مي کنيم .
Var نام متغير و Type نوع داده است که مي توانند String , Word , Integer , Byte , Single , Long باشند .
نوع داده هاي Eram , Sram , Xram و آرايه ها نمي توانند محلي تعريف شوند .
يک متغير محلي يک متغير موقت است که فقط در هنگام فراخواني زير برنامه مربوطه براي آن فضا در نظر گرفته مي شود و با برگشت از زير برنامه عمر متغير (Life Time) به اتمام مي رسد .
تذکر متغيرهاي بيتي نمي توانند بصورت محلي تعريف شوند .
مانند :
کد php:
$regfile = "m16def.dat"
$crystal = 1000000
Config Lcd = 16 * 2 : Cls
Config Lcdpin = Pin , Db4 = PORTD.0 , Db5 = PORTD.1 , Db6 = PORTD.2 , _
Db7 = PORTD.3 , E =PORTD.4 , Rs = PORTD.5
Declare Sub Test2
Do
Call Test2
Loop
Sub Test2
Local A As Byte
Incr A
Home : Lcd A
Waitms 200
End Sub