اطلاعیه

Collapse
No announcement yet.

چسباندن دو پورت میکرو به هم برای ایجاد پورت 16 بیتی

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

    چسباندن دو پورت میکرو به هم برای ایجاد پورت 16 بیتی

    سلام . من می خوام یک دیتای 16 بیتی رو از طریق پورت های c , d در atmega32 به میکرو بفرستم ، و در میکرو یک متغیر 16 بیتی داشته باشم که 8 بیت msb از پورت c و 8 بیت lsb از پورت d باشند. ولی نمیدونم چه جوری تعریف کنم. (مثلا برای 8 بیتی می گیم a=PINC ولی در 16 بیتی چی جوری باید بگیم A= PINCPIND؟!!!!)
    فقط می دونم باید از pointer استفاده بشه ولی چه جوری؟

    #2
    پاسخ : چسباندن دو پورت میکرو به هم برای ایجاد پورت 16 بیتی

    سلام.
    شما باید از دستور شیفت استفاده کنید.
    به این صورت:
    کد:
    a=(PIND<<8)|(PINC);
    اگه خیلی با شیفت حال نمیکنی :biggrin: این نکته رو هم میگم که هرشیفت به راست معادل تقسیم کردن عدد بر 2 و هر شیفت به چپ معادل ضرب کردن عدد در 2 هست.
    تولید کننده انواع تابلو فرمان آسانسور با تکنولوژی روز دنیا

    دیدگاه


      #3
      پاسخ : چسباندن دو پورت میکرو به هم برای ایجاد پورت 16 بیتی

      ممنون از کمکتون . حالا اگه بخوام 13 بیت باشه باید بگم :
      A=(PIND<<5)|(PINC); ؟
      می خوام 8 بیت بالا PORTD و 5 بیت پایین هم از PORTC (بیت های 7-3) باشه

      دیدگاه


        #4
        پاسخ : چسباندن دو پورت میکرو به هم برای ایجاد پورت 16 بیتی

        نه دیگه میشه این جوری:
        کد:
        a=(PIND<<5)|((PINC>>3)&0x1f);
        اگه نا مفهومه بگید تا بیشتر توضیح بدم.
        تولید کننده انواع تابلو فرمان آسانسور با تکنولوژی روز دنیا

        دیدگاه


          #5
          پاسخ : چسباندن دو پورت میکرو به هم برای ایجاد پورت 16 بیتی

          ممنون متوجه شدم :icon_razz:

          دیدگاه

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