اطلاعیه

Collapse
No announcement yet.

سوال درباره avr

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

    سوال درباره avr

    سلام
    میخام با بیسیک یه برنامه بنویسم که دو عدد را دریافت کنه با کیبرد (مثلا 15 و 21) و یه دکمه تعریف کنیم به نام ستارت که وقتی ستارت رو بزنیم 2 تا led به ترتیب به مدت 15ثانیه و 21 ثانیه روشن بشوند(اول led شماره یک به مدت 15 ثانیه روشن شود و بعدش led شماره دو به مدت 21 ثانیه) از دوستان اگه کسی میتونه کمک کنه خواهشن :redface:
    ممنون :rolleyes:
    The harder I work, the luckier I get

    #2
    پاسخ : سوال درباره avr

    شما بنویس
    ما مشکلت رو کمکتون حل میکنیم دوست عزیز
    علم چندانکه بيشتر خواني چون عمل در تو نيست ناداني

    دیدگاه


      #3
      پاسخ : سوال درباره avr

      به نظر من بهتره برای شروع برنامه را به چند قسمت تقسیم کنی
      مثلا : اول برنامه کی برد را بنویس و بعد از اینکه جواب گرفتی برنامه کلید استارت و بعدش برنامه .......
      وقتی از همشون نتیجه گرفتی برنامه را یکی کن

      شروع کن ما هم کمک میکنیم
      موفق باشی
      در روزگاري كه لبخند آدم ها بخاطر شكست توست برخيز تا بگريزند. كورش كبير
      شاد بودن، تنها انتقامي است که ميتوان از زندگي گرفت. ارنستو چه گوارا

      دیدگاه


        #4
        پاسخ : سوال درباره avr

        من مشکلم برنامه کلید استارت است
        بقیه قسمتهای برنامه را تقریبا میتونم بنویسم شما اگه میشه قسمت کلید استارت و راهنمایی کنید مشکل اصلی من اونه :sad:
        The harder I work, the luckier I get

        دیدگاه


          #5
          پاسخ : سوال درباره avr

          کلید استارت رو بده به وقفه خارجی (INT0) و تو زیر برنامه وقفه هم برنامه مربوط به روشن کردن دو تا LED رو بنویس.
          عمر گران میگذرد خواهی نخواهی سعی بر آن کن نرود رو به تباهی
          مطلب دل را طلب از سوی خدا کن زآنکه بود رحمت او لا یتناهی

          دیدگاه


            #6
            پاسخ : سوال درباره avr

            من نصف برنامه را نوشتم مشکلم برنامه کلید استارت است اگه میشه کمکم کنید ممنون
            اینم برنامه ای که نوشتم
            $regfile = "m16def.dat"
            $crystal = 8000000
            Dim A As Byte , C As Byte , D As Byte
            Dim B As Long
            Config Lcd = 16 * 2
            Config Kbd = Porta
            Config Portb = Output
            Main:
            B = 0
            Do
            A = Getkbd()
            If A < 10 Then
            B = B * 10
            B = B + A
            Cls
            Lcd B
            Waitms 200
            End If
            Loop
            If A = 10 Then Goto Led1
            If A = 11 Then Goto Led2
            Led1:
            C = B
            Set Portb.0
            Wait C
            Reset Portb.0
            Goto Main
            Led2:
            D = B
            Set Portb.1
            Wait D
            Reset Portb.1
            Goto Main
            End
            راستی یه مشکل دیگه هم داشتم اونم اینکه تو این برنامه وقتی عدد 10 و 11را میزنم نمیپره به زیر مجموعه ال ی دی 1 به جاش عدد 8 را میزنه و یا اینکه هنگ میکنه(یعنی هیچ یک از led ها روشن نمیشن :sad مشکل از برنامه ی که نوشتم است یا از نرم افزار پروتوس
            خیلی ممنون میشم اگه کمکم کنید مرسی
            The harder I work, the luckier I get

            دیدگاه


              #7
              پاسخ : سوال درباره avr

              سلام دوست عزیز.
              1)شما دستور if رو بیرون از do -loopبرنامت گذاشتی و این دستورا چک نمیشن اصلآ.
              2)برنامت جدول لوگاپ واسه کیپد نداره؟

              دیدگاه


                #8
                پاسخ : سوال درباره avr

                سلام.اینم برنامه:



                $regfile = "m16def.dat"
                $crystal = 8000000
                '******************************************** ***********************************
                Dim A As Byte , C As Byte , D As Byte , Dim B As Byte
                Config Kbd = Porta
                Config Portb = Output
                Declare Sub Key_read
                '******************************************** ***********************************
                Main:
                B = 0
                Do
                Call Getkey
                If Keynum < 10 Then
                A = Keynum * 10
                end IF
                Call Getkey
                If Keynum < 10 Then
                B = Keynum + A
                end IF
                Call Getkey
                If Keynum < 10 Then
                C = Keynum * 10
                end IF
                Call Getkey
                If Keynum < 10 Then
                D = Keynum + C
                end IF

                If A = 10 Then Goto Led
                Loop
                '******************************************** ***********************************
                Led:
                Set Portb.0
                Wait B
                Reset Portb.0
                Set Portb.1
                Wait D
                Reset Portb.1
                Goto Main
                End
                '******************************************** ***********************************
                Getkey:
                A = Getkbd()
                Keynum = Lookup(a , Key_read)
                Return
                '******************************************** ***********************************
                Key_read:
                Data 13 , 14 , 0 , 15 , 12 , 9 , 8 , 7 , 11 , 6 , 5 , 4 , 10 , 3 , 2 , 1
                '******************************************** ***********************************

                دیدگاه


                  #9
                  پاسخ : سوال درباره avr

                  اصلاح میکنم:



                  $regfile = "m16def.dat"
                  $crystal = 8000000
                  '******************************************** ***********************************
                  Dim A As Byte , C As Byte , D As Byte , B As Byte , Keynum As Byte
                  Config Kbd = Porta
                  Config Portb = Output
                  Declare Sub Getkey
                  '******************************************** ***********************************
                  Main:
                  B = 0
                  Do
                  Call Getkey
                  If Keynum < 10 Then
                  A = Keynum * 10
                  end IF
                  Call Getkey
                  If Keynum < 10 Then
                  B = Keynum + A
                  end IF
                  Call Getkey
                  If Keynum < 10 Then
                  C = Keynum * 10
                  end IF
                  Call Getkey
                  If Keynum < 10 Then
                  D = Keynum + C
                  end IF

                  If A = 10 Then Goto Led
                  Loop
                  '******************************************** ***********************************
                  Led:
                  Set Portb.0
                  Wait B
                  Reset Portb.0
                  Set Portb.1
                  Wait D
                  Reset Portb.1
                  Goto Main
                  End
                  '******************************************** ***********************************
                  Getkey:
                  A = Getkbd()
                  Keynum = Lookup(a , Key_read)
                  Return
                  '******************************************** ***********************************
                  Key_read:
                  Data 13 , 14 , 0 , 15 , 12 , 9 , 8 , 7 , 11 , 6 , 5 , 4 , 10 , 3 , 2 , 1
                  '******************************************** ***********************************

                  دیدگاه

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