اطلاعیه

Collapse
No announcement yet.

سوال در مورد برنامه ساعت با DS1307

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    #76
    پاسخ : سوال در مورد برنامه ساعت با DS1307

    من که نفهمیدم چی شد ؟!!!
    فقط میدونم این برنامه rtc داخلی میکرو رو راه میندازه !!
    [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

    دیدگاه


      #77
      پاسخ : سوال در مورد برنامه ساعت با DS1307

      سلام ببخشید یه دفعه پریدم وسط . میشه یه توضیح در مورد این تکه از برنامه و روابط بین تاریخ شمسی و میلادی بدید
      Myear = 2000 + Year
      Mmonth = Month
      Mday = Day

      Temp1 = Myear Mod 4
      Temp2 = Myear Mod 100
      Temp3 = Myear Mod 400
      Temp4 = Temp1 And Temp2

      If Temp4 <> 0 Or Temp3 = 0 Then
      Mmonth_a(2) = 28
      Else
      Mmonth_a(2) = 29
      End If

      Myear_ = Myear - 1
      Temp1 = Myear_ Mod 4
      Temp2 = Myear_ Mod 100
      Temp3 = Myear_ Mod 400
      Temp4 = Temp1 And Temp2

      If Temp4 <> 0 Or Temp3 = 0 Then
      Reset Isleapyearp
      Else
      Set Isleapyearp
      End If

      Temp1 = Mmonth - 1

      For Iloop = 1 To Temp1
      Mdayofyear = Mmonth_a(iloop) + Mdayofyear
      Next
      Mdayofyear = Mday + Mdayofyear

      If Mdayofyear > 79 Then

      Temp1 = Mdayofyear - 79
      Jyear = Myear - 621

      If Temp1 < 186 Then

      Temp2 = Temp1 Mod 31
      Temp3 = Temp1 / 31

      If Temp2 = 0 Then
      Jmonth = Temp3
      Jday = 31
      Else
      Jmonth = Temp3 + 1
      Jday = Temp2
      End If

      Else

      Temp2 = Temp1 - 186
      Temp3 = Temp2 Mod 30
      Temp4 = Temp2 / 30

      If Temp3 = 0 Then
      Jmonth = Temp4 + 6
      Jday = 30
      Else
      Jmonth = Temp4 + 7
      Jday = Temp3
      End If

      End If

      Else

      Jyear = Myear - 622

      If Isleapyearp = 1 Then
      Mdayofyear = Mdayofyear + 11
      Else
      Mdayofyear = Mdayofyear + 10
      End If

      Temp2 = Mdayofyear Mod 30
      Temp3 = Mdayofyear / 30

      If Temp2 = 0 Then
      Jmonth = Temp3 + 9
      Jday = 30
      Else
      Jmonth = Temp3 + 10
      Jday = Temp2
      End If

      Waitms 1

      End If
      Mdayofyear = 0

      دیدگاه


        #78
        پاسخ : سوال در مورد برنامه ساعت با DS1307

        این قسمت از برنامه ضمن تبدیل کار تشخیص سال کبیسه رو هم میده و توضیح اون هم اینجاست:

        http://www.eca.ir/forum2/index.php?topic=38492.75
        انا لله و انا الیه الراجعون

        دیدگاه


          #79
          پاسخ : سوال در مورد برنامه ساعت با DS1307

          نوشته اصلی توسط شاهین شرق
          این قسمت از برنامه ضمن تبدیل کار تشخیص سال کبیسه رو هم میده و توضیح اون هم اینجاست:

          http://www.eca.ir/forum2/index.php?topic=38492.75
          چرا بعد از محاسبه تعداد روزهای سال میلادی فعلی اون رو با عدد 79 مقایسه کرده :
          If Mdayofyear > 79 Then

          Temp1 = Mdayofyear - 79
          Jyear = Myear - 621

          If Temp1 < 186 Then

          دیدگاه


            #80
            پاسخ : سوال در مورد برنامه ساعت با DS1307


            نمیدونم !!
            فقط میدونم طبق یه الگوریتم پیش رفته !! نوشته شده هرکسی نوشته این برنامه رو خدا نگهش داره :agree:
            [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

            دیدگاه


              #81
              پاسخ : سوال در مورد برنامه ساعت با DS1307

              چه پاسخ دندان شکنی آقا حامد!!! :mrgreen:
              انا لله و انا الیه الراجعون

              دیدگاه


                #82
                پاسخ : سوال در مورد برنامه ساعت با DS1307

                خوب یه سوال دیگه چرا دو بار از دستور i2cstart استفاده میکنه :
                Ds1307:
                I2cstart ' Generate start code
                I2cwbyte Ds1307w ' send address
                I2cwbyte 0 ' start address in 1307
                I2cstart ' Generate start code


                I2cwbyte Ds1307r
                I2crbyte Seco , Ack
                I2crbyte Mine , Ack
                I2crbyte Hour , Ack
                I2crbyte Weekday , Ack
                I2crbyte Day , Ack
                I2crbyte Month , Ack
                I2crbyte Year , Nack
                I2cstop

                دیدگاه


                  #83
                  پاسخ : سوال در مورد برنامه ساعت با DS1307

                  با عرض پوزش یه سوال دیگه هم دارم . چرا اگه سال بزرگتر از 99 شد اون رو برابر 1 قرار میدیم یعنی بعد از سال 2099 بر میگرده به 2001 ؟ و چرا اگه این شرط برقرار بود به زیر برنامه seco پرش میکه ؟
                  If Seco > 59 Then Seco = 0
                  If Mine > 59 Then Mine = 0
                  If Hour > 23 Then Hour = 0
                  If Day > 31 Then Day = 1
                  If Month > 12 Then Month = 1
                  If Year > 99 Then
                  Year = 1
                  Gosub Seco

                  End If

                  Return

                  دیدگاه


                    #84
                    پاسخ : سوال در مورد برنامه ساعت با DS1307

                    :nerd:
                    سلام
                    این چیپ تا سال 2099 قابلیت ساپورت رو داره با توجه به اینکه نمیدونیم اگر به این قسمت از حافظه ds عددی بیشتر از 99 بدیم چه اتفاقی پیش میفته ؟!!
                    پس نمیزاریم این اتفاق بیفته !!
                    این زیر برنامه باعث نوشته شدن این عدد ها توی حافظه 1307 میشه همین
                    [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

                    دیدگاه


                      #85
                      پاسخ : سوال در مورد برنامه ساعت با DS1307

                      قبل از دریافت اطلاعات i2c باید استارت بشه هر بار هم این اتفاق میفته

                      خیلی وقت ها برنامه نویس ها از روی عادت سطر های از برنامه رو زیاد تکرار میکنن
                      البته با توجه به تجربه مزایای خیلی زیادی هم داره
                      int i2c
                      که اینجا استفاده نشده
                      int lcd
                      همگی دستوراتی هستند که هر چقدر بیشتر توی برنامه تکرار بشن خوبه
                      [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

                      دیدگاه


                        #86
                        پاسخ : سوال در مورد برنامه ساعت با DS1307

                        سلام بر دوستان دل انگیز :bye :bye :bye :bye :applause: :applause: :applause:
                        اخوی یه pdf دارم کلا برا برنامه ds1307 توضیح داده .خط به خط .امشب میذارم توهمین تاپیک بیا ببر خیرشو ببینی
                        یا به اندازه آرزوهایت تلاش میکنی یا به اندازه تلاشت ارزو میکنی

                        دیدگاه


                          #87
                          پاسخ : سوال در مورد برنامه ساعت با DS1307

                          نوشته اصلی توسط پراو
                          چرا بعد از محاسبه تعداد روزهای سال میلادی فعلی اون رو با عدد 79 مقایسه کرده :
                          خوب معلومه دیگه!از ابتدای سال میلادی تا ابتدای سال شمسی چند روز فاصله است؟
                          این برای اینه که بفهمه وارد سال جدید شمسی شده یا نه.ok?
                          پروردگارا: به من زیستنی عطا کن که در لحظه مرگ بر بی ثمری لحظه ای که برای زیستن گذشته است حسرت نخورم، و مردنی عطا کن که بر بیهودگیش سوگوار نباشم. بگذار تا آن را خود انتخاب کنم، اما آنچنان که تو دوست میداری

                          دیدگاه


                            #88
                            پاسخ : سوال در مورد برنامه ساعت با DS1307

                            دوستان
                            کسی میتونه کمک کنه این برنامه رو بر عکس کنیم ؟؟؟؟
                            یعنی شمسی به میلادی !!! :rolleyes:
                            روی سی هم خیلی راحت میشه نوشت البته من هنوزم با زبان سی کار نکردم !!
                            [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

                            دیدگاه


                              #89
                              پاسخ : سوال در مورد برنامه ساعت با DS1307

                              این زیر برنامه باعث نوشته شدن این عدد ها توی حافظه 1307 میشه همین
                              من هم میدونم که این عدد ها رو توی حافظه مینویسه فقط دلیلش رو خواستم بدونم چون ظاهرا زیر برنامه seco فقط برای این قسمت نوشته شده

                              دیدگاه


                                #90
                                پاسخ : سوال در مورد برنامه ساعت با DS1307

                                این قسمت از برنامه به چه دردی میخوره ظاهرا بود و نبودش فرقی نداره ؟
                                $lib "mcsbyteint.lbx"

                                دیدگاه

                                لطفا صبر کنید...
                                X