You are on page 1of 26

‫س‬ ‫ر‬ ‫د‬ ‫ا‬ ‫ﺮ‬ ‫ﻓ‬

‫آموزش میکروکنترلر ‪ AVR‬و نرمافزار‬


‫‪CodevisionAVR‬‬

‫‪a‬‬ ‫‪r‬‬ ‫‪s‬‬ ‫‪.‬‬‫‪o‬‬‫‪r‬‬


‫مدرس‪:‬‬

‫‪g‬‬
‫‪a‬‬‫‪D‬‬
‫محمد امین مصالیی‬

‫‪F‬‬ ‫‪a‬‬‫‪r‬‬
‫مهندس برق ‪ -‬کنترل‬
‫دانشگاه شیراز‬

‫‪1‬‬
‫ﺮ‬ ‫ﻓ‬
‫مقدمه‬

‫س‬ ‫ر‬ ‫د‬ ‫ا‬ ‫میکروکنترلر‌ها یکی از بخش‌های جدا نشدنی محصوالت الکترونیکی‬ ‫•‬

‫‪g‬‬
‫میکروکنترلر‌های ‪ AVR‬یکی از محبوب‌ترین و پرکاربردترین خانواده‌های میکروکنترلر‬ ‫•‬

‫‪D‬‬ ‫‪a‬‬ ‫‪r‬‬ ‫‪s‬‬ ‫‪.‬‬‫‪o‬‬‫‪r‬‬ ‫تولید و به روز رسانی به وسیله کارخانه سازنده (‪)ATMEL‬‬ ‫•‬

‫‪F‬‬ ‫‪a‬‬‫‪r‬‬ ‫‪a‬‬ ‫‪2‬‬


‫ﺮ‬ ‫ﻓ‬
‫فهرست مطالب‬

‫س‬ ‫ر‬ ‫د‬ ‫ا‬ ‫آشنایی‌اولیه‌با‌میکروکنترلرهای‌‪AVR‬‬


‫ساختار‌حافظه‌‬
‫•‬
‫•‬

‫‪r‬‬ ‫‪g‬‬
‫•‬

‫‪o‬‬
‫ساختار‌پورت‌ها‬

‫‪a‬‬ ‫‪r‬‬ ‫‪s‬‬ ‫‪.‬‬


‫کار‌با‌نرم‌افزار‌‪CodevisionAVR‬‬ ‫•‬

‫‪a‬‬‫‪D‬‬
‫•‬

‫‪r‬‬
‫انجام‌یک‌پروژه‌نمونه‌و‌شبیه‌سازی‌در‌نرم‌افزار‌پروتئوس‬

‫‪F‬‬ ‫‪a‬‬ ‫‪3‬‬


‫ﻓ‬
‫آشنایی اولیه با میکروکنترلرهای ‪AVR‬‬

‫س‬ ‫ر‬ ‫د‬ ‫ا‬ ‫ﺮ‬ ‫‪‌AVR‬های‌‪ 8‬بیتی‪:‬‬


‫• سری‌کوچک‌(‪)ATTINY‬‬

‫‪a‬‬ ‫‪r‬‬ ‫‪s‬‬ ‫‪.‬‬‫‪o‬‬‫‪r‬‬ ‫‪g‬‬ ‫• سری‌متوسط‌(‪)AT90S‬‬

‫‪D‬‬
‫• سری‌مگا‌(‪)ATMEGA‬‬

‫‪F‬‬ ‫‪a‬‬‫‪r‬‬ ‫‪a‬‬ ‫مبنای‌آموزش‪‌:‬بر‌اساس‌میکروکنترلرهای‌‪ 8‬بیتی‌خانواده‌‪ AVR‬سری‌مگا‬

‫‪4‬‬
‫ﻓ‬
‫آشنایی اولیه با میکروکنترلرهای ‪AVR‬‬

‫س‬ ‫ر‬ ‫د‬ ‫ا‬ ‫ﺮ‬ ‫بیت فیوز‌(‪)Fuse Bit‬‬


‫بیت‌قفل‌(‪)Lock Bit‬‬

