سلام خدمت همه دوستان .متاسفانه من هنوز یه ساعت درست حسابی تو هیج جا پیدا نکردم اگر هم بوده با ایرادات و تاخیر های زیادی همراه بوده از اون جاییکه با تایمر 2 وprescale 128 و کریستال 32768 یه ساعت بدونه تاخیر میشه ساخت(من تا حالا جایی ندیدم) خودم یه برنامه نوشتم . تو بسکام بدون ایراد کامپایل میشه اما تو شبیه سازی ایراد داره اگه میشه از همین تاپیک ایراد منو بهم بگید تا مشکله برنامرو حل کنم.
الان سه روزه تو این ساعت گیر کردم.یا علی مدد
اینجا شما باید فرکانس کریستال خود میکرو رو وارد کنید نه کریتال ساعت رو . مثلا 12 مگا هرتز
کریستال ساعت به پایه های 28 و 29 میکرو وصل میشه
کد:
Dim Sat As Byte , Da As Byte , Sec As Byte
اینجا هم از sec استفاده کردین که یکی از کلمات کلیدی کامپایلره
خوب نگاه کنی می بینی رنگش بنفش شده
کد:
Locate 1 , 1 : Lcd Sat ; ":" ; Da ; ":" ; Sec
شما اصلا تعریف نکردین از چه ال سی دی استفاده میکنید .ال سی دی رو پیکره بندی نکردین و از دستورات ال سی دی استفاده کردین !!!!!
کد:
Debounce Pinb.0 , 1 , A , Sub
Debounce Pinb.1 , 1 , B , Sub
Debounce ها هم باید قبل از Do_Loop نوشته بشه
شما سعی کنید توی سرویس رخداد وقفه یکی به ثانیه اضافه کنید اگر 60 بود به دقیقه اضافه کنید و ثانیه رو صفر کنید و اگر دقیقه 60 بود صفرش کنید و یکی به ساعت اضافه کنید و اگر ساعت 24 شده بود صفرش کن و return
و توی حلقه اصلی برنامه زمانن رو روی ال سی دی نمایش بدین
اگر مایل به یادگیری بیشتر هستید پیشنهاد میکنم 2 تا سوییچ دقیقه و ساعت رو به وقفه های خارجی وصل کنید
خیلی ممنون از شما جواب دادید.
ولی دستورات lcd رو تو خود بسکام تنظیم کردم واین دو تا دستور debounce برای پایه های ساعت و دقیقه است.
اگه میشه بفرمایید چطوری با استفاده از وقفهاینارو بکار ببرم
توب هلپ بسکام config int رو بزنین
مثالش رو نگاه کند ساده توضیح داده
باید تعیین کنید که وقفه حساس به سطح باشه یا لبه و نوع لبه رو تعیین کنید
تعریف کنید که هنگام رخ دادن وقفه به کجا بره ؟ اسم زیر روال یا همون لیبلش
وقفه سراسری رو فعال کنید
وقفه مورد نظر هم فعال کنید
و بدنه اصلی برنامه
سلام..
دوست عزیز برای ساخت ساعت دقیق با تاریخ دقیق میتونین از ای سی ds1307 استفاده کنین که با I2C کار میکنه و با داشتن باطری بک آپ زمان قطع برق نیز ای سی به کار خودش ادامه میده!!!
اگه اشنایی ندارین مدارش رو بزارم...
سلام.
اقا ما حسابی تو کف ساخت یه ساعت ساده با تایمر موندیم
من تا فعال کردن وقفه ها وحتی الگریتم بعدش هم برام مشکلی نیست
اما اون حلقه do loop که وجود داره مشکل دارم.ساعت هر کسی رو هم میبینم و تو بسکام تست می کنم تو اون حلقه گیر میکنه.البته تو عمل هم گیر میکنه.
اما فایلای پروتیوسشون کار میکنه.
خداوکیلی یه نفر یه توضیح جامع وکامل بده ما هم یاد بگیریم بخدا ثواب داره
یا علی مدد
دوست عزیز مشکل شما کجاست!!!
ساعت که کاری نداره!!!
اگه ثانیه 59 شد یکی به دقیقه اضافه کن و بعد ثانیه رو صفر کن... و الی اخر!!!!
شما مشکلتون کجاست!!!؟؟؟؟
اقا ممنون جوابمو دادی.
هم میگن ساعت که کاری نداره ولی من که ...بیخیال
این چیزایی که شما میگیدو عمل کردم قشنگ یه تایمر ساختم .
امانمیتونم این تایمرو اروم کنم. یعنی ثانیه خیلی تند عمل میکنه.
وقفه رو هم فعال کردم .اصلا برنامرو میزارم یه نگاه بنداز.دستت درد نکنه
دوست عزیز کریستال ساعت گذاشتین بین پایه های TOC1وTOC2???
تو شبیه ساز زیاد دقیق نیست!!!
بعد شما تو تایمر هاتون TIMER0 رو فعال کردین!!!!
یه نگاه دوباره بنداز!!!!
تایمر کجا START میشه؟؟؟؟
تایمر صفر چه نقشی داره؟؟؟؟
اصلآ بزار یکی یکی بگم .تو ابن برنامه که میبینید ایا میشود بدون این که دستور پرش از حلقه بنویسیم تایمر کار کند.یعنی باید دستور پرشو رو بنویسیم یا نه.اگه ننویسیم که توحلقه گیر میکنه اگه بنویسیم که اصلآ تایمر به نظر من این وسط کاره ای نیست.اینو برام توضیح بدید.
کد:
[align=left] $regfile = "m16def.dat"
$crystal = 12000000
Dim B As Byte , C As Byte
Config Timer0 = Timer , Prescale = 1024
Enable Interrupts
Enable Timer0
On Timer0 P
Start Timer0
Do
Loop
End
P:
Locate 1 , 8 : Lcd B
Incr B
If B > 3 Then : Incr C : Locate 1 , 1 : Lcd C : B = 0 : End If
return
[/align]
ببین زمانی که وقفه میخوره میکرو همه کاراشو نگه میداره و میره تو زیر برنامه
p و بعد برمیگرده!!!
اگه میخوای با تایمر صفر یک ثانیه رو ایجاد کنی با کریستال 8 مگ بگو:
کد:
p:
if a <30 then
incr a
else
a=0
incr sec
end if
if sec>59 then
sec=0
incr mine
end if
..
..
..
و الی اخر