اطلاعیه

Collapse
No announcement yet.

مشکل در دستور debounce

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

    مشکل در دستور debounce

    سلام
    من این برنامه رو نوشتم:
    $regfile = "m8def.dat"
    $crystal = 1000000
    config portb = output
    config portc = input
    config portd = output
    config DEBOUNCE=50
    dim a as byte
    do
    SET PORTB.1
    debounce pinc.1,1,q
    portd=a
    loop
    q:
    incr a
    jmp
    وقتی تو پروتئوس شبیه سازی میکنم کار نمیکنه
    تو بهترین حالت سون سگمنت فقط 1 رو نشون میده
    اگه این طوری بنویسم:
    $regfile = "m8def.dat"
    $crystal = 1000000
    config portb = output
    config portc = input
    config portd = output
    config DEBOUNCE=50
    dim a as byte
    do
    SET PORTB.1
    portd=a
    debounce pinc.1,1,q
    loop
    q:
    incr a
    portd=a
    jmp
    وقتی از زیر برنامه خارج میشه دوباره 0 رو نشون میده
    یعنی با هر بار خارج شدن از این زیر برنامه،متغیر 0 میشه
    مشکل چیه؟

    #2
    پاسخ : مشکل در دستور debounce

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

    دیدگاه


      #3
      پاسخ : مشکل در دستور debounce

      مدار درسته
      با همین مدار یه ساعت ساختم،کار میکرد

      دیدگاه


        #4
        پاسخ : مشکل در دستور debounce

        میخاید این مدار چه کاری براتون انجام بده؟

        دیدگاه


          #5
          پاسخ : مشکل در دستور debounce

          فعلا هیچی
          ولی بعدا تو همون ساعته ازش میخوام استفاده بکنم

          دیدگاه


            #6
            پاسخ : مشکل در دستور debounce

            سلام
            منم با debounce مشکل دارم یا اصلا با کلید
            یه برنامه خیلی ساده نوشتم یه شمارنده هر دفعه که کلید رو فشار میدی 1 عدد به متغییر اضافه میشه روی lcd هم نشون میده
            گیر من اینجاست که اگه کلید رو به 5 ولت وصل کنم فقط یه بار کار میکنه یعنی فقط تا 1 میشماره دیگه هر چقدر کلید رو بزنی هیچ کاری نمیکنه ولی حالا اگه کلید رو به زمین وصل کنم همه چیز درست میشه .
            آیا این باگ نرم افزاری بسکامه یا پروتیوس یا اگه باگ نیست یعنی توو واقیعت هم همینجوری میشه (سخت افزار )
            این برنامه :
            Config Porta = Output
            Config Pinb.0 = Input
            Dim A As Byte
            A = 0
            Ali:
            Cls
            Lcd A
            Do
            Debounce Pinb.0 , 1 , Good
            Loop
            End
            Good:
            Incr A
            Toggle Porta.0
            Goto Ali
            اینم عکس مدار
            جدیدترین ویرایش توسط mosi_reali; ۱۹:۰۳ ۱۳۹۶/۱۰/۲۰.
            بازم خدا رو شکر ...

            دیدگاه


              #7
              پاسخ : مشکل در دستور debounce

              .....

              دلیل: ادغام دو پست برای جلوگیری از اسپم

              نوشته اصلی توسط mosi_reali نمایش پست ها
              سلام
              منم با debounce مشکل دارم یا اصلا با کلید
              یه برنامه خیلی ساده نوشتم یه شمارنده هر دفعه که کلید رو فشار میدی 1 عدد به متغییر اضافه میشه روی lcd هم نشون میده
              گیر من اینجاست که اگه کلید رو به 5 ولت وصل کنم فقط یه بار کار میکنه یعنی فقط تا 1 میشماره دیگه هر چقدر کلید رو بزنی هیچ کاری نمیکنه ولی حالا اگه کلید رو به زمین وصل کنم همه چیز درست میشه .
              آیا این باگ نرم افزاری بسکامه یا پروتیوس یا اگه باگ نیست یعنی توو واقیعت هم همینجوری میشه (سخت افزار )
              این برنامه :
              نباید بزاری پینی که به کلید وصل هست هنگام باز بودن کلید آزاد بمونه. یعنی باید تکلیف اون پین رو مشخص کنی. یا صفر باید باشه یا یک. الان وقتی که کلید وصل نیست آیا میدونی وضعیت پین چیه ؟؟؟
              خوب اینجا با وصل کلید صفر منطقی میگیره پین. با قطع کلید باید یک منطقی بگیره کلید. و برای اینکار یه مقاومت 10 کیلو بگیر یسرشو وصل کن به پین سر دیگشو وصل کن به 5 ولت . مشکلت حل میشه.
              تو این مدار برای کد
              Debounce Pinb.0 , 1 , Gooz
              جای یک بنویس 0.
              به سمت نور خورشيد حرکت کن،تو ميتوني تابش خورشيد رو حس کني ،حتي اگه کور باشي.
              (پيش به سوي هدف)

              دیدگاه

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