اطلاعیه

Collapse
No announcement yet.

مشکل در برنامه نویسی با bascom

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

    مشکل در برنامه نویسی با bascom

    با سلام.من می خواهم در برنامه Bascom با 2 کلید بعنوان ورودی به دو خروجی فرمان بدهم بطوری که هر بار که هز کلید ی فشار داده می شود آن عمل مربوط به خروجی مربوطه رادوباره انجام دهد بطوزی که حتی اگر در دفعه قبلی کاز متوقف شده باشد
    من با دستور Debounce مقداری برنامه نوشته ام اما فقط همان بار اول که هر کدام ازکلید ها فشار داده میشود کار خواسته شده انجام میگیرد ولی در همان مرحله میماند.واگر باردوم وسوم و ... کلید فشار داده شوند مدار عکس العملی ندارد که دوبار کار خواسته شده را با اطلاعات جدید از نو آغاز کند(مدار در برنامه پروتوس زسم شده ومشکلی از نظر طزاحی ندارد )
    لطفا راهنمایی کنید

    #2
    پاسخ : مشکل در برنامه نویسی با bascom

    اگه شما می خوای مثلا با زدن یک کلید یک خروجی ست شود و با رها کردن وزدن همان کلید همان خروجی اینبار ریست شود .من برنامه زیر رو پیشنهاد میکنم (دستوری که شما فرمودی در بعضی از میکرو ها برای کامپایلر تعریف شده نیست )
    config porta.1=output
    config pina.2=input
    reset porta.1
    do
    if pina.2=1 then
    bitwait pina.2,reset
    waitms 50
    toggle porta.1
    end if
    loop
    روزی که درک کردیم همه چیز به خدا تعلق دارد . آن روز .روز طلوع دانش است

    دیدگاه


      #3
      پاسخ : مشکل در برنامه نویسی با bascom

      در این دستور چرا حلقه تکرار نمیشود.( من به portc.0 یک led وصل کردم که با این برنامه روشن وسپس خاموش شود . در صورتی که فقط یکبار روشن وسپس خاموش میشود واگر دوباره کلید pina.0 را بزنم این عمل تکرار نمیشود
      Do
      Debounce Pina.0 , 1 , Power1 , Sub
      Debounce Pina.1 , 1 , Play , Sub
      loop

      Power1:
      Cls
      Set Portc.0
      B = 0
      Lcd B
      Waitms 100
      Cls
      B = 1
      Reset Portc.0
      Lcd B
      return

      دیدگاه


        #4
        پاسخ : مشکل در برنامه نویسی با bascom

        .من مداری طراحی کردم که با چند کلید ورودی چند خروجی برایم چند کار خاص انجام دهند با این شرط که اگر درحین کار هر کدام از خروجی ها یکی از ورودی های مشخص دوباره زده شود سیستم دست ا زادامه فعالیت قبلی بردارد وکار این کلید خاص را انجام دهد.من با دستورdebounce این کار را انجام دادم ولی این کلید خاص فقط بار اول فعال میشود وخروجی اش ثابت میماند.وبا تکرار فشار دادن این کلید در زمان دیگری دوباره فعال نمیشود یا به اصطلاح ری استارت نمی کند
        لطفا اگر کسی متواند کمکم کند 4 روز بیشتر زمان ندارم

        دیدگاه


          #5
          پاسخ : مشکل در برنامه نویسی با bascom

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

          دیدگاه


            #6
            پاسخ : مشکل در برنامه نویسی با bascom

            با سلام وتشکر
            .
            .
            .


            Config Debounce = 30


            Do

            Debounce Pina.0 , 1 , Power1 , Sub

            Debounce Pina.2 , 1 , Spin , Sub

            Loop


            End

            Power1:
            Cls
            Set Portc.0
            B = 0
            Lcd B
            Waitms 100
            Cls
            B = 1
            Reset Portc.0
            Lcd B

            Return


            Spin:

            Set Portc.1
            Waitms 50
            If Pind.6 = 0 Then
            Set Portc.2

            Waitms 200
            Reset Portc.1
            Reset Portc.2
            Waitms 200
            Set Portc.1
            Set Portc.3
            Set Portc.2
            Waitms 200
            Reset Portc.2
            Reset Portc.3
            Waitms 200
            Set Portc.2
            Waitms 200
            Set Portc.4
            Waitms 500
            Reset Portc.4
            Waitms 50
            Set Portc.2
            Waitms 200
            Reset Portc.2
            Waitms 200
            Set Portc.3
            Set Portc.2
            Waitms 200
            Reset Portc.2
            Reset Portc.3
            Reset Portc.1

            Else
            Waitms 50
            Goto Spin
            End If

            Return
            ضمنا" این بخشی از چند کار است ولی اگر بشود با کمک شما دوستان ،بتوان این دو کلید را بطور دلخواه ((( یعنی اینکه پس از پایان کار محول شده به هر کلید دوباره بتوان آن را به کار برد ویا کار کلید دیگر را در خواست کرد ))) راه اندازی کرد مابقی را می توانم وارد کنم

            دیدگاه


              #7
              پاسخ : مشکل در برنامه نویسی با bascom

              خب این از برنامه که به فول خودت بخشی از برنامه هست و تا اونجای که من از برنامت فهمیدم شما با دستور دیبانس دوتا پین رو چک میکنی و برای هر کدوم یه کاری در نظر گرفتی ولی در مورد پین دوم وقتی در حال اجرای روتین مربوط به اون پین هست اگه یه پین یگه فشرده بشه یه کار های اضافه ای رو انجام میده
              اگه اشتباهی دارم بگو
              حالا یه توضیح کامل اولا از وظیفه مدارت بگو تا ببینیم این مدارت میخاد چیرو چیکار کنه اگه شماتیک هم بزاری تا بدونیم چید داری و چه میکرویی کار راحت تر هست
              یادت باشه تا توضیح کافی در ورد مشکل ندی کسی نمیتونه کمکت کنه چون هیچ کس پیشت نیست که مشکل رو از نزدیک ببینه و بگه چیککار کنی

              روزی که درک کردیم همه چیز به خدا تعلق دارد . آن روز .روز طلوع دانش است

              دیدگاه


                #8
                پاسخ : مشکل در برنامه نویسی با bascom

                سلام
                شما می تونی شرط بزاری اگر کلید زده شد
                برنامه پرش کنه به مکانه مربوطه خودش
                با goto یا rjmp

                دیدگاه


                  #9
                  پاسخ : مشکل در برنامه نویسی با bascom

                  با سلام. ببینید من مشکلی با کار انجام شده هر خروجی ندارم چون کار بطور صحیح طبق آنچه مد نظر من است انجام می دهد.مشکل من همانطور که توضیح دادم این است که بعد از پایان کار هر خروجی ،اگر دوباره پین مربو طه را فشار دهیم این بار هیچ عکس العملی صورت نمیگیرد در صورتی که انتظار دارم در یک چرخه مانند Do Loop این کار هرچقدر بخواهیم قابل تکرار باشد. من از GOTO و jmp هم استفاده کردم ولی نشد.این دوتا دستور را در هرکجا بکار میبرم کار میکنند ولی فقط در گرفتن دستور از طریق کلید این مشکل پیش می آید.

                  دیدگاه


                    #10
                    پاسخ : مشکل در برنامه نویسی با bascom

                    سلام
                    من مرنامه شما رو به طور کمل چک کردم
                    این مشکل زمانی میتونه اتفاق بیفته که شما شستی پین spin رو بزنید و موقع انجام کار مربوط به اون شستی پین d.6 صفر نشه در این صورت بعد از اجرای بخشی از برنامه وقتی میکرو وضعیت این پین رو چک میکنه و این پین هنوز 1 هست .بعد از یه تاخیر50 میلی ثانیه با دستور goto spin به لبل spin برمیگرده و این چرخه همینطور تکرار میشه و نمیتونه دستر برگشت رو ببینه و برگرده
                    روزی که درک کردیم همه چیز به خدا تعلق دارد . آن روز .روز طلوع دانش است

                    دیدگاه


                      #11
                      پاسخ : مشکل در برنامه نویسی با bascom

                      منم قبلا این مشکل رو داشتم
                      شما باید یه تاخیر در حد 200 میلی ثانیه بزاری
                      مثلا اگه فلان پایه 1 شد یا 0 صفر 200 میلی ثانیه تاخیر
                      بعد کارایی که می خوای انجام بده

                      دیدگاه


                        #12
                        پاسخ : مشکل در برنامه نویسی با bascom

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

                        دیدگاه


                          #13
                          پاسخ : مشکل در برنامه نویسی با bascom

                          سلام
                          شما باید ، هر لحظه مثلا هر 20میلی ثانیه پین های مورد نظر رو چک کنید ، و وقتی که کلیدی فشرده شده بره led رو روشن خاموش کنه و مشکل اساسیه دیگه ی شما اینجاس که مثلا می خواید led رو 2ثانیه روشن کنید و از دستور wait 2 استفاده میکنید ، اما باید به 200 قسمت 10میلی ثانیه تقسیم کنید و هر 10 میلی ثانیه باز بره کلیدها رو چک کنه و با شمارنده تا 200 مرتبه بشمره ، 2ثانیه روشن بودن le
                          وقتی گریبان عدم با دست خلقت می درید/وقتی ابد چشم تو را پیش از ازل می آفرید/وقتی زمین ناز تو را در آسمانها می کشید/وقتی عطش طعم تو را با اشکهایم می چشید/من عاشق چشمت شدم ، نه عقل بود و نه دلی/چیزی نمی دانم از این دیوانگی و عاقلی/یک آن شد این عاشق شدن ، دنیا همان یک لحظه بود/آن دم که چشمانت مرا از عمق چشمانت ربود/وقتی که من عاشق شدم شیطان به نامم سجده کرد/آدم زمینی تر شد و عالم به آدم سجده کرد /بودم و چشمان تو ، نه آتشی و نه گلی/چیزی نمی دانم از این دیوانگی و عاقلی/.

                          دیدگاه


                            #14
                            پاسخ : مشکل در برنامه نویسی با bascom

                            با سلام
                            شما یه لطفی بکن اون برنامه ها و شماتیک ی که در کتاب هست رو بزار تا یک بار هم ما چکش کنیم
                            در ضمن منم از اینترنت دانلود کردم ولی به خوبی کار میکنه
                            روزی که درک کردیم همه چیز به خدا تعلق دارد . آن روز .روز طلوع دانش است

                            دیدگاه


                              #15
                              پاسخ : مشکل در برنامه نویسی با bascom

                              سلام. من پروتوس را با7.6 sp4 عوض کردم و مدار را دوبار طراحی کردم .اینبار مشکل تکرار نکردن حل شد.ممنون از همفکری شما.حال یک سوال دیگه ؟؟!!!
                              فرض کنیم توسط یک کلید به میکرو فرمان دادیم چند کار را در خروجی های مختلف انجام دهد .حالا با یک کلید دیگر می خواهیم برنامه در هر جایی که هست توقف کند وبا فشار دادن دوبار برنامه ازجای که مکث کرده دوباره راه اندازی شود. درکل مانند کلید Play/Pause

                              دیدگاه

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