اطلاعیه

Collapse
No announcement yet.

مشکل با Timer0 در بسکام

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

    مشکل با Timer0 در بسکام

    سلام دوستان :biggrin:
    من یه برنامه کوچولو نوشتم که اونجوری که باید کار کنه کار نمیکنه :sad: :sad:
    کسی میدونه مشکل از چی هست؟ :nerd:

    کد:
    $regfile = "m8def.dat"
    $crystal = 8000000
    
    Config Timer0 = Timer , Prescale = 1
    Dim Direct As Bit
    Config Portb.0 = Output
    
    Enable Interrupts
    Enable Timer0
    On Timer0 Nader
    Timer0 = 108
    
    Do
    Loop
    
    End                             'end program
    Nader:
      If Direct = 0 Then
       Set Portb.0
       Direct = 1
      Else
       Reset Portb.0
       Direct = 0
      End If
    Return
    دنیا به قدری بزرگ است که برای همه جا هست به جای آنکه جای دیگران را بگیرید سعی کنید جای خود را بیابید.

    #2
    پاسخ : مشکل با Timer0 در بسکام

    سلام
    تایمرت استارت نداره
    چرا تو do-loop چیزی نیست/
    :nice: :read:

    رفيقان قدر يكديگر بدانيد چو معلوم است شرح از بر مخوانيد

    مقالات نصيحت گو همين است كه سنگ انداز هجران در كمين است

    دیدگاه


      #3
      پاسخ : مشکل با Timer0 در بسکام

      تایمر وقتی که پیکربندی میشه به صورت اتوماتیک استارت هم میشه
      نیازی نداشتم که توی حلقه چیزی اجرا کنه
      دنیا به قدری بزرگ است که برای همه جا هست به جای آنکه جای دیگران را بگیرید سعی کنید جای خود را بیابید.

      دیدگاه


        #4
        پاسخ : مشکل با Timer0 در بسکام

        اقا محمد ، شما فقط یک بار تایمر 0 رو مقدار دهی کردی در حالی که در هر 1 ثانیه8000000 بار مقدارش عوض میشه شما باید توی Nader: قبل از return یک Timer0 = 108 اضافه کنی

        دیدگاه


          #5
          پاسخ : مشکل با Timer0 در بسکام

          سلام
          همانطور که دوستمون گفتند شما باید در زیر برنامه وقفه مقدار تایمر را مقدار دهی کنید و در اول برنامه قبل از DO loop بهتره استارت تایمر هم بنویسید. همانطور که می دانید تایمر صفر 8 بیتی است و چون پیش تقسیم کننده prescaler را روی یک گذاشتید و فرکانس هم 8 مگا است پس هر 1 میکرو ثانیه یک واحد به مقدار تایمر اضافه میشود و تایمر وقتی به 255 برسد سریز اتفاق می افتد و برنامه وقفه اجرا خواهد شد. حالا وقتی از زیر برنامه ی وقفه خارج شود دو باره به do loop بر میگردد در حالی که تایمر از صفر شروع به کار میکند. پس باید در زیر برنامه وقفه مقدار تایمر رو مقداری دهی کنید.
          موفق باشید

          دیدگاه


            #6
            پاسخ : مشکل با Timer0 در بسکام

            چرا به جای
            If Direct = 0 Then
            Set Portb.0
            Direct = 1
            Else
            Reset Portb.0
            Direct = 0
            End If
            از toggle portb.0 استفاده نکردین؟؟

            دیدگاه


              #7
              پاسخ : مشکل با Timer0 در بسکام

              نوشته اصلی توسط amirparto
              چرا به جای
              If Direct = 0 Then
              Set Portb.0
              Direct = 1
              Else
              Reset Portb.0
              Direct = 0
              End If
              از toggle portb.0 استفاده نکردین؟؟
              چون شرط می خواد یعنی باید Direct = 0 باشه :rolleyes:

              دیدگاه

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