اطلاعیه

Collapse
No announcement yet.

کد دستوری بجای Debounce

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

    #16
    پاسخ : کد دستوری بجای Debounce

    نوشته اصلی توسط tifoos
    منم با نظر آراسته موافقم و چیزی که ایشون گفتن بهتره
    فقط برا اینکه چک کنی چند مدت کلید نگه داشته شده حتما باید از وقفه تایمر استفاده کنی !
    میشه برنامه رو اگه میدونین کامل واسم بذارین ؟
    رفیـق نیازموده را یار مدار

    دیدگاه


      #17
      پاسخ : کد دستوری بجای Debounce

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

      اگه توضیحات ناقصه یا متوجه نشدید بگید تا بیشتر توضیح بدم. برای درک مسئله پیشنهاد می کنم یه بار با متغیر کمکی و یه بار بدون متغییر کمکی برنامه رو تست کنید در این صورت عملکرد متغییر رو به درستی متوجه میشید.
      چرا ناراحتی پاتریک!
      + امروز ی بچه دیدم سرچهارراه گل میفروخت
      - از دیدنش ناراحت شدی؟
      + نه
      پس چی ناراحتت کرده
      + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
      ------------------------------------------------------------------------------------------------------
      تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
      ------------------------------------------------------------------------------------------------------
      محصولات

      دیدگاه


        #18
        پاسخ : کد دستوری بجای Debounce

        فکر میکنم آقا امین برنامه بسکام رو میخوان

        دیدگاه


          #19
          پاسخ : کد دستوری بجای Debounce

          با 2 تا bitwait متوالی و ی وقفه ی کوچیک ب مقدار مطلوب کارت راه میافته فک کنم. (شاید) (الان شک کردم ولی :-?? )
          ...

          دیدگاه


            #20
            پاسخ : کد دستوری بجای Debounce

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

            اگه توضیحات ناقصه یا متوجه نشدید بگید تا بیشتر توضیح بدم. برای درک مسئله پیشنهاد می کنم یه بار با متغیر کمکی و یه بار بدون متغییر کمکی برنامه رو تست کنید در این صورت عملکرد متغییر رو به درستی متوجه میشید.
            آقای آراسته این برنامه ای که نوشتم ببین خوبه :
            Config Porta = Input
            Dim A As Word
            Cursor On
            Do
            If Pina.1 = 0 Then Incr A
            If A > 6000 Then ' baraye ejade takhir hodoode 2 sanie
            Locate 1 , 1 : Lcd "amin"
            If Pina.1 = 1 Then A = 0
            Cls
            End If
            Loop
            رفیـق نیازموده را یار مدار

            دیدگاه


              #21
              پاسخ : کد دستوری بجای Debounce

              نوشته اصلی توسط سایمون
              فکر میکنم آقا امین برنامه بسکام رو میخوان
              :دی آره سایمون جان دقیقا همینه که میگی اگه کسی برنامه ذو میدونه واسم بذاره
              رفیـق نیازموده را یار مدار

              دیدگاه


                #22
                پاسخ : کد دستوری بجای Debounce

                نقل قول از: سوران آراسته در دیروز ساعت 12:40:46 pm
                سلام
                به خاطر تاخیری که داشتم عذر می خوام.
                توضیحات برنامه:
                ببینید من یه متغیر کمکی تعریف کردم که با هربار فشار کلید مقدار متغیر کمکی هم چک شود. اگر کلید فشار داده شد و مقدار متغیر هم صفر بود در نتیجه شرط درست بوده و وارد روال شرط می شود. در اولین قدم ورود به شرط مقدار متغییر به یک تغییر می کند و به این ترتیب دیباونس کلید رفع خواهد شد. در نهایت با برداشتن دست از روی کلید و یک شدن مجدد پین و نیز یک بودن متغیر کمکی مقدار متغییر به صفر برگشته تا کلید برای تغییرات بعدی مجددا آماده شود.

                اگه توضیحات ناقصه یا متوجه نشدید بگید تا بیشتر توضیح بدم. برای درک مسئله پیشنهاد می کنم یه بار با متغیر کمکی و یه بار بدون متغییر کمکی برنامه رو تست کنید در این صورت عملکرد متغییر رو به درستی متوجه میشید.
                آقای آراسته این برنامه ای که نوشتم ببین خوبه :
                Config Porta = Input
                Dim A As Word
                Cursor On
                Do
                If Pina.1 = 0 Then Incr A
                If A > 6000 Then ' baraye ejade takhir hodoode 2 sanie
                Locate 1 , 1 : Lcd "amin"
                If Pina.1 = 1 Then A = 0
                Cls
                End If
                Loop
                اینو بنویسی میکروت میره تو کُما :دی

                2 تا وقفه هم میخواد، بدین صورت:
                ولی بایس ی نیگا بش بندازی بازم.

                کد:
                Config PortA = Input
                Dim A As Byte
                Cursor On
                Do
                waitus 30
                If PinA.1 = 0 Then
                waitms 100
                Incr A
                
                If A > 20 Then '2 second interopt =100m*20
                cls
                Locate 1 , 1 : Lcd "amin"
                End If
                End If
                
                If Pina.1 = 1 Then
                A=0
                cls
                End If
                loop
                با ی حلقه و bitwait ولی بهتر شاید بشه نوشتش... (الان حوصله ش نیس)
                اون شزطی که نوشتی برا چک کردن حلقه هم شاید کار نکنه در عمل :( شایدم کار کنه.

                دیدگاه


                  #23
                  پاسخ : کد دستوری بجای Debounce

                  بفرمایید اینم کد برنامه:
                  کد:
                  $regfile = "m16def.dat"
                  $crystal = 8000000
                  Config Porta = Output
                  Config Portb = Input
                  Porta = &H00
                  Portb = &HFF
                  '----------------------------
                  Dim X As Bit
                  Dim Y As Byte
                  X = 0
                  Y = 0
                  '----------------------------
                  Do
                  If Pinb.0 = 0 And X = 0 Then
                    X = 1
                    Y = Y + 1
                    Porta = Y
                  End If
                  If Pinb.0 = 1 And X = 1 Then X = 0
                  Loop
                  End                             'end program
                  چرا ناراحتی پاتریک!
                  + امروز ی بچه دیدم سرچهارراه گل میفروخت
                  - از دیدنش ناراحت شدی؟
                  + نه
                  پس چی ناراحتت کرده
                  + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
                  ------------------------------------------------------------------------------------------------------
                  تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
                  ------------------------------------------------------------------------------------------------------
                  محصولات

                  دیدگاه


                    #24
                    پاسخ : کد دستوری بجای Debounce

                    کد:
                    Config PortA = Input
                    Dim A As Byte
                    Cursor On
                    Do
                    waitus 30
                    If PinA.1 = 0 Then
                    waitms 100
                    Incr A
                    
                    If A > 20 Then '2 second interopt =100m*20
                    cls
                    Locate 1 , 1 : Lcd "amin"
                    End If
                    End If
                    
                    If Pina.1 = 1 Then
                    A=0
                    cls
                    End If
                    loop
                    مرسی متشکرم ولی چرا گفتی با اوم برنامه قبلی میکرو میره تو کما ؟؟
                    رفیـق نیازموده را یار مدار

                    دیدگاه


                      #25
                      پاسخ : کد دستوری بجای Debounce

                      نوشته اصلی توسط سوران آراسته
                      بفرمایید اینم کد برنامه:
                      کد:
                      $regfile = "m16def.dat"
                      $crystal = 8000000
                      Config Porta = Output
                      Config Portb = Input
                      Porta = &H00
                      Portb = &HFF
                      '----------------------------
                      Dim X As Bit
                      Dim Y As Byte
                      X = 0
                      Y = 0
                      '----------------------------
                      Do
                      If Pinb.0 = 0 And X = 0 Then
                        X = 1
                        Y = Y + 1
                        Porta = Y
                      End If
                      If Pinb.0 = 1 And X = 1 Then X = 0
                      Loop
                      End                             'end program
                      متشکرم جناب آراسته
                      رفیـق نیازموده را یار مدار

                      دیدگاه

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