اصول میکرو کامپیوترها.pdf
DESCRIPTION
micro computers.TRANSCRIPT
اك یىش وبذیسشب(یىشوششش)
اهید تکلیداشگا آزاد اسالهی شر
هجلسی
ح اسصیبثی
5هیاى ترم
2حضور و غیاب
2تکالیف
3پروژ
10پایاى ترم
اهید تکلیداشگا آزاد اسالهی شر
cهجلسی
مراجع
ؿش ػبثش اذی AVRیىشوشششبی حؼ ػیذسضی :ؿش AVRیىشوشششبی
ذی وبظ ، ػیذذی حؼیی دػشؼشدی :پدیدآرد AVRدشط ثب 10( شدآسذ)حذكبح ب ثخؾ :پدیدآرد AVRصثب اػجی یىشوشششبی
(یشاػشبس)ػیذذی حؼیی، ؼ ـىجبسثخـبیـی :پدیدآرد AVRدشط ثب 11CodeVisionآصؽ AVR (یشاػشبس)ثذاد داذی، ػیذاثاحؼ سؼی حذص :پدیدآرد
(ششػ)آبیشب ؼیی :پدیدآردCثشب یؼی اػجی AVRیىشوشششبی
اهید تکلیداشگا آزاد اسالهی شر
هجلسی
دشداصذ
دشداصذ چیؼز ؟ .دد هی اجام خد در را هحاسثات کلی ک تاشد هی کچک الکتریکی تراش یک پردازشگر
تاشد تیشتر سرعت ایي رچقدر شد هی سجید MHz اساس تر پردازشگر سرعت.دد اجام تاد هی لحظ ر در را تیشتری هحاسثات
احذ اكی سیضدشداصذ بقثل از آک تراسیسترا هرد استفاد قرار گیرد . احد اصلی ریسپردازد ا تراسیستر هی تاشد
از الهپ ا استفاد هی شد ک طثیعتا حجن سیستن ا تسیار تسرگ تدساخت شد ک شاهل تیش از 1971در سال 4004الیي ریسپردازد تسط ایتل تا ام
.دالر داشت 200تراسیستر تد قیوتی حدد 2300
اهید تکلیداشگا آزاد اسالهی شر
هجلسی
رشد ریس پردازد ا
اهید تکلیداشگا آزاد اسالهی شر
هجلسی
رشد ریس پردازد ا
Z80
•Z80پردازد یا zilog استفاد هرد ک است اییریسپردازد هعرفتریي از یکی 80 پیدا اویت شد هی استفاد ا داشگا در ایراى در ک آجائی از ریسپردازد ایي . شد
از تعضی در هتاسفا لی شد هی استفاد هز در اکى ن ریسپردازد ایي .ودگردد هی تدریس عتیق ال اساتید تسط ز ا داشگا
اهید تکلیداشگا آزاد اسالهی شر
هجلسی
ـخلبر
Single 5 Volt power supply
4 MHz (Z80A)
6 MHz (Z80B)
8 MHz (Z80H)
اهید تکلیداشگا آزاد اسالهی شر
هجلسی
ایتل پیشر تکلشی ریس پردازد
اهید تکلیداشگا آزاد اسالهی شر
هجلسی
یىشوششش چیؼز؟آ دس حمیمز یه ذاس ؼشغ وچه اػز و داسای .یىشوششش یه وبذیسش وچه ی ثبؿذ•
.یه دشداصؿش، حبفظ اػضاء دیشای لبث ثشب سیضی ی ثبؿذػبدی و ضی ثد اػشفبد اص ای اثضاس ثبػض ؿذ اػز اص آ دس دشػ بی وششی خشف •
اػشفبد ؿد اسجی اػجبة ثبصیػیؼش بی دضؿىیاص خبی..
:تفات هیاى پردارد ا هیکرکترلر ا ایه ب امکان ایه ومد اضاف دیگر ای المان حافظ ای چیپ آن ب بایذ کار برای پردازد
می اضاف را ماوىذتایمرا قطعات دیگر مىاسب حافظ کارمان حسب بر ک باشذ می مىاسب جت
دلیل میه ب شد می بیشتر سیى م سیى لحاظ از شد می پیچیذي مذار صرت ایه در کىیم
حافظ با جذیذ ای کىترلر میکر اما میشد استفادي خاص کارای در میکرپرسسرا از امرزي
ب را مذارات دذ می را امکان ایه زیاد بسیار تىع مختلف ای پرت متعذد ای تایمر باال ایدیم تسع ساخت سرعت
اهید تکلیداشگا آزاد اسالهی شر
هجلسی
لؼز بی یىشوششش:یىشوششش ب اص ثخـبی صیش سـىی ؿذ اذ•CPU احذ دشداصؽI /O سدی ب خشػی بRAMحبفظ اكی یىشROMحبفظ ای و ثشب سی آ رخیش ی شددTIMER ثشای وشش صب بInterrupt لف ب
...
اهید تکلیداشگا آزاد اسالهی شر
هجلسی
خااد هیکرکترلر ای هعرف
•MCS-51
•PIC
•AVR
•ARM
•Freescale
اهید تکلیداشگا آزاد اسالهی شر
هجلسی
Intel MCS-51.سػظ ایش سیذ شدیذ1980ای یىشوششش دس ػب •ـخل بی اكی ای یىشوششش ػجبسسذ اص•
• 8-bit ALU, Accumulator and 8-bit Registers; hence it is an 8-bit microcontroller
• 8-bit data bus – It can access 8 bits of data in one operation• 16-bit address bus – It can access 216 memory locations – 64 KB (65536
locations) each of RAM and ROM• On-chip RAM – 128 bytes (data memory)• On-chip ROM – 4 Kbyte (program memory)• Four byte bi-directional input/output port• UART (serial port)• Two 16-bit Counter/timers• Two-level interrupt priority• Power saving mode (on some derivatives)
اهید تکلیداشگا آزاد اسالهی شر
هجلسی
ثن دیبشا
اهید تکلیداشگا آزاد اسالهی شر
هجلسی
PIC microcontroller
اوظش اػشفبد وذب اص . ای یىشوششش ب ػبخز ؿشوز یىشچیخ ی ثبؿذ•ای یشوششش ب اثشاص ی وذ مبز ثؼیبس بػجی دس ثشاثش یض داسد
عجم ثذی ی و(core)ای یىشوششش ب سا اص دیذب ع ؼش •
Baseline Core 12ست
Mid-Range Core 14ست
High End Core 16ست •
اهید تکلیداشگا آزاد اسالهی شر
هجلسی
PIC بئی اص ااع
اهید تکلیداشگا آزاد اسالهی شر
هجلسی
ATMEL AVR
داسای ؼخ بی . ػبخش ؿذ اػز ATMELای یىشوششش سػظ ؿشوز •خشفی ی ثبؿذ و ثشای وبسثشدبی شفبر عشاحی ؿذ اػز
...دبی 64دبی سب 8اص یىشوششش بی •ثیشی ی ثبؿذ 32 8،16داسای ؼخ بی •
ػشػز ای یىشوشششب ثب سػ ث ؼبسی داخی افضایؾ ػذ ای دیذا د اػز
اهید تکلیداشگا آزاد اسالهی شر
هجلسی
AVRخباد • tinyAVR — the ATtiny series
– 0.5–8 kB program memory– 6–32-pin package– Limited peripheral set
• megaAVR — the ATmega series – 4–256 kB program memory– 28–100-pin package– Extended instruction set (Multiply instructions and instructions for
handling larger program memories)– Extensive peripheral set
• XMEGA — the ATxmega series – 16–384 kB program memory– 44–64–100-pin package (A4, A3, A1)– Extended performance features, such as DMA, "Event System", and
cryptography support.– Extensive peripheral set with DACs
• Application-specific AVR– megaAVRs with special features not found on the other members of
the AVR family, such as LCD controller, USB controller, advanced PWM, CAN etc.
• FPSLIC™ (AVR with FPGA)– FPGA 5K to 40K gates– SRAM for the AVR program code, unlike all other AVRs– AVR core can run at up to 50 MHz [5]
• 32-bit AVRsاهید تکلی
داشگا آزاد اسالهی شر هجلسی
AVRؼبسی
اهید تکلیداشگا آزاد اسالهی شر
هجلسی
AT90S
داسای لیز ؼجشب ثبالئی ؼشذ •اىببر وششی ؼجز ث ػبیش ذ ب داسذ•بذ•
AT90S4434 , AT90S8535, AT90S4433, AT90S2323
AT90S1200, AT90S4414, AT90S8515, AT90S2343
اهید تکلیداشگا آزاد اسالهی شر
هجلسی
Atiny
دبی اسائ ؿذذ 24 16 8دس ثؼش بی •اىببر لبثیز بی ثیـششی ؼجز ث ػشی ا داسذ•ؼال ث دی وچه ثد دس ػیؼش بئی ثب دسر و اػشفبد ی ؿذ•
داسد ADCحشی ثؼضی اص ذ بی وچه ا یض اىببسی چ •• ATtiny10, ATtiny12, ATtiny15, ATtiny25, ATtiny2313, ATtiny45
اهید تکلیداشگا آزاد اسالهی شر
هجلسی
ATmega
داسای اىببر ثیـششی ؼجز ث ػشی بی لجی اػز•ااع خشف اىببر ثشسی ا ػشی ػد اػز•...6440دس دبی بی خشف ػد ی ثبؿذ بذ •
• ATmega48, ATmega603, ATmega164, ATmega128,
• ATmega1280, ATmega8515
ATMELؿشوز 8051ث ظس ػبصبسی ثب ذ بی :ىش•سا ػشض د و دس ذاسار خد ATmega8515یىشوششش ذ
ی سا ثب ب ػبخشبس دبی دیبد ػبصی د
اهید تکلیداشگا آزاد اسالهی شر
هجلسی
ثشب یؼی
صثب ػغح دبئی•اػجی•
ػشػز ثبالسش–دیچیذی ثیـشش–
صثب ػغح ثبال••C ,C++
•Basic
•Pascal
•…
اهید تکلیداشگا آزاد اسالهی شر
هجلسی
CPU Cycle
دشداصؿشب ثشای اؼب ظبئف ح ث صبی یبص داسذ احذ ای صب •.ػیى بؿی ی ثبؿذ
دس حمیمز یه دبغ ػبػز ثشای دشداصؿش اػزCPUیه ػیى •ای ػیى ثب فشوبغ اػیالسس دشداصؿش ساثغ داسد•
اص ای س ش دػشس یىشوششش دس یه یب چذ ػیى اػشا یشدد•
frequencyosillatorcyclemachine
1
اهید تکلیداشگا آزاد اسالهی شر
هجلسی
ػشػز دشداصؿشب
Instructions per second
ؼال ث دی ثبال ثد ای ػذد اص احذبی . سؼذاد دػشسار اؼب ؿذ دس احذ صب یب طبی سا ـخق ی وذصیش اػشفبد ی ؿد
thousand instructions per second (KIPS),
million instructions per second (MIPS),
Giga instructions per second (GIPS),
Million Operations per Second (MOPS).
اهید تکلیداشگا آزاد اسالهی شر
هجلسی
شسی ثش ؼبسی دشداصذ ب
ثشای یىشوشششب اص د ؼبسی اػشفبد ؿذ اػز•
•CISC(Complex Instruction Set Compute)دس ای ؼبسی سؼذاد دػشسار ثیـشش ثد .اػشفبد ی ؿذ 1980اص ای ؼبسی لج اص ػب بی
دس ای ؼبسی ػشػز اػشائی . ی ػبدی ثیـششی دس وذبی اػجی آب ػد داؿش اػزدػشسار وشش ثد اػز
RISC(Reduced Instruction Set Compute)دس آ سؼذاد دػشسار وبؾ یبفز ی . اػشفبد شدیذ 1980اص ای ؼبسی ثؼذ اص ػب بی
صثب اػجی ث وبس سفش دیچیذ سش ؿذ ی اىب .ثشاثش افضایؾ دیذا د 10ػشػز اب سب فشا ؿذ cثشب یؼی ثب صثب بی ػغح ثبالسش بذ
اهید تکلیداشگا آزاد اسالهی شر
هجلسی
شسی ثش ااع حبفظ
• RAM (Random Access Memory)
• ROM(Read Only Memory)
• EPROM(Erasable Programmable Read only Memory)
• EEPROM(Electrically Erasable Programmable Read-Only Memory)
• Flash memory• NOR memories
• NAND memories
– MultiMedia Card (MMC)
– SD memory
اهید تکلیداشگا آزاد اسالهی شر
هجلسی
AVRثشب یؼی
اصصثب بی خشف اػشفبد AVRث ظس ثشب یؼی ثشای •ی وذ
اػجی دیچیذ سش اػز •
ػبد سش اػز Cصثب •اص ثشب بی خشف اػشفبد ی وذ Cثشای ثشب یؼی ث صثب –
AVRGCC
Codevision
اهید تکلیداشگا آزاد اسالهی شر
هجلسی
AVRGCC(winavr)
.ث كسر ش ثبص ثد ؼبی ی ثبؿذ•داسای وشبة خب بی ثؼیبس صیبدی اػز•
ث وبس ی سد AVRSTUDIOثشا ش افضاس •ی ثبؿذ Simulatorداسای
سا یض داسدcodevisionسابئی ؿجی ػبصی وذ بی ؿش ؿذ ثب
اهید تکلیداشگا آزاد اسالهی شر
هجلسی
codevision
وبس ثب آ ػبد سش اػز•داسای اىببر ابد ػبصی وذ بی دیؾ فشم ی ثبؿذ•اىب ثشب سیضی چی وبس ثب ثشدبی اػشبذاسد سا ث كسر دیؾ فشم سی •
خد داسد•....
اهید تکلیداشگا آزاد اسالهی شر
هجلسی
ATmega16ؼشفی
ی ثبؿذ AVRای یىشوششش یىی اص دبی ای سشی یىشوششش بی ػشی •ػد داسد ثشسی ای یىشوششش ػد ی ثبؿذ AVRغبت اىببسی و ثشسی •ػد داسد DIP SMDای یىشوششش دس ااع ثؼش ب ؿب •ػشػز ا لبث لج ثد ثؼیبسی اص یبص ب سا فشا ی وذ•ای یىش دس ذ بی خشف ػشض ؿذ اػز •
ATmega16L
ATmega16
ATmega16A
اهید تکلیداشگا آزاد اسالهی شر هجلسی
ATmega16ـخلبر
سا لشفی ؼجشب دبئئ•RISCاػشفبد اص ؼبسی •
دػشساؼ ی ثبؿذ 131داسای –ثیشی اػز 8سػیؼشش 32داسای –16MHzػشػشی سب –
حبفظ غیش فشاس ثشب دیشب•–16k ثبیز حبفظFlash ثشای ثشبEEPROMثبیز حبفظ 512––1K حبفظRAM
یظی بی ػبجی•ثیشی 8وبشش /د سبیش –ثیشی 16وبشش /یه سبیش ––RTC–PWMثیشی 10وبب جذ آبي ث دیؼیشب 8– TWIاسسجبط ػشیب دػی–USARTػشیب لبث ثشب سیضی –SPIاسسجبط ػشیب –
–WATCHDOGمبیؼ وذ آبي داخی–
اهید تکلیداشگا آزاد اسالهی شر هجلسی
ATmega16ؿى یىشوششش
اهید تکلیداشگا آزاد اسالهی شر هجلسی
ATmega16 ااع ذ بی
اهید تکلیداشگا آزاد اسالهی شر هجلسی
ATmega16ؼشفی دبی بی یىشوششش
Vccث شبطی دس حذد ATmega16Lای دبی شبط سغزی ی یىش اػز و ثبیذ دس یىشوششش
.شل شدد5.5Vسب 4.5Vث شبطی دس حذد ی ATmega16 دس5.5Vسب 2.7Vی
GNDای دبی ث صی شل ی ؿد
PA0) Port A سبPA7) دس.ؿد اػشفبد دیؼیشب ث آبي جذ ثشای آبي بی سدی ثؼا ساذ یAدسر
Iدبی 8 ثؼا دسر ای اص سا شدد،ی اػشفبد دیؼیشب ث آبي جذ اص و كسسی / Oد اػشفبد خبسػیPull-upمبز یه اص ساذ ی دسر بی دبی اص شیه.وشد اػشفبد عشف دسر ای بی دبی.داسد سا ثبال بی ػشیب داد یض دزیشؽ سابیی دسر ای،ای ثش ػال.وذ.یشد ی لشاس(Tri-state)ثبال اذذاغ حبز دسresetصب دس
PB0 )Port B تا(PB7:/ Iای دسر ب،دسر بی O ثیشی،ثب مبز بی 8د عشف یPull-up ثبفش .داخی ی ثبؿذ
خشػی ای دسر ب سابیی دزیشؽ یض داد ػشیب بی ثبال سا داسد دبی بی آب دس صبreset ش وذا اص دبی بی ای دسر ظبئف دیشی یض داسد .دس حبز اذذاغ ثبال لشاس ی یشد
و ث سشسیت ػجبسسذ اص(XCK/TO)یا PB0پای
و اگر اگر از کاتر صفر استفاد شود ب عواى ورودی کاتر صفر هحسوب هی شود
USART در هود سکروى استفاد شود خروجی کالک وسهاى کذ است
اهید تکلیداشگا آزاد اسالهی شر هجلسی
(T1)یب PB1دبی •اگر از کاتر یک استفاد شد ت عاى ردی کاتر یک هحسب هی شد–
(INT2/AIN0)یب PB2دبی •. اػشفبد ؿد 2ای دبی ی ساذ ث ػا سدی لف خبسػی–
یؼی مبیؼ وذ اػشفبد ی وذ OPAMPاصای دبی ث ػا سدی ظجز
(OC0/AIN1)یب PB3دبی •
دس كسسی و اص ذ مبیؼ سبیش كفش اػشفبد ؿد خشػی ذ مبیؼ–
خاذ PWMاػشفبد ؿد ث ػا خشػی PWMاش دس ذ .خاذ ثد
اػز OPAMPاش مبیؼ وذ آبي فؼب ثبؿذ ای دبی ث ػا سدی فی . ثد
(SS)یب PB4دبی •(MOSI)یب PB5دبی •
(MISO)یب PB6دبی •
(SCK)یب PB7دبی •ث وبس ی سذ و دس ایذ ث عس وب ثیب ی ؿذ SPIای دبی ب ثشای اسسجبط •
اهید تکلیداشگا آزاد اسالهی شر هجلسی
•PC0 )Port C تا(PC7:
.دس حبز ػبدی ث ػا سدی خشػی اػشفبد ی ؿذ
PC0 (SCL)دبی •ث ػا والن اػز TWIثشای اسسجبط دی د ػی –
PC1 (SDA)دبی •ث ػا خظ دیشب اػشفبد ی ؿد TWIثشای اسسجبط دی د ػی –
PC2(TCK)دبی •PC3 (TMS)دبی •PC4 (TDO)دبی •PC5 (TDI)دبی •
اػشفبد ی ؿذ JTAGای دبی ب ثشای –PC6 (TOSC1)دبی •
وی شسض اػشفبد وی ای دبی دبی ا اػیالسس 32.768سبیش د اػشفبد ؿد ثبیذ اص وشیؼشب RTCاش اص –اػز
PC7 (TOSC2)دبی •وی شسض اػشفبد وی ای دبی دبی د اػیالسس 32.768سبیش د اػشفبد ؿد ثبیذ اص وشیؼشب RTCاش اص –
اػز
اهید تکلیداشگا آزاد اسالهی شر هجلسی
•0 )Port D سب(PD7:.دس حبز ػبدی ث ػا سدی خشػی اػشفبد ی ؿذ–
PD0 (RXD)دبی •دساسسجبط ػشیب ث ػا سدی دس ظش شفش ی ؿد–
PD1 (TXD)دبی •دساسسجبط ػشیب ث ػا خشػی دس ظش شفش ی ؿد–
PD2 (INT0)دبی •ث ػا سدی لف خبسػی كفش دس ظش شفش ی ؿد–
PD3 (INT1)دبی •ث ػا سدی لف خبسػی یه دس ظش شفش ی ؿد–
PD4 (OC1B)دبی •دس كسسی و اص ذ مبیؼ سبیش یه اػشفبد ؿد خشػی د ذ مبیؼ–
خاذ ثد PWMاػشفبد ؿد ث ػا خشػی PWMاش دس ذ .خاذ ثد PD5 (OC1A)دبی •
مبیؼخشػی ا ذ دس كسسی و اص ذ مبیؼ سبیش یه اػشفبد ؿد –
خاذ ثد PWMاػشفبد ؿد ث ػا خشػی PWMاش دس ذ . خاذ ثد PD6 (ICP)دبی •PD7 (OC2)دبی •
دس كسسی و اص ذ مبیؼ سبیش د اػشفبد ؿد خشػی مبیؼ ای سبیش د –
خاذ ثد PWMاػشفبد ؿد ث ػا خشػی PWMاش دس ذ . خاذ ثد
اهید تکلیداشگا آزاد اسالهی شر هجلسی
•RESETیه ػیى دبغ یىش یه دبی ی سدی اػز و اش ثشای حذال
حشی اش والوی ث سشاؿ اػب ـد،ثب ٬ثـد( غمی)كفش
.ی شدد resetای ػد یىش
•XTAL1ای دبی ،یه دبی ی سدی اػز و ث سمیز وذ ی اػیالسس شل ی ؿد ث ذاس سیذ والن سشاؿ یض
.اسد ی شددXTAL2
ای دبی،یه دبی ی خشػی اػز و اص سمیز وذ ی .اػیالسس خبسع ی ؿد
•AVCC ADC جذ آبي ث دیؼیشب ی ثبؿذ حشی دس كسسی و اصAای دبی جغ سغزی ی شثط ث دسر
اػشفبد ی ؿد ثشش اػز ای دبی ثب یه ADCاش اص.شل شددVccث״ اػشفبد ـد، ثبیذ حشبشل ؿدVccفیشش دبیی زس ث
•AREF..ای دبی شبط شػغ آبي ثشای جذ آبي ث دیؼیشب ی ثبؿذ
اهید تکلیداشگا آزاد اسالهی شر هجلسی
دبغ ػبػز
دبغ ػبػز چیؼز•ثش اػبع آ شػؼی ثشای ػؼؾ داسی .دبغ ػبػز یه ػیب ب وذ دس ػیؼش ب ی ثبؿذ –
دس ای ؿى بغس و دیذ –ی ؿد یه ضب وذ ثی–
د فیخ فالح ػد داسد–
ATmega16بثغ دبغ ػبػز دس •دبغ ػبػز ثب وشیؼشب خبسػی–دبغ ػبػز ثب وشیؼشب فشوبغ دبئی–
خبسػی RCػب ػبص ثب –وبیجش ؿذ داخی RCػب ػبص ثب اػیالسس –ػب ػبص ثب والن خبسػی–
اهید تکلیداشگا آزاد اسالهی شر هجلسی
سظی جغ دبغ ػبػز
ثشای سظی جغ دبغ ػبػز ثبیذ اص فیص ثیز بی شثط ث ا اػشفبد د•فیص ثیز چیؼز ؟•
.ظال سظی جغ دبغ ػبػز. فیص ثیز ب ثشای اؼب سظیبر خبف دس یىش وششش اػشفبد ی ؿذ –ای فیص ثیز ب ثب لغغ ثشق یىش دبن ی ؿذ–. ثبیذ ب دششا وشد یىش اب سا مذاس داد. ثب ثشب یؼی ی سا اب سا سغییش داسد–
هعرفی فیز تیت ای تعییي کد پالس ساعت•ترای تعییي هثع پالس CKSEL0 , CKSEL1 , CKSEL2 , CKSEL3فیز تیت ای –
.ساعت وچیي فرکاس پالس ساعت استفاد هی شد
اهید تکلیداشگا آزاد اسالهی شر هجلسی
وشیؼشب خبسػی
و ثشاػبع ػشػز سد ظش خد مذاس سا CKSEL3..0 = 1111 1010 ~مذاس فیص ثیز ب•سظی ی وی
سا سظی ی وی CKSEL3..0 = 1111ؼال مذاس •دبی بی وشیؼشب سا غبثك ؿى سثششل ی وی •ثذ وشیؼشب سا یض ؼال ث صی شل ی وذ•سب 12خبص ب ث ظس حزف یض اىشش غبعیؼی سد اػشفبد لشاس ی یشذ مذاس آب ثی •
دیى فبساد اػز 22
اهید تکلیداشگا آزاد اسالهی شر هجلسی
دبغ ػبػز ثب وشیؼشب فشوبغ دبئی
CKSEL3..0 = 1001مذاس فیص ثیز ب •
وی شسض اػز 32.768وشیؼشب فشوبغ دبئی وشیؼشبی ثب فشوبغ •
شل ی ؿد XTAL1 XTAL2ای وشیؼشب یض ث ب دبی بی •
اهید تکلیداشگا آزاد اسالهی شر هجلسی
خبسػی RCػب ػبص ثب
اهید تکلیداشگا آزاد اسالهی شر هجلسی
وبیجش ؿذ داخی RCػب ػبص ثب اػیالسس
دس ای سؽ فشوبغ بی طبثز •
1MHz 2MHz4MHz8MHz
سا خای داؿزدسػ اثؼش اػز25ز دبی 5دبیذاسی ای فشوبغ ؿذیذا ث مذاس سغزی •دسكذ ثبؿذ 10سب 3مذاس خغبی ای ػب ی ساذ ثی •
سظی ؿذ اػز1MHzیىش ث عس دیؾ فشم ثشسی فشوبغ •غبثك ثب ػذ صیش اػز CKSEL3..0مذاس فیصبی•
اهید تکلیداشگا آزاد اسالهی شر هجلسی
ػب ػبص ثب والن خبسػی
دس ای حبز دبغ ػبػز سا اص یه جغ دبغ خبسػی اػشفبد یىذ•دسكذ داؿش ثبؿذ 2ای جغ جبیذ خغبئی ثیؾ اص •
سظی ی ؿد CKSEL3..0; 0000مذاس فیص ثیز •
اهید تکلیداشگا آزاد اسالهی شر هجلسی
ATmega16بثغ سیؼز دس
.سی ػز سا بب یه لف ی بذ•گام ری ست کلی رجیسترای ردی خرجی ت هقادیر پیش فرض در ظر گرفت شد تغییر هی یاتد•
.ؿشع ی ؿد 0x0000ث كسر دیؾ فشم ثؼذ اص سی ػز ثشب اص ثشداس •ی سا ثشداس سی ػز سا ثب اػشفبد اص فیص ثیز ب ث حی سؼیی د و اص آدسع دیشی دس حبفظ •
Flash آغبص ؿد•ATmega16 سا اص عشیك دغ جغ ی سا سی ػز وشداػشفبد ی وذ MCUCSRثشای سؼیی جغ سی ػز اص سػیؼشش •
: PORF :POWER ON RESET: 0ثیز•یه ؿذ یىش PORFدبئی سش سد ثیز VPOTدس كسسی و شبطسغزی اص شبط آػشب
سی ػز ی ؿد
اهید تکلیداشگا آزاد اسالهی شر هجلسی
ATmega16بثغ سیؼز دس
(:EXTERNAL RESET) سیؼز خبسػی•دس EXTRFدس كسر كفش ؿذ دبی سیؼز یىش ثشای ثیؾ اص یه ػیى ثیز
.یه ؿذ یىش وششش سی ػز ی ؿد MCUCSRسػیؼشش ویذ فـبسی خبص دید ثشای ثی . ذاس صیش ثشای سیؼز اػشفبد ی ؿد•
دبی سی 10K اضای ی ثبؿذ ی ثبیذ ثب یه مبز .ػبصی اػشفبد ی ؿذػز سا ث سغزی شل د
دید خبسػی ثشای حزف •اطش اىششیؼش ػبو اػز
ثشا ی حزف یض اػشفبدخبص •
ی ؿد
اهید تکلیداشگا آزاد اسالهی شر هجلسی
ATmega16بثغ سیؼز دس
•Watchdog:یه ؿذ MCUCSRدس WDRFسبیش جب صب دس كسسی و ػشسیض وذ ثیز
یىش سیؼز ی شدد
•Brown-out Reset : دس كسر فؼب ثد ذاسBrown-out سػظ فیص ثیز. وشش ؿد ذاس سی ػز ی ؿد 4/5یب 2/7اش شبط سغزی اص BODENبی
.سؼیی ی ؿد BODLEVELمذاس ای شبط ثشاػبع فیص ثیز .یه خاذ ؿذ MCUCSRدس BORFچی ثیز
اهید تکلیداشگا آزاد اسالهی شر هجلسی
سا اذاصی ای ػخز افضاس
ثشای دیبد ػبصی یه ذاس ثبیذ ػخز افضاس سا ثبیبع د حذال بی •سد یبص ثشای دیبد ػبصی ػخز افضاس غبثك ؿى اػز
ثؼش ث ع ذاس دیبد ػبصی ی سا ااع سؽ بی ثبیبع سا داؿز•دس ثؼضی اص ذاسار یبص ث وشیؼشب ذاسی دس ثؼضی داسی•
اهید تکلیداشگا آزاد اسالهی شر هجلسی
یه ذاس ػبد
سا LEDدس ای لؼز كشفظش اص ثشب یؼی ی خای ذاس سا اذاصی یه •طبی یض 1ثب ػشػز LEDای ثشای چـه صد ای عشاحی وی دس آیذ ثشب
.خای ؿز
دس ای ذاس اص •وشیؼشب اػشفبد
ث ػبیش. د ایاسلبالر یض اذوی
دلز ویذ
اهید تکلیداشگا آزاد اسالهی شر هجلسی
AVRثشب یؼی ثشای
اص د صثب ؼشف اػشفبد ی وذ AVRثشای ثشب یؼی یىشوششش•BASCOMثیؼیه ثب اػشفبد اص ش افضاس ••C ثب اػشفبد اصCodevision Winavr
وبس وبس دس فشػی سؿش یه ػا ث سا یىشوششش و وذ ی اػشفبد وؼبی ؼال BASCOM اص آ اص داسد یىشوششش ثب ای دشط ث یبص و ىبیه ذع یه ظب ثشای .وذ ی اػشفبد خد
.وذ ی اػشفبد
:هسایاػبدی
داؿش وذ ب دشط بی آبد:هعایة
سیذ وذ صیبد دس ثشاثش چذ خظ ثشب یؼیػشػز دبئی سش
اهید تکلیداشگا آزاد اسالهی شر هجلسی
اسیش
لج اص ؿشع ثشای ثشب یؼی ثبیذ اسیش فچبسر ثشب سا ثػی•ثب اػشفبد اص ای اىب اص ػشدسی ب ثشب یؼی ػیشی خاذ ؿذ•اسیش سؼیی ی وذ ثؼذ اص ش شح ثبیذ ث ػشاؽ وذا شح یب شاح سفز• یؼز و دس ؿش اسیش یب سػ فچبسر اصچ سؽ یب بدبئی اػشفبد •
وی داؼش كحیح شاح لجی ثؼذی اػز
اهید تکلیداشگا آزاد اسالهی شر هجلسی
Cثشب یؼی ثب
ث ػا یىی اص ثششی لذسسذ سشی صثب بی ثشب Cصثب ثشب یؼی •.یؼی ی ثبؿذ
سمشیجب سبی یىشوشششب ای صثب سا دـشیجبی ی وذ•دسای كسر اش ثخای اص یه یىشوششش ث یىشوششش دیش ػئیچ وی •
سا یبد ثیشی ... وبفی اػز سب سػیؼششب
اػشفبد ی وذ codevision winavrثشای ثشب یؼی اص د حیظ •اك ثشب یؼی ثشای شوذا اص د حیظ یىؼب اػز •
اهید تکلیداشگا آزاد اسالهی شر هجلسی
cلؼیز صثب
سا اشچ صثبی ػغح ثبال ی داذ ی ثؼیبسی آ سا صثب یب ی داذ cصثب •صیشا اشچ خلكیز صثب بی ػغح ثبال سا داسد ی بذ اػجی سابئی وبس ثب
ثیز ب دػششػی ؼشمی ث حبفظ سا یض داسد
ث ىبر صیش سػ ویذ cب ثشب یؼی دس •ث حشف ثضسي وچه حؼبع اػز cصثب –دس ب ثشب یؼی جبیذ اص وبر ویذی اػشفبد د–
خش ی ؿد ;ش خظ دػشسار ث –//لشاس ی دذ یب ثؼذ اص */ /* سؼبسیف ثشب سا دس –
اهید تکلیداشگا آزاد اسالهی شر هجلسی
فبی بی ػشآیذ یب دیؾ دشداصذ
ح لت ش افضاس الغ ؼشذ INCای فبی ب ث كسر آبد دس دؿ •
ای فبی ب دس اثشذای ثشب ؼشفی ی ؿذ•ؼشذ h.ای فبی ب داسای دؼذ •اص عشیك ای فبی ب یىشوشششی و لشاس اػز اػشفبد ؿد ؼشفی ی شدد•
وشبثخب بئی و لشاس اػز اػشفبد ؿذ یض ؼشفی ی ؿذ•
اػشفبد ی ؿد include#ثشای سؼشیف ػشایذ ب اص •#include<atmega16.h>
#include<stdio.h>
اهید تکلیداشگا آزاد اسالهی شر هجلسی
cااع داد ب دس صثب
ششی لؼز ثشب یؼی دس ش صثبی داد ب ی ثبؿذ•داد ب اعالػبر سدی یب ػد دس ػیؼش ی ثبؿذ و ثش اػبع آب •
ااع دشداصؽ ب كسر ی یشدیىی اص خلكیبر داد ب ع آب اػز•اص آؼبئی و ای داد ب فضب اؿغب ی وذ سظی دسػز آب ثؼیبس •
ضشسی اػز ع داد اكی اػز 5داسای داسای cصثب •
–Int char float double void
ثشای سؼشیف شغیشب ث كسر صیش داسی–ع شغیش ب شغیش مذاسشغیش
اهید تکلیداشگا آزاد اسالهی شر هجلسی
cااع داد ب دس صثب
•int : ای ع داد یىی اص ؼششی ااع داد اػز و ثشایثیز یب د ثبیز اػشفبد ی ؿد16دخیش داد بی ثب ع
اػشفبد intثشای سؼشیف شغیشی اص ع كحیح اص و ویذی •.ی وی
• int var_test =50;
ثب intسااصع var_testبغس و ـبذ ی ؿد شغیش •سؼشیف دی 50مذاس
اهید تکلیداشگا آزاد اسالهی شر هجلسی
cااع داد ب دس صثب
•Char از وع یک بایتی است
•Float بایتی است 4برای رخیر اعذاد اعشاری استفاد هی شود و
•Double بایت استفاد هی شود ب جذول زیر 8برای رخیر اعذاد صحیح تا
توج کیذ
اهید تکلیداشگا آزاد اسالهی شر هجلسی
ااع مبدیش
اش لج اص ػذد سد ظش ػالشی زاسی ف آا ػذد دػیب اػز•Char x=15;
ثیبیذ ف آ ضا اػز 0xاش لج اص ػذد •Char x = 0x15;
ثیبیذ ف آ ثبیشی اػز 0bاش لج اص ػذد •char x= 0b11100011;
اشو ای ثی د داث وسیـ ثبؿذ مذاس سؿش اػز• char x*+ = “tehran”;
اش وبساوششی ثی د ػالز وسیـ ثبؿذ مذاس اػىی داسد•char x = ‘s’;
اهید تکلیداشگا آزاد اسالهی شر هجلسی
شغیشب ث كسر حی یب وی سؼشیف ی ؿذ•
:ب زاسی شغیشب•دس ب زاسی شغیش ب اص حشف وبساوششبی یظ اػشفبد ی وذ
a-z A-Zحشف
اػذادحشف سثظ
ای حشف جبیذ ػذد ثبؿذحشف ثبؿذ 31جبیذ ثیؾ اص
اهید تکلیداشگا آزاد اسالهی شر هجلسی
:مذاس دی شغیشب•اص ػ سؽ ی سا ث شغیش ب مذاس داد
ب سؼشیف;دغ اص سؼشیف ثب اػشفبد اص
ثب اػشفبد اص دػشسار سدی
:طاثزاص طاثز .مبدیش ؼشذ و دس ثشب سؼشیف ی ؿذ ی مذاس آب سغییش ی وذ.بی و ثخای اص مذاسی شبثب اػشفبد وی اػشفبد ی ؿد
#define ب طبثز مذاس
اهید تکلیداشگا آزاد اسالهی شر هجلسی
عملگرها
ػشب بدبی خبكی ؼشذ و ثشاػبع آب ػیبر بی خبكی كسر ی •دزیشد
ااع ػشب •:حبػجبسی –
ای اص آب ؼشذ* / -+ ای ػشب ػیبر بی حبػجبسی سا اؼب ی دذ •
اهید تکلیداشگا آزاد اسالهی شر هجلسی
غمی–ثشسی ػجبسار غمی ػ ی وذ مبدیش دسػز یب بدسػز داسذ•
ساثغ ای–اسسجبط ثی ػذب سا ـخق ی وذ•
ثیشی–ثشسی ثیز ب ػ ی وذ بذ ؿیفز داد ، سؼز وشد ثیز ب•
اهید تکلیداشگا آزاد اسالهی شر هجلسی
if-elseدػشس ؿشط
ثشای اسصیبثی یه ؿشط وششی دس ثشب سد اػشفبد لشاس ی یشد•ػبخشبس آ ث كسر صیش اػز•
If(ؿشط){1دػشساؼ بی
{else{2دػساؼ بی
{سؼز ی ؿد دس كسسی و كحیح ثبؿذ ifدس ایؼب ؿشط
اػشا ی ؿذ دس غیش ای كسر دػشساؼ بی 1دػشساؼ بی اػشا ی ؿذ 2
اهید تکلیداشگا آزاد اسالهی شر هجلسی
ظب
unsigned char a,b;
If(a > b){
a++;
b+=10;}
else{
a--;
b-=10;
}
unsigned char zx,sd;
If(zx==sd) zx++;
else sd++;
اهید تکلیداشگا آزاد اسالهی شر هجلسی
forحم سىشاس
بی و ثخای ؼػ ای اص دػشسار سا ثب سػ ث ؿشایغی ث سؼذاد •ـخلی سىشاس وی اص ای دػشس اػشفبد ی وی
ح اػشفبد اص ای دػشس ث كسر صیش اػز•
• for( مذاس دی ای }(ؿبسذ حم;ؿشط حم;
;دػشساؼ ب
}
اهید تکلیداشگا آزاد اسالهی شر هجلسی
unsigned char i;
unsigned int w;
for(i=0;i<25;i++){
W+=5;
}
unsigned char I,j,z=2;
for(i=10;i>0;i--){
for(j=0;j<=50;j++){
z*=10;
if(z==140) z=2;
}
}
for(;;){دستورالعول ا
{
اهید تکلیداشگا آزاد اسالهی شر هجلسی
whileدػشس ثبػض سىشاس ؼػ ای اص دػشسار خاذ ؿذ
ثذ دس ظش شفش ؿبسذ
while(ؿشط){
;دػشساؼ ب
}
unsigend char a,b;
while(a>b){
a=(a/b*2);
}
do-whileدػشس ای دػشس یض بذ دػشس لج اػز ثب ای سفبر
و حذال یىجبس اػبص سىشاس سا ی دذ
do{
;دػشساؼ ب
}while (ؿشط);
unsigned char I,sw,y;
do{
i++;
y=sw*i;
}while(i<10);
while(1){;دستورالعول ا
}
do{;دػشساؼ ب}while (1);
اهید تکلیداشگا آزاد اسالهی شر هجلسی
هثال• 10سا ثشاثش ثب zثد 1ثشاثش ثب xدس كسسی و •
دس غیش 20سا zثد 26دس كسسی و ثشاثش ثب .ثزاس 50سا ثشاثش zای كسر
unsigned char x,z;switch(x){case ‘1’ : z=10;break;case ‘26’ : z=20;break;default :z=50;}
switchدػشس •اػز ای مبیؼ دػشس یه دػشس ای• طبثز اػذاد سؼذادی ثب سا ػجبسر یه دػشس ای•
وذ ی مبیؼ ثبؿذ ؼبی طبثز مذاس ثب ػجبسر و كسسی دس•
.یىذ اػشا سا ب دػشساؼاص ای لؼز خبسع ی ؿد breakدس بیز ثب دػشس •سا زاؿز سب defaultی سا دس اشبی ای دػشس لؼز •
اش دػشسی دیذا ـد آ اػشا شددی سا غیش اص طبثز caseثؼبی ػجبسر دس لؼز •
.چیضی زاؿزSwitch(ػجبسر){
case 1مذاس :;دػشساؼبی اbreak;case 2مذاس :
ددػشساؼبی ;break;
default:دیؾ فشمدػشساؼبی ;
}
اهید تکلیداشگا آزاد اسالهی شر هجلسی
اسد جبؿذ كفش x اش ثشب ای دس .یبثذ ی افضایؾ یىی ؿد ی حم ثب ثؼذ ؿد ی سؼز یض n شغیش
ؿشط اثشذای ث continue ث سػیذسد ی
goto دػشس
goto label;ثب اػشفبد اص ای دػشس ث ثشچؼت
goto دشؽ ی ویloop:;دػشس اؼ
goto loop;
break دػشس• اص ؿذ خبسع ؿىؼش ثشای دػشس ای اص•
وذ ی اػشفبد ؿشط ثذ حم ادا فؼی حم اص ثؼذ دػشس اص ػجبسسی ث•
یبثذ یBreak;
continue دػشس• اثشذای ث ثشب دػشس ای ث ثشب سػیذ ثب
وذ ی دشؽ حمContinue;
unsigned char x=1,i,n;While(x){i++;if(n==10){
x=0;continue;}
}
اهید تکلیداشگا آزاد اسالهی شر هجلسی
cساثغ دس صثب
دس ؼال .اػز main ث ػ اكی سبثغ یه داسای حذال c صثب دس ثشب ش• .ؿذ ی فشاخای دیش ساثغ سبثغ ای
سا دشداصؿی یىذیش وبس دس و ثبؿذ ی دػشسار اص ای ؼػ حمیمز دس ساثغ• ب فمظ جد دػشسار ای سه سه ؿش ث یبص س ای اص دذ ی اؼب.ؿذ خاذ صد كذا سبثغ
شسبثغ ث فش صیش سؼشیف ی ؿد•
والع رخیش ػبصی ع ثشـشی سبثغ }(آسب بی سبثغ)ب سبثغ ;دػشساؼ ب
return شغیش یب ػذد;
}
اهید تکلیداشگا آزاد اسالهی شر هجلسی
:هثال•
void display(){
;دػشساؼ ب
}
void main(){
display();
;دػشسار
}
ع سبثغ ؼال یىی اص ااع سؼشیف ؿذ بذ •char یبint اػز...یب
voidاش سبثغ مذاسی ثبص شداذ آ سا اص ع • voidدس ظش ی یشذ دس ػی سبثغ و
ث وبس ی ثشذ
مذاس returnاش سبثؼی ثشـشی ثبؿذ ثب •خد سا ثبص ی شداذ
فشاخای سؼشیف داصسبثغ سا ثبیذ لج : ىش •
اهید تکلیداشگا آزاد اسالهی شر هجلسی
توابع استانذارد
کتابخا ای•
• ctype.hثبص ی شداذ 0یب 1ثؼش ث ع وبساوشش سدی مذاس
• stdlib.h
ثشسی شغیشب سؿش بی سدی ػ ی وذ
• math.h
ساثغ سیبضی سا اسائ ی وذ
• string.h
ػیبر سی سؿش ب اؼب ی دذ
• bcd.h
دشداصؽ ی وذ bcdسی سدی بی
• delay.h
ثبػض ایؼبد سبخیش ی ؿد
ساثغ اػشبذاسد اىببر سد یبص ثشای ثشب •یؼی لؼز بی خبف سا ث ب اسائ ی
وذثشای اػشفبد اص شوذا اص ای ساثغ ثبیذ •
وشبثخب ا سا كذا ثضی:ىبر •ش وشبثخب سا ث كسر صیشاضبف ویذ•
#include< ام کتابخا.h>
زاؿز ;دس اشبی ب ش سبثغ ثبیذ
اهید تکلیداشگا آزاد اسالهی شر هجلسی
• delay.h
• void delay_us(unsigned int n)اػز ث ی مذاس ثشحؼت 65535سب 0ثی nمذاس
یىشطبی سبخیش ی دذ
• void delay_ms(unsigned int n)یی ثشحؼت اػز ث ی مذاس 65535سب 0ثی nمذاس سبخیش ی دذطبی
اهید تکلیداشگا آزاد اسالهی شر هجلسی
دسر بی یىشوششش
.دبی بی یىشوششش ی ساذ ث كسر سدی یب خشػی ثبؿذ•ثشب یغ ی ساذ سؼیی وذ وذا دسر سدی وذا خشػی ثبؿذ•ث عس وی سب دسر بی یىشوششش داسای ػ سػیؼشش ؼشذ•
• DDRx.n
اش ای سػیؼشش ثشای شدبی یه ثبؿذ آ دبی خشػی اش كفش ثبؿذ سدی اػز
• PORTx.n
ای سػیؼشش ثشای اسػب اعالػبر ث خبسع یىش اػز ث ػجبسسی داد ای سا و ی خای اص یىش خبسع وی سی آ ی سیضی
• PINx.n
ای سػیؼشش ثشای خاذ اعالػبر اص ثیش ث داخ یىش اػز
اهید تکلیداشگا آزاد اسالهی شر هجلسی
.سا دس حبز خشػی لشاس دیذ Aدسر •
DDRA = 0xFF;
.دیذسدی لشاس سا دس حبز Aدسر •
DDRA = 0x00;
.سا دس حبز سدی لشاس دیذ PC.0دسر •
DDRC.0 = 0;
ثشیضیذ Bسا سی دسر 50ػذد •
DDRB=0xFF;
PORTB=50;
ثشیضیذ SYSTEMسا دس شغییش Cمذاس دسر •
DDRC = 0X00;
SYSTEM = PINC;
اهید تکلیداشگا آزاد اسالهی شر هجلسی
وقفه
لف چیؼز ؟•ب ػجبسر اػز اص لغغ لز ثشب ب ی دس حب اػشا اؼب ػیبر
دػشس اؼ بی شثط ث لف
:ثشسػی دشػ ب بی و ی خای دشػ ب سا شست چه وی د سؽ داسای
خبف بی صب دس سؽ ای دس .خبف صبی دس ثب صد ػش ػجبسسی ث یب شبة یشی دی-1 ظش سد دشػ ثبؿذ افشبد اسفبق و كسسی دس صی ی ػش ـخق ىب ث ؿذ سؼییدزیشد ی اؼب
ؿد ی شػ اسبسیه ػیؼش سیذاد، آ اؼب ثب و لف اص اػشفبد -2
اهید تکلیداشگا آزاد اسالهی شر هجلسی
ساختار وقفه
براه اصلی
براه وقف
براه وقف
یىش ػبدی حبز دس وی عس ث بی آدسع دس ػد بی ثشب .وذ ی اػشا سا اكی ثشب
دذ ی سی ای لف و بی دشؽ لف بی آدسع ث ثشب
آ ػدس بی ثشب وذ یوذ ی اػشا سا ب آدسع
اهید تکلیداشگا آزاد اسالهی شر هجلسی
ح اػشای لف
اػشای دػشس ػبسی رخیش آدسع دػشس ثؼذی دس حبفظ•دشؽ ث لف شثع اػشای آ•
ثؼذ اص اػشای لف ثبصـز ث سا ثشب لشاسداد آدسع رخیش ؿذ دس سذ اػشا•
اهید تکلیداشگا آزاد اسالهی شر هجلسی
سػیؼشش بی لفSREGسػیؼشش ضؼیز •
اش ای. ویذ فؼب ػبصی سػیؼششباػز SREGاص سػیؼشش 7ثیز •ثیز فؼب ثبؿذ ثب فؼب ػبصی لف ب آب وبس ی وذ دس غیش ای •كسر ثب فؼب ػبصی لف ب اب وبس ی وذ •ثشای فؼب ثد مذاس یه غیش فؼب مذاس كفش•
غیش فؼب یـد asm(“cli”)#فؼب ثب دػشس asm(“sei”)#ثب دػشس •ای سػیؼشش ثیشی فؼب یب غیش فؼب ی ؿد•
اهید تکلیداشگا آزاد اسالهی شر هجلسی
لف خبسػی
ای لف دبغ بی خبسػی سػیذ سا سـخیق داد ؼجز ث اب ػیبسی سا اؼب •ی دذ
ثشػذ.... ای دبغ ب ى اػز اص یه یىشػئیچ یب اص یه ػؼس یب •
اهید تکلیداشگا آزاد اسالهی شر هجلسی
فؼب ػبصی لف ب-1ثشای فؼب ػبصی لف بی خبسػی ثبیذ اص سػیؼشش شثط ث ا اػشفبد د–
PD2 PD3PB2ػ لف خبسػی داسی و دس دبی بی atmega16دس –
.ظبش ی ؿذ2ثشای فؼب ػبصی لف خبسػی 5ثیز •
0ثشای فؼب ػبصی لف خبسػی 6ثیز •1ثشای فؼب ػبصی لف خبسػی 7ثیز •
لف ب فؼب ی ؿذ SREGاص سػیؼشش 7فؼب ثد ثیز GICRثب یه وشد ای ثیز ب دس سػیؼشش
اهید تکلیداشگا آزاد اسالهی شر هجلسی
GIFRرجیستر
بی و لف بی خبسػی فؼب ی ؿذ دشچ شبظش ثب ش لف •.دس ای سػیؼشش یه ؿذ ؼذد كفش ی ؿد
ثؼضی الغ ث كسر دػشی خد مذاس ای سػیؼشش ب سا یه ی •وی سب لف شبظش ثب ا فؼب ؿد
اهید تکلیداشگا آزاد اسالهی شر هجلسی
MCUCRسػیؼشش
ثب چ ػیبی ی سای لف سا فؼب و: ػا •:ااع ػیب•
ج–ثبالسذ•دبئی سذ•
ػغح–ػغح دبئی•
ش سغییش غمی•
اهید تکلیداشگا آزاد اسالهی شر هجلسی
MCUCRسػیؼشش سػیؼشش•
:لف خبسػی یه•(ISC10 ISC11) 23ثیز بی –
خبسػی كفشلف –(ISC00 ISC01) 01ثیز بی –
اهید تکلیداشگا آزاد اسالهی شر هجلسی
MCUCSRرجیستر
2وقف خارجی •
(ISC2)6بیت –
اهید تکلیداشگا آزاد اسالهی شر هجلسی
codevisionح ؿش وذ لف ب دس
اص فش وی صیش اػشفبد ی ویcodevisionثشای ؿش ساثغ لف دس •
• interrupt [ؿبس ثشداس یب ب ؼبد] void ب سبثغ (){
ثشب بی لف
}
ؿبس ثشداس دس حمیمز ؿبس لف یب ب ا غبثك ثب ػذ ثؼذی ی ثبؿذ
interrupt [2] void ext_int0_isr(void) {دػشسار}
interrupt [EXT_INT0] void ext_int0_isr(void) {دػشسار}
اهید تکلیداشگا آزاد اسالهی شر هجلسی
اهید تکلیداشگا آزاد اسالهی شر هجلسی
LEDفـشد یه ویذ سا سـخیق داد یىی 0ثشب ای ثیؼیذ و ثب لف خبسػی سا ؼىع ویذ
#include<mega16.h>
interrupt [EXT_INT0] void ext_int0_isr(void){
while(PIND.2 ==0);
PORTA.0 =!(PORTA.0);
}
Void main(){
PORTA.0 = 0;
DDRA.0 = 1;
GICR|=0x40;
MCUCR=0X02;
GIFR = 0x40;
#asm(“sei”)
While(1);
} اهید تکلیداشگا آزاد اسالهی شر هجلسی
شل بیذ و ثب صد یه ویذ یه ػذد ث 1 0ثشب ای ثیؼیذ و د ویذ سا ث لف بی خبسػی مذاس بیـش فز لؼشی اضبف وذ ثب صد ویذ دیش یه احذ و وذ
#include<mega16.h>Flash unsiened char number[]={0x3f,0x06,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};Unsigned char i=0;interrupt [EXT_INT0] void ext_int0_isr(void){if(i<9) PORTA = number[++i];while(PIND.2 == 0);}interrupt [EXT_INT1] void ext_int1_isr(void){if(i>0) PORTA = number[--i];while(PIND.3== 0);}Void main(){PORTA =number[0];DDRA.=0xFF;GICR|=0xC0;MCUCR=0X0A;GIFR = 0xC0;#asm(“sei”)While(1);}
اهید تکلیداشگا آزاد اسالهی شر هجلسی
codevisionبرنامه نویسی در
codevisionاىببر ش افضاس •
داسی سیذ وذ وذ اسبسیه–
ث وذ بی سد لج یىش cسجذی ثشب –لبثیز افضایـی ػشػز ثشب یب وبؾ حؼ وذ ب ایؼبد ––.....
اهید تکلیداشگا آزاد اسالهی شر هجلسی
codevisionایجاد برنامه در
سا ثضیذ newاثشذا اص ی فبی ضی •دؼش ای غبثك ثب ؿى صیش ثبص ی ؿد•
سا اشخبة ویذ سب دشط ػذیذی ثبص شدد projectضی •
دس ای كسر ػا ی ؿد و آیب ی خایذ اص ایؼبد وذ وذ اػشفبد ویذ •یب ث كسر دػشی ػ ویذ
اهید تکلیداشگا آزاد اسالهی شر هجلسی
كفح ای ث فش صیش ثبص ی ؿد و وذبی اسبسیه ایؼبد ی وذ yesثب صد •
generate ,save and exitثؼذ اص اؼب سظیبر اص ی فبی ضی •
cدس ای كسر اص ؿب ػ ب ی دشػذ و ثشای فبی . سا ثضیذب دشط سظیبر یضاسد اػز
اهید تکلیداشگا آزاد اسالهی شر هجلسی
سا ثضیذ سب ثشب compileضی projectبی و وذب ؿش ؿذذ اص ی وذبی ؿذ دس كسر ػد خغب اػال وذ
دس كسر ثشص خغب ا ب سفغ ویذ
وذبی بئی سا ایؼبد ویذ buildثب صد
اهید تکلیداشگا آزاد اسالهی شر هجلسی
chipضی toolsدس بیز ثشای اشمب وذ ایؼبد ؿذ ث سی چیخ اص ی •program سا اشخبة ی وی
اهید تکلیداشگا آزاد اسالهی شر هجلسی
شبیه سازی برنامه
اػشفبد ی وی avrstudioػز ؿجی ػبصی ثشب اص ش افضاس •ایؼبد ؿذ coffفبی codevisionثب اػشای ای ش افضاس اص داخ •
ثشای ؿجی ػبصی فشاخای ی شدد
اهید تکلیداشگا آزاد اسالهی شر هجلسی
اهید تکلیداشگا آزاد اسالهی شر هجلسی
LCD
یىی اص دش اػشفبد سشی اثضاسب دس دشط ب ثب یىشوششش اػز LCDبیـش••LCD ب ثب ؿى ب فشز بی خشف دس ثبصاس ؼشذ و دس ایؼب ااع شی اسائ
ی ؿذ
اهید تکلیداشگا آزاد اسالهی شر هجلسی
16*2ذ LCDػبخشبس
ػش ی ثبؿذ 16داسای د سدیف LCDای •ػبخشبس دبی بی ا ث كسر صیش اػز•
اهید تکلیداشگا آزاد اسالهی شر هجلسی
ث د كسر اػز LCDاعالػبر اسػبی ث •(ثشای بیؾ) داد ب •(ثشای اػشا)دػشسار •
اهید تکلیداشگا آزاد اسالهی شر هجلسی
LCDکتابخانه ساثؼی سا ایؼبد د اػز و ثب اب ی سا ث ساحشی ث codevisionش افضاس LCDثشای وبس ثب •
LCD دػششػی داؿز• void lcd_clear(void)• clears the LCD and sets the printing character position at row 0 and
column 0.• void lcd_gotoxy(unsigned char x, unsigned char y)• sets the current display position at column x and row y. The row and
column numbering starts from 0.• void lcd_putchar(char c)• displays the character c at the current display position.• void lcd_puts(char *str)• displays at the current display position the string str, located in RAM.• void lcd_putsf(char flash *str)• displays at the current display position the string str, located in FLASH
اهید تکلیداشگا آزاد اسالهی شر هجلسی
• unsigned char lcd_read_byte(unsigned char addr);
• reads a byte from the LCD character generator or display RAM.
• unsigned char lcd_init(unsigned char lcd_columns)
• initializes the LCD module, clears the display and sets the printing character position at row 0 and column 0. The numbers of columns of the LCD must be specified (e.g. 16). No cursor is displayed.
• The function returns 1 if the LCD module is detected and 0 if it is not.
• This is the first function that must be called before using the other high level LCD Functions.
اهید تکلیداشگا آزاد اسالهی شر هجلسی
• void lcd_write_byte(unsigned char addr, unsigned char data);
• writes a byte to the LCD character generator or display RAM.
• void _lcd_ready(void)
• waits until the LCD module is ready to receive data.
• This function must be called prior to writing data to the LCD with the _lcd_write_data function.
• void _lcd_write_data(unsigned char data)
• writes the byte data to the LCD instruction register.
• This function may be used for modifying the LCD configuration
اهید تکلیداشگا آزاد اسالهی شر هجلسی
#include<mega16.h>
#asm
.equ__ lcd_port=0x1b
#endasm
#include<lcd.h>
Void main(){
Lcd_init(16);
Lcd_clear();
Lcd_gotoxy(2,0);
Lcd_putsf(“LCD TEST”);
Lcd_gotoxy(5,1);
Lcd_putsf(“atme16”);
Lcd_gotoxy(14,0);
Lcd_putchar(‘*’);
Lcd_gotoxy(14,0);
_lcd_ready();
_lcd_write_data(0x0f);
While(1);
}
اهید تکلیداشگا آزاد اسالهی شر هجلسی
اهید تکلیداشگا آزاد اسالهی شر هجلسی
اسلب كفح ویذث یىش
كفح ویذ یىی اص لؼز بی دبی ثشای اسد د اعالػبر اػز•ی اكال ػبخشبس اب ث كسر . كفح ویذ ب داسای ااع خشفی ی ثبؿذ•
بسشیؼی اػزبی و .ظس اص بسشیغ آ اػز و داسای ػش ب ػغش بئی ؼشی •
اص ای اسلب ثشای .ویذی صد ی ؿد یه ػغش یه ػش ث شل ی ؿذدی ثشد ث ویذ فـبس داد ؿذ سد ظشاػشفبد ی ؿد
اهید تکلیداشگا آزاد اسالهی شر هجلسی
كفح ویذ بسشیؼی
ویذ فـبس داد ـذ اػز•
ویذ فـبس داد ؿذ اػز•
اهید تکلیداشگا آزاد اسالهی شر هجلسی
#include <mega16.h> #include <delay.h>#define c1 PINB.4#define c2 PINB.5#define c3 PINB.6#define c4 PINB.7flash char row[]={0xfe,0xfd,0xfb,0xf7};flash char data_key[]={'1','2','3','A‘,'4','5','6','B','7','8','9','C‘,'*','0','#','D'};char ac,table;int r;//_________________________________void keypad(){ while (1){for (r=0;r<4;r++){
ac=4;PORTB=row[r];DDRB=0x0f;
if (c1==0) ac=0; if (c2==0) ac=1; if (c3==0) ac=2; if (c4==0) ac=3; if (!(ac==4)){ table=data_key[(r*4)+ac]; while (c1==0){} while (c2==0){} while (c3==0){} while (c4==0){} delay_ms(50); }
}}}
//_________________________________void main(){ PORTB=0xff;DDRB=0x0f;keypad(); while(1){ };}
اهید تکلیداشگا آزاد اسالهی شر هجلسی
سبیشب ؿبسذ ب
سبیشب ػز صب ػؼی اػشفبد ی ؿذ•اص صب ... دس وبسثشدبئی بذ ػبػز دیؼیشب ، صب وبس یه دػشب •
ػؼی اػشفبد ی وی
(counter)ؿبسذ •. ؿبسذ ؿبسؽ وذ اسفبلبر ی ثبؿذ•
ؿبسذ سشیش خد سا اص ثیش دسیبفز ی وذ•
اهید تکلیداشگا آزاد اسالهی شر هجلسی
مبدیش دس سبیشب ؿبسذب•(:Bottom)مذاس ای–
یب 0x00ای مذاس ی ساذ . مذاس حذال سبیش ب ؿبسؽ سا یذ•0x0000ثبؿذ یب مذاسی غیش كفش ثبؿذ
(:MAX)مذاس حذاوظش–ثیشی سا یذ 16دس سبیش 0XFFFFثیشی مذاس 8دس سبیش 0XFFمذاس •
ثبسػیذ ث ای مذاس ثب آذ دبغ ػذیذ سبیش یب ؿبسذ ػشسیض ی وذ
:TOPمذاس •
اهید تکلیداشگا آزاد اسالهی شر هجلسی
ااع دبی ػىشد سبیشب ؿبسذب
:د شب•ؿشع ث (bottom)صب ػغ اص مذاس ای .اص ای د ثشای صب ػؼی دلیك اػشفبد ی ؿد•
ثشػذ ػشیض سخ دذ دشچ سبیش یه ؿد 0XFFFFیب 0XFFث مذاس ؿبسؽ ی وذ سب
:د مبیؼ •دس ای د مذاس حظ ای سبیش ثب مذاس خبكی مبیؼ ی ؿد ثالفبك و ای د مذاس ؼبی •
. ؿذ سبیش ػىغ اؼ ـب ی دذ
:د ذالػی ػشم دبغ ػشیغ•دس ای د سبیش اص مذاس ای ؿشع ث ؿبسؽ ی وذ بی و ث مذاس خبكی سػیذ دبی •
ای خبف اص یىش داسای ضؼیز ؼىع ی شدد
:د ذالػی ػشم دبغ كحیح دبغ•دس ای د سبیش اص مذاس ای ؿشع ث ؿبسؽ ی وذ سب ث مذاس بئی خد ثشػذ•
ػذغ ؿشع ث ؿبسؽ ؼىع ی وذ اص مذاس حذاوظش خد ث مذاس ای
اهید تکلیداشگا آزاد اسالهی شر هجلسی
ثیشی كفش 8سبیش، ؿبسذ
اثشذا سػیؼششبی آ سا ؼشفی ی وی.ؿبسذ اػز /ش چبس د دسای سبیش•
(ؿبسذ/ سػیؼشش وشش سبیش : ) TCCR0سػیؼشش
(CS00 CS01CS02)012ثیز بی (ػذ صیش)ای ثیز ب ثشای ضؼیز سبیش یب ؿبسذ شفبر ؼشذ
اهید تکلیداشگا آزاد اسالهی شر هجلسی
(WGM00WGM01:)36ثیز بی •ثب ای ثیز ب د ػىشد سبیش سؼیی ی ؿد
غبثك ثب سؼبسیف اؼب ؿذ ش وذا اص دبی فش ؿذ سا اشخبة ی وی
(4,5ثیز بی)COM00 COM01ثیز بی •ؿبسذ كفش چ ػ وذ ثبیذ ای ثیز ب /ثشای آى سؼیی ؿد دبی خشػی سبیش
ؿبسذ یض ثؼشی داسد/اجش ای خشػی ث د ػىشد سبیش. سا سظی د غبثك ثب ػذ صیش ای دبی ب سؼشیف ی شدذ
اهید تکلیداشگا آزاد اسالهی شر هجلسی
COM00 COM01ثیز بی
CTCثشای د شب •
FASTPWMثشای د •
PHASE CORRECT PWMثشای •
اهید تکلیداشگا آزاد اسالهی شر هجلسی
TCNT0سػیؼشش •
ؿبسذ كفش سا داسد/ای سػیؼشش مذاس سبیش–
OCR0سػیؼشش•
ؿبخش ی ؿد داسیTOPیبص ث مذاسحذاوظشی و ثب ب CTCدس د –یض مذاسی ثشای مبیؼ یبص داسی PWMدس د –
مبدیش سد یبص ای دب دس ای سػیؼشش لشاس داد ی ؿد•
TIMSKسػیؼشش •
اص ای سػیؼشش اػشفبد ی 01اص ای سػیؼشش ثشای فؼب د لف سبیش كفش اػشفبد ی ؿد د ثیز –شدد
ثب یه ؿذ ای ثیز اش سبیش كفش ػشسیض بیذ لف آ فؼب ی شدد( TOIE0) 0ثیز –ثب یه ؿذ ای ثیز اشمبیؼ دس سبیش كفش اؼب یشد لف اػشا ی ؿد( OCIE0)1ثیز –
اهید تکلیداشگا آزاد اسالهی شر هجلسی
TIFRسػیؼشش •
ای سػیؼشش دشچ بی ػىشد سبیش كفش سا دس خد داسد–اش لف یض فؼب ثبؿذ ػب .یه ی شددTOV0اص ای سػیؼشش ثب ب 0ثب ػشیض سبیش كفش ثیز •
اش ثخای ای ثیز سا دػشی یه وی ثبیذ یه غمی دس ا .ثبصـز ای ثیز كفش ی شدد.ثیؼی
ؿبسذ كفش ای ثیز ثب /ؿبسذ كفش ثب سػیؼشش مذاسسبیش /ثب ؼبی ؿذ سػیؼششمبیؼ سبیش•اش لف فؼب ثبؿذ ث كسر اسبسیه كفش ی ؿد. یه ی ؿدOCF0ب
اهید تکلیداشگا آزاد اسالهی شر هجلسی
سی دبی 1KHZثشب ای ثیؼیذ و ثب سبیش كفش ع شثؼی PA.0 (بشسض اػز8فشاغ وشیؼشب )ایؼبد وذ
اثشذا دس سبة ای ػیب سا حبػج ی وی•T=1/F----------T=1000µS
ثبؿذ OFFدس حبز ON500µSدس حبز 500µS ثبثشای ای ػیب ثبیذ ػذغ ثبیذ سؼیی وی و سبیش ثب چ ػشػشی ثـبسد
ای ػشػز سؼیی ی ؿد CS02:0ثب اػشفبد اص ثیز بی Ftimer = Fosc/N = 8MHz/64 = 0.125MHz
Ttimer = 1/Ftimer = 8µSیىشطبی لز ی یشد 8اص ای س ش ؿبسؽ ای سبیش
دس شح ثؼذی سؼیی ی وی ثشای ایؼبد دبغ بی سد ظش سبیش چمذس ثـبسد ث ػجبسسی چ ػذدی دس لشاسدی TCNT0سػیؼشش
یىشطبی 500سؼذاد ؿبسؽ ثشای سػیذ ث 500/8 ;62.5
اػز ثبیذ ث مذاس256یب FFدغ اص اؼبئی و ػشسیض سبیش دس 62.5–256 ;193.5
ػشسیض وذ 256یب FFلشاس داد سب دس TCNT0دس
اهید تکلیداشگا آزاد اسالهی شر هجلسی
#include<mega16.h>
void main(){
PORTA.0 = 0;
DDRA.0 = 1;
While(1){
TCNT0 = 0xc1;
TCCR0 = 0X03;
While(!(TIFR & 0x01));
TCCR0 =0x00;
PORTA.0=!(PORTA.0);
TIFR |=0X01;}}
اهید تکلیداشگا آزاد اسالهی شر هجلسی
ظب لج سا ثب اػشفبد اص لف ح ویذ
#include<mega16.h>Interrupt [TIM0_OVF] void timer0_ovf_isr(void){TCCR0=0X00;TCNT0=0XC1;PORTA.0=!(PORTA.0);TCCR0=0X03;}Void main(){PORTA.0 = 0;DDRA.0 = 1;TCNT0 = 0xC1;TIMSK = 0x01;TCCR0 = 0x03;#asm(“sei”)While(1);}
اهید تکلیداشگا آزاد اسالهی شر هجلسی
ثیشی 16سبیش ؿبسذ
TCCR1Aسػیؼشش •
TCCR1Bسػیؼشش •
اهید تکلیداشگا آزاد اسالهی شر هجلسی
1سؼیی د ػىشد سبیش
TCCR1AاصWGM10WGM11ثیز بی •TCCR1BاصWGM12WGM13ثیز بی •
ػذ صیش دبی خشف سا اسائ ی وذ. اػشفبد ی ؿذ 1اص ای ثیز ب ثشای سؼیی د ػىشد سبیش
اهید تکلیداشگا آزاد اسالهی شر هجلسی
1سؼیی ضؼیز دبی بی خشػی سبیش
ای سبیش یب ؿبسذ داسای د دبی خشػی اػز و ػجبسسذ اص •OC1AOC1B
ثؼش ث ضؼیز ػىشد سبیش ای دبی ى اػز سغییش ضؼیز ثذذ •یب ذذ
COM1A0COM1A1COM1B0COM1B1ثیز بی •
.ثشای سؼیی ضؼیز ػىشد ای دبی ب مذاس دی ی ؿذ
دسحبز ػىشد شب ای ثیز ب كفش ؼشذ
اهید تکلیداشگا آزاد اسالهی شر هجلسی
CS10 CS11CS12ثیز بی
وظائف فعال کردى تایور و شوارذ 0هاذ تایور •
تقسین پالس ساعت ورودی•
و فعال ب لب باال روذ یا پائیي روذ را دارد
اهید تکلیداشگا آزاد اسالهی شر هجلسی
1رجیسترهای مقذار تایمر
.سا دس خد داسذ 1ای سػیؼششب دسحمیمز حشای سبیش •
ؿبخش ی ؿذ TCNT1ای سػیؼششب ثب ب •
اهید تکلیداشگا آزاد اسالهی شر هجلسی
سػیؼششلف
ػز لف اػشفبد ی وی TIMSKدسایؼب یض اص سػیؼشش •ثشای ااع لف ب اػشفبد ی ؿذ 5سب 2ثیز بی •
TOIE1یب 2ثیز •
لف سخ ی دذ 1ثب فؼب ؿذ ای ثیز ػشسیض ؿذ سبیش لف وی یض ثبیذ فؼب ثبؿذ
اهید تکلیداشگا آزاد اسالهی شر هجلسی
TIFR
1دشچ ػشسیض سبیش •
ػىشد .یه خاذ ؿذ TOV1دس د شب ثب ػشیض ؿذ سبیش ثیز •اػز TOV0وبسی آ بذ
اهید تکلیداشگا آزاد اسالهی شر هجلسی
1اص سبیش . ش یه طبی یىجبس چـه ثضذ PC0شل ث LEDثشب ای ثیؼیذ و ثذ اػشفبد اص لف. اػشفبد ویذ
• Tpulse = 1000000us
• Ftime = Fosc/N = 4/256 = 0.015625Mhz
• Ttime = 1/Ftimer = 64us
• TCNT1 = 65536 – 1000000/64 = 49911 = 0xc2f7
اهید تکلیداشگا آزاد اسالهی شر هجلسی
#include<mega16.h>
Void main(){
PORTC.0 = 0;
DDRC.0 = 1;
TCCR1A = 0X00;
While(1){
TCNT1H = 0xc2;
TCNT1L = 0xf7;
TCCR1B = 0X04;
While(!(TIFR&0X04));
TCCR1B = 0X00;
PORTC.0 = !(PORTC.0);
TIFR |= 0x04;
}
}
اهید تکلیداشگا آزاد اسالهی شر هجلسی
ثؼش ػجسی اص ػ ػؼس سا ؿشد دس 1000ثشب ای ثیؼیذ و طبی اػال بیذ 5ثشای BUZZERاشب ثب ث كذا دسآسد یه
• TCNT1 = 65536 -1000 = 64536 = 0XFC18
اهید تکلیداشگا آزاد اسالهی شر هجلسی
#include<mega16.h>#include<delay.h>Interrupt [TIM1-OVF] void timer1_ovf_isr(void){TCCR1B = 0X00;TCNT1H = 0XFC;TCNT1L = 0X18;PORTC.0 = 1;delay_ms(5000);PORTC.0 = 0;TCCR1B = 0x06;}Void main(){PORTC.0 = 0;DDRC.0 =1;TCNT1H = 00xfc;TCNT1L = 0x18;TIMSK =0x04;TCCR1A = 0x00;TCCR1B = 0x06;#asm(“sei”)While(1);}
اهید تکلیداشگا آزاد اسالهی شر هجلسی
اسسجبط ػشیب
اشمب اعالػبر•اصی–ػشیب–
ای سؽ دس ؼبفز بی . دس اصی داد بدس چذ ؼیش اصی شم ی ؿد•عالی ضی ثش ثبػض ایؼبد ضؼیز خبصی ی ؿد
دس سؽ ػشیب اعالػبر سی یه ػی یب د ػی ث كسر ثیز ث ثیز اسػب ی •ؿد
سؽ ػشیب •
سؽ ػىش–سؽ اػىش–
اهید تکلیداشگا آزاد اسالهی شر هجلسی
اسسجبط ػشیب
:سؽ ػىش ثشسی یه خظ داد ثشسی خظ دیش دبغ ضبی اسػب ی شدد
ثؼضی اص یىش وشششبی . ع وی ثسد اص ای سؽ اػشفبد ی وذAVR اص ای سؽ حبیز ی وذ
:سؽ آػىشدسیبفز ی RXDاسػب ی ؿد سی دیش TXDاعالػبر سی یه خظ
دس ایؼب ثب سؼیی مذاس دبغ، سظی ثی فشػشذ یشذ اؼب ی . ؿدثشای اسسجبط ثب ایضاسبئی بذ .ی یذBaudrateای سظی دبغ سا .یشد
.اصای ع اسسجبط اػشفبد ی وذ... gsmبط
اهید تکلیداشگا آزاد اسالهی شر هجلسی
سػیؼششبی ػشیب
ثشای وبس ثب دسر ػشیب ثبیذ سػؼششبی ا سا سظی د•یذ و دس UDRثبفش اسػب دسیبفز ػشیب سا : UDRسػیؼشش •
.داسای ادسع یىؼبی اػز USARTدشسى
(Aسػیؼشش وشش ضؼیز ػشیب :)UCSRAسػیؼشش
اهید تکلیداشگا آزاد اسالهی شر هجلسی
•MPCM:ثشای اسسجبط ػشیب چذ دشداصذ ای ث وبس ی سد.•U2X :دس حبز ػىش ثشای دثشاثش وشد ػشػز اػشفبد ی ؿد•PE(Parity Error :) ب مذاس . ثب ػد خغبی ساص دس داد یه ی ؿد
خاذ ـذ اػشجبس داسدUDRسب صبی و . دی ثبیذ آ سا كفش وشد•DOR(Data OverRUN:) اش ثبفش دسیبفز دش ؿد دس كسر آذ وبساوشش ػذیذ
. خغبی فق سا ایؼبد ی وذ.اعالػبر ػذیذ اص ثی ی سد•FE(Frame Error:)دس كسر ثشص خغب دس لبت داد دسیبفشی ای ثیز یه ی ؿد•UDRE: ثب یه ؿذ ای ثبیز ـب ی دذ و ثبفشUDR اسػب ،خبی ؿذ ابد اسػب اػز•TXC :دس كسر خبی ؿذ ثبفش اسػب ػذ ػد داد ثشای اسػب یه ی ؿد•RXC : دس كسر دش ؿذ ثبفش دسیبفزUDR ػذ خاذ آ یه ی ؿد
اهید تکلیداشگا آزاد اسالهی شر هجلسی
UCSRBسػیؼشش
•TXB8 : سا ح ی وذ 9ثیشی ای ثیز 9دس كسر اسػب داد ب ث كسر•RXB8: سا دسخد ػبی ی دذ 9ثیشی، ای ثیز 9دس كسر دسیبفز اعالػبر ث كسر•UCSZ2: ثب سشویت ثب ثیز بیUCSZ1,0 دس سػیؼششUCSRC سؼذاد ثیز بی داد دس فشی ػشیب ـخق
ی ؿذ
•TXEN :دبی . ثب یه ؿذ ای ثیز اسػب فؼب ی ؿدPD1 اص حبزI/O ث ػشیب ی سد•RXEN: ثب یه ؿذ ای ثیز دسیبفز فؼب ی ؿد ، دبیPD0 اصحبزI/O ث ػشیب ی سد•UDIRE: اش ای ثیز یه ؿد لف خبی ثدUDR لف وی ثیز .)فؼب ی ؿدUDRE دس
UCSRA ثبیذ فؼب ثبؿذ)•TXCIE:لف وی ثیز .)لف وب ؿذ اسػب فؼب ی ؿدTXC دسUCSRA9ثبیذ فؼب ثبؿذ•RXCIE::لف وی ثیز .)لف وب ؿذ دسیبفز فؼب ی ؿدRXC دسUCSRAثبیذ فؼب ثبؿذ
اهید تکلیداشگا آزاد اسالهی شر هجلسی
UCSRCسػیؼشش
•UCPOL:دس د اسسجبط ػىش اػشفبد ی ؿد.•UCSZ1:0 : دس سشویت ثب ثیزUCSZ2 غبثك ػذ.سؼذاد ثیز بی فشی داد سا ـخق ی وذ
•USBS: سؼذاد ثیز بیSTOP 9یه ثیز یه د ثیز 0)سا ثشای فشػشذ سؼشیف ی وذ
اهید تکلیداشگا آزاد اسالهی شر هجلسی
•UPM1:0 :ثیز ساص اسػب سا سؼیی ی وذ غبثك ػذ
•UMSEL:: اػىش 0ػىش 1.ـخق وذ اسػب اعالػبر ث كسر ػىش یب اػىش اػز•URSEL: ثشای اشخبة دػششػی ث یىی اص سػیؼششبیUCSRC یبUBRRH ثشای دػششػی ث .ث وبس ی سد
UCSCR دس آ ثبیذ یه زاؿز
اهید تکلیداشگا آزاد اسالهی شر هجلسی
UBRRHوUBBRL
اص یه ىب حبفظ اػشفبد ی وذ UCSRC UBBRHىش •
اػز دس ایؼب ثبیذ كفش ؿد UBBRHیب UCSRCثشای سؼیی اػشفبد اص URSELثیز •
سصس ؼشذ 121314ثیز بی •
ثیز ثشای سؼیی شخ اشمب UBRR11:0 12ثیز بی •
اهید تکلیداشگا آزاد اسالهی شر هجلسی
نرخ انتقال
اهید تکلیداشگا آزاد اسالهی شر هجلسی
دستورات
Data =getchar()یه وبساوشش سا دسیبفز ی وذ pollingث سؽ
putchar(char c) putchar(‘a’)
یه وبساوشش اسػب ی ؿد pollingث سؽ Void puts(char *str)
شی ؿذ سا اسػب ی وذnull (\0 )اػز ث وبساوشش ramیه سؿش سا و دس char name*+=“micro”;
puts(name);
void putsf(char flash *str)شی ؿذ سا اسػب ی وذnull (\0 )اػز ث وبساوشش flashیه سؿش سا و دس
Flash char chip*+=“micro avr”;
Putsf(chip);
Char gets(char *str ,char len)یه سؿش وبساوشش سا و ع ـخلی داسد اص سدی ی یشد
وبساوشش سا اص سدی ثخایذ10Char input[10];Gets(input,10);
اهید تکلیداشگا آزاد اسالهی شر هجلسی
printfسبثغ
ی ساذ یه سؿش سا اسػب .یىی اص دشوبسثشدسشی ساثغ اسػب ػشیب اػز و داسای حؼ صیبدی اػز وذ چی ثب دبساششبی وششی ی سا خشػی سا سظی د
Printf(“ سؿش وششی دس حبفظ“, , 1شغییش 2شغییش ,…)
Printf(“avr micro”);
اهید تکلیداشگا آزاد اسالهی شر هجلسی
pollingث سؽ 2400سا ثب ػشػز microثشب ای ثیؼیذ و سؿش (بشسض8وشیؼشب )ث دسر ػشیب اسػب بیذ
• UBRR=Fosc/16*Baud =(8000000/(16*2400))-1
• 207=0xcf
• Baudrate=Fosc/(16*UBRR+1) = 2403.84
• ERORR = ((2043.84-2400)/2400 )*100 = 0.2%
#include<mega16.h>
#include<stdio.h>
Void main(){
UCSRB=0X08;
UCSRC=0X86;
UBRRL=0XCF;
Printf(“micro”);
While(1);
}
اهید تکلیداشگا آزاد اسالهی شر هجلسی