اطلاعیه

Collapse
No announcement yet.

جدا کردن عدد از کارکتر در بسکام

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

    جدا کردن عدد از کارکتر در بسکام

    با سلام

    من با پورت سریال بین دو میکرو ارتباط برقرار کردم

    حالا میخوام با یکی از اونها pwm میکروی دیگری رو کنترل کنم . چون میخوام دو pwm رو کنترل کنم . نمی تونم بصورت تنهایی اعداد بفرستم . برا همین

    یکی از pwm هارو به هین شکل می فرستم . x1 x2 x3 , .... تا x255
    و دیگری رو با y1 ، y2 و ..... تا y255

    حالا توی میکروی دیگه چطوری این y یا x رو جدا کنم و از اعدادشون استفاده کنم ؟؟

    مثلا a = x250
    چطوری 250 رو از x جدا کنم ؟

    #2
    پاسخ : جدا کردن عدد از کارکتر در بسکام

    فکر کنم باید برنامه اش رو خودت بنویسی. کاری هم نداره. کافیه دونه دونه عدد مربوط به هر کاراکتر رشته رو چک کنی، ببینی در محدوده 48 تا 57 قرار داره یا نه. اگر بود یعنی عدده و اگر نبود حرف یا کاراکتری دیگه است.
    اگر هم ورودی ها همگی استاندارد به شکلی که گفتی هستند کافیه باید یک for سه کاراکتر آخر رو جدا کنی، و با دستور val تبدیلش کنی به یک عدد و ازش استفاده کنی
    ... و (بدانید) گرفتن تصمیمهاى محکم (براى رسیدن به اهداف بزرگ) با خوش گذرانى و سفرهآ‌هاى رنگین سازگار نیست و چه بسیار که خواب شبانه تصمیمهاى محکم روز را از میان برده و تاریکیآ‌ها، خاطره همتآ‌هاى بلند را از یادها محو کرده است. (نهجآ‌البلاغه، خطبه211)

    امام علی (ع):کسی که به وقت یاری رهبرش در خواب باشد، با لگد دشمنش بیدار می شود (غررالحکم،ص 422)

    دیدگاه


      #3
      پاسخ : جدا کردن عدد از کارکتر در بسکام

      مممنونم از پاسخت

      بله اعدادم همه مرتب هستند . نمیشه از روش اول استفاده کرد طولانی میشه ولی از روش دوم نفهمیدم . میشه یه مثال ساده برای اعداد زیر بنویسید

      <x1> <x2> <x3> <x4> .... <x255>

      اینا دونه دونه با دستور زیر دریافت می شوند
      کد:
      a = inkey()
      الان چطوری فقط اعدادو جدا کنم ؟ میشه یه مثال ساده نویسید

      دیدگاه


        #4
        پاسخ : جدا کردن عدد از کارکتر در بسکام

        کسی نمیدونه

        دیدگاه


          #5
          پاسخ : جدا کردن عدد از کارکتر در بسکام

          نوشته اصلی توسط البرت انیشتن
          مممنونم از پاسخت

          بله اعدادم همه مرتب هستند . نمیشه از روش اول استفاده کرد طولانی میشه ولی از روش دوم نفهمیدم . میشه یه مثال ساده برای اعداد زیر بنویسید

          <x1> <x2> <x3> <x4> .... <x255>

          اینا دونه دونه با دستور زیر دریافت می شوند
          کد:
          a = inkey()
          الان چطوری فقط اعدادو جدا کنم ؟ میشه یه مثال ساده نویسید
          اگر متغیرهات بصورت رشته هستن اینطوری عمل کن(استفاده از دستور mid)
          مثلا a=x34

          dim b as byte
          a=mid(a,2,3)
          b=val(a)

          b=34

          توضیح دستور mid در help بسکام هست
          من نمىآ‌توانم فرضیه «بىآ‌اخلاقى انسان» را بپذیرم، و من اخلاق را منحصرا امرى انسانى و متعلق به انسان مىآ‌دانم که هیچ نوع قدرت مافوق انسانى در پشت آن وجود ندارد
          آلبرت اینشتین
          منبع: http://fa.wikiquote.org

          دیدگاه


            #6
            سلام وقت بخیر اگه من بخوام یه رقم از یه متغیر رو بردارم دستورش چیه؟مثلا یه متغیر دارم 78526 مقدارشه میخوام فقظ 8 رو بردارم نمایش بدم کسی اطلاع داره؟
            { خلاف قوانین - پاک شد }

            دیدگاه


              #7
              نوشته اصلی توسط r-el نمایش پست ها
              سلام وقت بخیر اگه من بخوام یه رقم از یه متغیر رو بردارم دستورش چیه؟مثلا یه متغیر دارم 78526 مقدارشه میخوام فقظ 8 رو بردارم نمایش بدم کسی اطلاع داره؟
              سلام اگه برای این مثالی که زدید بخوایم بگیم ، کافیه این عدد رو تقسیم بر 1000 و بعد باقیمانده شو بر 10 حساب کنید بریزید تو یه متغیر

              دیدگاه


                #8
                نوشته اصلی توسط MatinDav نمایش پست ها

                سلام اگه برای این مثالی که زدید بخوایم بگیم ، کافیه این عدد رو تقسیم بر 1000 و بعد باقیمانده شو بر 10 حساب کنید بریزید تو یه متغیر
                دم شما گرم اره حاجی ولی من میخوام همه این اعداد رو رو سون سگمنت نمایش بدم یکم تقسیمات زیاد میشه میخواستم ببینم دستوری هست اعداد رو تک تک بردارم بریزم رو سگمنت؟
                { خلاف قوانین - پاک شد }

                دیدگاه


                  #9
                  مشکل دیگه که دارم با تقسیم اینه که اگه عدد باشه 50080 اگه تقسیم به 10000 کنیم 5جدا میشه ولی الباقی میشه 0080 اینو بریزیم تو یه متغیر خب دوتا صفر قبل 80 از بین میره درسته؟
                  { خلاف قوانین - پاک شد }

                  دیدگاه


                    #10
                    نوشته اصلی توسط r-el نمایش پست ها
                    مشکل دیگه که دارم با تقسیم اینه که اگه عدد باشه 50080 اگه تقسیم به 10000 کنیم 5جدا میشه ولی الباقی میشه 0080 اینو بریزیم تو یه متغیر خب دوتا صفر قبل 80 از بین میره درسته؟
                    الان توی این مثالی که شما زدید برای به دست آوردن دهگان که 8 باشه ، باید عدد رو اول تقسیم بر 10 کنید بعد باقیمانده شو بر 10 حساب کنید. برای استخراج رقم ها از عدد کلا به این صورته :
                    یکان >> باقیمانده عدد به 10
                    دهگان >> عدد تقسیم بر 10 ، باقیمانده به 10
                    صدگان >> عدد تقسیم بر 100 ، باقیمانده به 10
                    هزارگان >> عدد تقسیم بر 1000 ، باقیمانده به 10
                    ده هزارگان >> عدد تقسیم بر 10000 ، باقیمانده به 10
                    .
                    .
                    .
                    جدیدترین ویرایش توسط MatinDav; ۱۹:۲۹ ۱۴۰۵/۰۶/۱۹.

                    دیدگاه


                      #11
                      نوشته اصلی توسط r-el نمایش پست ها
                      مشکل دیگه که دارم با تقسیم اینه که اگه عدد باشه 50080 اگه تقسیم به 10000 کنیم 5جدا میشه ولی الباقی میشه 0080 اینو بریزیم تو یه متغیر خب دوتا صفر قبل 80 از بین میره درسته؟
                      با سلام و احترام
                      کد:
                      Dim N As Word
                      Dim D1 As Byte
                      Dim D2 As Byte
                      Dim D3 As Byte
                      Dim D4 As Byte
                      Dim D5 As Byte
                      
                      N = 50080
                      
                      D1 = N / 10000
                      D2 = (N Mod 10000) / 1000
                      D3 = (N Mod 1000) / 100
                      D4 = (N Mod 100) / 10
                      D5 = N Mod 10​

                      دیدگاه


                        #12
                        نوشته اصلی توسط evergreen نمایش پست ها

                        با سلام و احترام
                        کد:
                        Dim N As Word
                        Dim D1 As Byte
                        Dim D2 As Byte
                        Dim D3 As Byte
                        Dim D4 As Byte
                        Dim D5 As Byte
                        
                        N = 50080
                        
                        D1 = N / 10000
                        D2 = (N Mod 10000) / 1000
                        D3 = (N Mod 1000) / 100
                        D4 = (N Mod 100) / 10
                        D5 = N Mod 10​
                        سلام ممنون با قیمانده /10000 میشه 0080 شما اطمینان دارید دوتا صفر قبل 80 رو حفظ میکنه؟ یعنی عدد رو 0080 نگه میداره برای تقسیمات بعدی؟
                        { خلاف قوانین - پاک شد }

                        دیدگاه


                          #13
                          نوشته اصلی توسط r-el نمایش پست ها

                          سلام ممنون با قیمانده /10000 میشه 0080 شما اطمینان دارید دوتا صفر قبل 80 رو حفظ میکنه؟ یعنی عدد رو 0080 نگه میداره برای تقسیمات بعدی؟
                          با سلام مجدد
                          وقتی متغیر از نوع عدد باشد دو تا صفر قبل عدد معنی نداره.
                          با در نظر گفتن N=50080 :
                          (N Mod 10000) مساوی 80 است.
                          (N Mod 1000) مساوی 80 است.
                          (N Mod 100) مساوی 80 است.
                          (N Mod 10) مساوی صفر است.

                          دیدگاه


                            #14
                            نوشته اصلی توسط evergreen نمایش پست ها

                            با سلام و احترام
                            کد:
                            Dim N As Word
                            Dim D1 As Byte
                            Dim D2 As Byte
                            Dim D3 As Byte
                            Dim D4 As Byte
                            Dim D5 As Byte
                            
                            N = 50080
                            
                            D1 = N / 10000
                            D2 = (N Mod 10000) / 1000
                            D3 = (N Mod 1000) / 100
                            D4 = (N Mod 100) / 10
                            D5 = N Mod 10​
                            اهان متوجه شدم شما باقیمانده رو نمیریزین داخل متغیر،باقیمانده رو اول تقسیم میکنین و نتیجه رو میریزین داخل متغیر اینجوری اون0های قبل 80 حفظ میشه درسته؟
                            { خلاف قوانین - پاک شد }

                            دیدگاه


                              #15
                              و اینکه یه مشکل دیگه هم دارم داخل این برنامه به نظر شما ایراد کجای کاره که هرچی هم پالس میدم وارد وقفهt1 نمیشه؟
                              $regfile = "m16def.dat"
                              $crystal = 8000000

                              Config Porta.0 = Output
                              Config Porta.1 = Output
                              Config Porta.2 = Output

                              Eclok Alias Porta.0
                              Eshow Alias Porta.2
                              Edeta Alias Porta.1

                              Config Timer1 = Counter , Edge = Falling
                              On Ovf1 t1
                              '-------
                              Config Timer0 = Timer , Prescale = 1024
                              '---------------
                              Enable Timer1
                              enable Timer0
                              Enable Interrupts

                              On Ovf0 t0

                              dim hh as byte , hl as byte , mh as byte , ml as byte , sh as byte, e as string*5
                              dim a as byte , b as word , timx as single , frequenc as word, pulse as word

                              '----------------------------------------------------------------------------------
                              hom:

                              do

                              loop
                              '******************************** Pulse_counter ********************************
                              t1:

                              do
                              pulse=253
                              hh=pulse/100
                              b=pulse mod 100
                              hl=b/10
                              mh=b mod 10
                              gosub nemayesh
                              loop​

                              الان باید مقدار 253 رو نشون بده ، داخل حلقه لوپ نشون میده داخل لیبل t1 نشون نمیده
                              { خلاف قوانین - پاک شد }

                              دیدگاه

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