اطلاعیه

Collapse
No announcement yet.

همزمان روشن و خاموش کردن از یک پورت

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

    #16
    پاسخ : همزمان روشن و خاموش کردن از یک پورت

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

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

    موفق باشی

    دیدگاه


      #17
      پاسخ : همزمان روشن و خاموش کردن از یک پورت

      سلام ...یا... R E S S S عزیز (آدم یاد PRESS TV میوفته :nice
      خوب اگه واقعا شما میخواهید اون LED ها رو روشن و خاموش کنید خیلی ساده تر میشه این کار رو کرد .
      نوشته اصلی توسط resss
      ولی باید حتما 1ثانیه دکمه رو نگه دارم تا خاموش یا روشن بشه
      در واقع ببینید توی این برنامه من امدم از یک جور وقفه نرمافزاری استفاده کردم که این وقفه در واقع توی خط زیر اتفاق میوفته :

      While Pinc.0 = 1
      Wend

      خوب اینکه چه اتفاقی میفته کاملا مشخصه : وقتی PINC.0=1 میشه و میرسه به این خط و تا زمانی که شما دستتون روی پوش باتون باشه به طور مداوم این حلقه طی یشه تا جایی که شرط حلقه درست نباشه یعنی زمانی که شما دسستتون رو از روی پوش باتون برمیدارید و PINC.0=0 میشه و بعد هم که ادامه برنامه و دوباره روز از نو روزی از نو !
      و این مسئله که شما میگید به نظر من در مورد این مدار صدقیت نداره چرا که بیشتر تاخیر به خاطر شکل برنامه نوشته شده است که باید حتما دوتا حلقه به طور کامل طی بشه تا آماده برای گرفتن فرمان جدید بشه !
      خوب برای حل این مشکل برنامه رو به صورت زیر اصلاح کنید و نتیجه رو ببینید :

      $regfile = "m32def.dat"
      $crystal = 4000000
      Config Porta = Output
      Config Portc.0 = Input
      Do
      If Pinc.0 = 1 Then Toggle Porta
      L1:
      If Pinc.0 = 1 Then Goto L1
      Loop
      End



      دیدگاه

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