آموزش صحیح و خوانا نوشتن کد میکروکنترلرها-2
آموزش صحیح و خوانا نوشتن کد میکروکنترلرها-۲ وقتی برنامه ای نوشته میشه، یک بحث اینه که آیا قراره به جایی داده بشه یا نه !! یعنی مثلا شما کدی رو می نویسید و به شرکتی یا شخصی تحویل میدید. این جور وقتا معمولا کد برنامه برای انتقال دانش برنامه نویسی شما به طرف مقابلتون محسوب میشه. اگر طرف مقابلتون حرفه ای باشه، یک سری شرط هایی رو میزاره که شما توی برنامه نویسیتون رعایت کنید.
یکی از چیزهایی که معمولا توصیه میشه توضیحات داخل برنامه است. یعنی کامنت گزاری. اگر چه ممکنه خیلی مهم به نظر نیاد و بگید توی گزارش در مورد کد توضیح دده میشه، اما این طور نیست. همیشه سعی کنید روبروی کد هاتون یک توضیح هر چند کوتاه بزارید. کامنت ها رو هم انگلیسی بزارید. اولش سخته اما راه بیفتید میفهمید چقدر راحت تر از کامنت گزاری فارسیه. دقت کنید منظور من پروژه های رسمی هستش.
خوب کد زیر رو ببینید :
1 2 3 4 5 6 |
ADC_i=0; for (i=0;i<=9;i++) { // Average of 10 consequent Sample for reduce Noise effect ADC_i=read_adc(4)+ADC_i; } ADC_i=ADC_i/10; ADC_i=(ADC_i*2.56)/1024; // Convert ADC result to a number between 0 and 2.56 |
بعضیا هستن فکر می کنن هرچقدر برنامه کوتاه تر باشه حرفه ای تره !!! من اینو قبول ندارم. مثلا اگر 10 خط به برنامه اضافه بشه، اما برنامه خواناتر بشه می ارزه. حتما این یادتون بشه. دقت کنید اینو با استفاده از کدهای آماده اشتباه نگیرید.
ببینید یک مثال می زنم. مثلا کد زیر رو ببینید :
1 2 3 4 5 6 7 8 |
if (i == a1) ... if (i == a2) ... if (i == a3) ... if (i == a4) ... . . . if (i == a10) ... |
یا مثلا وقتی که تنطیمات مربوط به قسمت هایی از میکرو رو انجام میدید، کد مربوطش رو بنویسید هر چند برای خودتون خیلی ساده باشه. مثلا تنظیم وقفه یک توی ATmega32.
1 2 3 4 5 6 7 8 9 |
// External Interrupt(s) initialization // INT0: Off // INT1: On // INT1 Mode: Any change // INT2: Off GICR|=0x80; MCUCR=0x04; MCUCSR=0x00; GIFR=0x80; |
مهمان
سلام.

ببخشید من یه کد نوشتم که اگه یک کلید فشرده شد یک ال ای دی روشن شه پول اپ گذاشتم ولی وقتی که کلید فشرده میشه ال ای دی روشن نمیشه دیگه عمل نمی کنه؟
کدها
file:///C:/Users/ALIREZA/Downloads/Desktop/Capture7.PNG
شماتیک
file:///C:/Users/ALIREZA/Downloads/Desktop/Capture77.PNG
مهمان
سلام.اموزش خلاصه و خوبی بود…کی ادامش رو میذارید؟؟؟
مهمان
برنامه ای که گفتم اینه

void sendtext(char *k)
char andis
andis=0;
while(k[andis]!=0)
این *K ینی چی؟؟
مدیر سایت
سلام
یعنی این تابع sendtext یه پارامتر داره با نام k که از نوع اشاره گر و char هستش……یعنی آدرس متغییر دریافت میکنه
باید بری مبحث اشاره گر ها رو بخونی—مطلب زیر رو بخون
https://dmf313.ir/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%AC%D8%A7%D9%85%D8%B9-%D8%A7%D8%B4%D8%A7%D8%B1%D9%87-%DA%AF%D8%B1%D9%87%D8%A7-%D8%AF%D8%B1-pointer-tutorial-in-c/
مهمان
سلاااام یه سوال دارم من یه خط از یه برنامه ایو متوجه نمیشم مییشه کمک کنی؟!
مهمان
سلام
ممنون مطلب خوب و جدیدی بود
اقا محسن دیگه ادامه نمیدن این مطلبو؟
مهمان
این PWM نیست که تو 0 و 1 میکنی پایه رووووووووووووووووووووووو
مدیر سایت
اگه شک داری :

1) http://www.eca.ir/forum2/index.php?board=161.0
2) کتاب جابر الوندی.
مدیر سایت
با 0 و 1 کردن چپ یا راست چرخیدن موتور رو تعیین میکنیم.
مهمان
داداش این PWMM است؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
مدیر سایت
آره فک کنم…
اگه شک داری>>>کد های پروژه رو با کتاب جابر الوندی مقایسه کن…شاید اشتباه کرده باشم(که بعید میدونم)
مهمان
کدت کار نمی کنه
مهمان
خیلی جالب بود! ممنون!