اطلاعیه

Collapse
No announcement yet.

خروجی قرار دادن دو پورت میکرو

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

    خروجی قرار دادن دو پورت میکرو

    سلام به همگی
    دوستان اگه یه نفر این مسئله رو برام حل کنه خیلی عالیه
    من 19 دیتا دارم به عنوان خروجی که روی پورتهای B و D و C هستش که میخوام خروجی باشند
    حالا این مشکل وجود داره که پایه ایتراپت صفر جزوش نیست و پورت B همش هست و پورت C هم سه بیت 0و1و2
    حالا یکی برام اینا رو تلفیق کنه که وقتی من می خوام دیتا بدم نخوام دونه دونه پورتها را 0 و1 کنم
    مثلا بگم DATA=0X7FFFF;
    FH JA;V

    #2
    پاسخ : خروجی قرار دادن دو پورت میکرو

    یه تابع بنویس که اون اینکار رو برات بکنه و اونوقت شما فقط داده مورد نظرت رو به تابع ارسال کن

    دیدگاه


      #3
      پاسخ : خروجی قرار دادن دو پورت میکرو

      سلام
      من اینو نوشتم ولی کار نمیده
      unsigned long int Data2;

      PORTB = Data2 & 0x0FF;
      PORTD &=((Data2>>8) | 0x04);
      PORTD |= ((Data2>>8) & 0xfb);
      PORTC &= ((Data2>>16) | 0x0F0 );
      PORTC |= ((Data2>>16) & 0x0f);

      دیدگاه


        #4
        پاسخ : خروجی قرار دادن دو پورت میکرو

        سلام
        میتونی داده خودتو 3بار و هربار به یه پورت بفرستی
        فقط هربار باید اونو با عددی and کنی که فقط دیتی مربوط به پورتت بمونه بعد شیفتش بدی تا عدد دلخواهتو بکشی بیرون. :applause:
        مثلا اگر از 0xE7Fمیخوای عدد7رو اختصاص بدی اونو با 0x0F0 'اند(and)کن بعد 8بار شیفتش بده به راست :bye
        انقدر احمق نیستم که فکر کنم کارم تموم شده

        دیدگاه


          #5
          پاسخ : خروجی قرار دادن دو پورت میکرو

          الان منم همین کارو کردم
          ولی یه مشکلی داره اگه مثلا 0x3a243 بدی بیت چهارم a از بین میره!! و کلا a هیچی
          پس شد کل پورت b - پورت d به غیر از ایتراپت صفر و 4 بیت پایینی پورت c
          atmega8

          دیدگاه


            #6
            پاسخ : خروجی قرار دادن دو پورت میکرو


            void set_bits(unsigned long n) // 19 bits in use only!
            {
            unsigned char tmp;

            PORTB = (unsigned char)n; // 8 bits, B0..B7
            n >>= 8;
            tmp = (unsigned char)n & 0x0F;
            PORTC = (PORTC & (~0x0F)) | tmp; // 4 bits, C0..C3
            tmp = ((unsigned char)n >> 4) & 0x03;
            PORTD = (PORTD & (~0x03)) | tmp; // 2 bits, D0..D1
            tmp = ((unsigned char)n & (~0x03)) << 1;
            PORTD = (PORTD & (~0xF8)) | tmp; // 5 bits, D3..D7
            }



            دیدگاه


              #7
              پاسخ : خروجی قرار دادن دو پورت میکرو

              سلام به همگی
              این برنامه هم که جواب نداد :angry:

              دوستان خواهشا قبلش یه تست با proteous بکنند

              با تشکر از همه

              دیدگاه


                #8
                پاسخ : خروجی قرار دادن دو پورت میکرو فوری

                سلام
                C3-C2-C1-C0-D7-D6-D5-D4-D3-D1-D0-B7-B6-B5-B4-B3-B2-B1-B0
                البته C0 بیت کم ارزش هست
                ATMEGA8
                :sad:

                دیدگاه


                  #9
                  پاسخ : خروجی قرار دادن دو پورت میکرو

                  ببخشید C3 بیت کم ارزشه

                  دیدگاه

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