اطلاعیه

Collapse
No announcement yet.

کمک در مورد خروج از حلقه

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

    کمک در مورد خروج از حلقه

    با سلام خدمت اساتید انجمن

    من یه برنامه نوشتم با بسکام که دو خروجی داره با هر بارفشردن کلید یه پالس 300 میلی ثانیه ای به یکی از خروجی ها میده
    حالا مشکلم اینحاست بعضی مواقع از حلقه خارج نمیشه و بار دوم و سوم میره به خروجی بعدی پالس میده
    ممنون میشم ایراد کارم رو بهم بگید
    کد HTML:
    $regfile = "m8def.dat"
    $crystal = 800000
    Config Portd.5 = Output : Led1 Alias Portd.5
    Config Portd.7 = Output : Led2 Alias Portd.7
    Config Portc.2 = Output : Led3 Alias Portc.2
    Led3 = 1
    Portb.0 = 1 : Ddrb.0 = 0                                    'En pull up
    Key Alias Pinb.0
    '**************************************************
    Led1 = 0 : Led2 = 0
    Waitms 200
    While Key = 1
    Set Led1 : Reset Led2
    Wend
    Waitms 300
    Reset Led1
    While Key = 1
    Reset Led1 : Set Led2
    Wend
    Waitms 300
    Reset Led2
    Return

    #2
    پاسخ : کمک در مورد خروج از حلقه

    نوشته اصلی توسط pouria66 نمایش پست ها
    با سلام خدمت اساتید انجمن

    من یه برنامه نوشتم با بسکام که دو خروجی داره با هر بارفشردن کلید یه پالس 300 میلی ثانیه ای به یکی از خروجی ها میده
    حالا مشکلم اینحاست بعضی مواقع از حلقه خارج نمیشه و بار دوم و سوم میره به خروجی بعدی پالس میده
    ممنون میشم ایراد کارم رو بهم بگید
    کد HTML:
    $regfile = "m8def.dat"
    $crystal = 800000
    Config Portd.5 = Output : Led1 Alias Portd.5
    Config Portd.7 = Output : Led2 Alias Portd.7
    Config Portc.2 = Output : Led3 Alias Portc.2
    Led3 = 1
    Portb.0 = 1 : Ddrb.0 = 0                                    'En pull up
    Key Alias Pinb.0
    '**************************************************
    Led1 = 0 : Led2 = 0
    Waitms 200
    While Key = 1
    Set Led1 : Reset Led2
    Wend
    Waitms 300
    Reset Led1
    While Key = 1
    Reset Led1 : Set Led2
    Wend
    Waitms 300
    Reset Led2
    Return
    سلام برنامه شما بجز اینکه خطوطی اضافه داره که میشه حذف کرد
    این طور که فکر کنید ازحلقه خارج نمیشه نیست میکرو اول به while
    ابتدایی میرسه و شرط رو که همون فشردن باتن یا یک شدن پایه مورد
    نظر هست رو بررسی می*کنه اگه درست بود شرط رو اجرا میکنه و تا زمانی
    که شرط غلت بشه در حلقه میمونه و سپس خارج میشه بعد به while
    انتهایی میرسه اگر در این لحظه شما دوباره پایه مورد نظر رو یک کرده باشی
    شرط داخل اون while رو اجرا می*کنه که این موضوع بسته به زمان فشردن
    باتن شما داره که گاهی این اتفاق در زمان مورد نظر نمی افته و میکرو از اون
    خط عبور می*کنه و به ابتدای برنامه بر میگرده و در این زمان پایه مورد نظر
    یک میشه و دوباره طبق گفته شما خروجی یک برای بار دوم روشن و خاموش
    میشه و ممکن هست این اتفاق برای بار سوم هم بیفته
    قصه زندگی همیشه با مدادی که ما دوست داریم نوشته نمی شه .....

    دیدگاه


      #3
      پاسخ : کمک در مورد خروج از حلقه

      نوشته اصلی توسط خلبان نمایش پست ها
      سلام برنامه شما بجز اینکه خطوطی اضافه داره که میشه حذف کرد
      این طور که فکر کنید ازحلقه خارج نمیشه نیست میکرو اول به while
      ابتدایی میرسه و شرط رو که همون فشردن باتن یا یک شدن پایه مورد
      نظر هست رو بررسی می*کنه اگه درست بود شرط رو اجرا میکنه و تا زمانی
      که شرط غلت بشه در حلقه میمونه و سپس خارج میشه بعد به while
      انتهایی میرسه اگر در این لحظه شما دوباره پایه مورد نظر رو یک کرده باشی
      شرط داخل اون while رو اجرا می*کنه که این موضوع بسته به زمان فشردن
      باتن شما داره که گاهی این اتفاق در زمان مورد نظر نمی افته و میکرو از اون
      خط عبور می*کنه و به ابتدای برنامه بر میگرده و در این زمان پایه مورد نظر
      یک میشه و دوباره طبق گفته شما خروجی یک برای بار دوم روشن و خاموش
      میشه و ممکن هست این اتفاق برای بار سوم هم بیفته
      خب دوست عزیز اینو خودم نوشتم و میدونم چکار میکنه میخواستم ببینم برای اینکه کلا با فشردن کلید برای بار بعدی دیگه دستور قبلی رو انجام نده باید چکار کنم؟
      یه تاخیر 1 ثانیه ای برای قبل هر حلقه گذاشتم از حلقه کامل خارج میشه ولی خب تاخیرش زیاد شده

      کد HTML:
      $regfile = "m8def.dat"
      $crystal = 800000
      Config Portd.5 = Output : Led1 Alias Portd.5
      Config Portd.7 = Output : Led2 Alias Portd.7
      Config Portc.2 = Output : Led3 Alias Portc.2
      Led3 = 1
      Portb.0 = 1 : Ddrb.0 = 0                                    'En pull up
      Key Alias Pinb.0
      '**************************************************
      Led1 = 0 : Led2 = 0
      waitms 1000
      While Key = 1
      Set Led1
      Waitms 300
      Reset Led1
      Wend
      Waitms 1000
      While Key = 1
      Set Led2
      Waitms 300
      Reset Led2
      Wend
      Return
      '---------------------------------------------------

      دیدگاه


        #4
        پاسخ : کمک در مورد خروج از حلقه

        نوشته اصلی توسط pouria66 نمایش پست ها
        خب دوست عزیز اینو خودم نوشتم و میدونم چکار میکنه میخواستم ببینم برای اینکه کلا با فشردن کلید برای بار بعدی دیگه دستور قبلی رو انجام نده باید چکار کنم؟
        یه تاخیر 1 ثانیه ای برای قبل هر حلقه گذاشتم از حلقه کامل خارج میشه ولی خب تاخیرش زیاد شده

        کد HTML:
        $regfile = "m8def.dat"
        $crystal = 800000
        Config Portd.5 = Output : Led1 Alias Portd.5
        Config Portd.7 = Output : Led2 Alias Portd.7
        Config Portc.2 = Output : Led3 Alias Portc.2
        Led3 = 1
        Portb.0 = 1 : Ddrb.0 = 0                                    'En pull up
        Key Alias Pinb.0
        '**************************************************
        Led1 = 0 : Led2 = 0
        waitms 1000
        While Key = 1
        Set Led1
        Waitms 300
        Reset Led1
        Wend
        Waitms 1000
        While Key = 1
        Set Led2
        Waitms 300
        Reset Led2
        Wend
        Return
        '---------------------------------------------------
        "regfile="m8def.dat $
        crystal=8000000 $
        config portb.0=output
        config portb.1=output
        config pind.0=input
        declare sub m1
        dim a as byte
        a=0
        do
        if pind.0=1 then call m1
        loop
        :m1
        incr a
        if a=1 then
        set portb.0
        waitms 600
        reset portb.0
        endif
        if a=2 then
        set portb.1
        waitms 600
        reset portb.1
        endif
        if a=2 then a=0
        end sub
        این برنامه رو تست کنین
        جدیدترین ویرایش توسط خلبان; ۰۹:۴۷ ۱۳۹۹/۱۰/۱۸.
        قصه زندگی همیشه با مدادی که ما دوست داریم نوشته نمی شه .....

        دیدگاه


          #5
          پاسخ : کمک در مورد خروج از حلقه

          نوشته اصلی توسط خلبان نمایش پست ها
          این برنامه رو تست کنین
          مرسی بابت وقت گذاشتنت
          تست کردم یه ایرادی که داشت اگه دستت رو کلید میموند فرمان بعدی رو اجرا میکرد که با یه حلقه و یه شرط درست شد
          سپاس بی کران مهندس
          جدیدترین ویرایش توسط pouria66; ۱۹:۲۵ ۱۳۹۹/۱۰/۱۸.

          دیدگاه


            #6
            پاسخ : کمک در مورد خروج از حلقه

            نوشته اصلی توسط pouria66 نمایش پست ها
            مرسی بابت وقت گذاشتنت
            تست کردم یه ایرادی که داشت اگه دستت رو کلید میموند فرمان بعدی رو اجرا میکرد که با یه حلقه و یه شرط درست شد
            سپاس بی کران مهندس
            موفق باشین
            قصه زندگی همیشه با مدادی که ما دوست داریم نوشته نمی شه .....

            دیدگاه

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