‫‪.‬‬‫‪o‬‬‫‪r‬‬ ‫‪g‬‬
‫• ’‪ ‘1‬به‌معنای‌برنامه‌ریزی‌نشده‌و‌’‪ ‘0‬به‌معنای‌برنامه‌ریزی‌شده‌‪.‬‬

‫‪a‬‬ ‫‪r‬‬ ‫‪s‬‬


‫دسترسی‌به‌بیت‌‌های‌فیوز‌و‌قفل‌در‌زمان‌برنامه‌ریزی‌میکروکنترلر‌به‌وسیله‌پروگرمر‌یا‌‪ JTAG‬امکان‌پذیر‌است‪‌‌.‬‬ ‫•‬

‫‪a‬‬‫‪r‬‬ ‫‪a‬‬‫‪D‬‬
‫در‌صورت‌استفاده‌از‌بیتهای‌قفل‌‪‌،‬این‌کار‌در‌انتهای‌برنامه‌ریزی‌بقیه‌قسمتها‌انجام‌شود‌‪.‬‬ ‫•‬

‫‪F‬‬
‫بیتهای‌قفل‌‪‌،‬با‌پاک‌(‪‌)Erase‬کردن‌چیپ‌‪‌،‬پاک‌می‌شوند‌‪‌.‬اما‌بیتهای‌فیوز‌دست‌نخورده‌باقی‌می‌مانند‌‪.‬‬ ‫•‬

‫‪5‬‬
‫ﻓ‬
‫آشنایی اولیه با میکروکنترلرهای ‪AVR‬‬

‫س‬ ‫ر‬ ‫د‬ ‫ا‬ ‫ﺮ‬ ‫منابع کالک سیستم‬


‫• اسیالتور‌کریستالی‬

‫‪a‬‬ ‫‪r‬‬ ‫‪s‬‬ ‫‪.‬‬‫‪o‬‬‫‪r‬‬ ‫‪g‬‬ ‫• اسیالتور‌کریستالی‌فرکانس‌پایین‬

‫‪D‬‬
‫• اسیالتور‌‪ RC‬خارجی‬

‫‪a‬‬‫‪r‬‬ ‫‪a‬‬
‫• اسیالتور‌‪ RC‬کالیبره‌شده‌داخلی‬

‫‪F‬‬ ‫• کالک‌خارجی‬

‫‪6‬‬
‫ﻓ‬
‫آشنایی اولیه با میکروکنترلرهای ‪AVR‬‬

‫س‬ ‫ر‬ ‫د‬ ‫ا‬ ‫ﺮ‬ ‫منابع ‪ Reset‬سیستم‬


‫• ‪ Power-On‬شدن‬

‫‪a‬‬ ‫‪r‬‬ ‫‪s‬‬ ‫‪.‬‬‫‪o‬‬‫‪r‬‬ ‫‪g‬‬ ‫از‌طریق‌پایه ‪RESET‬‬ ‫•‬

‫‪D‬‬
‫• تایمر‌نگهبان‌(‪)Watchdog Timer‬‬

‫‪a‬‬‫‪r‬‬ ‫‪a‬‬
‫• کاهش‌ولتاژ‌تغذیه‌از‌حد‌‪( Brown – Out‬در‌صورتی‌که‌فیوزبیت‌‪ BODEN‬فعال‌باشد)‬

‫‪F‬‬ ‫دریافت‌فرمان‌‪ Reset‬از‌‪JTAG‬‬ ‫•‬

‫‪7‬‬
‫ﺮ‬ ‫ﻓ‬
‫ساختار حافظه‬

