اطلاعیه

Collapse
No announcement yet.

تبدیل باینری به مبنای 10

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

    تبدیل باینری به مبنای 10

    سلام دوستان عیدتون مبارک من برای سنسور dht11 برنامه نوشتم وموفق شدم بیتاشو دریافت کنم و تو یه متغییر ارایه ای ذخیره کنم حالا میخوام اونا رو به مبنای 10 و عدد تبدیل کنم میشه کمک کنید عدد در متغییرt_h ذخیره میشه و پنج کد هشت بیتی هست
    کد:
    
    unsigned char h_t[5][8];
    dht_ddr=1;
    dht_port=0;
    delay_18ms();
    dht_ddr=0;
     for(i=0;i>=4;i++){
      while(!(dht_pin==0));
      while(!(dht_pin==1));
      for(p=0;p>=8;p++){
       a=0;
       while(!(dht_pin==0)){
        a++;
        delay_1us();
       }
       if(a<=30) h_t[i][p]=0;
       else h_t[i][p]=1;
      }
    }
    //***************************************
    delay_ms(2000);
    //***************************************
    void delay_18ms(void){
     int timer;
     TCCR0=((1<<CS00)|(1<<CS01)|(0<<CS02));
     for(timer=0;timer<=9;timer++){
     TCNT0=5;
     while(!(TIFR & 0x01));
     TIFR|=0x01;
     }
     TCCR0=((0<<CS00)|(0<<CS01)|(0<<CS02));
    }
    //****************************************
    void delay_1us(void){
     TCCR0=((0<<CS00)|(1<<CS01)|(0<<CS02));
     TCNT0=0;
     while(!(TIFR & 0x01));
     TIFR|=0x01;
     TCCR0=((0<<CS00)|(0<<CS01)|(0<<CS02));
    }
    //*****************************************
    با تشکر
    سقراط : دانش من بدانجایی رسید که فهمیدم هیچ نمیدانم.

    #2
    پاسخ : تبدیل باینری به مبنای 10

    :biggrin:
    سقراط : دانش من بدانجایی رسید که فهمیدم هیچ نمیدانم.

    دیدگاه


      #3
      پاسخ : تبدیل باینری به مبنای 10

      نوشته اصلی توسط سید سجاد احدزاده
      سلام دوستان عیدتون مبارک من برای سنسور dht11 برنامه نوشتم وموفق شدم بیتاشو دریافت کنم و تو یه متغییر ارایه ای ذخیره کنم حالا میخوام اونا رو به مبنای 10 و عدد تبدیل کنم میشه کمک کنید عدد در متغییرt_h ذخیره میشه و پنج کد هشت بیتی هست
      کد:
      
      unsigned char h_t[5][8];
      dht_ddr=1;
      dht_port=0;
      delay_18ms();
      dht_ddr=0;
       for(i=0;i>=4;i++){
        while(!(dht_pin==0));
        while(!(dht_pin==1));
        for(p=0;p>=8;p++){
         a=0;
         while(!(dht_pin==0)){
          a++;
          delay_1us();
         }
         if(a<=30) h_t[i][p]=0;
         else h_t[i][p]=1;
        }
      }
      //***************************************
      delay_ms(2000);
      //***************************************
      void delay_18ms(void){
       int timer;
       TCCR0=((1<<CS00)|(1<<CS01)|(0<<CS02));
       for(timer=0;timer<=9;timer++){
       TCNT0=5;
       while(!(TIFR & 0x01));
       TIFR|=0x01;
       }
       TCCR0=((0<<CS00)|(0<<CS01)|(0<<CS02));
      }
      //****************************************
      void delay_1us(void){
       TCCR0=((0<<CS00)|(1<<CS01)|(0<<CS02));
       TCNT0=0;
       while(!(TIFR & 0x01));
       TIFR|=0x01;
       TCCR0=((0<<CS00)|(0<<CS01)|(0<<CS02));
      }
      //*****************************************
      با تشکر
      دوست عزیز تبدیل مبنا دلخواه به 10 یه فرمول خیلی ساده داره (مجموع(مبنا به توان موقعیت مکانی*پایه)). یه سرچ کوچولو بزن حله. ویا راحتر از اون بیتهایی که میحونی بجای ریختن تو آرایه شیفت بکن تو یه متغییر. البته برنامتون رو نگاه نکردم و فقط از روی گفته هاتون دارم راه حل میدم

      دیدگاه


        #4
        پاسخ : تبدیل باینری به مبنای 10

        نوشته اصلی توسط c384104
        دوست عزیز تبدیل مبنا دلخواه به 10 یه فرمول خیلی ساده داره (مجموع(مبنا به توان موقعیت مکانی*پایه)). یه سرچ کوچولو بزن حله. ویا راحتر از اون بیتهایی که میحونی بجای ریختن تو آرایه شیفت بکن تو یه متغییر. البته برنامتون رو نگاه نکردم و فقط از روی گفته هاتون دارم راه حل میدم
        ممنون دوست عزیز میشه یه مثال درباره شیفت دادن بزنید منظورتون متوجه شدم اما تا حالا باینری تو متغییر شیفت ندادم
        با تشکر
        سقراط : دانش من بدانجایی رسید که فهمیدم هیچ نمیدانم.

        دیدگاه


          #5
          پاسخ : تبدیل باینری به مبنای 10

          سلام دوست عزیز،
          اگه به لینک زیر سر بزنین اطلاعات کاملی در مورد شیف دادن متغییر ها و بیت مسک های مربوطه در AVR پیدا میکنید...
          http://www.avrfreaks.net/forum/tut-c...ic&t=37871

          دیدگاه


            #6
            پاسخ : تبدیل باینری به مبنای 10

            لینکی که دوستمون دادن توضیحات کامله. فقط اضافه کنم که منظور از شیفت کردن یعنی انتقال محتوی هر بیت به بیت کناری (ذرست مثل وقتی که مثلا تو کلاس استاد میگه همه یه صندلی برید سمت راست) این مثال میشه شیفت به راست. چون شما داری اطلاعات رو به صورن سریال میخونی باید یکی یکی شیفت بکنی تا تبدیل بشه به داده نهایی.

            دیدگاه

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