اطلاعیه

Collapse
No announcement yet.

کار با تایمر در بیسکام

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

    کار با تایمر در بیسکام

    سلام
    توی اتمگا 8 a میخوام فاصله زمانی فشرده شدن بین 2 کلید را تشخیص بدم، یعنی وقتی کاربر کلید 1 را زد تایمر شروع به کار کنه و وقتی کلید 2 را زد تایمر استاپ بشه و مدت زمان بین استارت تا استاپ تایمر را بتونم بر حسب ثانیه بدست بیارم. کریستال خارجی ندارم و داخل میکرو هم از کریستال 4000000 استفاده می کنم.
    برای انجام این کار باید چکار کنم ؟! زمان زیاد لازم نیست دقیق باشه . حتی در حد 1 ثانیه هم خلافی داشته باشه موردی نداره فقط هدف اینه که فاصله زمانی بین فشرده شدن 2 کلید خیلی زیاد نشه

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

    سلام
    شما یه متغیر word تعریف کن ووقتی کلید دوم فشرده شد و تایمر رو استاپ کردی اونوقت متغیری رو که ساختی مثلا A رو برابر timer1 قرار بده و سپس مقدار A رو ضربدر prescale کن وبعد تقسیم بر فرکانست
    اونوقت زمان به ثانیه رو بدست میاری
    مثلا
    کد:
    config timer1=timer,prescale=1024
    enable timer1
    stop timer1
    do
    debounce key1,0,startt,sub
    debounce key2,0,stopt,sub
    
    lcd a
    loop
    end
    
    
    start:
    start timer1
    return
    
    stopt:
    stop timer1
    a=timer1
    a=a*1024
    a=a/4000000
    timer1=0
    cls
    return

    دیدگاه


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

      سلام
      متشکر
      تست کردم اما جواب نداد ، توی مدار هیچ lcd یا ارتباط سریالی ندارم که بتونم بفهمم مقدار A چند میشه اما با توجه به گفته شما مقدار A را ثانیه فرض کردم و توی برنامه شرط A بزرگتر از 3 نوشتم اما همیشه این شرط برقرار هست !

      دیدگاه


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

        سلام..مشکل از نوع متغیره چون تو برنامه تقسیم داریم پس نوع متغیر aرو single تعریف کنید والبته برنامه رو هم ویرایش کردم
        کد:
        
        
        
        $regfile = "m8adef.dat"
        $Crystal=4000000
        $hwstack=40
        $swstack=16
        $framesize = 32
        Config Portb.2 = Output
        Dim A As Single
        Config Pinb.0 = Input
        Key1 Alias Pinb.0
        Config Pinb.1 = Input
        Key2 Alias Pinb.1
        
        config timer1=timer,prescale=1024
        enable timer1
        Stop Timer1
        A = 0
        Timer1 = 0
        do
        debounce key1,0,startt,sub
        debounce key2,0,stopt,sub
        
        If A > 5 Then : Portb.2 = 1 : Else : Portb.2 = 0 : End If
        loop
        end
        
        
        Startt:
        start timer1
        return
        
        
        stopt:
        stop timer1
        a=timer1
        a=a*1024
        a=a/4000000
        Timer1 = 0
        return

        دیدگاه

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