‫س‬ ‫ر‬ ‫د‬ ‫ا‬ ‫‪)Program‬‬ ‫حافظه برنامه (‪Memory‬‬

‫• حافظه ای از نوع فلش (‪)Flash‬‬

‫‪r‬‬ ‫‪g‬‬
‫• ذخیره برنامه نوشته شده توسط کاربر‬

‫‪r‬‬ ‫‪a‬‬‫‪D‬‬ ‫‪a‬‬ ‫‪r‬‬ ‫‪s‬‬ ‫‪.‬‬‫‪o‬‬


‫• ذخیره مقادیر ثابت (فقط خواندنی)تعریف شده در برنامه با کلمات کلیدی ‪ const‬و ‪flash‬‬

‫‪F‬‬ ‫‪a‬‬
‫حافظه برنامه به دو بخش تقسیم می‌شود‪:‬‬
‫بخش ‪Boot‬‬ ‫•‬
‫بخش کاربردی (‪)Application‬‬ ‫•‬

‫‪8‬‬
‫ﺮ‬ ‫ﻓ‬
‫ساختار حافظه‬

‫س‬ ‫ر‬ ‫د‬ ‫ا‬ ‫حافظه داده ‪)SRAM Data Memory( RAM‬‬
‫حافظه از نوع رم استاتیک (‪)SRAM‬‬ ‫•‬

‫‪.‬‬‫‪o‬‬‫‪r‬‬ ‫‪g‬‬
‫•‬

‫‪s‬‬
‫برای ذخیره داده‌های موقت مورد استفاده در برنامه‬

‫‪a‬‬ ‫‪r‬‬
‫ذخیره متغیر‌های تعریف شده در برنامه در این فضا‬ ‫•‬

‫‪F‬‬ ‫‪a‬‬‫‪r‬‬ ‫‪a‬‬‫‪D‬‬


‫‪9‬‬
‫ﺮ‬ ‫ﻓ‬
‫ساختار حافظه‬

‫س‬ ‫ر‬ ‫د‬ ‫ا‬ ‫حافظه ‪ RAM‬به سه بخش تقسیم می‌شود‪:‬‬

‫‪r‬‬ ‫‪g‬‬
‫• بخش فایل رجیستری (‪)Register File‬‬

‫‪s‬‬ ‫‪.‬‬‫‪o‬‬
‫• بخش ‪I/O‬‬

‫‪a‬‬ ‫‪r‬‬
‫نکته ‪ 32 :‬بایت اول این بخش بیت آدرس پذیرند ‪.‬‬

‫‪a‬‬‫‪D‬‬
‫;‪ADMUX.ADLAR = 1‬‬

‫‪a‬‬‫‪r‬‬
‫;‪TIFR.TOV1 = 1‬‬

‫‪F‬‬
‫;)‪TIFR |= ( 1<< TOV1‬‬

‫بخش رم کاربر‬ ‫•‬


‫‪ o‬داخلی (‪)Internal‬‬
‫‪ o‬خارجی (‪)External‬‬

‫‪10‬‬
‫ﺮ‬ ‫ﻓ‬
‫ساختار حافظه‬

‫س‬ ‫ر‬ ‫د‬ ‫ا‬ ‫حافظه داده ‪)EEPROM Data Memory( EEPROM‬‬

‫‪r‬‬ ‫‪g‬‬
‫•‬

‫‪o‬‬
‫برای ذخیره داده‌های ماندگار‬

‫‪r‬‬ ‫‪a‬‬‫‪D‬‬ ‫‪a‬‬ ‫‪r‬‬ ‫‪s‬‬ ‫‪.‬‬


‫متغیر‌های تعریف شده از نوع ‪ eeprom‬در زبان ‪ C‬در این فضا ذخیره می‌شوند ‪.‬‬ ‫•‬

‫‪a‬‬
‫مثال ‪:‬‬

‫‪F‬‬
‫;‪eeprom char e1‬‬
‫;‪eeprom unsigned int e2 = 1234‬‬

‫‪11‬‬
‫ﺮ‬ ‫ﻓ‬
‫ساختار پورتها‬

‫س‬ ‫ر‬ ‫د‬ ‫ا‬ ‫مفهوم پورت‪ ،‬ورودی و خروجی‬

‫‪r‬‬ ‫‪g‬‬
‫تبادل داده‌های سیستم با بیرون‬ ‫•‬

‫‪a‬‬ ‫‪r‬‬ ‫‪s‬‬ ‫‪.‬‬‫‪o‬‬


‫مفهوم پورت «ورودی» و «خروجی»‬ ‫•‬

‫‪a‬‬‫‪r‬‬ ‫‪a‬‬‫‪D‬‬
‫نکته‪ :‬هر پایه پورت در آن واحد فقط می‌تواند ورودی یا خروجی باشد‪.‬‬ ‫•‬

‫‪F‬‬
‫دسترسی به پورت‌ها از طریق برنامه‌نویسی و اعمال تنظیمات در رجیستر‌های مربوط به آن‌ها که در فضای ‪ I/O‬حافظه ‪RAM‬‬ ‫•‬

‫قرار دارند‪ ،‬امکانپذیر است‪.‬‬

‫‪12‬‬
‫ﺮ‬ ‫ﻓ‬
‫ساختار پورتها‬

‫س‬ ‫ر‬ ‫د‬ ‫ا‬ ‫نکات کاربردی‬

‫‪r‬‬ ‫‪g‬‬
‫بعضی از پورتها بیت آدرس پذیرند و بعضی خیر‬ ‫•‬

‫‪a‬‬ ‫‪r‬‬ ‫‪s‬‬ ‫‪.‬‬‫‪o‬‬


‫مثال ‪:‬‬

‫‪a‬‬‫‪D‬‬
‫;‪PORTB.3 = 0‬‬

‫‪a‬‬‫‪r‬‬
‫;‪PORTF.3 = 0‬‬

‫‪F‬‬
‫از پورتهای خروجی جریان اضافه نکشید ‪ .‬روی پورتهای ورودی ولتاژ غیر مجاز ندهید ‪.‬‬ ‫•‬

‫بعضی از پینها مربوط به ارتباط ‪ JTAG‬می باشند ‪ .‬برای استفاده از آنها ‪ ،‬باید بیت فیوز ‪ JTAGEN‬غیر فعال شود ‪.‬‬ ‫•‬

‫‪13‬‬
‫ﺮ‬ ‫ﻓ‬
‫ساختار پورتها‬

‫س‬ ‫ر‬ ‫د‬ ‫ا‬ ‫معرفی رجیسترهای مربوط به پورتها‬

‫‪r‬‬ ‫‪g‬‬
‫‪ .1‬رجیستر‌‪( DDR‬مثال‌‌‪ DDRC‬برای‌پورت‌‪)C‬‬

‫‪a‬‬ ‫‪r‬‬ ‫‪s‬‬ ‫‪.‬‬‫‪o‬‬


‫قرار دادن یک در هر بیت این رجیستر‪ ،‬پین متناظر آن را روی پورت به عنوان خروجی تعریف می کند ‪.‬‬

‫‪r‬‬ ‫‪a‬‬‫‪D‬‬
‫•‬

‫‪a‬‬
‫قرار دادن صفر در هر بیت‪ ،‬پین متناظر آن را روی پورت به عنوان ورودی تعریف می کند ‪.‬‬ ‫•‬

‫‪PB7‬‬
‫خروجی‬ ‫‪F‬‬
‫‪PB6‬‬
‫خروجی‬
‫مثال اگر ‪ DDRB = 11010101‬تنظیم شود‪ ،‬وضعیت پین‌های پورت ‪ B‬به صورت زیر خواهد بود ‪:‬‬

‫‪PB5‬‬
‫ورودی‬
‫‪PB4‬‬
‫خروجی‬
‫‪PB3‬‬
‫ورودی‬
‫‪PB2‬‬
‫خروجی‬
‫‪PB1‬‬
‫ورودی‬
‫‪PB0‬‬
‫خروجی‬
‫‪14‬‬
‫ﺮ‬ ‫ﻓ‬
‫ساختار پورتها‬

‫س‬ ‫ر‬ ‫د‬ ‫ا‬ ‫معرفی رجیسترهای مربوط به پورتها‬


‫‪‌.2‬رجیستر‌‪( PIN‬مثال‌‌‪ PINA‬برای‌پورت‌‪)A‬‬

‫‪a‬‬ ‫‪r‬‬ ‫‪s‬‬ ‫‪.‬‬‫‪o‬‬‫‪r‬‬ ‫‪g‬‬


‫این رجیستر «فقط خواندنی» است و برای خواندن داده‌های روی پورت به کار می‌رود‪.‬‬

‫‪F‬‬
‫;‪inp = PINC‬‬
‫;‪b = PIND.3‬‬
‫‪a‬‬‫‪r‬‬ ‫‪a‬‬‫‪D‬‬
‫;‪if (PINA.7 == 0) break‬‬
‫مثال‪:‬‬

‫‪15‬‬
‫ﺮ‬ ‫ﻓ‬
‫ساختار پورتها‬

‫س‬ ‫ر‬ ‫د‬ ‫ا‬ ‫معرفی رجیسترهای مربوط به پورتها‬

‫‪g‬‬
‫‪ .3‬رجیستر ‪( PORT‬مثال ‪ PORTD‬برای پورت ‪)D‬‬

‫‪D‬‬ ‫‪a‬‬ ‫‪r‬‬ ‫‪s‬‬ ‫‪.‬‬‫‪o‬‬‫‪r‬‬ ‫‪ ‬در حالتی که پورت به عنوان خروجی تعریف شده است‪:‬‬

‫‪r‬‬ ‫‪a‬‬
‫در این حالت نوشتن صفر یا یک در این رجیستر باعث صفر یا یک شدن پین متناظر آن روی پورت می‌شود‪.‬‬

‫‪F‬‬ ‫‪a‬‬ ‫‪ ‬در حالتی که پورت به عنوان ورودی تعریف شده است‪:‬‬

‫در این حالت نوشتن صفر در این رجیستر‪ ،‬ورودی را به صورت امپدانس باال (‪)Tri-State‬و نوشتن یک درآن‪ ،‬ورودی را به صورت پول‬

‫آپ دار (‪)Pull-Up‬پیکربندی می‌کند‪.‬‬


‫‪16‬‬
‫ﺮ‬ ‫ﻓ‬
‫ساختار پورتها‬

‫;‪DDRB = 0b00101100‬‬
‫س‬ ‫ر‬ ‫د‬ ‫ا‬ ‫مثال‪:‬‬

‫‪.‬‬‫‪o‬‬‫‪r‬‬ ‫‪g‬‬
‫;‪PORTB = 0b01101001‬‬

‫‪a‬‬ ‫‪r‬‬ ‫‪s‬‬


‫نتیجه‌دو‌خط‌دستور‌باال‌این‌است‪:‬‬

‫‪PB7‬‬
‫ورودی‬
‫امپدانس‌باال‬
‫‪PB6‬‬

‫‪F‬‬ ‫‪a‬‬‫‪r‬‬ ‫‪a‬‬


‫ورودی‌پول‌‬
‫آپ‌دار‬ ‫‪D‬‬ ‫‪PB5‬‬
‫خروجی‌یک‬
‫‪PB4‬‬
‫ورودی‬
‫امپدانس‌باال‬
‫‪PB3‬‬
‫خروجی‌یک‬
‫‪PB2‬‬
‫خروجی‌صفر‬
‫‪PB1‬‬
‫ورودی‬
‫امپدانس‌باال‬
‫‪PB0‬‬
‫ورودی‌پول‌‬
‫آپ‌دار‬

‫‪17‬‬
‫ﺮ‬ ‫ﻓ‬
‫کار با نرم افزار ‪CodevisionAVR‬‬

‫س‬ ‫ر‬ ‫د‬ ‫ا‬


‫نرم افزار ‪ CodevisionAVR‬یک ‪ IDE‬توانمند را برای برنامه‌نویسی به زبان ‪ C‬و اسمبلی برای میکروکنترلر‌های ‪ AVR‬فراهم می آورد ‪.‬‬
‫امکانات جانبی مثل‬

‫‪g‬‬
‫•‬

‫‪r‬‬
‫راه انداز پروگرمر‬

‫‪s‬‬ ‫‪.‬‬‫‪o‬‬
‫•‬

‫‪r‬‬
‫ترمینال سریال‬

‫‪D‬‬ ‫‪a‬‬
‫ابزار دیباگ و ‪...‬‬ ‫•‬

‫‪F‬‬ ‫‪a‬‬‫‪r‬‬ ‫‪a‬‬ ‫‪18‬‬


‫ﺮ‬ ‫ﻓ‬
‫کار با نرم افزار ‪CodevisionAVR‬‬

‫س‬ ‫ر‬ ‫د‬ ‫ا‬


‫تعاریف و نام رجیستر‌ها در هدر فایل مربوط به میکروکنترلر همگی با حروف بزرگ تعریف شده اند‪.‬‬
‫از آنجایی که زبان ‪ C‬به حروف کوچک و بزرگ حساس است‪ ،‬ذکر این نکته ضروری است‪.‬‬

‫‪a‬‬ ‫‪r‬‬ ‫‪s‬‬ ‫‪.‬‬‫‪o‬‬‫‪r‬‬ ‫‪g‬‬ ‫مثال کامپایلر از دستور زیر خطا خواهد گرفت‪:‬‬

‫‪r‬‬ ‫‪a‬‬‫‪D‬‬
‫;‪PortG= 0x27‬‬

‫‪F‬‬ ‫‪a‬‬ ‫‪19‬‬


‫ﺮ‬ ‫ﻓ‬
‫کار با نرم افزار ‪CodevisionAVR‬‬

‫س‬ ‫ر‬ ‫د‬ ‫ا‬


‫در میان برنامه زبان ‪ C‬می‌توان از کد‌های اسمبلی نیز استفاده کرد‪ .‬این دستورات بین دو عبارت پیش پردازنده ‪ #asm‬و ‪#endasm‬‬
‫قرار می‌گیرند‪.‬‬

‫‪r‬‬ ‫‪g‬‬
‫;‪PORTB.2 = 1‬‬

‫‪s‬‬ ‫‪.‬‬‫‪o‬‬
‫‪#asm‬‬

‫‪a‬‬ ‫‪r‬‬
‫‪nop‬‬

‫‪D‬‬
‫‪add r0, r1‬‬

‫‪r‬‬ ‫‪a‬‬
‫‪#endasm‬‬

‫‪F‬‬ ‫‪a‬‬
‫اگر بخواهیم یک یا چند دستور اسمبلی را در یک خط بنویسیم‪ ،‬باید به فرم زیر عمل نماییم‪:‬‬
‫)”‪#asm (“nop \ add r0, r1‬‬

