اطلاعیه

Collapse
No announcement yet.

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

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

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

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

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

    با سلام
    می تونید از یک متغیر از نوع بیت به عنوان کمک استفاده کنید
    به این ترتیب که با هر بار زدن پوش باتون مقدار متغیر toggle بشه
    و حالا توی برنامه تون این جوری بنویسید که مثلا هر وقت صفر بود فلان کار رو بکنه در غیر این صورت فلاین کار رو بکنه!

    دیدگاه


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

      مجتبی عزیز برنامه من منتظر میمونه تا پوش باتون یک بشه زمانی که یک شد میره داخل یک حلقه و تا زمانی که پوش باتون بار دوم زده نشه توی اون حلقه میمونه
      این برنامه ای که نوشتم
      $regfile = "m32def.dat"
      $crystal = 4000000
      Config Porta = Output
      Config Portc = Input
      Dim B As Byte
      Dim I As Byte
      Lable1:
      Do
      If Pinc.0 = 1 Then Goto Lable
      Loop
      Lable:
      While Pinc.0 =0
      For B = 0 To 2
      For I = 0 To 7
      Porta.i = 1
      Next I
      Waitms 20
      Wend
      Goto Lable1

      End

      دیدگاه


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

        راستش هر چقدر برنامتون رو بالا پایین کردم نفهمیدم دقیقا می خواهید چیکار کنید ، اگر براتون ممکنه یک توضیحی بفرمایید تا یکم موضوع روشن تر بشه!

        دیدگاه


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

          با درود . . .
          اینو امتحان کن:


          $regfile="m16def.dat"
          $crystal=1000000
          ddrb.0=1:portb.0=0
          ddrb.1=0:portb.1=1

          do
          if pinb.1=0 then
          toggle portb.0
          waitms 200
          end if
          loop


          یه سر کلیدتو به زمین وصل کن و سر دیگشو به b.1
          به محض فشار دادن کلید خروجی b.0 تغییر وضعیت میده.
          البته به جای استفاده از شرط میتونی از debonce هم استفاده کنی که خیلی بهتر جواب میده.
          فقط ببند ببین جواب میده یا نه چون من بسکام و پروتئوس نداشتم تا ببینم درست نوشتم یا نه!!! :mrgreen:
          درد من تنهایی نیست؛ بلکه مرگ ملتی است که گدایی را قناعت، بی‏عرضگی را صبر، و با تبسمی بر لب این حماقت را حکمت خداوند می‏ نامند! "گاندی"

          به دلیل وجود برخی مشکلات و بی احترامی ها این اکانت رو غیر فعال کردم. همیشه سر بلند باشید.
          بدرود . . .

          دیدگاه


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

            پورت a خروجی هست و پایه صفر c متصل به پوش باتون هست
            برنامه صبر میکنه تا ورودی که پایه c هست یک بشه زمانی که یک شد میره داخل یک حلقه که خروجی بره به پورت a
            حالا میخوام زمانی که دوباره پوش باتون زده میشه یهنی دوباره pinc.0 یک میشه از حلقه خارج بشه و بره به lable1 تا منتظر فشرده شدن بعدی پوش باتون بشه
            در واقع میخوام با این کلید هم مدار روشن بشه و هم خاموش
            شما با این قسمت برنامه کار نداشته باشید :
            For B = 0 To 2
            For I = 0 To 7
            Porta.i = 1
            Next I
            Waitms 20
            با روشن شدن مدار مشکلی ندارم ولی مدار خاموش نمیشه که به حالت اولیه بره امکان پذیر نیست

            دیدگاه


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

              ببینید این جواب میده :

              $regfile = "m32def.dat"
              $crystal = 4000000
              Config Porta = Output
              Config Portc = Input
              Dim B As Byte
              Dim I As Byte , Temp As Bit
              Lable1:
              Do
              If Pinc.0 = 1 Then Goto Lable : Toggle Temp
              Loop
              Lable:
              While Pinc.0 = 0
              For B = 0 To 2
              For I = 0 To 7
              Porta.i = Temp
              Next I
              Next B
              Waitms 20
              Wend
              Goto Lable1

              End

              دیدگاه


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

                مجتبی عزیز من که گفتم پورت a ربطی به کار ما نداره اون خروجی هست و کارشو انجام میده
                این برنامه دانلود کنید و تو پروتئوس تست کنید میفهمید من چی میگم.فکر کنید میخوام یک led روشن و خاموش کنم با یک پوش باتون
                http://www.jetup.ir/do.php?filename=05_07_1113098813291.zip

                دیدگاه


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

                  ای بابا
                  دوست عزیز شما که میگید با پورت a کاری نداشته باشیم
                  من متوجه نمیشم پس شما چی رو می خواهید خاموش ، روشن کنید.
                  ببخشید دست خودم نیست ذاتا یخورده دیر می گیرم :cry2:
                  البته لزومی نداره که به اراجیف من توجه کنید و جواب بدید چرا که
                  من بیشتر برای اینکه یک چیز جدید یاد بگیرم وارد تایپیک ها میشم چکنیم دیگه ! :redface:

                  دیدگاه


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

                    منظورم اینه که پورت a به همون صورت باشه
                    اصلا برنامه رو دیدید تو پروتئوس چطوری کار میکنه اگه تونستید با کلید خاموش روشنش کنید ممنون میشم

                    دیدگاه


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

                      بله بنده برنامه رو دیدم
                      البته یک فایل پرتئوس بود و یک فایل هگزه ؛
                      عملکردش این جوری بود : با زدن پوش باتون led ها شروع به چشمک زدن می کنند و دیگه با زدن پوش باتون هیچ اتفاق دیگه ای نمی افته
                      ببینید چیزی که من فهمیدم اینه کهخ شما می خواهید با زدن پوش باتون در بار اول کل led ها رو شن و با زدن بار دوم کل led ها خاموش باشه (درسته؟)
                      خوب اگه درسته برنامتون رو به صورت زیر تغییر بدید
                      و
                      در ضمن در پرتئوس فرکانس و فیوز بیت ها رو روی 4مگا هرتز تنظیم کنید تا عملکرد صحیحتری داشته باشه
                      و همچنین از اونجا که pinc.0 به صورت وردی تعریف شده و از اونجا که به صورت پیش فرض مقدارش صفر هست
                      بنابراین به صورت های امپدانس عمل خواهد کرد یعنی نه صفر هست نه یک بنابراین حتما توی پرتئوس بایک مقاومت 10کیلو پول دانش کنید
                      این هم برنامه پیشنهادی بنده اگر درست متوجه شده باشم (تستش کردم جواب داد ):

                      $regfile = "m32def.dat"
                      $crystal = 4000000
                      Config Porta = Output
                      Config Portc.0 = Input
                      Dim B As Byte
                      Dim I As Byte , Temp As Bit
                      Temp = 0
                      Lable1:
                      Do
                      If Pinc.0 = 1 Then Toggle Temp : Goto Lable
                      Loop
                      Lable:
                      While Pinc.0 = 1
                      wend
                      For B = 0 To 2
                      For I = 0 To 7
                      Porta.i = Temp
                      Next I
                      Next B
                      Goto Lable1
                      End

                      دیدگاه


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

                        شرمنده من فکر کردم برنامه رو دادم
                        اینم برنامه
                        $regfile = "m32def.dat"
                        $crystal = 4000000
                        Config Porta = Output
                        Config Pinc.0 = Input
                        Dim B As Byte
                        Dim C As Byte
                        Dim I As Byte
                        Lable1:
                        Do
                        If Pinc.0 = 1 Then Goto Lable
                        Loop
                        Lable:
                        While Portc.0 = 0
                        For B = 0 To 2
                        For I = 0 To 7
                        Porta.i = 1
                        Next I
                        Waitms 20
                        For I = 0 To 7
                        Porta.i = 0
                        Next I
                        Waitms 20
                        Next B
                        Waitms 100
                        Wend
                        End

                        دیدگاه


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

                          برنامه ای که نوشتید کار نمیکنه

                          دیدگاه


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

                            بفرمایید این فایل پرتئوس و برنامه :RESSS.rar

                            ولی اگر منظورتون اینه که گفتم برنامه رو میشه خیلی ساده تر هم نوشت ! اگر چه میدونم که بازم درست متوجه منظورتون نشدم :-?

                            دیدگاه


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

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

                              دیدگاه

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