سلام
من میخوام برنامه فایل زیر رو که شمارنده چهار رقمیه تبدیلش کنم به ساعت
یعنی می خوام اتصالات و ... همون باشه و فقط برنامش تغییر کنه
خودم تا یه جاهایی پیش رفتم اما آخرش اونی که می خواستم نشد
اون کلیدی که برای شمارش گذاشته رو میخوام بجای پالس ساعت کار کنه ... یعنی هر فشار کلید به منزله یک پالس یا همون یک ثانیه شناخته بشه
همچنین بهتره بجای دستور If در کلید از دستور Debounce استفاده بشه تا فقط یکبار عمل کنه
ثانیه ها هم داخل میکرو شمرده میشن و روی سون سگمنت فقط دقیقه و ساعت باید نشون داده بشه
مثلا اون قسمت مربوط به دقیقه و ساعت رو تغییر دادم وشده این :
کد:
If N > 9 Then
N = 0
Incr M
If M > 5 Then
M = 0
Incr V
If V > 9 Then
V = 0
Incr T
Else
If T = 2 And V > 3 Then
T = 0
V = 0
End If
End If
End If
End If
برای ثانیه هم باید یه چیزی تعریف بشه مثل S :
کد:
Debounce pinb.0 , 1 , www, sub
www:
Incr S
If S > 59 Then
Incr N
S = 0
End If
حالا یکی زحمتشو بکشه و برنامه رو تغییر بده ... جاهای اضافیشو هم پاک کنه
سون سگمنتش هم کاتد مشترکه
(۱۲-اردیبهشت-۱۳۹۲, ۱۲:۳۹:۴۰)رسول نوشته است: [ -> ]زیاد سخت نبودا
اینجا برای کسی پروژه انجام نمیدیم
اگه میخواید هزینه داره
کد:
$regfile = "m8def.dat"
$crystal = 4000000
Config Portd = Output
Config Portc = Output
Config Pinb.0 = Input
Config Pinb.2 = Input
Dataport Alias Portd
Comm Alias Portc
Dim A As Byte , B As Byte , C As Word , D As Word , N As Byte , M As Byte , V As Byte , T As Byte , Hh As Byte , S As Byte
Declare Sub Q
Declare Sub W
Declare Sub E
Declare Sub K
Declare Sub X
Do
Call E
Call Q
Call K
If S > 0 Then
N = N + 1
S = 0
End If
If M = 6 Then
V = V + 1
M = 0
N = 0
End If
If T = 6 Then
N = 0
M = 0
T = 0
V = 0
End If
Loop
'=============================================================================
Sub K
If Pinb.0 = 1 Then
Incr S
Call X
End If
If Pinb.2 = 1 Then
N = 0
M = 0
T = 0
V = 0
S = 0
Call X
End If
Do
Loop Until Pinb.0 = 0
Do
Loop Until Pinb.1 = 0
End Sub
'========================================================================
Sub E
If N > 9 Then
N = 0
Incr M
If M > 9 Then
M = 0
Incr V
If V > 9 Then
V = 0
Incr T
If T > 9 Then
T = 0
End If
End If
End If
End If
End Sub
'======================================================================
Sub Q
Comm = &B0111 : A = N : Call W
Comm = &B1011 : A = M : Call W
Comm = &B1101 : A = V : Call W
Comm = &B1110 : A = T : Call W
End Sub
'======================================================================
Sub W
Dataport = Lookup(a , Sa)
Waitms 4
Dataport = &H00
End Sub
'========================================================================
Sub X
For Hh = 1 To 2
Call E
Call Q
Next
End Sub
'=============================================================================
Sa:
Data &B00111111 , &B00000110 , &B01011011 , &B01001111
Data &B01100110 , &B01101101 , &B01111101 , &B00000111
Data &B01111111 , &B01101111
5 تومن میشه
بهزاد جون تستش کردم ... همون کاری که من کرده بودم رو کردین
من جور دیگه ای خواسته بودم
ثانیه شمار رو نباید سگمنت نشون بده
اصلا اون برنامه رو ولش کن
یه برنامه جدید می خوام با این مشخصات
سگمنت چهارتایی (آند یا کاتد فرقی نداره)
ثانیه داخل میکرو شمرده بشه و روی سگمنت فقط دقیقه و ساعت نمایش داده بشه
نکته مهم اینکه برنامه تایمر و ... نیاز نداره و ثانیه ها با یک کلید خارجی باید وارد میکرو بشن
یعنی فشردن هربار کلید به منزله یک ثانیه برای میکرو شناخته بشه
ثانیه رو نشون نمی ده الان برای تست گفته بودم
یادم رفت بگم چی کار کنید درست بشه
تو لوپ اصلی یه همچین چیزی هست
کد:
If S > 0 Then
N = N + 1
S = 0
End If
اینو به این تغییر بدید
کد:
If S > 59 Then
N = N + 1
S = 0
End If
قرار بود اینو بزارم بعد 5 تومن بگیرم
برای همین نزاشته بودم
یادم اومد
-
تا پولو ندادید خودتون کد هارو نگاه نکنید
مگه نمی دونید خدا نگاهتون میکنه
بازم همون دوغ و همون لیوانه
یا بعبارتی همون گوجه و همون کبابه
هنوز که تیک عصبیش رفع نشده!!
فیلمشو ببین ... میخوام وقتی کلید زده شد دیگه اونطوری خاموش روشن نشه و کلا روشن باشه !!!
نه مشکل از فرکانس نبود
هر جوری هم عوضش میکنم باز لرزش داره
مشکل از داخل برنامست
به نظرم مشکل باید در این قسمت باشه:
کد php:
Sub W
Dataport = Lookup(a , Sa)
Waitms 4
Dataport = &H00
End Sub
(۱۴-اردیبهشت-۱۳۹۲, ۱۴:۲۱:۱۰)رسول نوشته است: [ -> ]نه مشکل از فرکانس نبود
هر جوری هم عوضش میکنم باز لرزش داره
مشکل از داخل برنامست
به نظرم مشکل باید در این قسمت باشه:
کد php:
Sub W
Dataport = Lookup(a , Sa)
Waitms 4
Dataport = &H00
End Sub
نه مشکل این نیست اگه این مشکل داشت خود عدد ها گیر میکرد شما بین هر نمایش وقفه زیاد داری
(البته ممکن هست از اینم باشه فعلا بعدی هارو بگو به اینم میرسیم)
-
اگه هیچ پالسی اعمال نکنی هم پرش داره؟(دکمه ها رو نزنی)
-
الان سرعت میکرو چقدره؟
(۱۴-اردیبهشت-۱۳۹۲, ۱۴:۳۵:۲۸)رسول نوشته است: [ -> ] (۱۴-اردیبهشت-۱۳۹۲, ۱۴:۳۰:۴۱)behzady نوشته است: [ -> ]اگه هیچ پالسی اعمال نکنی هم پرش داره؟(دکمه ها رو نزنی)
نه نداره
نقل قول: الان سرعت میکرو چقدره؟
1000000
مشکل اینجاست
کد:
Sub K
If Pinb.0 = 1 Then
Incr S
Call X
End If
If Pinb.2 = 1 Then
N = 0
M = 0
T = 0
V = 0
S = 0
Call X
End If
Do
Loop Until Pinb.0 = 0
Do
Loop Until Pinb.1 = 0
End Sub
اون لوپ ها وایمیسه تا پالس قطع بشه یه فکری باید براش بکنیم
(۱۴-اردیبهشت-۱۳۹۲, ۱۴:۳۹:۱۱)behzady نوشته است: [ -> ]اون لوپ ها وایمیسه تا پالس قطع بشه یه فکری باید براش بکنیم
تا شب وقت داری بری روش فکر کنی وگرنه