سوال: قطعه برنامه ی زیر چه کاری انجام می دهد و از
آن چه می فهمید.
TRISA=$15
TRISB=0
PortB=0
Loop:
PortB=PortA
GoTo
Loop
END
ساختار شرط
IF
provision Then rule
مثال:
IF A>B Then C=A
در مثال فوق
اگر A بزرگتر از B باشد آنگاه C را برابر A قرار خواهد داد.
مثال: اگر A=20 و B=10 و C=4 و D=7 باشد، پس از
اجرای قطعه برنامه ی زیر مقادیر C وD چقدر خواهد بود؟
IF A>B Then C=A
C=B+A
خواهیم
داشت:
C=20, D=30
حال اگر A=5 باشد:
C=4, D=15
* برا ی
نوشتن بیش از یک دستور در یک خط از علامت (:) استفاده میکنیم.
مثال: اگر A=5 و B=10 و C=4 و D=7 باشد بعد از
اجرای قطعه برنامه ی زیر C و D چه خواهد بود؟
IF A>B Then C=A: D=B+A
خواهیم
داشت:
C=4, D=7
*به دستور IF یک خطی زیر
توجه کنید
IF A=B Then GoTo L1
LED=1
L1:
C=B+A
در دستور فوق در صورتی که A=B باشد برنامه به خط L1 رفته و پس از
آن C را برابر مجموع A و B قرار میدهد در نتیجه
خط مربوط به روشن شدن LED خوانده نمیشود.
در قطعه برنامه ی گفته شده اگر A=10 و B=7 و C=5 باشد چه
خواهد شد؟ واضح است که شرط بر قرار نیست پس LED روشن شده و
پس از آن خواهیم داشت C=17
* فرمان IF میتواند بیش از یک خط باشد به مثال زیر توجه
کنید.
مثال: اگر A=2 و B=255 و C=3 باشد ؛ پس از
اجرای قطعه برنامه ی زیر A و B و C و D چه
خواهد بود؟
L0:
IF A=B Then; Start if
D=C+A
C=C+1
GoTo L1
END IF; END IF
Block
A=A+1
GoTo L0
L1:
A=1
…
در ابتدای
برنامه چون A کوچکتر از B است برنامه وارد زیر روال IF نمیشود و پس
از یکی اضافه شدن به A مجدد به L0 بر میگردد و این کار ادامه پیدا میکند تا
زمانی که شرط بر قرار شود. آنگاه D=3+255=258 و پس از آن C=3+1=4 و سر انجام A=1 و B بدون تغییر 255 خواهد بود.
مثال: اگر A=20 و B=25 و C=4 باشد بعد از
اجرای قطعه برنامه ی زیر A وB و C و D چه خواهند
بود.
|
A
|
B
|
C
|
D
|
|
20
|
25
|
4
|
-
|
|
21
|
25
|
4
|
46
|
|
22
|
25
|
4
|
47
|
|
23
|
25
|
4
|
48
|
|
24
|
25
|
4
|
49
|
|
25
|
0
|
25
|
49
|
loop:
if a<b then a=a+1: d=a+b: goto loop
b=0
loop2:
c=a
* همانطور که میبینید در مثال فوق برنامه با
حـروف کوچک نوشته شده است. PIC Basic Pro نسبت به بزرگ
و کوچک بودن حروف حساس نیست اما بهتر است برای گیج نشدن خودتان به صورت استاندارد
و مرتب بنویسید.
دستور
توقف به مدت زمان مشخص:
Pause Time
دقت کنید که
زمان با واحد میلی ثانیه است.
مثال:
قطعه برنامه ای
بنویسید که LED
متصل به پین 0 از پورت A با فاصله ی زمانی یک ثانیه چشمک بزند. (اجازه
ی تعریف و استفاده از سایر پینها را نداریم)
TRISA.0=0; PortA.0=output
PortA.0 Var LED; LED Mean
PortA.0
Loop:
LED=1
Pause 1000
LED=0
Pause 1000
GoTo Loop
END
مثال: برنامه ای بنویسید که روی پین 1 از پورت B یک موج مربعی
با فرکانس 500Hz ایجاد کند.
F=500Hz پس t=2ms و برای یک نیم سیکل یک میلی ثانیه زمان قرار میدهید.
TRISB.1=0
Loop:
PortB.1=1
Pause 1
PortB.1=0
Pause 1
GoTo Loop
END
نوشته شده توسط : فرشید احمدی