با عرض سلام خدمت اساتید محترم
ضمن عرض خسته نباشید
بنده تایمری را در بیسکام نوشته ام که هر روز ساعت بیست و چهار پنج دقیقه یک خروجی رو فعال کند و بقیه ساعت های روز با خروجی های متفاوت.
این دو را در دو تا زیر برنامه نوشته ام به صورت زیر
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
منم استاد نیستم^_^ مبتدی حساب میشم
موفق باشید
خیلی ممنون از توجه جنابعالی
همین که مرا مورد لطف قرار داده و به سوالات بنده پاسخ فرمودید برای بنده استاد هستید
با تشکر آیدین
خواهش میکنم مهندس
انجام وظیفس ممنون از لطفتون موفق باشید