اطلاعیه

Collapse
No announcement yet.

چطور میتونم با تایمر/کانتر 0 شمارش نزولی انجام بدم؟

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

    چطور میتونم با تایمر/کانتر 0 شمارش نزولی انجام بدم؟

    سلام دوستان
    لطفا راهنمایی کنید چطور می تونم با تایمر /کانتر صفر یک شمارنده نزولی بسازم؟
    با تشکر

    #2
    پاسخ : چطور میتونم با تایمر/کانتر 0 شمارش نزولی انجام بدم؟

    تا اونجایی که من میدونم با دادن هر پالس به کانتر صفر یکی اضافه میکنه.

    برای این کار میتونی یه متغییر از نوع بایت درست کنی و با آمدن هر پالس مقدار کانتر (یکی اضافه میشه)رو از 255 کم کنی و داخل اون متغییر بریزی.

    یا میتونی یه متغییر از نوع بایت درست کنی و با 255 پر کنی و پالس رو به یکی از پین ها وصل کنی و دائما اونو تست کنی هر موقع 0 یا 1 شد یکی از متغییر کم کنی. (ربطی به کانتر صفر نداره.)
    راه های دیگه هم هست.
    www.icesi.ir

    دیدگاه


      #3
      پاسخ : چطور میتونم با تایمر/کانتر 0 شمارش نزولی انجام بدم؟

      با تشکر از شما دوست عزیز
      فرض کنید در حالت صعودی تا 50 شمردم و حالا می خواهم نزولی بشمارم . یعنی به غیر از Pinb.0 که برای شمارش استفاده می کنم از Pinb.6 برای اعلام وضعیت شمارش صعودی و از Pinb.7 برای اعلام وضعیت نزولی استفاده می کنم . حالا اگر با اتصال Pinb.6 به صفر من در مود صعودی با دادن 50 سیگنال به Pinb.0 تا 50 شمردم و می خواهم Pinb.6 را غیر فعال کنم و Pinb.7 را به صفر وصل کنم که بتونم در حالت نزولی با دادن پالس به Pinb.0 بشمارم . آیا می تونم هر دفعه یکی از TCNT0 کم کنم یا را حل بهتری هم وجود داره؟
      با تشکر

      دیدگاه


        #4
        پاسخ : چطور میتونم با تایمر/کانتر 0 شمارش نزولی انجام بدم؟

        سلام.

        من دقیقا متوجه منظورت نشدم. برای چی هست؟

        به نظر من بهتره از تایمر و کانتر ها استفاده نکنی چون بحث مود بندی اومد جلو البته میشه کار کرد ولی یه خورده برنامه نویسیت پیچیده میشه.

        دو تا پین ورودی داری که این دو مد هارو انتخاب میکنه.
        برای این کار از دستور if استفاده کن
        Do
        If Pinb.6 = 0 Then Gosub Loop1
        If Pinb.7 = 0 Then Gosub Loop2
        Loop

        Loop1:
        Do
        If Pinb.0 = 0 Then
        Incr Milad
        Test : If Pinb.0 = 0 Jmp Test
        End If

        Loop

        Loop2:
        Do
        If Pinb.0 = 0 Then
        Decr Milad
        Test1 : If Pinb.0 = 0 Jmp Test1
        End If

        Loop



        www.icesi.ir

        دیدگاه

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