PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : كارنكردن برنامه / دستور gosub



mehrannohtani
21-03-2015, 18:40
سلام به همه اي دوستان مهندس
سال نو بر شما مهندسين گرامي مبارك.
قبلا يكي مشكلي در برنامه اي داشتم يكي از كاربران سايت كمك كردن مشكلم حل شد.(مرسي از omidctrl)
الان اين برنامه را مي خواهم به شكل زير برنامه با دستور gosub استفاده كنم يك جايي هرچي متغيير x تعريف
ميكنم كه اگر صفر شد بياد مثلا فلان كار را بكند يا اگر يك منطقي شد بياد فلان كار ديگر را بكند اين عمل انجام نميشه
$regfile = "m32def.dat"
$crystal = 1000000
Dim X As Byte
Dim S As Byte
Dim U As Word
Dim A As Word
Dim B As Word

Config Portb = Output
Config Portc = Output
Config Portd = Input

Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
Config Timer0 = Timer , Prescale = 1024
Enable Interrupts
Enable Timer0
On Timer0 Lable

Do
Gosub Mehran1
If x= 1 Then
Set Portc.0
Else
Reset Portc.0
End If
Loop


Mehran1:

Do
S = 0
Start Timer0
Do
A = Getadc(4)
Waitus 100
B = Getadc(4)
If A <= B Then
U = B - A
Else
U = A - B
End If
If U <> 0 Then
Reset Portb.0
X = 0
Stop Timer0
Exit Do
Elseif U = 0 And S = 12 Then
Set Portb.0
X = 1
Stop Timer0
Exit Do
End If
Loop
Loop

Lable:
S = S + 1
Return

Return

در كل قسمت هاي قرمز رنگ را من به برنامه اضافه كردم
البته جايي كه نوشته شده x=1 يا x=0 اگر مثلا خود portc.0 را قرار دهم كارميكنه
ولي من ميخواهم زماني كه خروجي portb.0 يك و يا صفر منطقي شود متغيري
نيز باشد كه محتواي آن همزمان صفر ويك شود.
چون از اين برنامه مي خواهم به شكل زير برنامه با دستور gosub استفاده كنم
دوستان يك برسي كنند ببينند مشكل كجاست كه دستوري كه به رنگ قرمزاست كار نميكنه؟
واقعيتش چون تازه كار هستم حرفه اي نيستم.ممنون
ممنون

sobhan537
21-03-2015, 20:29
فکر میکنم برنامه داخل یکی از حلقه های do loop زیر برنامه گیر میکنه...

ehsanbagheri
22-03-2015, 00:15
دقیقا همینط.ر هست برنامه توی حلقه زیر برنامه گیر میکنه یه دور تریس کن برنامت رو میفهمی

mehrannohtani
23-03-2015, 15:57
ممنون متوجه شدم