‫‪20‬‬
‫ﺮ‬ ‫ﻓ‬
‫کار با نرم افزار ‪CodevisionAVR‬‬

‫س‬ ‫ر‬ ‫د‬ ‫ا‬


‫کدویژن از انواع داده زبان ‪ C‬استاندارد پشتیبانی می کند ‪ .‬داده هایی مثل ‪ long ، int ، char ، bool‬و ‪float‬‬
‫اما تفاوتهایی جزئی نیز وجود دارد ‪ .‬از جمله‬

‫‪o‬‬‫‪r‬‬ ‫‪g‬‬
‫• اضافه شدن داده تک بیتی ‪bit‬‬

‫‪a‬‬ ‫‪r‬‬ ‫‪s‬‬ ‫‪.‬‬


‫فقط مقدار صفر یا یک‬

‫‪r‬‬ ‫‪a‬‬‫‪D‬‬
‫تعریف به صورت سراسری (‪)Global‬‬

‫‪F‬‬ ‫‪a‬‬
‫نباید به صورت آرایه ‪ ،‬ساختار یا یونیون استفاده شوند ‪.‬‬
‫• عدم وجود داده اعشاری با دقت مضاعف در نسخه های غیر از ‪Professional‬‬
‫در ورژنهای دیگر ‪ ،‬داده ‪ double‬و ‪ float‬یکسا نند ‪.‬‬
‫• در صورت استفاده از داده ‪ ، bool‬هدر فایل ‪ stdbool.h‬به برنامه اضافه شود ‪.‬‬
‫‪21‬‬
‫ﺮ‬ ‫ﻓ‬
‫کار با نرم افزار ‪CodevisionAVR‬‬

