ايران ويج

نسخه‌ی کامل: مشکل برنامه تایمر با بیسکام
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
با عرض سلام خدمت اساتید محترم 
ضمن عرض خسته نباشید
بنده تایمری را در بیسکام نوشته ام که هر روز ساعت بیست و چهار  پنج دقیقه یک خروجی رو فعال کند و بقیه ساعت های روز  با خروجی های متفاوت.
این دو را در دو تا زیر برنامه نوشته ام  به صورت زیر

24saat(hdood  5 deqiqe)
A:
       If H = 24 Then
       Set Lt
       Locate 2 , 18 : Lcd "NT"
       End If
       If B = Lm_h Then
       Reset Lt
       Locate 2 , 1 : Lcd "   "
End If
Return


baqi saatha
B:
       If D = 1 Then
       Set Mn
       Locate 4 , 19 : Lcd " "
       Locate 4 , 2 : Lcd Chr(0)
       Elseif D = Ff_h Then
       Reset Mn
       Set Yn
       Locate 4 , 2 : Lcd " "
       Locate 4 , 19 : Lcd Chr(0)
       Elseif D = Gg_h Then
       Reset Yn
       Gosub Bh
End If
Return

حالا مشکلم این است که چطوری این دو زیر برنامه را فراخوانی کنم
لطفا در صورت امکان مرا راهنمایی بفرمایید یا اگر راه دیگری هست بفرمایید
با تشکر از همه اساتید
سلام

از دستور Declare Sub استفاده کنید 
روش کار هم توی این دوتا ادرس هست1  2  
موفق باشید
استاد خیلی ممنون از بابت راهنمایی
بنده با تایمر صفر و از روش ساب روتین استفاده کرده ام و میخوام برنامه کلی رو عرض کنم
دو موتور داریم شب و روز کار خواهد کرد و فقط در ساعت بیست و چهار یعنی دوازه شب حدود یک دقیقه الی نیم ساعت موتور ها خاموش خواهند شد و در این فاصله فن روشن شده و موتورها را خنک خواهد کرد
بنده این نیم ساعت رو در حافظه ایپرام ذخیره میکنم در ضمن این نیم با یک شستی قابل تغییر است از یک دقیقه تا سی دقیقه
مشکل فقط راه انداختن این دو زیر برنامه هست
لطفا اگر راه بهتری هست راهنمایی بفرمایید
با تشکر از همه اساتید محترم سایتمون 
آیدین
سلام مهندس خواهش میکنم

 مثلا واسه اون قسمت برنامه که قراره متغییری تا مقدار 30 باشه با همین دستور یه برنامه رو مینویسم :
1با شستی:
کد:
Declare Sub Up
Dim A As Byte
Do

Debounce Pinb.0 , 1 , Up , Sub
If A > 30 Then A = 0

Loop
END
Sub Up
Incr A
End Sub
 
2 بدون شستی و بار زمان افزایش حدودا یک ثانیه :

کد:
Declare Sub Up
Dim A As Byte
Do

Call up
 Wait 1

Loop
END
Sub Up
Incr A
End Sub

به نظرمن بهترین روش واسه زیر برنامه همین دستور Declare Sub هست (بهتر از goto , gosub و اینها هست)
:E
*متغییر A رو توی ERAM تعریف نکردم

و  اینهم یه تیکه برنامه خودتون توی زیر برنامه با همین دستور اجرا میشه

کد:
Declare Sub 5M

Do
.
بقیه برنامه'.
.
Call 5M
.
بقیه برنامه'.
.

Loop
END

Sub 5M
      If H = 24 Then
      Set Lt
      Locate 2 , 18 : Lcd "NT
      End If
      If B = Lm_h Then
      Reset Lt
      Locate 2 , 1 : Lcd "   "
End If
End Sub


موفق باشید.
با تشکر از الطاف جنابعالی
مشکل بنده حل شد
مشکل این بود که ساعت بیست و چهار برنامه اجرا میشد و فن رو روشن میکرد ولی دیگر خاموش نمیشد چون حداکثر زمان روشن برای فن پنج دقیقه است و ساعت بیست و چهار یک ساعته
برنامه رو تغییر دادم و بصورت زیر نوشتم
Elem:

       If  = 24 And D = 0 Then
       Set Lt
     "    "  Locate 2, 18 : Lcd
      " Locate 2 , 18 : Lcd "ON
       Gosub Onel

       Elseif H = 24 And D = Flm_h Then
       Reset Lt
     "    "  Locate 2 , 18 : Lcd
      " Locate 2 , 18 : Lcd "OFF
       End If
Return

این بار هم نشد اگر زمان روشن یک دقیقه انتخاب میکردم درست کار میکرد و بعد از یک دقیقه فن خاموش میشد و به زیر برنامه دوم پرش میکرد ولی بالاتر از یک دقیقه با این که فن درست کار میکر د ولی بعد از یک دقیقه از روشن شدن فن به زیر برنامه دوم میرفت با این زیر برنامه اول هنوز در حال اجرا بود. برنامه رو به صورت زیر تغییر دادم و مشکل حل شد البته خیلی روش فکر کردم که چرا باید برنامه درست عمل نکند

Elem:
       If  = 24 And D <Flm Then
       Set Lt
       "     " Locate 2 , 18 : Lcd
    "  !Locate 2 , 18 : Lcd "ON
       Gosub Onel

       Elseif H = 24 And D = Flm_h Then
       Reset Lt
      "       " Locate 2 , 18 : Lcd
      " Locate 2 , 18 : Lcd "OFF
       End If
Return

استاد باز هم از توجه شما سپاسگزارم
یک سوال دیگه داشتم و آن اینکه چطور میتوانیم یه کاراکتور یا شکلی را به زبان بیسک بچرخانیم
سلام.خواهش میکنم
برنامه شما رو که کامل ندیده بودیم و نمیدونستیم  مشکل کجاست فقط گفته بودین که دنبال روش فراخوانی هستین و خوشحالم که رفع شد
اگه منظورتون کارکتر روی LCD هست که ؛تنها روشی که میشناسم استفاده از گزینه LCD Designerاز سربرگ Tools نرم افزار بسکام هست و توی اون یک کارکتر رو بدلخواه طراحی میکنیم  
و بعد از تایید اون کارکتر،یه خط به برنامه اضافه میشه که مثل خط اول این برنامه هست و باید بیرون از حلقه  باشه
بجای اون X هم یه علامت سوال میاد که اسم کارکتر شما واسه فراخوانیه و باید تغییر بدین
و واسه جرکت چرخشی باید همون رو توی چند بار طراحی کارکتر درست کنید و با ترتیب و تاخیر نمایش بدین

کد:
Deflcdchar X , 31 , 31 , 31 , 31 , 31 , 31 , 31 , 31

Do
Locate 1 , 1
Lcd Chr(X)
Loop
End

منم استاد نیستم^_^ مبتدی حساب میشم
موفق باشید
خیلی ممنون از توجه جنابعالی
همین که مرا مورد لطف قرار داده و به سوالات بنده پاسخ فرمودید برای بنده استاد هستید
با تشکر آیدین
خواهش میکنم مهندس
انجام وظیفس ممنون از لطفتون موفق باشید