اطلاعیه

Collapse
No announcement yet.

چگونه به بیت های یک متغیر دسترسی داشته باشیم.!

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

    چگونه به بیت های یک متغیر دسترسی داشته باشیم.!

    سلام به همه
    من قبلا برای اینکه بتونم بیت های یک متعیر رو بخونم و روی شیفت رجیستر ارسال کنم به ترتیب زیر عمل میکردم
    کد:
    bufer=0x55;
    for(m=0x80;m>=01;m=m>>1){ 
      PORTA.0=Bufer&m; 
      };

    حالا میخوام با برسی یک شرط بیت های متغیر رو مشخص کنم -> ( یعنی بیت به بیت یک متغیر رو تغیر بدم ) یجورایی تبدیل هشت بایت به هشت بیته که من اینجوری نوشتم که کدویژن ارور میده و میدونم هم که غلطه
    کد:
    // char _bufer[8];
    // char final_bufer;
    x=0; 
     for(j=0x01;j<=0x80;j=j<<1){
      
      if(_bufer[x]>128){
      final_bufer&j=1;}
      else{ 
      final_bufer[z]&j=0;}  
     x++; 
      };
    دوستان لطفا راهنمایی کنید . شدیدا به این تبدیل نیاز دارم و وقتمم خیلی کمه :sad: :sad: :sad: :sad:
    قومي متفکرند اندر ره دين
    قومي بگمان فتاده در راه يقين
    ميترسم از آن که بانگ آيد روزي
    که اي بي خبران ، راه نه آن است و نه اين...!

    #2
    پاسخ : چگونه به بیت های یک متغیر دسترسی داشته باشیم.!

    اگه میخواین بیت پنج رو تغییر بدین باید با 5>>1 or یا با نقیض اون and کنید.
    امیدوارم منظورتون رو درست فهمیده باشم
    گفت که دیوانه نهی لایق این خانه نهی

    دیدگاه


      #3
      پاسخ : چگونه به بیت های یک متغیر دسترسی داشته باشیم.!

      نوشته اصلی توسط Finder_
      اگه میخواین بیت پنج رو تغییر بدین باید با 5>>1 or یا با نقیض اون and کنید.
      امیدوارم منظورتون رو درست فهمیده باشم
      ممنون ، این روش که شما فرمودید درسته . در تنظیم رجیسترهای کنترلرهای آرم معمولا اینجوری عمل میکنن. .اصلا به دهنم نرسیده بود. :mrgreen:

      من مشکل رو اینجوری حل کردم
      کد:
      //*******************************************
      void convert(char _bufer[120]){
      byte i,j,x=0,z=0;
      //---------------------------
      // clear final bufer
       for(i=0;i<=23;i++)
       final_bufer[i]=0x00;
      //--------------------------- 
       for(i=0;i<=119;i+=5){ 
       for(j=0x01;j<=0x10;j=j<<1){ 
        if(_bufer[x]>128)
        final_bufer[z]=final_bufer[z]|j;
        x++;
        };  
       z++; 
       };
      };
      تبدیل بصورت 120 بایت که باید به 24 بایت تبدیل بشه - یعنی 120 تا پیکسل هستش که هرکدوم مقداری بین 0 تا 255 رو میتونه داشته باشه
      حالا من میخواستم تبدیلش کنم به 24 بایت 5 بیتی که در نهایت یه همون 120 با مقدار 0 و یک میرسیم
      اول آرایه 24 بایتی رو کلا صفر میکنم و بعد با برسی شرط بیت ها رو یک میکنم
      یه مقدار بد نوشتم - ولی تو زمان کم بهتر از این نمیشد
      قومي متفکرند اندر ره دين
      قومي بگمان فتاده در راه يقين
      ميترسم از آن که بانگ آيد روزي
      که اي بي خبران ، راه نه آن است و نه اين...!

      دیدگاه

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