سلام
مدتی در این فکر بودم که روشی واسه مقدار دادن به رجیسترها در زبان سی پیدا کنم که هم نیازی به تایپ وقت گیر نداشته باشه و هم از طرفی خوانایی برنامه رو افزایش بده جوری که با یه نگاه به اون خط بشه فهمید کدوم بیت ها از رجیستر مورد نظرمون 1 شده...این شد که سعی کردم یه برنامه با سی شارپ واسه این کار بنویسم که شرحش در ادامه هست...
اگه دقت کرده باشید بعضی ها (حرفه ای ها! :biggrin
واسه مقدار دادن به رجیسترها از شیفت دادن تک تک بیت های اون رجیستر و در نهایت Or کردن اون ها با هم رجیسترهاشون رو پیکره بندی میکنن...
مثلا :
که معمولا خیلی ها اینجوری پیکره بندی میکنن :
یا :
هرسه خط بالا کار یکسانی را انجام میدهند ولی چرا خودمون را به زحمت بندازیم و اون همه تایپ کنیم؟...
- اولا همونطور که گفتم خوانایی برنامه میره بالا
- دوما دیگه نیازی به تبدیل باینری به هگزادسیمال نداریم که بعضا هم اشتباه پیش میاد و کلی دردسر میکشیم تا بفهمیم مشکل از کجاست!!!!
- سوما بعدا اگه بخوایم یکی از بیت های اون رجیستر رو 1 یا 0 کنیم خیلی راحت تغییرش میدیم و دیگه نبازی به تبدیل دوباره باینری به هگزادسیمال و این حرفا نیست
تنها عیب این راه اینه که تایپ و زمان و حوصله زیادی رو میطلبه.
پس اگه بشه به روشی این معضل رو حل کرد میشه گفت این روش بهترین روش واسه مقدار دادن به رجیسترها هست.
شاید بعضی ها یاد کدویزارد بیفتن...! نه اشتباه نکنید...کدویزارد واسه شما کد رو تولید میکنه...شما نمیدونید باید کدوم بیت ها 1 یا 0 باشن تا شما رو به مقصودتون برسونن....ولی اینجا شما باید کاملا به بیت هایی که قراره ست بشن واقف باشید!
این یه تصویر از محیط برنامه ست :

سعی کردم تا جایی که ممکنه برنامه کوچیک باشه تا کنار پروژه بشه ازش استفاده کرد... :read:
همونطور که میبینید کافیه اسم(یا بخشی از اسم) رجیستر که میخواین پیکره بندیش کنید رو تایپ کنید(حروف بزرگ و کوچیک فرقی نداره) بعد یکی از جهت های بالا یا پایین کیبرد رو بفشارید...رجیستر با مقادیر پیشفرضش (که در دیتاشیت هست) ظاهر میشه و شما روی بیت های مورد نظرتون کلیک میکنید تا 1 یا 0 بشه بعد خودش اتومات کدش رو به ترتیب نزولی توی تکست باکس میذاره...کارتون که تموم شد روی دکمه Copy کلیک کنید تا رشته مورد نظر تو Clpboard کپی بشه و بعدش تو پروژه تون پیستش کنید...
خودم که دارم ازش استفاده میکنم و خیلی به کارم میاد...(حتما دانلود کنید)استفاده ازش به هیچ کار یا توضیح خاصی نیاز نداره...
الان هم برای اولین بار این برنامه رو در انجمن ECA میزارم تا همه دوستان گلم که خیلی به من کمک کردن از این برنامه استفاده کنن تا شاید بتونم سهم کوچکی از زحمت هایی که کشیدن رو جبران کنم...
در پایان ممنون میشم ازتون اگه پیشنهادی در مورد بهتر کردن این برنامه ارائه بدید...
در حال حاضر برای مگا16 و مگا32 و اکثر رجیسترهای مگا8 میتونید ازش استفاده کنید...برای مدل های دیگه هم کم کم اضافه میکنم...
عرض دیگه ای ندارم...
بفرمایید :
================================================== ================
تغییرات جدید اعمال شد....

امکان اضافه کردن رجیستر جدید و اعمال تغییرات و کپی همه رجیسترها به صورت یکجا اضافه شد...
در ضمن در صورتی که خواستید یکی از رجیسترهای قبلی رو ویرایش یا حذف کنید میتونید از کومبوباکس دوم اونو انتخاب کنید و تغییرات مورد نظرتون رو اعمال کنید...
اگه قصد حزف داشتید بر روی دکمه قرمز رنگ و اگر قصد ویراش داشتید پس از ویرایش کردنش دکمه سبز رنگ رو بزنید...تغییرات خودش ذخیره میشه...
از لینک بالا ورزن جدید رو دانلود کنید...
مدتی در این فکر بودم که روشی واسه مقدار دادن به رجیسترها در زبان سی پیدا کنم که هم نیازی به تایپ وقت گیر نداشته باشه و هم از طرفی خوانایی برنامه رو افزایش بده جوری که با یه نگاه به اون خط بشه فهمید کدوم بیت ها از رجیستر مورد نظرمون 1 شده...این شد که سعی کردم یه برنامه با سی شارپ واسه این کار بنویسم که شرحش در ادامه هست...
اگه دقت کرده باشید بعضی ها (حرفه ای ها! :biggrin

مثلا :
کد:
ADCSRA=(1<<ADEN)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS0);
کد:
ADCSRA=0X8D;
کد:
ADCSRA=0B10001101
- اولا همونطور که گفتم خوانایی برنامه میره بالا
- دوما دیگه نیازی به تبدیل باینری به هگزادسیمال نداریم که بعضا هم اشتباه پیش میاد و کلی دردسر میکشیم تا بفهمیم مشکل از کجاست!!!!
- سوما بعدا اگه بخوایم یکی از بیت های اون رجیستر رو 1 یا 0 کنیم خیلی راحت تغییرش میدیم و دیگه نبازی به تبدیل دوباره باینری به هگزادسیمال و این حرفا نیست
تنها عیب این راه اینه که تایپ و زمان و حوصله زیادی رو میطلبه.
پس اگه بشه به روشی این معضل رو حل کرد میشه گفت این روش بهترین روش واسه مقدار دادن به رجیسترها هست.
شاید بعضی ها یاد کدویزارد بیفتن...! نه اشتباه نکنید...کدویزارد واسه شما کد رو تولید میکنه...شما نمیدونید باید کدوم بیت ها 1 یا 0 باشن تا شما رو به مقصودتون برسونن....ولی اینجا شما باید کاملا به بیت هایی که قراره ست بشن واقف باشید!
این یه تصویر از محیط برنامه ست :

سعی کردم تا جایی که ممکنه برنامه کوچیک باشه تا کنار پروژه بشه ازش استفاده کرد... :read:
همونطور که میبینید کافیه اسم(یا بخشی از اسم) رجیستر که میخواین پیکره بندیش کنید رو تایپ کنید(حروف بزرگ و کوچیک فرقی نداره) بعد یکی از جهت های بالا یا پایین کیبرد رو بفشارید...رجیستر با مقادیر پیشفرضش (که در دیتاشیت هست) ظاهر میشه و شما روی بیت های مورد نظرتون کلیک میکنید تا 1 یا 0 بشه بعد خودش اتومات کدش رو به ترتیب نزولی توی تکست باکس میذاره...کارتون که تموم شد روی دکمه Copy کلیک کنید تا رشته مورد نظر تو Clpboard کپی بشه و بعدش تو پروژه تون پیستش کنید...
خودم که دارم ازش استفاده میکنم و خیلی به کارم میاد...(حتما دانلود کنید)استفاده ازش به هیچ کار یا توضیح خاصی نیاز نداره...
الان هم برای اولین بار این برنامه رو در انجمن ECA میزارم تا همه دوستان گلم که خیلی به من کمک کردن از این برنامه استفاده کنن تا شاید بتونم سهم کوچکی از زحمت هایی که کشیدن رو جبران کنم...

در پایان ممنون میشم ازتون اگه پیشنهادی در مورد بهتر کردن این برنامه ارائه بدید...
در حال حاضر برای مگا16 و مگا32 و اکثر رجیسترهای مگا8 میتونید ازش استفاده کنید...برای مدل های دیگه هم کم کم اضافه میکنم...
عرض دیگه ای ندارم...
بفرمایید :
================================================== ================
تغییرات جدید اعمال شد....

امکان اضافه کردن رجیستر جدید و اعمال تغییرات و کپی همه رجیسترها به صورت یکجا اضافه شد...
در ضمن در صورتی که خواستید یکی از رجیسترهای قبلی رو ویرایش یا حذف کنید میتونید از کومبوباکس دوم اونو انتخاب کنید و تغییرات مورد نظرتون رو اعمال کنید...
اگه قصد حزف داشتید بر روی دکمه قرمز رنگ و اگر قصد ویراش داشتید پس از ویرایش کردنش دکمه سبز رنگ رو بزنید...تغییرات خودش ذخیره میشه...
از لینک بالا ورزن جدید رو دانلود کنید...
دیدگاه