اطلاعیه

Collapse
No announcement yet.

مشکل در ساخت شمارده

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

    مشکل در ساخت شمارده

    سلام دوستان

    من تو قسمتی از پروژم نیاز دارم وقتی کاربر میکرو سوئیچی را فشار داد و رها کرد به میکرو به متغیر یک واحد اضافه کند اما وقتی سوئیچ را بیشتر از 2 ثانیه پایین نگاه داشت میکرو به مقدار متغیر دائما اضافه کند و زمانی که سوئیج رها شد قطع شود (من با Bascom کدمو نوشتم) :angry:





    با تشکر

    #2
    پاسخ : مشکل در ساخت شمارده

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

    دیدگاه


      #3
      پاسخ : مشکل در ساخت شمارده

      سلام همونطور که محسن جان گفتن یه متغییر تعریف کنید که وقتی میکرو سوئیچتون فشار داده شد یه واحد بهش اضافه بشه .

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

      می تونید برای رفع مشکل اضافه شدن مداوم بعد از نگه داشته شدن باتنتون یه تاخیری بذارید که این انجام عمل رو به تعویق بندازه .

      ضمنا برای این موارد اگه از کریستال خارجی استفاده کنید خیلی بهتره .

      در ضمن من با CodeVision کار میکنم وگرنه برنامش رو براتون میذاشتم . موفق باشید :nerd:

      [hr]علم میوه ی درختی است که معرفت ریشه ی آن است. دکارت
      دوستان! مدتی کمتر به سایت میام ..

      دیدگاه


        #4
        پاسخ : مشکل در ساخت شمارده

        نوشته اصلی توسط as2000x
        سلام دوستان

        من تو قسمتی از پروژم نیاز دارم وقتی کاربر میکرو سوئیچی را فشار داد و رها کرد به میکرو به متغیر یک واحد اضافه کند اما وقتی سوئیچ را بیشتر از 2 ثانیه پایین نگاه داشت میکرو به مقدار متغیر دائما اضافه کند و زمانی که سوئیج رها شد قطع شود (من با Bascom کدمو نوشتم) :angry:





        با تشکر
        خوب شما باید از وقفه خارجی استفاده کن به این صورت :
        $regfile = "m8def.dat"
        $crystal = 1000000

        Dim A As Byte


        Config Int0=falling
        Enable Interrupts
        Enable Int0

        On Int0 Press

        Do
        Loop



        Press:
        Incr A
        Return

        دیدگاه


          #5
          پاسخ : مشکل در ساخت شمارده

          ضمنا" یه طرف میکروسوئیچ به پایه INT0 و یک طرفش به زمین وصل بشه .

          اگه احتمالا کار نکرد پایه INT0 یه مقاومت 10 کیلو به vcc وصل کن . :agree:

          دیدگاه


            #6
            پاسخ : مشکل در ساخت شمارده

            سلام آقا فرزاد.....جسارتا عرض میکنم...فکر نکنم حتما نیازی به استفاده از اینتراپت باشه...شما میتونید هر پینی رو که خواستید scan کنید

            دیدگاه


              #7
              پاسخ : مشکل در ساخت شمارده

              استفاده از اینتراپت در این جور موارد هیچ لزومی نداره . با چند تا دستور ساده می تونید با میکرو سوئیچ ها کار کنین

              البته اگه مثلا بخواین روتین برنامتون رو به گونه ای طرح ریزی کنید که سیستمتون بلا فاصله نسبت به فشردن باتن وارد یه ساختار

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

              موجود نباشه اونوقته که دیگه نمی خواد از اینتراپت استفاده کنید .

              مثلا اگه بخوایم یه منوی سه منظوره بسازیم و برای هر دکمه هم از یه اینتراپت استفاده کنیم و چند تا هم سنسور و رله

              در مدار داشته باشیم اون وقت دیگه استفاده از وقفه برای هرکدوم از اینا یه کم خفن میشه.....

              [hr]علم میوه ی درختی است که معرفت ریشه ی آن است . دکارت
              دوستان! مدتی کمتر به سایت میام ..

              دیدگاه


                #8
                پاسخ : مشکل در ساخت شمارده

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


                $regfile = "m16def.dat"
                $crystal = 1000000
                Dim A As Integer
                Config Porta = Input
                Loop0:
                If Pina.0 = 0 Then
                Incr A
                Wait 2
                Loop1:
                If Pina.0 = 0 Then
                Incr A
                Goto Loop1
                End If
                End If
                Goto Loop0


                دیدگاه


                  #9
                  پاسخ : مشکل در ساخت شمارده

                  سلام.

                  منم همچین مشکلی رو داشتم ولی حل شد.

                  ببین شما وقتی کلید رو اسکن کردی به یه لوپ میپری باید دوباره توی همون لوپ کلید رو اسکن کن و به لوپ اصلی برنامه جامپ بده.

                  اگه یه طرف کلید رو زمین کنی و یه مقاومت پول پ هم بذاری میتونی به این صورت عمل کنی:

                  تو برنامه بنویسی که هر موقع پین مورد نظر 0 شد بپر به لوپ1 و داخل لوپ یک واحد به متغیرت اضافه کنی و در خط بعدی یه برچسب درست کن و جلوش برنامه تست رو بنویس که تا هر زمانی که پین مورد نظر 0 بود به به خود همان برچسب بپره یعنی تا زمانی که دستش رو کلیده روی همون خط باشه.
                  www.icesi.ir

                  دیدگاه

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