ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.





کاربران برچسب زده شده

صفحه 1 از 2 12 آخرین
نمایش نتایج: از 1 به 10 از 14
  1. #1
    2012/07/08
    340
    3

    جابه جايي بيت به بيت خروجي يک پورت

    دوستان سلام. :read:

    ميشه توي يه خروجي يه پورت بيت رو با بيت جابه جا کرد؟

    مثلا من روي پورتم يه عدد bcd دارم که قراره به يه اي سي ديکودر وصل شه بعد الان براي pcb مشکل دارم. خيلي پيچيده ميشه.
    براي مثال من روي پورت A کد BCD دارم که قراره به ديکودر وصل شه

    در حالت عادي پايه هاي ميکرو به ترتيب
    پايه ميکرو>>پايه ديکودر
    40>>7
    39>>1
    38>>2
    37>>6
    وصل بشه :nerd:
    اما من اينجوري ميخوام:
    40>>1
    39>>2
    38>>6
    37>>7
    براي اينکار بايد ديتاي پايه 40 با 39 عوض بشه ديگه، اما چطوري :redface: :redface: ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟


    يکي دو تا نيست 6 تاست :applause:

    راستي به زبان سي
    "زمان خط است نه دايره" چه ايده بدي بوده گرد ساختن ساعت. احساس ميکني هميشه فرصت تکرار است.
    ساعت دروغ ميگويد. دروغ. زمان بر گرد يک دايره نمي چرخد! زمان بر روي خطي مستقيم ميدود. و هيچگاه، هيچگاه، هيچگاه باز نميگردد.
    ساعت خوب، ساعت شني است! هر لحظه به تو يادآوري ميکند که دانه اي که افتاد ديگر باز نميگردد.
    پس بهتره يکم به ثانيه هايي که داريم فکر کنيم تا به راحتي از دستشون نديم....
  2. #2
    2012/07/08
    340
    3

    پاسخ : جابه جايي بيت به بيت خروجي يک پورت

    دوستان يه چيزي خودم نوشتم اما کار نميکنه :rolleyes: :biggrin:

    کد:
        
    //1X0X >> 0X1X
    
    
    S=bin2bcd(s); 
        bit s0=0,s1=0,s2=0,s3=0,s4=0,s5=0,s6=0,s7=0;
    
        s0=S;     
        s1=S>>1;
        s2=S>>2;
        s3=S>>3;
        PORTD.0=s0;
        PORTD.1=s3;
        PORTD.2=s2;
        PORTD.3=s1;
    اينجا فقط لازم بود ديتاي پايه ي 3و1 عوض بشن.
    چطوري ميتونم براي هر پايه ي پورت يه متغير از نوع بيت بدم؟

    بخوام يه پايه رو وضعيتش رو عوض کنم درسته همين؟ :read:
    اصن درست شيفت دادم؟
    "زمان خط است نه دايره" چه ايده بدي بوده گرد ساختن ساعت. احساس ميکني هميشه فرصت تکرار است.
    ساعت دروغ ميگويد. دروغ. زمان بر گرد يک دايره نمي چرخد! زمان بر روي خطي مستقيم ميدود. و هيچگاه، هيچگاه، هيچگاه باز نميگردد.
    ساعت خوب، ساعت شني است! هر لحظه به تو يادآوري ميکند که دانه اي که افتاد ديگر باز نميگردد.
    پس بهتره يکم به ثانيه هايي که داريم فکر کنيم تا به راحتي از دستشون نديم....
  3. #3
    2007/03/12
    68
    1

    پاسخ : جابه جايي بيت به بيت خروجي يک پورت

    نقل قول نوشته اصلی توسط mo2_star

    ميشه توي يه خروجي يه پورت بيت رو با بيت جابه جا کرد؟

    مثلا من روي پورتم يه عدد bcd دارم که قراره به يه اي سي ديکودر وصل شه بعد الان براي pcb مشکل دارم. خيلي پيچيده ميشه.
    براي مثال من روي پورت A کد BCD دارم که قراره به ديکودر وصل شه

    براي تبديل کد بهتره از جدول استفاده کنيد.به اين ترتيب که دو آرايه تعريف مي کنيم که در آرايه اولي مقدارهاي اوليه و در آرايه دوم در ايندکس متناظر با آرايه اولي مقادير تبديل شده رو وارد مي کنيم .هر زمان که خواستيم يک کد رو تبديل کنيم اول بايد ايندکس اونو در آرايه اول پيدا کنيم بعد عدد موجود در همون ايندکس رو از آرايه دوم استخراج کنيم.
    بهتره قسمت هاي 15 تا 19 آموزش AVR جناب کي نژاد رو ببينيد.

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت


    توي همون صفحه نمونه کد هم هست.
  4. #4
    2013/08/28
    539
    12

    پاسخ : جابه جايي بيت به بيت خروجي يک پورت

    با سلام
    خب راحته، شما اول برنامت بيا و پايه هاتو define کن(مثلا
    کد:
    #define BCD_PIN_1 PORTA.40
    يا هر اسمي که راحتي
    طبيعتا اين کار با توجه به رسم pcb و نحوه وصل ترک ها اتفاق مي افته.
    بعد با ديفاينات کار کن تا ديگه لازم نباشه هر دفعه فکر کني که کي، چي بود.فقط همون اول يه بار اين کارو مي کني
    The healthy human mind doesn't wake up in the morning thinking this is his last day on earth.
  5. #5
    2012/07/08
    340
    3

    پاسخ : جابه جايي بيت به بيت خروجي يک پورت

    نقل قول نوشته اصلی توسط "ميلاد"
    براي تبديل کد بهتره از جدول استفاده کنيد.به اين ترتيب که دو آرايه تعريف مي کنيم که در آرايه اولي مقدارهاي اوليه و در آرايه دوم در ايندکس متناظر با آرايه اولي مقادير تبديل شده رو وارد مي کنيم .هر زمان که خواستيم يک کد رو تبديل کنيم اول بايد ايندکس اونو در آرايه اول پيدا کنيم بعد عدد موجود در همون ايندکس رو از آرايه دوم استخراج کنيم.
    بهتره قسمت هاي 15 تا 19 آموزش AVR جناب کي نژاد رو ببينيد.

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت


    توي همون صفحه نمونه کد هم هست.
    خيلي ممنونم اما بصورت مالتي پلکس نبستم.
    نقل قول نوشته اصلی توسط hessam2013
    با سلام
    خب راحته، شما اول برنامت بيا و پايه هاتو define کن(مثلا
    کد:
    #define BCD_PIN_1 PORTA.40
    يا هر اسمي که راحتي
    طبيعتا اين کار با توجه به رسم pcb و نحوه وصل ترک ها اتفاق مي افته.
    بعد با ديفاينات کار کن تا ديگه لازم نباشه هر دفعه فکر کني که کي، چي بود.فقط همون اول يه بار اين کارو مي کني
    الان به يه مشکلي برخوردم که اصلا حواسم نبود متغيري که ثانيه توش بصورت BCD ذخيره ميشه از نوع کاراکتر هستش.
    فک کنم با ارايه بشه درستش کرد
    "زمان خط است نه دايره" چه ايده بدي بوده گرد ساختن ساعت. احساس ميکني هميشه فرصت تکرار است.
    ساعت دروغ ميگويد. دروغ. زمان بر گرد يک دايره نمي چرخد! زمان بر روي خطي مستقيم ميدود. و هيچگاه، هيچگاه، هيچگاه باز نميگردد.
    ساعت خوب، ساعت شني است! هر لحظه به تو يادآوري ميکند که دانه اي که افتاد ديگر باز نميگردد.
    پس بهتره يکم به ثانيه هايي که داريم فکر کنيم تا به راحتي از دستشون نديم....
  6. #6
    2012/07/08
    340
    3

    پاسخ : جابه جايي بيت به بيت خروجي يک پورت

    [code=c]
    char S;
    int NS[8];
    int Z[8];
    char M;
    char H;

    while (1)
    {
    rtc_get_time(&h,&m,&s);
    S=bin2bcd(s);
    M=bin2bcd(m);
    H=bin2bcd(h);
    NS[8]=S;
    Z[0]=NS[0];
    Z[1]=NS[1];
    Z[2]=NS[2];
    Z[3]=NS[3];
    Z[4]=NS[4];
    Z[5]=NS[5];
    Z[6]=NS[6];
    Z[7]=NS[7];
    PORTD=Z[8];
    PORTB=M;
    PORTA=S; [/code]

    الان نبايد دوباره ثانيه رو توي پورت d نشون بده؟

    فقط اومدم ثانيه خروجي bcd رو توي NS به INT تبديلش کردم

    بعد اومدم توي متغير Z ريختمش دوباره که بشه جاي بيت ها رو عوض کرد اما الان توي پورت خروجي همش صفر دارم.

    در ضمن 2 تا هشدار هم داره که براي اين هاست:
    کد:
    PORTD=Z[8];
    NS[8]=S;
    Warning: array index is out of range
    "زمان خط است نه دايره" چه ايده بدي بوده گرد ساختن ساعت. احساس ميکني هميشه فرصت تکرار است.
    ساعت دروغ ميگويد. دروغ. زمان بر گرد يک دايره نمي چرخد! زمان بر روي خطي مستقيم ميدود. و هيچگاه، هيچگاه، هيچگاه باز نميگردد.
    ساعت خوب، ساعت شني است! هر لحظه به تو يادآوري ميکند که دانه اي که افتاد ديگر باز نميگردد.
    پس بهتره يکم به ثانيه هايي که داريم فکر کنيم تا به راحتي از دستشون نديم....
  7. #7
    2013/08/28
    539
    12

    پاسخ : جابه جايي بيت به بيت خروجي يک پورت

    در ارايه ادرس ها از صفر شروع ميشن
    پس وقتي تعريف مي کنين.
    کد:
    int a[8];
    ايندکش هاي مجاز از 0 تا 7 بيشتر نيست.
    The healthy human mind doesn't wake up in the morning thinking this is his last day on earth.
  8. #8
    2007/03/12
    68
    1

    پاسخ : جابه جايي بيت به بيت خروجي يک پورت

    روشي که گفتم يک روش کلي براي تبديل کد هست و مختص کار با 7segment حالا چه به صورت مالتي پلکس و چه غير مالتي پلکس نيست.
  9. #9
    2012/07/08
    340
    3

    پاسخ : جابه جايي بيت به بيت خروجي يک پورت

    دوستان خيلي ممنون از کمک هاتون :smile:
    الان اينو نوشتم درست شد خود ثانيه رو ميفرسته رو پورت D

    [code=c]
    rtc_get_time(&h,&m,&s);
    S=bin2bcd(s);
    M=bin2bcd(m);
    H=bin2bcd(h);
    NS[7]=S;
    Z[0]=NS[0]; //7
    Z[1]=NS[1]; //1
    Z[2]=NS[2]; //2
    Z[3]=NS[3]; //6
    Z[4]=NS[4];
    Z[5]=NS[5];
    Z[6]=NS[6];
    Z[7]=NS[7];
    PORTD=Z[7];
    [/code]
    حالا که سيم بنديش رو عوض ميکنم و
    توي برنامه تغييرات رو ميدم دوباره پورت D همش صفر رو نشون ميده :sad:

    [code=c]
    NS[7]=S;
    Z[1]=NS[0]; //1
    Z[2]=NS[1]; //2
    Z[3]=NS[2]; //6
    Z[0]=NS[3]; //7
    Z[5]=NS[4];
    Z[6]=NS[5];
    Z[7]=NS[6];
    Z[4]=NS[7];
    PORTD=Z[7];
    [/code]
    "زمان خط است نه دايره" چه ايده بدي بوده گرد ساختن ساعت. احساس ميکني هميشه فرصت تکرار است.
    ساعت دروغ ميگويد. دروغ. زمان بر گرد يک دايره نمي چرخد! زمان بر روي خطي مستقيم ميدود. و هيچگاه، هيچگاه، هيچگاه باز نميگردد.
    ساعت خوب، ساعت شني است! هر لحظه به تو يادآوري ميکند که دانه اي که افتاد ديگر باز نميگردد.
    پس بهتره يکم به ثانيه هايي که داريم فکر کنيم تا به راحتي از دستشون نديم....
  10. #10
    2007/03/12
    68
    1

    پاسخ : جابه جايي بيت به بيت خروجي يک پورت

    کد:
    int NS[8];
    يک آرايه 8 عنصري تعريف مي کنه که هر کدوم از عناصرش يک متغير integer هست که 16 بيته.به نظر مياد شما هر کدوم از عناصر رو يک بيت فرض کرديد.
صفحه 1 از 2 12 آخرین
نمایش نتایج: از 1 به 10 از 14

موضوعات مشابه

  1. جابه جايي بيت به بيت خروجي يک پورت
    توسط کاو اندیش در انجمن برنامه نويسي و اينترفيس
    پاسخ: 1
    آخرين نوشته: 2014/11/03, 18:18
  2. کم بودن ولتاژ خروجي پورت a در at mega32 هنگام استفاده همزمان از 4 پورت
    توسط masoud.moghaddam21 در انجمن میکروکنترلرهای AVR
    پاسخ: 17
    آخرين نوشته: 2014/04/22, 22:50
  3. تشخيص قطعي 3 فاز يا جابه جايي فاز ها
    توسط mohsenavr در انجمن كنترل صنعتي
    پاسخ: 13
    آخرين نوشته: 2014/02/21, 06:16
  4. در چه سيستمي جابه جايي فاز اهميت ندارد؟
    توسط soltanfarid در انجمن تاسيسات الكتريكي
    پاسخ: 8
    آخرين نوشته: 2013/10/11, 16:44
  5. تنظيمات پورت خروجي KCame 4
    توسط kazemihossein33 در انجمن رباتيك و مكاترونيك
    پاسخ: 0
    آخرين نوشته: 2013/09/20, 18:47

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •