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





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









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









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





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

صفحه 1 از 2 12 آخرین
نمایش نتایج: از 1 به 10 از 14
  1. #1
    2006/05/19
    85
    0

    سه سوال در mikroc PIC

    سلام خدمت مهندسان عزیز
    سه تا سوال داشتم لطفن راهنمایی کنید.
    من تازه با mikroc PIC دارم کار می کنم

    1- چه طور میشه قسمت صحیح یه عدد اعشاری رو گرفت.فرض کنید عددمون Number/16=12.34 باشه و من فقط عدد صحیح یعنی 12 رو بخوام؟( چه طوری میشه فقط قسمت اعشاری رو به دست آورد؟)

    2- چه طوری دو عدد رو با هم Or و یا And کنم؟فرض کنید می خوام دو عدد 20 و 45 رو با هم Or و یا And کنم؟

    3-باقی مونده حاصل از تقسیم رو چه طوری به دست بیارم؟(با دستور modf میشه؟چه طوری؟

    ممنون :redface:
  2. #2
    2009/01/01
    422
    19

    پاسخ : سه سوال در mikroc PIC

    3-باقی مونده حاصل از تقسیم رو چه طوری به دست بیارم؟(با دستور modf میشه؟چه طوری؟
    با %
    مثلا 4%101 برابره با 1

    2- چه طوری دو عدد رو با هم Or و یا And کنم؟فرض کنید می خوام دو عدد 20 و 45 رو با هم Or و یا And کنم؟
    برای اون که OR که شما میخواین (یعنی Bitwise OR ) از | و برای AND از & استفاده میشه.

    1- چه طور میشه قسمت صحیح یه عدد اعشاری رو گرفت.فرض کنید عددمون Number/16=12.34 باشه و من فقط عدد صحیح یعنی 12 رو بخوام؟( چه طوری میشه فقط قسمت اعشاری رو به دست آورد؟)
    برای تبدیل نوع متغیر کافیه قبل متغیر نوع مورد نظر رو داخل پرانتز بنویسید:

    کد:
    unsigned int A;
    double B;
    A=(unsigned int) B;
    [size=10pt]خویشتن را اصلاح کنید تا خداوند کارها را اصلاح کند. امیر المومنین علی (ع)[/size]
  3. #3
    2006/05/19
    85
    0

    پاسخ : سه سوال در mikroc PIC

    ممنون از پاسختون
    دستور modf برای چیه؟
    آیا برای این کارای که من خواستم هست؟
  4. #4
    2007/11/22
    تبریز
    2,483
    492

    پاسخ : سه سوال در mikroc PIC

    نقل قول نوشته اصلی توسط Majid.ebru
    1- چه طور ميشه قسمت صحيح يه عدد اعشاري رو گرفت.فرض کنيد عددمون Number/16=12.34 باشه و من فقط عدد صحيح يعني 12 رو بخوام؟( چه طوري ميشه فقط قسمت اعشاري رو به دست آورد؟)
    متغير رو از نوع char تعريف کنين و مستقيم نتيجه ي تقسيم رو بريزين توش.ارقام اعشاري بعد از مميز حذف ميشن و محاسبه ي ديگه اي نميخواد.

    براي قسمت اعشاري(بعد از مميز)؛ متغير رو از نوع float تعريف کنين و حاصل تقسيم رو توي اون متغير هم بريزين و اختلاف دو تا محاسبه رو توي همون متغير float بريزين.نتيجه رو ضرب در دقت مطلوب خودتون بعد از اعشار، بکنين.(10-100-1000) دوباره نتيجه رو توي يه متغير از نوع char بريزين تا بقيه مقادير حذف بشن.(خودتون بهتر ميدونين در صورتي که دقتتون دو رقم اعشار باشه شدني هست و اگه دقت 3 رقم باشه تا 255 ميتونين اينکار رو بکنين و بيشتر از اون بايد متغير از نوع int انتخاب بشه)

    اميدوارم واضح گفته باشم.

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

    عضویت



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

    عضویت

  5. #5
    2006/05/19
    85
    0

    پاسخ : سه سوال در mikroc PIC

    سلام
    شرمنده توی مرحله اول گیر افتادم و نتونستم بقیه مراحل رو چک کنم لطفا راهنمایی کنید.
    قراره یه سری دیتا به شکل :*xxx*xxx*xxx*xxx*xxx* که x مقادیری بین 0 تا 9 و a تا f هست و به شکل زیر ارسال میشه
    کد:
        else if (loop == 2)        // send data 1 64
        {//if 1 send_data
            count1 = 0;
            for (i = 0 ; i < 9 ; i++)
            {//for 1 send_data
                num2 = 0;
                if ((i % 4) == 0)
                {//if 2 send_data
                        writebuff[i] = '*' ;
                }//if 2 send_data
                else
                {//else 1 send_data
                    for (j = 0 ; j <3 ; j++)
                    {//for 2 send_data
                        num3 = ary[count1++] * pow(10 , j) ;
                        num2 = ( num2 | num3 );
    //--------------------------------------------------------------------------
                        switch ( num2 )        // Sensor Value
                        {//switch 1 send_data
                            case 0 :
                                    writebuff[i] = '0' ; break;
                            case 1 :
                                    writebuff[i] = '1' ; break;
                            case 10 :
                                    writebuff[i] = '2' ; break;
                            case 11 :
                                    writebuff[i] = '3' ; break;
                            case 100 :
                                    writebuff[i] = '4' ; break;
                            case 101 :
                                    writebuff[i] = '5' ; break;
                            case 110 :
                                    writebuff[i] = '6' ; break;
                            case 111 :
                                    writebuff[i] = '7' ; break;
                            case 1000 :
                                    writebuff[i] = '8' ; break;
                            case 1001 :
                                    writebuff[i] = '9' ; break;
                            case 1010 :
                                    writebuff[i] = 'a' ; break;
                            case 1011 :
                                    writebuff[i] = 'b' ; break;
                            case 1100 :
                                    writebuff[i] = 'c' ; break;
                            case 1101 :
                                    writebuff[i] = 'd' ; break;
                            case 1110 :
                                    writebuff[i] = 'e' ; break;
                            case 1111 :
                                    writebuff[i] = 'f' ; break;
                        }//------- switch 1 send_data
                    }//----------- for 2 send_data
                }//--------------- else 1 send_data
            }//------------------- for 1 send_data
        }
    اما پاسخ به صورت زیر هست :
    کد:
    +111*101*027*0ï*0—8*080*248*010*›ó\*226*a02*520*002*0f0*ad1*300
    البته الان تا قسمتی درست کار کرد فکر کنم ترسید اما دفعه قبل کاراکترهای دیگه ای پس می فرستاد؟
  6. #6
    2007/11/22
    تبریز
    2,483
    492

    پاسخ : سه سوال در mikroc PIC

    سلام.ببخشيد ديروز وقت نشد جواب بدم.

    case رو اشتباه مقدار دهي کردين.ميکروي بدبخت هم اساسي رفته سرکار!تو case داره دنبال 10 و100 و 101 ميگرده به جاي 2و4و5!! (که منظور شما 2و4و5و... بايد باشه؟)
    فعلا همين رو اصلاح کنين تا ببينيم چي ميشه!

    راستي، خطوط اضافي برنامه رو حذف کنين تا راحت بشه تحليلش کرد.

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

    عضویت



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

    عضویت

  7. #7
    2006/05/19
    85
    0

    پاسخ : سه سوال در mikroc PIC

    سلام
    ممنون از پاسختون
    خیلی از مشکلات حل شد الا این
    [quote author=شاهرخ مستقيمي ]
    case رو اشتباه مقدار دهي کردين.[/quote]
    چرا اینجوری؟ من که عدد رو در توانهای از 10 ضرب می کنم و Switch نباید دنبال 2و4و5و... اینها باشه؟ :cry:
    الان میکرو پاسخ میده : ( حروف بزرگ به جهت جدا کردن اعداد ارسالی هست )
    کد:
    Report Id: 0
    
    U000U0M0U300U400U500U600U700U800U900Ua00U410Ue10U820U230Uc30U640
    
    Report Id: 0
    
    U050Ua50U460Ue60Ucd0Ua41U8b1U622U492U203U073Ued3Ud83U7e3U000U000
    اینجا مشکل دارم U000U0M0U

    توی case از دستور Default هم استفاده کردم و حرف M رو می فرستم اما هنوز مشکل دارم
    تا خونه ای شماره 19 از آرایه ary فقط اعداد 0 و 1 ریختم و می خوام هر 4 تا از خونه های آرایه رو تبدیل به هگز کنم ( چون فقط دیجیتال هستن مثل ورودی و خروجی )و توی کامپیوتر دریافت کنم.
    از خونه ای 20 تا 47 هر سه خونه نمایانگر یه عدد هست ، که اونها رو الان دارم درست دریافت می کنم.
    من منظورم باینری کردن هر 4 تا خونه از ارایه هست اما نمی دونم چرا عدد رو وقتی Or می کنم باز همون عدد دسیمال رو می ده؟؟
    توی کیسه همه اعداد رو به دسیمال ( 3و4و5و....) تبدیل کردم اما باز نشد؟
    لطفا راهنمایی کنید ؟ :angry:
  8. #8
    2007/11/22
    تبریز
    2,483
    492

    پاسخ : سه سوال در mikroc PIC

    امکانش هست واضح از اول بفرمايين قصد انجام چه کاري رو دارين؟ من که اصلا سر در نياوردم هدفتون از انجام اين کارها چي هست! اگه ميخواين ديتايي رو به کامپيوتر بفرستين؛خوب ديتا رو به همون شکلي که هست بفرستين ديگه! ديگه چه نيازه که تبديلش بکنين و...
    بيشتر توضيح بفرمايين تا يه خرده قانع بشم! :nerd:

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

    عضویت



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

    عضویت

  9. #9
    2006/05/19
    85
    0

    پاسخ : سه سوال در mikroc PIC

    سلام
    قرار 20 تا دیتا دیجیتال ( ورودی یا خروجی ) به همراه 27 تا عدد ( 0xfff = 4095 decimal) را به کامپیوتر بفرستم.
    حالا این 47 دیتا رو توی یه ارایه می ریزم و 2 بار می فرستم.
    مقدار Report Length به طور پیش فرض 64 تا هست ، برای همین طی دو دفعه دیتا رو ارسال می کنم.
    تفاوت اعداد این آرایه به این صورت هست که تا خونه 20ام مقادیر به صورت 0 و 1 هست و بقیه اعداد معمولی.
  10. #10
    2007/11/22
    تبریز
    2,483
    492

    پاسخ : سه سوال در mikroc PIC

    خب...الان روشن شد قضيه.
    شما الان اون20تا ديتاي ديجيتالي رو ميخواين تبديلش کني به 3 بايت(2بايت و نيم که نصف بايت آخري خاليه)
    اما ميکرو داره مثل بزغاله :mrgreen: از دستتون فرار ميکنه!
    اين قطعه کد رو نگاه کنين،تو اين برنامه 8تا سنسور به پورت B وصل هستن و 2 تا هم به پورتD و من ميخوام اونها رو بخونم و کل اين 10 تا سنسور رو تو يه متغير داشته باشم.لذا يه زيربرنامه اينجوري نوشتم:

    کد:
    int Read_sensor()
    {
    int sens,h_sens;
    sens=Portb;
    h_sens=portd;
    h_sens=h_sens&0xC0;
    h_sens=h_sens << 2;
    sens=h_sens|sens;
    return sens;
    }
    هرجا لازم داشتم سنسورها رو بخونم؛تو برنامه ي اصلي يه متغير از نوع int تعريف کرده بودم (مثلا به اسم data_sensor) و مينوشتم:
    کد:
    data_sensor=Read_sensor();
    اميدوارم به دردتون بخوره.اگه همچنان برطرف نشده،بگين تا يه جور ديگه باهاش برخورد بکنيم!!

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

    عضویت



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

    عضویت

صفحه 1 از 2 12 آخرین
نمایش نتایج: از 1 به 10 از 14

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

  1. مقداردهی در mikroc
    توسط yadegari در انجمن میکروکنترلرهای PIC
    پاسخ: 12
    آخرين نوشته: 2013/06/03, 11:08
  2. دانلود mikroC PRO for PIC v4.15
    توسط stabesh در انجمن میکروکنترلرهای PIC
    پاسخ: 0
    آخرين نوشته: 2010/12/21, 19:57
  3. pwm 10 بیتی در mikroc
    توسط sepehr63 در انجمن میکروکنترلرهای PIC
    پاسخ: 3
    آخرين نوشته: 2010/11/07, 10:24
  4. CCS & MikroC
    توسط arash13 در انجمن میکروکنترلرهای PIC
    پاسخ: 2
    آخرين نوشته: 2010/03/29, 00:04

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

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

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

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

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