اطلاعیه

Collapse
No announcement yet.

تایمر بسکام

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

    تایمر بسکام

    سلام دوستان
    من یک برنامه با تایمر1 نوشتم که با زدن کلید ال ای دی هر 20 ثانیه به مدت 5 ثانیه روشن می مونه و این حالت به مدت 2 ساعت اتفاق می افته . من زمان سرریز شدن رو می خوام یک ثانیه باشه ولی از محاسباتش سر در نمیارم همینجوری یک عدد دادم لطفا راهنمایی کنید . برنامه هم کار نمی کنه توی شبیه سازی . لطفا بگید مشکل از کجاست .

    $crystal = 8000000

    Config Timer2 = Timer , Prescale = 128

    Config Portd = Output
    Config Portb = Input

    Enable Interrupts
    On Timer2 Ovf1
    Enable Timer2

    Dim T As Byte
    Dim A As Byte
    Dim Saat As Long

    Do

    If Pinb.0 = 1 Then Start Timer2

    Loop

    End




    Ovf1:
    Incr T

    If T = 62 Then
    T = 0
    Incr A
    Incr Saat

    If Saat = 7200 Then Stop Timer2

    If A = 20 Then
    Set Pind.1
    End If

    If A = 25 Then
    Reset Pind.1
    A = 0

    End If
    End If
    Return

    #2
    پاسخ : تایمر بسکام

    سلام
    شما اگر یک ثانیه دقیق می خواهید بهتره از تایمر 2 و کریستال ساعت با پرس کال 128 استفاده کنید در این صورت تایمر دقیقا در هر یک ثانیه سرریز می شود
    موفق باشید

    دیدگاه


      #3
      پاسخ : تایمر بسکام

      برنامتون هم به این صورت تغییر بدید انشاالله که جواب میده
      کد:
      $regfile = "m16adef.dat"
      $crystal = 8000000
      
      Config Timer2 = Timer , Async = On , Prescale = 128
      
      Config Porta = Output
      Config Pinb.0 = Input
      
      Enable Interrupts
      Enable Ovf2
      Enable Timer2
      
      Dim T1 As Integer
      Dim T2 As Byte
      
      On Ovf2 Work
      
      Do
      
      If Pinb.0 = 1 Then Start Timer2
      
      Loop
      
      Work:
      
      Incr T1
      If T1 > 7200 Then
      Stop Timer2
      Timer2 = 0
      T1 = 0
      T2 = 0
      Return
      End If
      
      Incr T2
      
      If T2 < 6 Then
      Porta.0 = 1
      End If
      
      If T2 > 5 Then
      Porta.0 = 0
      End If
      
      If T2 = 26 Then T2 = 0
      
      return
      
      end 'end program
      و کریستال ساعت رو به پایه های tosc1 و tosc2 متصل کنید

      دیدگاه


        #4
        پاسخ : تایمر بسکام


        متشکرم ولی با کلید اصلا کار نمی کنه قبل از زدن کلید می ره رو تایمر :cry:

        دیدگاه


          #5
          پاسخ : تایمر بسکام

          سلام
          اون پایه ای از میکرو رو که کلید بهش وصله پول داون کردین (اتصال پایه با یک مقاومت 10K به gnd )

          دیدگاه


            #6
            پاسخ : تایمر بسکام

            بله ولی وقتی تو پروتیوس play می کنم می ره رو تایمر اصلا با کلید کاری نداره خواهشا کمک کنید چون کلید توی این برنامه خیلی مهمه .

            دیدگاه


              #7
              پاسخ : تایمر بسکام

              سلام دوباره
              من مشکلو پیدا و حل کردم تایمر 2 یک مقدار مشکل داشت برای همین از تایمر 1 استفاده کردم برنامه کاملا تست شده و همه چیز درسته
              کد:
              $regfile = "m16def.dat"
              $crystal = 1000000
              
              Config Timer1 = Timer , Prescale = 64
              
              Config Porta = Output
              
              
              Dim T1 As Integer
              Dim T2 As Byte
              Dim A As Integer
              
              Enable Interrupts
              Enable Ovf1
              Enable Timer1
              On Ovf1 Work
              Stop Timer1
              
              Timer1 = 49911
              
              Do
              
              If Pinb.0 = 1 Then Start Timer1
              
              Loop
              
              Work:
              
              Incr T1
              If T1 > 7200 Then
              Stop Timer1
              Timer1 = 49911
              T1 = 0
              T2 = 0
              Return
              End If
              
              Incr T2
              
              If T2 < 5 Then
              Porta.0 = 1
              End If
              
              If T2 > 5 Then
              Porta.0 = 0
              End If
              
              If T2 = 25 Then T2 = 0
              
              Timer1 = 49911
              
              Return
              
              end 'end program

              دیدگاه


                #8
                پاسخ : تایمر بسکام

                درست شد ! سپاسگزارم :rolleyes: :applause: :wow:

                دیدگاه


                  #9
                  پاسخ : تایمر بسکام

                  خدارو شکر خواهش میکنم
                  باز جای دیگه به مشکل خوردید در حد توانم در خدمتم من هم نتونم اساتید سایت کمکتون می کنند
                  موفق و پیروز باشید

                  دیدگاه

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