‫س‬ ‫ر‬ ‫د‬ ‫ا‬ ‫ساخت پروژه‪ ،‬نوشتن برنامه و کامپایل کردن آن‬

‫‪g‬‬
‫برنامه ریزی آی سی میکروکنترلر‬

‫‪D‬‬ ‫‪a‬‬ ‫‪r‬‬ ‫‪s‬‬ ‫‪.‬‬‫‪o‬‬‫‪r‬‬


‫‪F‬‬ ‫‪a‬‬‫‪r‬‬ ‫‪a‬‬ ‫‪22‬‬
‫برنامه ریزی آی سی میکروکنترلر‬

‫س‬
‫‪MCU‬‬

‫ر‬ ‫د‬ ‫ا‬ ‫ﺮ‬ ‫ﻓ‬ ‫‪PGM‬‬ ‫‪PC‬‬

‫‪r‬‬ ‫‪g‬‬
‫•روی دستگاه پروگرمر‬

‫‪r‬‬ ‫‪s‬‬ ‫‪.‬‬‫‪o‬‬


‫برای چیپهای با پکیج ‪DIP‬‬

‫‪a‬‬‫‪D‬‬ ‫‪a‬‬
‫• روی برد ( ‪) On-Board‬‬

‫‪F‬‬ ‫‪a‬‬‫‪r‬‬
‫‪ ‬پروگرمر ‪ISP‬‬
‫‪ ‬کابل ‪JTAG‬‬
‫ﺮ‬ ‫ﻓ‬
‫برنامه ریزی آی سی میکروکنترلر‬

