اطلاعیه

Collapse
No announcement yet.

1 شدن مجدد ورودی در بسکام...

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

    1 شدن مجدد ورودی در بسکام...

    سلام دوستان...
    تو یه قسمت سختی گیر کردم...چجوری میتونم یه دستوری بنویسم که اگه دوباره یه کلید فشارداده شد ، یه متغیر رو تغییر بده...مثلا واسه تغییر حالت یه فلاشر ساده..
    ممنون میشم....
    جدیدترین ویرایش توسط amir4elec; ۲۱:۰۰ ۱۳۹۵/۰۸/۱۲.

    #2
    پاسخ : 1 شدن مجدد ورودی در بسکام...

    میتونی یه متغییر تعریف کنی ، و داخل ساب روتین مربوط به دیبانس بیای افزایشش بدی ، بعد تو برنامه اصلی بیای با if چک کنی که اگه متغییر 2 شد ، بیا این کار رو بکن و همینجا دوباره متغییر رو صفر کنی.

    البته یه کار بهینه تر اگه فقط بخایی دوبار زده شده چک بشه ، میتونی از فلگ گذاری استفاده کنی. فعلا برای درک مسئله از همون روش اولی استفاده کنید ، تا یکم دید برنامه نویسیتون قوی تر شه.
    به سمت نور خورشید حرکت کن،تو میتونی تابش خورشید رو حس کنی ،حتی اگه کور باشی.
    (پیش به سوی هدف)

    دیدگاه


      #3
      پاسخ : 1 شدن مجدد ورودی در بسکام...

      ممنون از لطفاتون...ببینید این کد میتونه جواب بده....اینجا مثلا دو حالت فلاشر داریم...
      کد:
      Dim S As Byte
      S=1
      Do
      If PINB.0=1 Then
      Incr S
      End If
      If S<1 Then
      S=1
      End If
      If S>2 Then
      S=1
      End If
      
      Loop
      -------------
      برای دو حالت فلاشر هم حلقه while بزارم...اینطوری میشه؟؟؟
      کد:
      While S=1
      FLASHER 1
      Wend
      '-------
      While S=2
      FLASHER2
      Wend
      End
      ---------
      این پیشنهاد منه برا این کار ...این روش تقریبا مثل همونیه که شما گفتین متغییر رو تغییر بدیم ولی من از If استفاده کردم...ببینید این روش اصولیه؟؟؟ممنون میشم...
      جدیدترین ویرایش توسط amir4elec; ۱۰:۱۸ ۱۳۹۵/۰۸/۱۳.

      دیدگاه


        #4
        پاسخ : 1 شدن مجدد ورودی در بسکام...

        0
        نوشته اصلی توسط amir4elec نمایش پست ها
        ممنون از لطفاتون...ببینید این کد میتونه جواب بده....اینجا مثلا دو حالت فلاشر داریم...
        کد:
        Dim S As Byte
        S=1
        Do
        If PINB.0=1 Then
        Incr S
        End If
        If S<1 Then
        S=1
        End If
        If S>2 Then
        S=1
        End If
        
        Loop
        -------------
        برای دو حالت فلاشر هم حلقه while بزارم...اینطوری میشه؟؟؟
        کد:
        While S=1
        FLASHER 1
        Wend
        '-------
        While S=2
        FLASHER2
        Wend
        End
        ---------
        این پیشنهاد منه برا این کار ...این روش تقریبا مثل همونیه که شما گفتین متغییر رو تغییر بدیم ولی من از If استفاده کردم...ببینید این روش اصولیه؟؟؟ممنون میشم...
        1 - مگه قرار نیست شما بیاید از کلید خارجی استفاده کنید؟ اگه بله چرا از دستور debounce استفاده نمیکنید؟ اینجوری خطای کلید در مدارتون خوهی داشت، باعث تغییرات ناخاسته ای میشه. معمولا برای سنسورها از این نوع استفاده میکنن چون خطای فشرده شدن چندباره رو ندارن. اگه کلید خارجیه برنامه رو با الگوریتم دیبانس بنویسید.
        2 - اگه وارد while wend اول بشید دیگه هیچوقت خارج نمیشید، چون هیچ کاری برای تغییر s داخلش انجام ندادید.
        و علاوه بر اون اگه دوتا while wend بیرون از حلقه do loop نوشتین، اصلا اجرا نمیشن.

        هرچی کدتون رو خانا تر بنویسید اصولی تر خواهد بود.

        بجای بزرگتر کوچیکتر با تغییر الگوریتم از مساوی استفاده کنید.بهتر میتونین درکش کنین.
        موفق باشید.
        به سمت نور خورشید حرکت کن،تو میتونی تابش خورشید رو حس کنی ،حتی اگه کور باشی.
        (پیش به سوی هدف)

        دیدگاه


          #5
          پاسخ : 1 شدن مجدد ورودی در بسکام...

          ممنون میشم اگه یه کد ساده هم بگید...اینجوری متوجه نشدم..

          دیدگاه


            #6
            پاسخ : 1 شدن مجدد ورودی در بسکام...

            نوشته اصلی توسط amir4elec نمایش پست ها
            ممنون میشم اگه یه کد ساده هم بگید...اینجوری متوجه نشدم..
            دوسته عزیز در این کد اگه دوبار یه کلید زده شه ، در if مربوط به حلقه اصلی برنامه ، میتونید به هدفتون برسید.
            به خانایی برنامه دقت کنید ، که به راحتی میتونید همه قسمت های برنامه رو پیدا کنید ، حالا شما طبق ایده خودتون میتونید خانایی برنامه رو بالا ببرید ، من بیشتر سعی میکنم مثل سی برنامه بنویسم و شما هم سعی کنید تا خانایی برنامتون بالا بره ، تو کدهای زیاد متوجه این امر خواهی شد. خیلی مهمه.

            $regfile "m64def.dat"
            $crystal = 1000000

            Config Debounce = 30

            '______________here is moarefiye sub

            Declare Sub Press


            '--------here is config port

            Config Pinb.0 = Input : Pinb.0 Alias Kelid

            '_________here is out value

            Dim S As Byte

            '______________here is main code

            Do
            Debounce Kelid , 1 , Press , Sub

            If S = 1 Then
            S = 0
            'type your code mr amir4elec , age dobar kelid feshorde shode , in khat az kode ejra mishe.
            End If

            Loop

            '_____________here is press sub

            Sub Press
            Incr S
            'type your code mr amir4elec

            End Sub
            به سمت نور خورشید حرکت کن،تو میتونی تابش خورشید رو حس کنی ،حتی اگه کور باشی.
            (پیش به سوی هدف)

            دیدگاه


              #7
              پاسخ : 1 شدن مجدد ورودی در بسکام...

              واقعا ممنون از لطفتون حسین آقا...یه سوالیم دارم..بدجوری تو ذهنم گیر کرده....اونجا که دیبانس رو کانفیگ کردین ، معناش چیه؟؟؟

              دیدگاه


                #8
                پاسخ : 1 شدن مجدد ورودی در بسکام...

                نوشته اصلی توسط amir4elec نمایش پست ها
                واقعا ممنون از لطفتون حسین آقا...یه سوالیم دارم..بدجوری تو ذهنم گیر کرده....اونجا که دیبانس رو کانفیگ کردین ، معناش چیه؟؟؟
                خواهش میکنم دوسته عزیز.
                ببینید شما میتونید این کانفیگ و هم ننویسید و به طور پیش فرض خود کامپایلر اینو 25 میلی ثانیه قرار میده.
                منظورش اینه که مثلا اگه من بیام کلید و بزنم 30 میلی ثانیه منتظر میمونه تا من دستمو بردارم. این به این دلیله که در این 30 میلی ثانیه که دستم رو کلید هست ممکنه کلید قطع وصل شه، حالا اگه این قطع و وصل به برنامه انتقال داده بشه خوب شما یبار کلید و زد و انتظار تجرا ددن کد رو یبار داری، ولی چندبار اجرا میشه و برنامه صحیح کار نمیکنه.
                شما میتونید با اون دستور مقدار انتظار رو کم یا زیاد کنید.
                موفق باشید.
                به سمت نور خورشید حرکت کن،تو میتونی تابش خورشید رو حس کنی ،حتی اگه کور باشی.
                (پیش به سوی هدف)

                دیدگاه

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