ايران ويج

نسخه‌ی کامل: ساخت ساعت با AVR
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2 3
با سلام خدمت دوستان محترم

من نیاز به یک برنامه ساده ی ساعت با پیکره بندی confog clock=soft,gosub=sectic دارم.

یک برنامه پیدا کردم اما بعضی از جاهای برنامه رو سر در نمیارم :

کد:
$regfile = "M8def.dat"
$crystal = 8000000

Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , _
Db7 = Portc.3 , Rs = Portc.4 , E = Portc.5
Cls
Cursor Off

Config Clock = Soft , Gosub = Sectic
Disable Interrupts

Config Portd = &B00000111

Dim S As Byte , Mi As Byte , H As Byte , Y As Word , Mo As Byte , D As Byte , _
Slc As Byte , Flag As Bit

Declare Sub First
Declare Sub Second

Slc = 0 : Y = 1385 : Mo = 1 : D = 1 : S = 0 : Mi = 0 : H = 12 : Flag = 0
'*************************************************************************
Scan:
   If Pind.0 = 1 Then Incr Slc
     If Slc = 5 Then Slc = 0
   If Pind.2 = 1 Then
     Flag = 0
     Goto Waitls
   End If
   On Slc Goto Hour , Minute , Year , Month , Day
   Goto Scan
'*************************************************************************
Waitls:
   Enable Interrupts
   Do
     If Pind.0 = 1 Then
       Flag = 1
       Goto Scan
     End If
   Loop
'*************************************************************************
Sectic:
   If Flag = 0 Then Gosub Show
   Incr S
   If S > 59 Then
     S = 0
     Incr Mi
     Locate 1 , 14
     Lcd "   "
     If Mi > 59 Then
       Mi = 0
       Incr H
       If H > 23 Then
         H = 1
         Incr D
       End If
     End If
   End If
   If Mo < 7 Then Call First
   If Mo => 7 Then Call Second

   Return
'*************************************************************************
Show:
   Cursor Off
   Cls
   Lcd "Date  " ; Y ; "/" ; Mo ; "/" ; D
   Lowerline
   Lcd "Time  " ; H ; ":" ; Mi ; ":" ; S
   Return
End                                                         'end program


'=========================================================================
'=========================================================================


Hour:
   If Pind.1 = 1 Then Incr H
     If H => 24 Then H = 0
   Lcd "Hour: " ; H
   Waitms 400
   Cls
   Goto Scan
'-------------------------------------------------------------------------
Minute:
   If Pind.1 = 1 Then Incr Mi
     If H => 60 Then Mi = 0
   Lcd "Minute: " ; Mi
   Waitms 400
   Cls
   Goto Scan
'-------------------------------------------------------------------------
Year:
   If Pind.1 = 1 Then Incr Y
   If Y = 1400 Then Y = 1385
   Lcd "Year: " ; Y
   Waitms 400
   Cls
   Goto Scan
'-------------------------------------------------------------------------
Month:
   If Pind.1 = 1 Then Incr Mo
   If Mo = 13 Then Mo = 1
   Lcd "Mount: " ; Mo
   Waitms 400
   Cls
   Goto Scan
'-------------------------------------------------------------------------
Day:
   If Pind.1 = 1 Then Incr D
   If D = 32 Then D = 1
   Lcd "Day: " ; D
   Waitms 400
   Cls
   Goto Scan
'_________________________________________________________________________

Sub First:
   If D > 31 Then
     D = 1
     Incr Mo
   End If
End Sub First

Sub Second:
   If D > 30 Then
     D = 1
     Incr Mo
     If Mo > 12 Then
       Mo = 1
       Incr Y
     End If
   End If
End Sub Second

وقتی با بسکام شبیه سازیش می کنم همیشه تو زیر برنامه ی scan باقی می ماند!!
مثلاً با شروع برنامه نمی دونم چطور به برنامه sectic وارد می شود؟

پیشاپیش از راهنماییتون ممنونم
برنامه هنگامی به برچسب sectic پرش می کند که تایمر 2 سر ریز شود و با فعال بودن اینتراپ به آنجا پرش میکند .
terip2008 نوشته است:برنامه هنگامی به برچسب sectic پرش می کند که تایمر 2 سر ریز شود و با فعال بودن اینتراپ به آنجا پرش میکند .

ممنونم از راهنماییتون
پس با این تفاسیر نمیشه آنرا در بسکام شبیه سازی کرد و حتماً باید آنرا روی آی سی پروگرام کنم و نتیجه را ببینم ؟ !
راستی در برنامه بالا برچسب Waitls چه کاری انجام می دهد ؟

برنامه چه موقع به این برچسب وارد می شود ؟
نقل قول: برنامه چه موقع به این برچسب وارد می شود ؟
وقتی Pind.2 = 1
برای اینکه بدونی چی کار میکنه باید دقیقا کار پایه ها رو بدونی می تونی روی برد برد ببندی ببینی چه جوری کار میکنه
من این برنامه رو پروگرام کردم عالی هم جواب می داد و همین جا از آقای مهدی زارعی بابت برنامشون تشکر می کنم.

امــــا با اینکه هلپ بسکام هم خوندم راجع به پیکربندی کلاک ساعت (Config clock=soft) و همچنین زیر برنامه وقفه ی Sectic چیزی نفهمیدم آخه زبان انگلیسی حرفه ای و تخصصی بلد نیستم. :(

اصلاً روند کار این برنامه چه طوریه ؟
(من سر از کار این وقفه ی سرریز در نیاوردم :x )
سر ریز که کاری نداره یه کاری می کنی که تایمر هر یک پانیه یه بار یه اینتراپت ایجاد کنه با این کار شما یه تابع داری که هر یک ثانیه یه بار اجرا می شه حالا اگه یه متغیر رو یکی اضافه کنی می شه ثانیه شمارت اگه به 60 رسید صفرش کن دقیقه شمار رو یکی اضافه کن و ... می شه ساعت :wink:
من از کریستال داخای استفاده کرده هم ولی خوب نیست / چطور از کریستال خارجی
استفاده کنم و ... از راهنمایی شما قبلا متشکرم.
اون داخلیه کریستال نیست برای استفاده از کریستال خارجی باید فیوز بیت هارو تغییر بدی البته مراقب باش اشتباه تغییر ندی چون دیگه اسیلاتور کار نمی کنه و نمی تونی پروگرامش کنی
باز هم سلام
میریت محترم من هم میدانم که اسیلاتور داخلی RC است لطفا راهنمایی فرمایید که
چطوری ساعت دقیق بسازم ( نمونه برنامه و .... ) با CodeVision باشد متشکرم. Biggrin
برنامه نومونه که ندارم شما تایمر رو درست تنظیم کنی کریستال خوب هم داشته باشی ساعتت دقیق در می یاد ولی یک ثانیه خطا در روز رو خیلی کاریش نمی تونی بکنی البته اگه کریستالت واقعا 6 صفر باشه خطا خیلی کمتر
صفحه‌ها: 1 2 3