‫س‬ ‫ر‬ ‫د‬ ‫ا‬ ‫پروگرمر ‪ISP‬‬


‫برنامه ریزی به روش سریال ‪SPI‬‬

‫‪s‬‬ ‫‪.‬‬‫‪o‬‬‫‪r‬‬ ‫‪g‬‬


‫پیش نیازها ‪:‬‬

‫‪a‬‬ ‫‪r‬‬
‫• منبع تغذیه میکروکنترلر‬

‫‪r‬‬ ‫‪a‬‬‫‪D‬‬
‫• منبع کالک میکروکنترلر‬

‫‪a‬‬
‫‪VDD‬‬ ‫‪VDD‬‬

‫‪F‬‬
‫‪MOSI‬‬
‫‪MISO‬‬ ‫‪Parallel , Serial , USB‬‬
‫‪MCU‬‬ ‫‪SCK‬‬ ‫‪PGM‬‬ ‫‪PC‬‬
‫‪RESET‬‬

‫‪24‬‬
‫ﺮ‬ ‫ﻓ‬
‫انجام پروژه های نمونه و شبیهسازی در نرمافزار پروتئوس‬

‫رقم‬
‫‪0‬‬
‫‪G‬‬
‫‪0‬‬
‫‪F‬‬
‫‪1‬‬

