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





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









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





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

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

موضوع: mikro basic

  1. #1
    2014/02/17
    65
    0

    mikro basic

    با عرض سلام
    از دوستانی که با این کمپایلر کار کردن کسی میتونه راهنمایی که چطور میشه یک بایت ویا یک بیت از یک متغیر رو کپی کرد.داخل pic basicبا symbol.byte0 or
    variable.bit5به راحتی انجام میشد ولی اینجا کمپایلر اجازه این کار رو نمیده
    و سوال دیگه اینگه ارایه ایی که به صورت عدد داخل پرانتز استفاده میشه چه کاربردی دارند؟ WORD[12],BYTE[15]
  2. #2
    2008/02/10
    اطراف تهران
    411
    11

    پاسخ : mikro basic

    با سلام
    دوست عزیز اول از همه باید بگم از Help نرم افزار کمال استفاده رو بکن چوت توی اون کامل توضیح داده
    و بعد به این ترتیب می تونی متغییر بیتی تعریف کنی
    کد:
    dim bf as bit ' bit variable
    dim Abit as sbit at PORTB.0 ' this is where Abit is fully defined
    dim MyVar as byte
    dim Abit as sbit at MyVar.0 ' this is where Abit is fully defined
    در مورد آرایه ها:
    گاهی لازم میشه یه تعداد زیادی مثلا 1000 خونه از حافظه رو استفاده کنی و اطلاعات توش بریزی مثلا برای کار با رم های SD باید 512 بایت رو یهدفعه بخونی یا مثلا می خوای یه عکس بزرگ رو روی ال سی دی نشون بدی و باید اطلاعات عکس رو توی مثلا10000 بایت متغییر به ال سی دی بدی. ما که نمی تونیم بیایم 10000 تا متغییر با اسم های مختلف بسازیم و با اونا کار کنیم. برای همین میان یه متغییر با یه اسم ثابت تعریف می کنن ولی با طول مشخص.شما فرض کن یه متغییر بایتی یه دونه تسبیح هست حالا شما از همون متغییر به تعداد 100 تا برای کاری نیاز داری. میای یه دون کروشه میزاری و توش می نویسی 100 مثل [100] حالا شما به تعداد 100 تا متغییر داری با اسم های یکسان ولی شماره های مختلف. و به تک تک اونا می تونی مقدار بدی.
    به این مثال توجه کن:
    کد:
    dim data as byte[256]
    dim i as byte
    data[0]=0
    اولین شماره متغییر رو صفر می کنه
    data[100]=100
    صدمین شمارو مقدار 100میده
    for i=0 to 255
    data[i]=0
    next i
    توی حلقه بالایی تمامی 256 متغییر رو صفر میکنه
    for i=0 to 255
    data[i]=i
    next i
    توی حلقه بالا به هر کدوم از متغییر ها مقدار شماره خودشون رو میده
    کلا آرایه ها خیلی پر کاربردند.یه سرچ کوچولو بزنی کلی مطلب گیرت میاد.
    مثلا

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

    عضویت


    موفق باشی :bye
    یا علی ع

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

    عضویت


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

    عضویت

  3. #3
    2014/02/17
    65
    0

    پاسخ : mikro basic

    خیلی ممنون پاسختون خیلی جامع بود
    در مورد سوال اولم یه دستور خیلی ساده پیدا کردم که خالی از لطف نیست که بقیه دوستان(نیازمند)نیز استفاده کنن
    به عنوان مثال برای ریختن 8 بیت بالایی کلمه ی DOWN از دستور زیر استفاده می کنیم.
    PORTB=WORD(DOWN>>8) 0
  4. #4
    2008/02/10
    اطراف تهران
    411
    11

    پاسخ : mikro basic

    خواهش میکنم
    برای این کار هم به روش شما میشه عمل کرد و هم از توابع خود کامپایلر استفاده کرد:
    کد:
    Lo
    ------------------------
    d = 0x12345678 	
    tmp = Lo(d) ' Equals 0x78
    *************************************************************
    Hi
    ---------------------
    d = 0x12345678 	
    tmp = Hi(d) ' Equals 0x56
    *************************************************************
    Higher
    ----------------------
    d = 0x12345678
    tmp = Higher(d) ' Equals 0x34
    *************************************************************
    Highest
    ----------------------
    d = 0x12345678 	
    tmp = Highest(d) ' Equals 0x12
    *************************************************************
    LoWord
    ----------------------
    d = 0x12345678 	
    tmp = LoWord(d) ' Equals 0x5678
    ************************************************************
    HiWord
    ----------------------
    d = 0x12345678 	
    tmp = HiWord(d) ' Equals 0x1234

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

    عضویت


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

    عضویت

  5. #5
    2014/02/17
    65
    0

    پاسخ : mikro basic

    چند تا سوال برام پیش اومده اگه کسی بتونه راهنمایی کنه واقعا ممنون میشم.
    1.چطور میشه زمان طی شده یک سیکل رو اندازه گیری کرد؟مثلا زمانی که برای یک کریستال 4 طول میکشه حدود 1 میکرو ثانیه است ولی خب اگه برنامه سنگین باشه چی؟ میشه زمانی که طول کشیده رو محاسبه کرد.؟حجم RAM چه تاثیری روی سرعت داره؟
    2-اگه یه متغیر 32 بیتی تعریف کنیم ولی داخل اون اطلاعاتی لود نکنیم با زمانی که اطلاعات روی اون لود کردیم واسه حجم RAM فرقی هم میکنه؟
    3-برای اتصال شستی به میکرو بدون اینکه نویز پذیر هم باشه از چه دستوری میشه استفاده کردم ؟از دستور BUTTON استفاده کردم ،از نظر نویز پذیری عالی بود ولی تاخیز زمانی که ایجاد میکنه جالب نیست.از دستورات دیگه هم استفاده کردم ولی ورودی ام به شدت نویز پذیر میشه.

  6. #6
    2008/02/10
    اطراف تهران
    411
    11

    پاسخ : mikro basic

    1.چطور میشه زمان طی شده یک سیکل رو اندازه گیری کرد؟مثلا زمانی که برای یک کریستال 4 طول میکشه حدود 1 میکرو ثانیه است ولی خب اگه برنامه سنگین باشه چی؟ میشه زمانی که طول کشیده رو محاسبه کرد.؟حجم RAM چه تاثیری روی سرعت داره؟
    ببین دوست من میکرو کنترلر یکسری دستورات اسمبلی داره.بسته به میکرو فرق داره ولی حدود 83 تاست حداکثر
    اکثر اونا توی یک سیکل کاری cpu اجرا میشه (یعنی فرکانس کریستال تقسیم بر چهار) ولی بعضی از اونا توی دو و حتی سه سیکل اجرا میشن مثل دستورات پرش که دو سیکلی هستند یا پرش شرطی که گاهی یک و گاهی دو و گاهی سه سیکلی هستند.
    برای اندازه گیری زمان دقیق باید تعداد دستورات اسمبلی مورد نظر رو بشماری و بسته به اینکه یک دو و یا سه سیکلی هستند زمان دقیق یه تیکه کد رو محاسبه کنی.(برای کدهای سنگین کار سختی هست) میتونی از Debuger خود کامپایلر هم استفاده کنید ولی معمولا وقتی منتظر یه اتفاق خارجی مثل کلید هستید دیباگر اذیت می کنه و جالب نیست!
    حجم رم هیچ ربطی به سرعت اجرای برنامه ها نداره ولی اگر رم بیشتر باشه میتونی برنامه رو راحتتر و بهتر بنویسی اینجوری سرعت برنامه بالا میره ولی در کل سرعت اجرای هر دستور اسمبلی فقط و فقط به سرعت کریستال بستگی داره.
    2-اگه یه متغیر 32 بیتی تعریف کنیم ولی داخل اون اطلاعاتی لود نکنیم با زمانی که اطلاعات روی اون لود کردیم واسه حجم RAM فرقی هم میکنه؟
    توی میکرو ها یا یه متغییر داریم یا نداریم
    حالا شما یه متغییر بزرگ تعریف کردی
    اگر بهینه ساز کامپایلر فعال باشه و توی برنامه از متغییر استفاده بشه که رم اشغال شده واگر استفاده نشه بهینه ساز اتوماتیک میاد متغییر رو حذف میکنه انگار اصلا متغییر رو تعریف نکردی(این گاهی مشکل ساز میشه)
    و اگر بهینه ساز غیر فعال باشه شما متغییر که تعریف میکنی رم هم اشغال میشه
    3-برای اتصال شستی به میکرو بدون اینکه نویز پذیر هم باشه از چه دستوری میشه استفاده کردم ؟از دستور BUTTON استفاده کردم ،از نظر نویز پذیری عالی بود ولی تاخیز زمانی که ایجاد میکنه جالب نیست.از دستورات دیگه هم استفاده کردم ولی ورودی ام به شدت نویز پذیر میشه.
    مجبور نیستیم حتما از دستورات کامپایلر استفاده کنیم که وقت رو تلف کنه یا اونجوری که می خوایم عمل نکنه! بسته به کاربرد خودمون می تونیم الگوریتم بهتری بنویسیم!
    موفق باشی
    :bye

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

    عضویت


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

    عضویت

  7. #7
    2014/02/17
    65
    0

    پاسخ : mikro basic

    این بهینه سازی که بهش اشاره کردین چطور فعال میشه؟ یه سوال دیگه برام ژیش اومده ،اینکه تو یه برنامه عدد اعشاری تعریف کردم ولی مقدار اعداد بعد از اعشار حدود 6 رقمه که واسه کار من خیلی زیاده ،حدود 3 رقم هم کافیه ،میشه کمش کرد؟
  8. #8
    2008/02/10
    اطراف تهران
    411
    11

    پاسخ : mikro basic

    بهینه ساز بطور پیشفرض فعاله و برای دستکارش باید بری TOOLS/options/output stting و قسمت optimization level هرچی بیشتر باشه بهینه سازی بیشتره ولی در عمل خیلی با هم فرق نمی کنه (شاید توی کدهای بزرک فرق زیادی کنه؟!)
    برای تبدیل عدد به کاراکتر قابل نمایش روی ال سی دی کامپایلر یکسری تابع داره
    برای نوع float داریم
    کد:
    sub procedure FloatToStr(dim input as real, dim byref output as string[23])
    *************************************************************************************************
    dim ff1, ff2, ff3 as real
      txt as string[23]
     ... 
     ff1 = -374.2
     ff2 = 123.456789
     ff3 = 0.000001234
    
     FloatToStr(ff1, txt) ' txt is "-374.2"
     FloatToStr(ff2, txt) ' txt is "123.4567"
     FloatToStr(ff3, txt) ' txt is "1.234e-6"
    این تابع عدد اعشاری رو توی یه رشته 23 بایتی میریزه بطور کامل
    حالا اگه شما نمی خای همشو بیا یه متغییر رشته ای کوچیکتر تعریف کن بطول مثلا 6 تا و 6تا کاراکتر اول رو بریز توش :NO:
    موفق باشی :bye

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

    عضویت


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

    عضویت

  9. #9
    2014/02/17
    65
    0

    پاسخ : mikro basic

    من تو برنامه یه متغیر float تعریف کردم حالا بعد از محاسبه یک عددی مثلا 20.54879به من میده که خیلی زیاده و من فقط می خوام این عدد بشه 20.54و سه رقم دیگه حذف بشه همین ؟(کد های تبدیل رو گذاشتم الان برنامه رو هم با پروتئوس شبیه سازی کردم مشکلی نداره منتهی فقط ...)
  10. #10
    2008/02/10
    اطراف تهران
    411
    11

    پاسخ : mikro basic

    مثل اینکه پست قبلی رو با دقت نخوندی؟
    حالا اگه شما نمی خای همشو بیا یه متغییر رشته ای کوچیکتر تعریف کن بطول مثلا 6 تا و 6تا کاراکتر اول رو بریز توش :NO:
    بیا و یه متغییر رشته ای به طول مثلا 6 بساز و عددی رو که تبدیل به رشته 23 بایتی کردی فقط 6 بایت اول رو بریز توی متغییر رشته ای کوچیکتر . اینجوری اضافی حذف می شه
    کد:
    dim t as float
    dim text23 as string[23]
    dim text6 as string[6]
    t=20.12345678999584522
    floattostr(t,text23)
    الان تبدیل به رشته شد
    ''''text23="20.12345678999584522"
    for i=0 to 5
    text6[i]=text23[i]
    next i
    الان
    '''''text6="20.123"

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

    عضویت


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

    عضویت

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

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

  1. [گفتگو و تبادل نظر] مقایسه کامپایلرهای CCS و MIKRO C
    توسط mobin_m در انجمن میکروکنترلرهای PIC
    پاسخ: 23
    آخرين نوشته: 2019/01/25, 13:05
  2. در خواست کرک برای mikro C pro for ARM
    توسط amirtebyan در انجمن پروسسورهای ARM
    پاسخ: 2
    آخرين نوشته: 2013/01/22, 15:34
  3. مشکل در نشان دادن متغيير روي lcd گرافيکي با mikro c
    توسط alimohammad_sh در انجمن میکروکنترلرهای PIC
    پاسخ: 7
    آخرين نوشته: 2012/05/25, 11:25
  4. mikro player ?!
    توسط abbasmh در انجمن میکروکنترلرهای PIC
    پاسخ: 30
    آخرين نوشته: 2010/08/26, 16:49
  5. درخواست آموزش فارسی mikro c
    توسط ehsanshaieste در انجمن میکروکنترلرهای PIC
    پاسخ: 4
    آخرين نوشته: 2009/10/05, 09:27

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

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

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

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

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