اطلاعیه

Collapse
No announcement yet.

ساختن ساعت

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

    پاسخ : ساختن ساعت

    [quote author=زوار link=topic=44026.msg259395#msg259395 date=1302926015]
    با سلام جواب گرفتید؟من آماده ام اگر مشکلی دارید کمک کنم
    [/صلی quote]دوست عزیز این تیکه از برنامه را ببین
    کد:
    Do
    
    
         Gosub Ds1307
         Gosub Keypad
    
    
    Loop
    
    '-------------------------------------------------------------------------------
     Ds1307:
     Locate 1 , 1 : Lcd "tarikh:" : Locate 1 , 8 : Lcd Date$
    Locate 2 , 1 : Lcd "time:" : Locate 2 , 8 : Lcd Time$
    Locate 3 , 2 : Lcd " enter year" :
    Gosub Getdatetime
     Return
    '-------------------------------------------------------------------------------
    Keypad:
    Gosub Get_key
    
    
    If Key = 10 Then
         Year = Year_1000 * 1000
         Temp_word = Year_100 * 100
         Year = Year + Temp_word
         Temp_word = Year_10 * 10
         Year = Year + Temp_word
         Year = Year + Year_1
         'If Year > 2000 And Year < 2050 Then Goto Mounth  'Exit Do
         If Year <= 2000 Or Year => 2050 Then
          Cls
          Lcd "  Year Error"
          Locate 2 , 1
          Lcd "Year=2001...2050"
          Wait 3
          Cls
          Lcd "Enter Year:"
          Locate 2 , 1
          Lcd Year
         End If
       End If
       If Key < 10 Then
         Year_1000 = Year_100
         Year_100 = Year_10
         Year_10 = Year_1
         Year_1 = Key
    
         Year = Year_1000 * 1000
         Temp_word = Year_100 * 100
         Year = Year + Temp_word
         Temp_word = Year_10 * 10
         Year = Year + Temp_word
         Year = Year + Year_1
    
         Cls
         Lcd "Enter Year:"
         Locate 2 , 1
         Lcd Year
    
       End If
        Cls
      Lcd "Enter Month:"
      Locate 2 , 1
      Lcd Month
      'Loop
    Return
    '------------------------------------------------------------------mounth-----
    Mounth:
    Key = Getkbd()
    If Key = 10 Then
         Month = Month_10 * 10
         Month = Month + Month_1
         'If Month > 1 And Month < 13 Then Exit Do
         If Month = 0 Or Month > 12 Then
          Cls
          Lcd "  Month Error"
          Locate 2 , 1
          Lcd "Month=1...12"
          Wait 3
          Cls
          Lcd "Enter Month:"
          Locate 2 , 1
          Lcd Month
         End If
       End If
       If Key < 10 Then
         Month_10 = Month_1
         Month_1 = Key
    
         Month = Month_10 * 10
         Month = Month + Month_1
    
         Cls
         Lcd "Enter Month:"
         Locate 2 , 1
         Lcd Month
       End If
    
      Cls
      Lcd "Enter Day:"
      Locate 2 , 1
      Lcd Day
      End
      '--------------------------
      Get_key:
      Key = Getkbd()
      Do
       Temp_byte = Getkbd()
      Loop Until Temp_byte <> 16
    
      Select Case Temp_byte
       Case 0
         Key = 1
       Case 1
         Key = 2
       Case 2
         Key = 3
       Case 3
         Key = 11
       Case 4
         Key = 4
       Case 5
         Key = 5
       Case 6
         Key = 6
       Case 7
         Key = 11
       Case 8
         Key = 7
       Case 9
         Key = 8
       Case 10
         Key = 9
       Case 11
         Key = 11
       Case 12
         Key = 11
       Case 13
         Key = 0
       Case 14
         Key = 11
       Case 15
         Key = 10
      End Select
      'Cls
    
      Do
       Temp_byte = Getkbd()
      Loop Until Temp_byte = 16
    
     Return
    '------------------------------------------------------------------------------
    
     Getdatetime:
     I2cstart
     I2cwbyte Ds1307w
     I2cwbyte 0
    
     I2cstart
     I2cwbyte Ds1307r
     I2crbyte _sec , Ack
     I2crbyte _min , Ack
     I2crbyte _hour , Ack
     I2crbyte Weekday , Ack
     I2crbyte _day , Ack
     I2crbyte _month , Ack
     I2crbyte _year , Nack
     I2cstop
     _sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour)
     _day = Makedec(_day) : _month = Makedec(_month) : _year = Makedec(_year)
    Return
    
    Setdate:
     _day = Makebcd(_day) : _month = Makebcd(_month) : _year = Makebcd(_year)
     I2cstart
     I2cwbyte Ds1307w
     I2cwbyte 4
     I2cwbyte _day
     I2cwbyte _month
     I2cwbyte _year
     I2cstop
    Return
    
    SetTime:
     _sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour)
     I2cstart
     I2cwbyte Ds1307w
     I2cwbyte 0
     I2cwbyte _sec
     I2cwbyte _min
     I2cwbyte _hour
     I2cstop
    Return

    دیدگاه


      پاسخ : ساختن ساعت

      توی این تیکه برنامه اکر من get_keyبردارم ساعت کار می کنه.اگر بر ندارم ساعت کار نمی کنه وفقط با صفحه کلید می تونم مقادیر اولیه ساعت تغییر بدم

      دیدگاه


        پاسخ : ساختن ساعت

        این الان برنامه خودته یا همونه که شاهین شرق نوشته؟الان مشکلت چیه؟

        دیدگاه


          پاسخ : ساختن ساعت

          دوستان عزیزز مشکل برنامه ام حل شد :wow: :wow: :wow: :wow:
          فقط یک سوال دارم اونم این است من یک پورت خالی بیشتر ندارم که برای lcd گذاشتم اونم پورتc هست هر کار می کنم حتی ساده ترین برنامه هم نشون نمیده می خواهم بدونم ایا پورتc برای lcd کار می کنه؟؟؟؟؟؟؟؟؟؟؟؟؟

          دیدگاه


            پاسخ : ساختن ساعت

            موقع پروگرم،فیوزبیت JTAG رو دیسیبل کن.
            بنده آن دمم که ساقی گوید
            یک جام دگر بگیر و من نتوانم

            دیدگاه


              پاسخ : ساختن ساعت

              من با هاتل کار نکردم ولی حتما یه قسمت فیوز بیت داره،اونجا دنبالJTAGبگردین و از حالت دیفالت خارج کنید.(اگه صفره بکنیدش 1)
              بنده آن دمم که ساقی گوید
              یک جام دگر بگیر و من نتوانم

              دیدگاه


                پاسخ : ساختن ساعت

                نوشته اصلی توسط ecm-tank
                موقع پروگرم،فیوزبیت JTAG رو دیسیبل کن.
                دوست گرامی ممنون از راهنمایتون :biggrin:.اما می گید از کجا باید دسیبل کنم ؟اخه من دانشجوی کامپیوترم این کارهایی ام که بهمون میگن مال درس آز ریز است الان پروگرامر من هاتل هست میگید از کجا باید من دسیبل کنم؟؟؟؟؟؟؟؟؟؟ :smile:ممنون

                دیدگاه


                  پاسخ : ساختن ساعت

                  نوشته اصلی توسط ecm-tank
                  من با هاتل کار نکردم ولی حتما یه قسمت فیوز بیت داره،اونجا دنبالJTAGبگردین و از حالت دیفالت خارج کنید.(اگه صفره بکنیدش 1)
                  ممنون دوست گرامی پیدا کردم و مقدارش را یک گذاشتم ولی بازهم کار نکرد من همه ی پایه را چند بار چک کردم یعنی این تیکه کد ساده را اصلا نشون نمیده
                  کد:
                   $regfile = "m32def.dat"
                   $crystal = 1000000
                   Config Lcd = 16 * 2
                   Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2
                  
                  
                   Cls                            
                  
                  Lcd "Hello world."                    
                  
                  Wait 1
                  
                  End

                  دیدگاه


                    پاسخ : ساختن ساعت

                    اکه JTAG دسیبل باشه و سیم بندی هم مشکلی نداشته باشه و LCD و میکور هم سالم باشه باید کار کنه.اگه کار نکرد حتما مشکل از برنامتون هست که در این صورت توصیه میکنم از HELP بسکام استفاده کنید.
                    بنده آن دمم که ساقی گوید
                    یک جام دگر بگیر و من نتوانم

                    دیدگاه


                      پاسخ : ساختن ساعت

                      نوشته اصلی توسط ecm-tank
                      اکه JTAG دسیبل باشه و سیم بندی هم مشکلی نداشته باشه و LCD و میکور هم سالم باشه باید کار کنه.اگه کار نکرد حتما مشکل از برنامتون هست که در این صورت توصیه میکنم از HELP بسکام استفاده کنید.
                      دوست گرامی من همه پورت های میکرو چک کردم :read: :read:برای lcdگذاشتم درست جواب داد به جز پورتc میکرو ام را عوض کردم فایده نداشت توی برنامه ی من فقط پورتcبیکار است که برای lcdگذاشتم. نمیتونم برنامه ام را تغییر بدممممممممممم کمکم می کنید اشکال کار کجاست؟؟؟؟؟؟؟؟؟؟؟؟؟ :angry: :angry: :angry:

                      دیدگاه


                        پاسخ : ساختن ساعت

                        سلام دوست عزیز این مشکل فقط میتونه برای jtag باشه اگر پروگرامرت هاتله تو سربرگهای بالا یه جا نوشته fuses وقتی بازش کردی تیک jtag را بردار و بعد در قسمت سمت چپ روی
                        program fuse کلیک کن بعد تست کن

                        دیدگاه


                          پاسخ : ساختن ساعت

                          نوشته اصلی توسط زوار
                          سلام دوست عزیز این مشکل فقط میتونه برای jtag باشه اگر پروگرامرت هاتله تو سربرگهای بالا یه جا نوشته fuses وقتی بازش کردی تیک jtag را بردار و بعد در قسمت سمت چپ روی
                          program fuse کلیک کن بعد تست کن
                          سلام دوست گرامی باشه الان چک می کنم خبرشو میدم من فکر میکردم بایدauto porogram زد :smile:

                          دیدگاه


                            پاسخ : ساختن ساعت

                            دوست عزیز من اول تیکjtagبرداشتم بعدprogram fuseزدم و بعد load bafer و سپسauto programفایده ای نداشت :cry:

                            دیدگاه


                              پاسخ : ساختن ساعت

                              همون مراحل را برو فقط خواستی پروگرم کنی auto program را نزن اول erase را بزن بعد program در آخر بر روی سربرگ fuses برو در قسمت پایین read from chip را بزن فیوز بیتهای پروگرم شده میکرو را بهت نشون میده باید jtag=1 باشه اگر بود یعنی درست انجام دادی منتظرم جواب بدی

                              دیدگاه


                                پاسخ : ساختن ساعت

                                نوشته اصلی توسط زوار
                                همون مراحل را برو فقط خواستی پروگرم کنی auto program را نزن اول erase را بزن بعد program در آخر بر روی سربرگ fuses برو در قسمت پایین read from chip را بزن فیوز بیتهای پروگرم شده میکرو را بهت نشون میده باید jtag=1 باشه اگر بود یعنی درست انجام دادی منتظرم جواب بدی
                                همین کاری که گفتی رو دوست عزیز انجام دادم فایده ای نداشت باور می کنی تو پورت های دیگه درست جواب میده ولی رو این پورت جواب نمیده :sad: :eek:

                                دیدگاه

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