‫س‬ ‫ر‬‫‪E‬‬
‫‪1‬‬‫د‬ ‫ا‬ ‫‪D‬‬
‫‪1‬‬
‫‪C‬‬
‫‪1‬‬
‫‪B‬‬
‫‪1‬‬
‫‪A‬‬
‫‪1‬‬
‫کد هگزا دسیمال‬
‫‪3F‬‬

‫‪r‬‬ ‫‪g‬‬
‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪06‬‬

‫‪r‬‬ ‫‪s‬‬ ‫‪.‬‬‫‪o‬‬


‫‪2‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪5B‬‬

‫‪D‬‬ ‫‪a‬‬
‫‪3‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪4F‬‬

‫‪r‬‬ ‫‪a‬‬
‫‪4‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪66‬‬

‫‪F‬‬ ‫‪a‬‬
‫‪5‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪6D‬‬
‫‪6‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪7D‬‬
‫‪7‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪07‬‬
‫‪8‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪7F‬‬
‫‪9‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪6F‬‬

‫‪25‬‬
‫ﺮ‬ ‫ﻓ‬
‫با تشکر از حسن توجه شما‬

‫س‬ ‫ر‬ ‫د‬ ‫ا‬


‫‪a‬‬ ‫‪r‬‬ ‫‪s‬‬ ‫‪.‬‬‫‪o‬‬‫‪r‬‬ ‫‪g‬‬
‫‪F‬‬ ‫‪a‬‬‫‪r‬‬ ‫‪a‬‬‫‪D‬‬
‫‪26‬‬

You might also like