اطلاعیه

Collapse
No announcement yet.

سوال در رابطه با bascom

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

    سوال در رابطه با bascom

    در برنامه نویسی میکرو avr توسط bascom ، در دستور if چه طور می شه چند تا شرط رو با هم نوشت که اگه همش درسته بره چند تا کار رو انجام بده؟
    بین شرط ها and گذاشتم ولی جواب نداد :sad:
    با تشکر
    زندگی تاس خوب آوردن نیست ، تاس بد را خوب بازی کردن است

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

    دقیقا باید AND استفاده کرد . مثل این :

    IF PINB.1 = 1 AND B = 25 THEN
    دستورات
    END IF

    دیدگاه


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

      نوشته اصلی توسط ﺣ آ‌ﺎ ﻣ ﺪ
      دقیقا باید AND استفاده کرد . مثل این :

      IF PINB.1 = 1 AND B = 25 THEN
      دستورات
      END IF
      درسته اینطوری جواب میده
      ولی من هم یه مدت مشکل داشتم به ورژن بیسکام هم ربط داره و وضعیت صور فلکی ... نمیدونم چرا ولی ربط داره
      ولی الان 10 تا and هم مینویسم درست کار میکنه
      به وبلاگم سر بزنید

      دیدگاه


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

        منم همین کار رو می کنم ولی کلی error می ده :sad:
        ممکنه بگین ایراد برنامه زیر چیه؟
        مرسی
        .................................................. .....


        $regfile = "m32def.dat"
        $crystal = 4000000
        Config Porta = Input
        Config Portb = Output
        Do
        If Pina.0 = 1 And Pina.1 = 0 And Pina.2 = 0 Then
        Portb.1 = 1 And Portb.2 = 1
        Else If Pina.0 = 1 And Pina.1 = 1 And Pina.2 = 1 Then
        Portb.1 = 1 And Portb.2 = 1
        Else If Pina.0 = 0 And Pina.1 = 1 And Pina.2 = 1 Then
        Portb.1 = 1 And Portb.2 = 1
        Else If Pina.0 = 0 And Pina.1 = 0 And Pina.2 = 0 Then
        Portb.1 = 1 And Portb.2 = 0
        Else If Pina.0 = 1 And Pina.1 = 0 And Pina.2 = 1 Then
        Portb.1 = 0 And Portb.2 = 1
        Else If Pina.0 = 0 And Pina.1 = 0 And Pina.2 = 1 Then
        Portb.1 = 0 And Portb.2 = 1
        Else If Pina.0 = 1 And Pina.1 = 0 And Pina.2 = 0 Then
        Portb.1 = 1 And Portb.2 = 0
        Else If Pina.0 = 0 And Pina.1 = 1 And Pina.2 = 0 Then
        Portb.1 = 1 And Portb.2 = 0
        End If
        Loop
        End

        .................................................. ..................
        زندگی تاس خوب آوردن نیست ، تاس بد را خوب بازی کردن است

        دیدگاه


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

          این برنامه که کلی ایراد داره (شاید دستی نوشتی ولی غلط ویرایشی داره)

          1. elseif سرهمه و space نمیخواد

          2. Portb.1 = 1 And Portb.2 = 0 این یعنی چی؟ (خط بعد if ها نوشتید)

          اگه میخواید تحت شرایطی کاری دو پین رو یک کنید باید اینطوری بنویسید:

          Portb.1 = 1
          Portb.2 = 1

          نه Portb.1 = 1 And Portb.2 = 1

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

          $regfile = "m32def.dat"
          $crystal = 4000000
          Config Porta = Input
          Config Portb = Output
          Do
          If Pina.0 = 1 And Pina.1 = 0 And Pina.2 = 0 Then
          Portb.1 = 1 And Portb.2 = 1
          Else If Pina.0 = 1 And Pina.1 = 1 And Pina.2 = 1 Then
          Portb.1 = 1 And Portb.2 = 1
          Else If Pina.0 = 0 And Pina.1 = 1 And Pina.2 = 1 Then
          Portb.1 = 1 And Portb.2 = 1
          Else If Pina.0 = 0 And Pina.1 = 0 And Pina.2 = 0 Then
          Portb.1 = 1 And Portb.2 = 0
          Else If Pina.0 = 1 And Pina.1 = 0 And Pina.2 = 1 Then
          Portb.1 = 0 And Portb.2 = 1
          Else If Pina.0 = 0 And Pina.1 = 0 And Pina.2 = 1 Then
          Portb.1 = 0 And Portb.2 = 1
          Else If Pina.0 = 1 And Pina.1 = 0 And Pina.2 = 0 Then
          Portb.1 = 1 And Portb.2 = 0
          Else If Pina.0 = 0 And Pina.1 = 1 And Pina.2 = 0 Then
          Portb.1 = 1 And Portb.2 = 0
          End If
          Loop
          End
          به وبلاگم سر بزنید

          دیدگاه


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

            سلام.این جوری error نداره:


            $regfile = "m32def.dat"
            $crystal = 4000000
            Config Porta = Input
            Config Portb = Output
            Do
            If Pina.0 = 1 And Pina.1 = 0 And Pina.2 = 0 Then
            Portb.1 = 1
            Portb.2 = 1
            Elseif Pina.0 = 1 And Pina.1 = 1 And Pina.2 = 1 Then
            Portb.1 = 1
            Portb.2 = 1
            Elseif Pina.0 = 0 And Pina.1 = 1 And Pina.2 = 1 Then
            Portb.1 = 1
            Portb.2 = 1
            Elseif Pina.0 = 0 And Pina.1 = 0 And Pina.2 = 0 Then
            Portb.1 = 1
            Portb.2 = 0
            Elseif Pina.0 = 1 And Pina.1 = 0 And Pina.2 = 1 Then
            Portb.1 = 0
            Portb.2 = 1
            Elseif Pina.0 = 0 And Pina.1 = 0 And Pina.2 = 1 Then
            Portb.1 = 0
            Portb.2 = 1
            Elseif Pina.0 = 1 And Pina.1 = 0 And Pina.2 = 0 Then
            Portb.1 = 1
            Portb.2 = 0
            Elseif Pina.0 = 0 And Pina.1 = 1 And Pina.2 = 0 Then
            Portb.1 = 1
            Portb.2 = 0
            End If
            Loop
            End

            دیدگاه


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

              اینم معادل برنامه با حجم حافظه مصرفی پایین
              $regfile = "m32def.dat"
              $crystal = 4000000
              Config Porta = Input
              Config Portb = Output
              Dim K As Byte
              Do
              K = Porta

              Select Case K
              Case 1
              Portb.1 = 1
              Portb.2 = 1
              Case 6
              Portb.1 = 1
              Portb.2 = 1
              Case 7
              Portb.1 = 1
              Portb.2 = 1
              Case 0
              Portb.1 = 1
              Portb.2 = 0
              Case 5
              Portb.1 = 0
              Portb.2 = 1
              Case 4
              Portb.1 = 0
              Portb.2 = 1
              Case 2
              Portb.1 = 1
              Portb.2 = 0

              End Select
              Loop
              End

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

              دیدگاه


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

                سلام
                من برنامه زیر رو نوشتم تو پروتیوس اجرا می شه ولی هروجی اونی که می خوام نیست!!!!!!!!!!!
                تو این برنامه یک سنسور دما با پتانسیومتر شبیه سازی شده و به adc0 میکرو دادم تا خروجی روی lcd نمایش داده شود، وقتی اجرا میکم فقط یک عدد 1023رو نمایش میده یه طور ثابت،یعنی وقتی مقدار پتانسیومتر رو عوض می کردم خروچی همینی که هست می مونه و تغییر نمیکنه!!!!!!!!
                چه کار کنم؟
                برنامه رو در زیر گذاشتم ،مممنون می شم گه ایرادی داره کمکم کنین .
                با تشکر
                $regfile = "m32def.dat"
                $crystal = 1000000
                Config Portd.0 = Output
                Config Lcdpin = Db7 = Portb.7 , Db6 = Portb.6 , Db5 = Portb.5 , _
                Db4 = Portb.4 , E = Portb.3 , Rs = Portb.2
                Config Adc = Single , Prescaler = Auto
                Dim In_0 As Word
                Start Adc
                Do
                In_0 = Getadc(0)
                Cls
                Home
                Lcd In_0
                Waitms 100
                Loop
                End
                زندگی تاس خوب آوردن نیست ، تاس بد را خوب بازی کردن است

                دیدگاه


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

                  AREF رو چیکار کردی؟ باید با اون چیزی که تو برنامه تعریف کردی یکی باشه .

                  دیدگاه


                    #10
                    پاسخ : سوال در رابطه با bascom

                    [quote author=MARAL_7133 link=topic=28264.msg137980#msg137980 date=1242423729]
                    ................
                    وقتی اجرا میکم فقط یک عدد 1023رو نمایش میده به طور ثابت................

                    [quote]


                    با سلام
                    یه احتمال :
                    نمایش عدد 1023 ، یعنی اینکه یا ورودی A/D ، مقدار حد اکثر ولتاژ ( 5 ولت ) رو داره ، یعنی ، دو سر کناری پتانسیومتر ، به gnd و vcc و سر وسط پتانسیومتر ، به پین ورودی میکرو ، وصل نیست

                    دیدگاه


                      #11
                      پاسخ : سوال در رابطه با bascom

                      سلام
                      این برنامه رو بنویس جواب میده:
                      $regfile = "m32def.dat"
                      $crystal = 1000000
                      Config Lcdpin = Pin , Db4 = Pinb.4 , Db5 = Pinb.5 , Db6 = Pinb.6 , Db7 = Pinb.7 , Rs = Pinb.2 , E = Pinb.3
                      Config Lcd = 16 * 2
                      Dim A As Word
                      Dim B As Single
                      Config Adc = Single , Prescaler = Auto , Reference = Avcc
                      Enable Adc
                      Enable Interrupts
                      On Adc Show
                      Start Adc
                      Do
                      (A = Getadc(0
                      Loop
                      End

                      Show:
                      B = A * 0.0048828125
                      Cls
                      "lcd "dama is
                      Locate 2 , 1
                      ("#.##",Lcd Fusing(b
                      Waitms 200
                      Return


                      $regfile = "m32def.dat"
                      $crystal = 1000000
                      Config Lcdpin = Pin , Db4 = Pinb.4 , Db5 = Pinb.5 , Db6 = Pinb.6 , Db7 = Pinb.7 , Rs = Pinb.2 , E = Pinb.3
                      Config Lcd = 16 * 2
                      Dim A As Word
                      Dim B As Single
                      Config Adc = Single , Prescaler = Auto , Reference = Avcc
                      Enable Adc
                      Enable Interrupts
                      On Adc Show
                      Start Adc
                      Do
                      A = Getadc(0)
                      Loop
                      End

                      Show:
                      B = A * 0.0048828125
                      Cls
                      Lcd "ADC0 VOLTAGe IS="
                      Locate 2 , 1
                      Lcd Fusing(b , "#.##&quot
                      Waitms 200
                      Return

                      پایه ی Aref و Avcc رو به هم وصل کن و بعد به 5 ولت وصلش کن .
                      پایه ی porta.0 رو هم با یک پتانسیومتر به 5 ولت وصل کن
                      behi

                      دیدگاه


                        #12
                        پاسخ : سوال در رابطه با bascom

                        سلام.
                        برنامه که اشکالی نداره فقط اینارو اضاف کن:


                        Config Adc = Single , Prescaler = Auto , Reference = Avcc

                        پایه ی Aref و Avcc رو به هم وصل کن و بعد به 5 ولت وصلش کن .

                        دیدگاه


                          #13
                          پاسخ : سوال در رابطه با bascom

                          نوشته اصلی توسط alitaroosheh


                          درسته اینطوری جواب میده
                          ولی من هم یه مدت مشکل داشتم به ورژن بیسکام هم ربط داره و وضعیت صور فلکی ... نمیدونم چرا ولی ربط داره
                          ولی الان 10 تا and هم مینویسم درست کار میکنه
                          علی جان به نظر من به زمین و اسمون ربط نداره من یه بار یه برنامه داشتم که 2 3 هزار تایی hf و اگر وشاید داشت و میکرو هنگ میکرد یا درست کار نمیکرد با دست کاری کردت استک و پشته درست شد.حالا شاید مشکل دوستمون هم همین باشه
                          $framesize = 16
                          $hwstack = 24
                          $swstack = 16
                          علم چندانکه بیشتر خوانی چون عمل در تو نیست نادانی

                          دیدگاه


                            #14
                            پاسخ : سوال در رابطه با bascom

                            سلام
                            ممنون از همگی
                            اشتباه زشتی کرده بودم!!!!!!!! :redface:
                            AREF و AVCC رو یادم رفته بود وصل کنم :redface:
                            حالا اگه بخوام یک معادله ریاضی بهش اضافه کنم از چه دستوری باید استفاده کنم؟
                            یعنی مقداری که توسط ADC گرفته می شه تو یک معادله ریاضی قرار بگیره و بعد جواب رو روی LCD نشون بده.
                            زندگی تاس خوب آوردن نیست ، تاس بد را خوب بازی کردن است

                            دیدگاه


                              #15
                              پاسخ : سوال در رابطه با bascom

                              آره امکانش هست. مثلا:

                              In_0 = In_0 / 2
                              In_0 = In_0 + 12
                              In_0 = In_0 mod 10
                              ...

                              دیدگاه

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