اطلاعیه

Collapse
No announcement yet.

سوال در مورد مقدار دهی یک متغیر بایت به صورت بیتی

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

    سوال در مورد مقدار دهی یک متغیر بایت به صورت بیتی

    سلام
    من می خوام که یه دونه دی مالتی پلکسر(3 به 8) رو به میکرو وصل کنم ، برای همینم نیاز به 3 پین میکرو دارم که باید با اونا به دی مالتی دیتا بدم ، این وسط یه مشکلی هست و اون اینکه به دیگر پینهای پورت نیاز دارم ، در نتیجه می خوام یه متغیر از نوع int تعریف کنم و فقط سه پین میکرو رو به سه بیت اول آن معرفی کنم و به این صورت کار کنه که با دستور ++ مقدار آن افزایش پیدا کنه تا وقتی که 7 شد سپس دوباره مقدار اون 0 بشه و روز از نو ، ولی هر کار می کنم مدام کامپایلر ارور میده

    int decoder,newstr;
    #define decoder.0 PORTC.0
    #define decoder.1 PORTC.1
    #define decoder.2 PORTC.2
    .
    .
    .
    newstr++;
    dc=newstr;
    if(newstr==7)
    newstr=0;
    delay_ms(100);
    در دایره قسمت ما نقطه تسلیمیم لطف آنچه تو اندیشی حکم انچه تو بنمایی

    #2
    پاسخ : سوال در مورد مقدار دهی یک متغیر بایت به صورت بیتی

    لطفا فایل برنامه رو بزار تا بتونم کمک کنم...
    Share OR Die

    دیدگاه


      #3
      پاسخ : سوال در مورد مقدار دهی یک متغیر بایت به صورت بیتی

      سلام

      #include <mega32.h>
      #include <delay.h>

      int decode,newint;
      //bit a,b,c;
      #define decode.0 PORTC.0
      #define decode.1 PORTC.1
      #define decode.2 PORTC.2

      void main(void)
      {

      PORTA=0x00;
      DDRA=0xFF;

      DDRB=0xFF;

      PORTC=0x00;
      DDRC=0xff;

      PORTD=0x00;
      DDRD=0xFF;


      while (1)
      {
      // Place your code here

      newint++;
      decode=newint;
      if(newint==7)
      newint=0;
      delay_ms(100);

      };
      }

      در دایره قسمت ما نقطه تسلیمیم لطف آنچه تو اندیشی حکم انچه تو بنمایی

      دیدگاه


        #4
        پاسخ : سوال در مورد مقدار دهی یک متغیر بایت ب&#1607

        سلام
        یک روش اینه که این کاری کردم:



        int dccntr;
        #define a PORTC.0
        #define b PORTC.1
        #define c PORTC.2

        while(1){
        a=dccntr&0b00000001;
        b=dccntr&0b00000010;
        c=dccntr&0b00000100;
        if(dccntr==7)
        dccntr=-1;
        dccntr++;
        delay_ms(10);

        }

        این روش جواب داد
        ولی در کل سوال من اینه که آیا در کد ویژن میشه به بیت های یک متغیر دسترسی جداگانه داشت ، فکر می کنم یک تابع هست به اسم iostream.h که این قابلیت رو داره ، ولی مثل اینکه توی کدویزن این تابع تعریف نشده
        منبع :http://www.hpkclasses.ir/Courses/cpp/cpp0800.html
        در دایره قسمت ما نقطه تسلیمیم لطف آنچه تو اندیشی حکم انچه تو بنمایی

        دیدگاه


          #5
          پاسخ : سوال در مورد مقدار دهی یک متغیر بایت ب&#1607

          سلام
          برای 1 کردن بیت مور نظر از این دستور استفاده کنید.مثلا بیت صفر

          کد:
          data |= 0b00000001
          کد بالا خلاصه دستور زیر هست:
          data=data|0b00000001

          برای 0 کردن از این دستور

          کد:
          data &=0b11111110
          Work with what you have .Never limit yourself by things you could have had

          دیدگاه

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