اطلاعیه

Collapse
No announcement yet.

خارج شدن از حلقه do-loop پر از تاخیر(کنترلر rgb)

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

    خارج شدن از حلقه do-loop پر از تاخیر(کنترلر rgb)

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

    #2
    پاسخ : خارج شدن از حلقه do-loop پر از تاخیر

    goto: up;

    up:


    روشش یه چیز تو این مایه هاس
    ======================
    break;
    اللَّهُمَّ صَلِّ عَلَى مُحَمَّدٍ وآلِ مُحَمَّدٍ وعَجِّلْ فَرَجَهُمْ

    اگه دوس دارید سریع به جواب برسید :
    1) قبل از پرسیدن سوال، بسرچید.
    2) سوالاتون رو با جزئیات کامل مطرح کنید.

    دیدگاه


      #3
      پاسخ : خارج شدن از حلقه do-loop پر از تاخیر

      نوشته اصلی توسط md3848
      goto: up;

      up:


      روشش یه چیز تو این مایه هاس
      ======================
      break;
      مینویسم break ولی میگه دستورو نمیشناسه
      راستی به زبان بیسیکه
      از دستور exit do هم استفاده کردم ولی باید توی خود اون حلقه باشه

      دیدگاه


        #4
        پاسخ : خارج شدن از حلقه do-loop پر از تاخیر

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

        [code=c]
        do
        waitms 500
        if enter=0 then exit do
        loop
        .
        .
        .
        برنامه که بعد از حلقه قراره اجرا بشه
        .
        .
        .
        .
        [/code]

        یا می تونی از روش بالا هم استفاده کنی که دوستمون گفتند
        برد جوجه کشی:
        مطالعه پست 1 (حتما مطالعه کنید)


        مطالعه پست 2 (برای مطلع شدن از تغییرات برنامه مطالعه کنید)

        دانلود

        توجه:
        این برد نیمه صنعتی و خانگی هست...
        برای صنعتی شدن حتما برد مخصوص خودتون رو بزنید...

        آی دی کانال تلگرامی مربوط به برد جوجه کشی : electr0o0nic@

        دیدگاه


          #5
          پاسخ : خارج شدن از حلقه do-loop پر از تاخیر

          نوشته اصلی توسط mohammad...
          اینم یه روش دیگه هست البته تو بسکام

          [code=c]
          do
          waitms 500
          if enter=0 then exit do
          loop
          .
          .
          .
          برنامه که بعد از حلقه قراره اجرا بشه
          .
          .
          .
          .
          [/code]

          یا می تونی از روش بالا هم استفاده کنی که دوستمون گفتند
          الان من اگه از این استفاده کنم توی هر لحظه که باشه خارج میشه؟؟
          اخه فقط یدونه wait نداره چند تا داره...همش تو تاخیره :biggrin:

          دیدگاه


            #6
            پاسخ : خارج شدن از حلقه do-loop پر از تاخیر

            نوشته اصلی توسط zoheyr79
            الان من اگه از این استفاده کنم توی هر لحظه که باشه خارج میشه؟؟
            اخه فقط یدونه wait نداره چند تا داره...همش تو تاخیره :biggrin:
            کمی از برنامه خودتون رو بزارید تا بهتر کمک کنیم

            دیدگاه


              #7
              پاسخ : خارج شدن از حلقه do-loop پر از تاخیر

              نوشته اصلی توسط RahimEdison
              کمی از برنامه خودتون رو بزارید تا بهتر کمک کنیم
              برنامه کنترلر rgb با چند تا افکت هست
              فقط لطفا جواب بدیدا حالا هرچی خواستین بگین (نمیدونم چرا هر وقت برنامرو نشون میدم همه اینطوری میشن ) :mrgreen:

              اینم کد:
              [code=qbasic]
              $regfile = "m8def.dat"
              $crystal = 8000000
              '________________________________ADC & PWM______________________________________
              Config Adc = Single , Prescaler = Auto , Reference = Avcc

              Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1
              Config Timer2 = Pwm , Pwm = On , Compare Pwm = Clear Up , Prescale = 1
              '________________________________Variables___ ___________________________________
              Dim R As Word
              Dim G As Word
              Dim B As Word
              '____________________________________________ ___________________________________
              Config Int0 = Falling
              On Int0 _int0
              Enable Int0
              Enable Interrupts

              Dim A As Byte


              Do
              Waitms 200
              A:

              Start Adc
              R = Getadc(0)
              G = Getadc(1)
              B = Getadc(2)
              R = R / 3.99
              G = G / 3.99
              B = B / 3.99

              Pwm1a = G
              Pwm1b = B
              Ocr2 = R

              Goto A
              '=================
              B:
              Pwm1a = G
              Pwm1b = B
              Ocr2 = R
              G = 0
              B = 0
              R = 255
              Wait 1
              Pwm1a = G
              Pwm1b = B
              Ocr2 = R
              G = 60
              R = 255
              B = 0
              Wait 1
              Pwm1a = G
              Pwm1b = B
              Ocr2 = R
              G = 255
              R = 255
              B = 0
              Wait 1
              Pwm1a = G
              Pwm1b = B
              Ocr2 = R
              G = 255
              R = 0
              B = 0
              Wait 1
              Pwm1a = G
              Pwm1b = B
              Ocr2 = R
              G = 255
              B = 15
              R = 0
              Wait 1
              Pwm1a = G
              Pwm1b = B
              Ocr2 = R
              R = 255
              B = 50
              G = 0
              Wait 1
              Pwm1a = G
              Pwm1b = B
              Ocr2 = R
              R = 100
              B = 110
              G = 0
              Wait 1
              Pwm1a = G
              Pwm1b = B
              Ocr2 = R
              B = 255
              R = 0
              G = 0
              Wait 1
              Pwm1a = G
              Pwm1b = B
              Ocr2 = R
              R = 255
              G = 255
              B = 255
              Wait 1

              Goto B
              '=================
              C:

              R = 100
              G = 0
              B = 0
              Do
              Pwm1a = G
              Pwm1b = B
              Ocr2 = R
              Decr R
              Incr G
              Waitms 15
              Loop Until G = 100

              R = 0
              G = 100
              B = 0
              Do
              Pwm1a = G
              Pwm1b = B
              Ocr2 = R
              Decr G
              Incr B
              Waitms 15
              Loop Until B = 100


              R = 0
              G = 0
              B = 100
              Do
              Pwm1a = G
              Pwm1b = B
              Ocr2 = R
              Decr B
              Incr R
              Waitms 15
              Loop Until R = 100

              Goto C
              '=================
              Loop
              End


              _int0:
              Incr A
              Waitms 25
              If A = 3 Then A = 0
              If A = 0 Then Goto A
              If A = 1 Then Goto B
              If A = 2 Then Goto C
              Return
              [/code]

              دیدگاه


                #8
                پاسخ : خارج شدن از حلقه do-loop پر از تاخیر

                نوشته اصلی توسط zoheyr79
                فقط لطفا جواب بدیدا حالا هرچی خواستین بگین (نمیدونم چرا هر وقت برنامرو نشون میدم همه اینطوری میشن ) :mrgreen:

                اینم کد:
                [code=qbasic]
                $regfile = "m8def.dat"
                $crystal = 8000000
                '________________________________ADC & PWM______________________________________
                Config Adc = Single , Prescaler = Auto , Reference = Avcc

                Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1
                Config Timer2 = Pwm , Pwm = On , Compare Pwm = Clear Up , Prescale = 1
                '________________________________Variables___ ___________________________________
                Dim R As Word
                Dim G As Word
                Dim B As Word
                '____________________________________________ ___________________________________
                Config Int0 = Falling
                On Int0 _int0
                Enable Int0
                Enable Interrupts

                Dim A As Byte


                Do
                Waitms 200
                A:

                Start Adc
                R = Getadc(0)
                G = Getadc(1)
                B = Getadc(2)
                R = R / 3.99
                G = G / 3.99
                B = B / 3.99

                Pwm1a = G
                Pwm1b = B
                Ocr2 = R

                Goto A
                '=================
                B:
                Pwm1a = G
                Pwm1b = B
                Ocr2 = R
                G = 0
                B = 0
                R = 255
                Wait 1
                Pwm1a = G
                Pwm1b = B
                Ocr2 = R
                G = 60
                R = 255
                B = 0
                Wait 1
                Pwm1a = G
                Pwm1b = B
                Ocr2 = R
                G = 255
                R = 255
                B = 0
                Wait 1
                Pwm1a = G
                Pwm1b = B
                Ocr2 = R
                G = 255
                R = 0
                B = 0
                Wait 1
                Pwm1a = G
                Pwm1b = B
                Ocr2 = R
                G = 255
                B = 15
                R = 0
                Wait 1
                Pwm1a = G
                Pwm1b = B
                Ocr2 = R
                R = 255
                B = 50
                G = 0
                Wait 1
                Pwm1a = G
                Pwm1b = B
                Ocr2 = R
                R = 100
                B = 110
                G = 0
                Wait 1
                Pwm1a = G
                Pwm1b = B
                Ocr2 = R
                B = 255
                R = 0
                G = 0
                Wait 1
                Pwm1a = G
                Pwm1b = B
                Ocr2 = R
                R = 255
                G = 255
                B = 255
                Wait 1

                Goto B
                '=================
                C:

                R = 100
                G = 0
                B = 0
                Do
                Pwm1a = G
                Pwm1b = B
                Ocr2 = R
                Decr R
                Incr G
                Waitms 15
                Loop Until G = 100

                R = 0
                G = 100
                B = 0
                Do
                Pwm1a = G
                Pwm1b = B
                Ocr2 = R
                Decr G
                Incr B
                Waitms 15
                Loop Until B = 100


                R = 0
                G = 0
                B = 100
                Do
                Pwm1a = G
                Pwm1b = B
                Ocr2 = R
                Decr B
                Incr R
                Waitms 15
                Loop Until R = 100

                Goto C
                '=================
                Loop
                End


                _int0:
                Incr A
                Waitms 25
                If A = 3 Then A = 0
                If A = 0 Then Goto A
                If A = 1 Then Goto B
                If A = 2 Then Goto C
                Return
                [/code]
                خوب می خوای دقیقا از کدوم حلقه در بیاد و به کجا بره ما که به جز چند تا کلید که به اینتراپت وصلند کلیدی ندیدیم
                دقیقا بگو تا اگر تونستیم راهنمایی کنیم
                برد جوجه کشی:
                مطالعه پست 1 (حتما مطالعه کنید)


                مطالعه پست 2 (برای مطلع شدن از تغییرات برنامه مطالعه کنید)

                دانلود

                توجه:
                این برد نیمه صنعتی و خانگی هست...
                برای صنعتی شدن حتما برد مخصوص خودتون رو بزنید...

                آی دی کانال تلگرامی مربوط به برد جوجه کشی : electr0o0nic@

                دیدگاه


                  #9
                  پاسخ : خارج شدن از حلقه do-loop پر از تاخیر

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

                  حلقه هام به این صورتن:


                  do

                  a:
                  .
                  .
                  .
                  .
                  goto a

                  b:
                  .
                  .
                  .
                  goto b

                  c:
                  .
                  .
                  .
                  .
                  goto c

                  loop end

                  منم میخوام هر بار که کلید رو میزنم از حلقه a به b بره دوباره بزنم بره بخش c دوباره بزنم بره a
                  مشکلش اینه که تا حلقه b و c تموم نشن از حلقه خارحج نمیشه بخاطر وجود تاخیر

                  دیدگاه


                    #10
                    پاسخ : خارج شدن از حلقه do-loop پر از تاخیر

                    نوشته اصلی توسط zoheyr79
                    ببینید کلا یک کلید بیشتر نداره
                    حالا میخوام با این کلید افکت اون تغییر کنه

                    حلقه هام به این صورتن:


                    do

                    a:
                    .
                    .
                    .
                    .
                    goto a

                    b:
                    .
                    .
                    .
                    goto b

                    c:
                    .
                    .
                    .
                    .
                    goto c

                    loop end

                    منم میخوام هر بار که کلید رو میزنم از حلقه a به b بره دوباره بزنم بره بخش c دوباره بزنم بره a
                    مشکلش اینه که تا حلقه b و c تموم نشن از حلقه خارحج نمیشه بخاطر وجود تاخیر
                    می تونی شرط بزاری که اگر کلید برای بار اول زده شد a رو اجرا کنه و بقیه رو اجرا نکنه و اگر کلید برای بار دوم زده شد b رو اجرا کنه و بقیه رو اجرا نکنه

                    اصلا ربطی به wait نداره که برنامه اجرا بشه یا نه چون وقتی از دستور wait استفاده کردی اگر تاخیر کم باشه زودتر اجرا می کنه اگر بیشتر باشه یکم طول میکشه
                    برد جوجه کشی:
                    مطالعه پست 1 (حتما مطالعه کنید)


                    مطالعه پست 2 (برای مطلع شدن از تغییرات برنامه مطالعه کنید)

                    دانلود

                    توجه:
                    این برد نیمه صنعتی و خانگی هست...
                    برای صنعتی شدن حتما برد مخصوص خودتون رو بزنید...

                    آی دی کانال تلگرامی مربوط به برد جوجه کشی : electr0o0nic@

                    دیدگاه


                      #11
                      پاسخ : خارج شدن از حلقه do-loop پر از تاخیر

                      نوشته اصلی توسط mohammad...
                      می تونی شرط بزاری که اگر کلید برای بار اول زده شد a رو اجرا کنه و بقیه رو اجرا نکنه و اگر کلید برای بار دوم زده شد b رو اجرا کنه و بقیه رو اجرا نکنه

                      اصلا ربطی به wait نداره که برنامه اجرا بشه یا نه چون وقتی از دستور wait استفاده کردی اگر تاخیر کم باشه زودتر اجرا می کنه اگر بیشتر باشه یکم طول میکشه
                      خوب منم همین کار رو کردم ولی حلقه بی و سی حتما باید خط به خط خونده بشن برسن به goto تا ازش خاج شن ولی من میخوام همون لحظه که کلیدو زدم از حلقه خارج شه نه اینکه تا آخر بخونه حلقه رو بعدش بیاد بیرون از حلقه

                      دیدگاه


                        #12
                        پاسخ : خارج شدن از حلقه do-loop پر از تاخیر

                        سلام دوست عزیز
                        راهش اینه که از یه حلقه for next بجای wait استفاده کنی یعنییه حلقهfor next مثلا اگر 1000 بار تکرار بشه برابر با wait بشه اونوقت داخل حلقه for next دستور goto رو بنویس
                        اینطور شما میتونی در اصل بین تاخییر هم پرش کنی
                        امام مهدی(عج): اگر شیعیان ما ، که خداوند طاعتشان دهد. در عهد ما وفادار و همدل بودند، هرگز دیدار ما (ظهور) به تاخیر نمی افتاد.(کدام عهد ؟)

                        دیدگاه


                          #13
                          پاسخ : خارج شدن از حلقه do-loop پر از تاخیر

                          نوشته اصلی توسط mahdi8866
                          سلام دوست عزیز
                          راهش اینه که از یه حلقه for next بجای wait استفاده کنی یعنییه حلقهfor next مثلا اگر 1000 بار تکرار بشه برابر با wait بشه اونوقت داخل حلقه for next دستور goto رو بنویس
                          اینطور شما میتونی در اصل بین تاخییر هم پرش کنی
                          سلام فکر خیلی باحالی بود حتما آزمایش میکنم اینجا میگم جوابشو
                          مرسی

                          دیدگاه


                            #14
                            پاسخ : خارج شدن از حلقه do-loop پر از تاخیر

                            اره خب بالاخره شما میخوای داخل تاخییر هم شرط عملیاتی شه دیگه
                            امام مهدی(عج): اگر شیعیان ما ، که خداوند طاعتشان دهد. در عهد ما وفادار و همدل بودند، هرگز دیدار ما (ظهور) به تاخیر نمی افتاد.(کدام عهد ؟)

                            دیدگاه


                              #15
                              پاسخ : خارج شدن از حلقه do-loop پر از تاخیر

                              نوشته اصلی توسط zoheyr79
                              خوب منم همین کار رو کردم ولی حلقه بی و سی حتما باید خط به خط خونده بشن برسن به goto تا ازش خاج شن ولی من میخوام همون لحظه که کلیدو زدم از حلقه خارج شه نه اینکه تا آخر بخونه حلقه رو بعدش بیاد بیرون از حلقه
                              قرار دادن for next فکر خوبیه ولی اینجا کلید به پایه int0 وصله و هر لحظه کلید چک میشه اگر بین wait ها کلید بار دیگه زده بشه چون ایندفعه مقدار متغیر a مثلا میشه 1 باید بره اون متغیر رو چک کنه و منتظر نمی مونه که لیبل تموم بشه بعد بره

                              من فکر می کنم که مشکل از کلید هست
                              اینو به صورت عملی تست کردین؟
                              برد جوجه کشی:
                              مطالعه پست 1 (حتما مطالعه کنید)


                              مطالعه پست 2 (برای مطلع شدن از تغییرات برنامه مطالعه کنید)

                              دانلود

                              توجه:
                              این برد نیمه صنعتی و خانگی هست...
                              برای صنعتی شدن حتما برد مخصوص خودتون رو بزنید...

                              آی دی کانال تلگرامی مربوط به برد جوجه کشی : electr0o0nic@

                              دیدگاه

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