Assemblerda avr dasturlash. Atmel AVR mikrokontrollerlarini montaj tilida amaliy dasturlash. (3-nashr). Yunoncha uslubdagi elektronika


Shunday qilib, umid qilamanki, vijdonli o'quvchi allaqachon dasturchi, eksperimental taxtani yig'gan, shuningdek, kerakli dasturiy ta'minotni o'rnatgan va sozlagan.

Endi, seriyadagi birinchi maqolani yozganimdan so'ng, men biroz hayajonlanganimni va "yangi boshlanuvchilar uchun" iborasini qo'yib, avvalgilar kabi xato qilganimni tushunaman. “Assembly tilini dasturlashda yangi boshlanuvchilar uchun” mavzusini shakllantirish to'g'riroq bo'lar edi, ya'ni o'quvchi mikrokontroller nima ekanligini hech bo'lmaganda yuzaki tushungan deb o'ylayman, aks holda buning uchun bizga ko'p vaqt kerak bo'ladi. ushbu mavzu bilan tanishing. Ular bilan umuman tanish bo'lmaganlar uchun men S. Ryumikning "AVR Microcontrollers" nomli bir qator maqolalarini tavsiya qilishim mumkin, bu mening fikrimcha, Radioamator jurnalida chop etilgan (2005 yil uchun 1-11-son) mutlaqo ajoyibdir. . Ushbu tsiklda ATmega8 asosiy boshqaruvchi sifatida tanlangan, ammo yuqorida aytib o'tilgan kontroller va ATtiny13 ning umumiy funktsional birliklari deyarli bir xil.

ATtiny13 mikrokontrolleri bilan bevosita tanishish uchun men A.V.ning kitobini tavsiya qilaman. Evstifeeva "Mikrokontrollerlar" AVR oilasi mayda. Foydalanuvchi uchun qo'llanma" (M.: "Dodeka-XXI" nashriyot uyi, 2007. - 432 pp.). Unda kichik oila boshqaruvchilarining butun diapazoni uchun tarjima qilingan va tizimlashtirilgan ma'lumotlar jadvallari mavjud va menimcha, ish stoli bo'lishi kerak. mikrokontrolderlarni dasturlash bilan shug'ullanadiganlar uchun o'qing.

Biroq, hikoya davom etar ekan, men yozma dasturlarda ishlatiladigan boshqaruvchining tugunlari va modullari haqida ba'zi ma'lumotlarni beraman.

Ammo bularning barchasi lirik chekinishdir. Keling, to'g'ridan-to'g'ri hikoyaga qaytaylik.

ATtiny13 kontrolleri, kichik o'lchamiga qaramay, juda yaxshi funktsional xususiyatlarga ega. Va kam sonli pinlar ularning har biri bajaradigan funktsiyalar soni bilan qoplanadi. Pimlarning pinout va tavsifi quyida keltirilgan:

Jadval A.V.ning yuqorida qayd etilgan kitobidan olingan. Evstifeeva.

Ko'rib turganingizdek, har bir pin kamida uchta funktsiyani bajarishi mumkin, hatto undan ham ko'p. Avvaliga biz muqobil funktsiyalarni ko'rib chiqmaymiz, faqat asosiy - raqamli kirish/chiqish.

Rasm va jadvaldan ko'rinib turibdiki, barcha pinlar, quvvat pinlari bundan mustasno, PB nomidan keyin seriya raqamiga ega. Bu qanday ma'nono bildiradi? Barcha kontroller pinlari ular bilan ishlash qulayligi uchun 8 qismga birlashtirilgan va har bir 8 pinli guruhga uchta maxsus kiritish/chiqarish registrlari ajratilgan. Umuman olganda, registrlar tushunchasi kontrollerlar bilan ishlashda, ayniqsa assemblerda asosiy hisoblanadi. Keling, yuqorida qayd etilgan uchta registrning har birini batafsil ko'rib chiqaylik. Ularning barchasi kontroller xotirasidagi bir baytli hujayralardir. Har bir bit tekshirgich chiqishidan biriga mos keladi va registrdagi bit raqami chiqish raqamiga to'g'ri keladi (masalan, 0-bit PB0 chiqishi uchun, 1-bit PB1 chiqishi uchun javob beradi va hokazo). Barcha registrlar o'z nomiga ega bo'lib, ular orqali dasturlarni yozishda foydalaniladi. Bu qanday ismlar?

1. DDRB registri har bir kontroller pinining axborot uzatish yo'nalishi uchun javobgardir. Agar ushbu registrning biron bir biti "0" bo'lsa, tegishli chiqish kirish bo'ladi, agar "1" bo'lsa, u holda chiqish. Bundan tashqari, har bir chiqish alohida va dasturning istalgan joyida sozlangan. Bu shuni anglatadiki, har xil sharoitlarda yoki turli vaqtlarda bir xil pin boshqa pinlardan mustaqil ravishda kirish yoki chiqish sifatida sozlanishi mumkin.

2. PINB registri barcha pinlarning joriy holatini o'z ichiga oladi: agar pinga kuchlanish qo'llanilsa, u holda tegishli bitga mantiqiy "1" yoziladi, agar kuchlanish bo'lmasa, mantiqiy "0" yoziladi. Ushbu registr asosan kirish rejimida bo'lgan pin holatini o'qish uchun ishlatiladi.

3. PORTB registri axborot uzatish yo‘nalishiga qarab ikki tomonlama vazifani bajaradi. Agar pin raqamli chiqish sifatida ishlayotgan bo'lsa, u holda PORTB registrining istalgan bitiga "1" yozish mos keladigan pinda kuchlanish paydo bo'lishiga olib keladi va "0" ni yozish kuchlanishning yo'qolishiga olib keladi. Shunday qilib, chiqish rejimida har bir pinning holatini aniqlaydigan ushbu registrdir. Raqamli kiritish rejimida har qanday bitga mantiqiy "1" yozish, o'rnatilgan tortishish qarshiligini mos keladigan pinga ulashga va uni o'chirish uchun "0" yozishga olib keladi. Bu "tortishuvchi qarshilik" qanday narsa va u nima uchun mo'ljallangan? Agar pin raqamli kirish vazifasini bajarsa, u holda kirish buferining qarshiligi ancha yuqori va kirish oqimi juda kichik. Shuning uchun har qanday elektr aralashuvi chiqishning o'z-o'zidan o'zboshimchalik holatiga o'tishiga olib kelishi mumkin. Bunga yo'l qo'ymaslik uchun kirish va quvvat manbai o'rtasida bir necha o'nlab kilo-ohm qarshilikka ega bo'lgan rezistor ulanadi, kirish potentsialini besleme kuchlanishiga (shuning uchun nomi) "tortadi". Ushbu qarshilik orqali o'tadigan oqim zanjirning qolgan qismiga xalaqit bermaslik uchun etarlicha kichik, lekin pinni tasodifiy almashtirishni oldini olish uchun etarlicha katta. Tugmalar bilan ishlashda biz tez-tez tortuvchi rezistorlardan foydalanamiz, chunki ular bosilmaganda ular bog'langan pinlar asosan havoda "osilib qoladi" va shovqinlarga duchor bo'ladi.

Shuni ta'kidlash kerakki, quvvat yoqilganda barcha registrlar 0 ga qayta o'rnatiladi va har bir pin tortishish qarshiligisiz raqamli kirish vazifasini bajaradi.

Endi biz hech bo'lmaganda kontroller kiritishlari bilan ishlash uchun NIMA kerakligi haqida bir oz tasavvurga egamiz, ular bilan QANDAY ishlashni aniqlash vaqti keldi.

Keling, birinchi yozamiz ish dasturi assemblerda. Birinchidan, men yangi loyiha yaratish uchun to'liq algoritmni beraman, lekin kelajakda men faqat dasturning matniga e'tibor qaratib, uni o'tkazib yuboraman.

1. Asm jildiga o'ting va unda yangi papka yarating. Uni biz uchun qulay nomga o'zgartiring. Aniqroq qilib aytadigan bo'lsak, men ularga qadam raqamimiz bilan murojaat qilaman. Bunday holda, "2-qadam".

2. build.bat faylini sichqonchaning o'ng tugmasi bilan bosing va yangi yaratilgan papkaga ishora qilib, manba faylga yo'lni o'zgartiring (2-qadam). Shundan so'ng mening tarkibim quyidagicha ko'rinadi:

"F:\Prog\AVR\asm\avrasm32 -fI %F:\Prog\AVR\asm\step2\main.asm
pauza"

Arxivni qaerga ochganingizga qarab u siz uchun farq qilishi mumkin.

3. Asmedit jildiga o'ting va ASM_Ed.exe dasturini ishga tushiring

4. Ochilgan oynada dastur matnini yozing. Men bu masalaga batafsil to'xtalib o'taman, chunki bu bizning bugungi darsimizda ham, keyingi darslarda ham asosiysi.

Assembler dasturining matni nima? U ma'lum qoidalarga muvofiq yozilgan bir nechta elementlarni o'z ichiga olishi mumkin:

Ko'rsatmalar sintaksisiga qarab operandli yoki operandsiz yig'ish ko'rsatmalari. Buyruq nomi va birinchi operand o'rtasida bo'sh joy, yorliq yoki ikkalasining istalgan soni bo'lishi kerak. Operandlar vergul bilan ajratiladi, undan oldin yoki keyin ixtiyoriy sonli bo'shliqlar yoki yorliqlar ham qo'yilishi mumkin;

Ko'rsatmalar, ularning har biri "." bilan boshlanadi;

Yorliqlar, bu dasturning foydalanuvchi tomonidan o'zboshimchalik bilan nomlanishi kerak bo'lishi mumkin bo'lgan joylar. Har bir yorliq “:” belgisi bilan tugaydi;

";" bilan boshlanadigan sharhlar. Izoh boshidan satr oxirigacha bo'lgan barcha matn hex faylni yaratishda e'tiborga olinmaydi va butunlay o'zboshimchalik bilan bo'lishi mumkin;

Dasturning tuzilishi va o'qilishi yaxshiroq bo'lishi uchun bo'sh qatorlar.

Har bir satrda bittadan ortiq buyruq bo'lishi mumkin emas. Shu bilan birga, buyruq va izohdan keyingi qatorda bir vaqtning o'zida yorliqning mavjudligiga ruxsat beriladi.

Ushbu qoidalardan foydalanib, biz SB1 tugmasi bosib turganda LED2 ni yoqadigan dastur yozamiz va tugma qo'yib yuborilsa, uni o'chirib qo'yamiz. Dastur matni quyida keltirilgan:

"F:\Prog\AVR\asm\Appnotes\tn13def.inc" ni o'z ichiga oladi.
sbi DDRB, 4 ;RV4 - chiqish (LED2)
sbi PORTB, 2; PB2 dagi tortish rezistorini yoqing (SB1 tugmasi)
sbic PINB, 2 ;Agar PB2=0 boʻlsa (tugma bosilsa), keyingisini oʻtkazib yuboring. chiziq
sbi PORTB, 4; PB4 ni 1da o‘rnatish (LEDni o‘chirish)
sbis PINB, 2 ;Agar PB2=1 (tugma qo'yib yuborilgan) bo'lsa, keyingisini o'tkazib yuboring. chiziq
cbi PORTB, 4 ;PB4 ni 0 ga sozlash (LED yoqilgan)

Keling, buni batafsil ko'rib chiqaylik. Birinchi qatorda yuqoridagi qoidalarga muvofiq boshida nuqta bilan yozilgan "include" direktivasi mavjud. Uning maqsadi dastur matniga uning orqasida ko'rsatilgan faylni kiritishdir. Birinchi bosqichda aytganimdek, bizga "tn13def.inc" fayli kerak bo'ladi. Ushbu qatorda siz kompyuteringizdagi Appnotes papkasining joylashuviga yo'lni o'zgartirishingiz kerak bo'ladi. Nima uchun biz ushbu faylni kiritishimiz kerak? Qiziquvchan o'quvchi uni ko'rib chiqishi va mazmunini o'qishi mumkin, lekin avvaliga u buni juda kam tushunadi. Hozircha men aytamanki, unda assembler sukut bo'yicha bilmagan registrlarning nomlari, ularning nazoratchidagi jismoniy manzillari bilan yozishmalar mavjud.

Quyidagi qatorlar assembler buyruqlaridir. Diqqatli o'quvchi jami to'rt xil buyruq ishlatilganligini sezadi. Keling, har birining maqsadini ko'rib chiqaylik.

sbi ko'rsatmasi ikkita operandga ega: birinchisi - registr nomi, ikkinchisi - bit raqami. Uning bajarilishi natijasida ko'rsatilgan registrdagi ko'rsatilgan bit "1" ga o'rnatiladi.

cbi buyrug'i sintaksis bo'yicha yuqoridagiga o'xshash va to'liq qarama-qarshi funktsiyani bajaradi - ko'rsatilgan registrdagi ko'rsatilgan bitni "0" ga qaytaradi.

Sbis buyrug'i ham yuqoridagiga sintaksisga o'xshaydi. Biroq, ulardan farqli o'laroq, u registrlar bilan hech qanday amallarni bajarmaydi, faqat ko'rsatilgan registrdagi ko'rsatilgan bitning holatini tekshiradi va agar u "1" ga teng bo'lsa, u buyruqdan keyingi qatorni o'tkazib yuboradi. Aks holda, undan keyingi qator ham, undan keyingi barcha boshqa qatorlar ham bajariladi.

sbis buyrug'i sbis buyrug'iga qarama-qarshidir. Belgilangan registr biti "0" bo'lsa, u keyingi qatorni o'tkazib yuboradi.

Endi yuqorida aytilganlarning barchasini umumlashtirib, dasturning algoritmini tushunishga harakat qilaylik. Boshlash uchun men buni tom ma'noda satr satr qilaman.

1 qator. Include direktivasi registr ta'riflarini o'z ichiga olgan tn13def.inc faylini o'z ichiga oladi.

2-qator. sbi buyrug'i DDRB registrining 4-bitida "1" ni o'rnatadi va shu bilan PB4 pinini chiqishga o'tkazadi. Agar siz taxta diagrammasiga qarasangiz (oldingi bosqichning 1-rasm), LED2 bu pinga ulanganligini ko'rishingiz mumkin. Buyruq va belgidan keyin ";" qatorda bajarilgan harakatlarning ma'nosini qisqacha tushuntiruvchi izoh yozildi.

3 qator. Xuddi shu sbi buyrug'i PORTB registrining 2-bitida "1" ni o'rnatadi, ichki tortish rezistorini SB1 tugmasi ulangan PB2 piniga ulaydi. Biz DDRB registrining 2-bit holatini o'zgartirmaganimiz sababli, bu pin kirish bo'lib qoladi, bu bizga aslida kerak bo'lgan narsadir.

4 qator. Sbic buyrug'i PINB registridan foydalangan holda PB2 kirishida mantiqiy "0" mavjudligini tekshiradi. Agar siz diagrammaga diqqat bilan qarasangiz, tugmalar bosilganda, tegishli terminalni umumiy sim bilan yopishini ko'rishingiz mumkin. Bu standart texnikadir, chunki tugma bo'shatilganda, tortishish qarshiligi tufayli chiqishda mantiqiy "1" mavjud va tugma bosilganda, mantiqiy "0" ulanishi tufayli paydo bo'ladi. umumiy simga chiqish. Shunday qilib, agar PB2 pinida mantiqiy "0" bo'lsa, ya'ni tugma bosilsa, keyingi qatorni o'tkazib yuboramiz va tugma qo'yib yuborilsa, biz uni bajaramiz.

5 qator. Unda sbi buyrug'i PORTB registrining 4-bitida mantiqiy "1" ni o'rnatadi va shu bilan LED2 ni o'chiradi. Aqlli o'quvchi, agar biz chiqishga kuchlanish qo'llasak, LED nima uchun o'chayotganiga hayron bo'lishi mumkin. Javob dizaynda yotadi. LED anod bilan quvvat simiga, katod esa kontroller chiqishiga ulanadi. Shuning uchun, agar siz chiqishga kuchlanish qo'llasangiz, anod va katodning potentsiallari teng bo'ladi va LED o'chadi. Agar chiqishga mantiqiy "0" chiqsa, u holda LEDga kuchlanish qo'llaniladi va u yonadi. Shunday qilib, 4 va 5-chi qatorlar juftligi tugma bo'shatilganda LED2 ni o'chiradi.

6 qator. Ma'nosi 4-ga qarama-qarshidir. Sbis buyrug'i PB2 kirishida mantiqiy "1" mavjudligini tekshiradi, ya'ni tugma bo'shatilganligini tekshiradi. Agar tugma qo'yib yuborilsa, keyingi qator o'tkazib yuboriladi va keyingi qator keyingisiga o'tadi. Ammo 7-qator oxirgi bo'lgani uchun 2-qatorga o'tish mavjud. Agar tugma bosilsa, u holda 7-qator bajariladi.

7 qator. 5-ga qarama-qarshi. Cbi buyrug'i PORTB registrining 4-bitini "0" ga tiklaydi va shu bilan LED2ni yoqadi. Shunday qilib, SB1 tugmasi bosilganda, 6 va 7-chi qatorlar juftligi LED2 ni yoqadi.

Ko'rib turganingizdek, biz juda murakkab narsa qilmadik. Faqat 3 ta registr va 4 ta ko'rsatma bilimidan foydalanib, biz birinchi dasturimizni yozdik. Keyin u bilan nima qilish kerak? Agar siz hali esdan chiqmagan bo'lsangiz, biz dastur yaratish algoritmini yozishni davom ettiramiz.

5. Muharrir oynasida dastur matnini yozib, menyuning “Fayl” bandini tanlang va ochilgan ro‘yxatda “Boshqa saqlash...” tugmasini bosing. Faylni saqlash oynasida biz yaratgan 2-qadam papkasini tanlang va "asosiy" fayl nomini belgilang, chunki bu biz "build.bat" faylida ko'rsatilgan nomdir.

Saqlagandan so'ng, dastur oynasi quyidagicha ko'rinishi kerak:

6. Hex fayl yarating. Buning uchun asboblar panelidagi "II" tugmasini bosing. Quyidagi oyna paydo bo'lishi kerak:

U yig'ish xatosiz yakunlanganligi va "main.hex" proshivka fayli 6 so'z, ya'ni 12 bayt hajmda yaratilganligi haqida bizga xabar beradi. Shuni ta'kidlayman shunga o'xshash dastur C tilida ovoz balandligi kamida 5 barobar bo'ladi.

7. Step2 papkasiga o'tib, biz unga yangi yaratilgan main.hex fayli ko'rinishidagi qo'shimchani topamiz, endi uni har qanday dasturchi yordamida tekshirgichga tikish mumkin, bu natijalarni ko'rish uchun bajarilishi kerak. biz yozgan dastur. Tekshirish moslamasini miltillagandan so'ng, agar sxema to'g'ri yig'ilgan bo'lsa, hamma narsa biz ishlab chiqqan algoritmga muvofiq ishlashi kerak: tugmalar qo'yib yuborilganda, LED2 o'chirilgan bo'lishi kerak va SB1 tugmasi ushlab turilganda u yoqilgan bo'lishi kerak.

Keyingi bosqichdan oldin men sizga quyidagi vazifalarni bajarishni taklif qilaman:

1. SB2 tugmachasini teskari algoritm bilan bosish jarayonini dasturga qo'shing: SB2 tugmasi bo'shatilganda LED1 yonishi kerak, bosilganda esa o'chirilgan bo'lishi kerak.

2. Ikkala tugma yordamida LED2 ni boshqarish dasturini yozing. SB1 tugmasi bosilganda, LED yonishi va SB2 tugmasi bosilmaguncha yonib turishi kerak, bu esa SB1ning keyingi bosigacha uni o'chiradi.

Kompilyator tarjima qiladi manba kodlari assembler tilidan obyekt kodiga qadar. Olingan obyekt kodidan ATMEL simulyatorida foydalanish mumkin AVR Studio, yoki ATMEL AVR In-Circuit Emulator-da. Kompilyator, shuningdek, to'g'ridan-to'g'ri AVR mikrokontrollerlariga dasturlashtirilishi mumkin bo'lgan kod ishlab chiqaradi.

Kompilyator ulanishni talab qilmaydigan kodni yaratadi.

Kompilyator ostida ishlaydi Microsoft Windows 3.11, Microsoft Windows95 va Microsoft Windows NT. Bundan tashqari, MS-DOS uchun konsol versiyasi mavjud.

Oilaviy ko'rsatmalar to'plami AVR mikrokontrollerlari Ushbu hujjatda qisqacha tavsiflangan, batafsilroq ko'rsatmalar uchun maxsus mikrokontrolleringiz uchun to'liq ko'rsatmalar va hujjatlarga qarang.

Manba kodlari

Kompilyator ko'rsatmalar, teglar va direktivalarni o'z ichiga olgan manba fayllari bilan ishlaydi. Ko'rsatmalar va ko'rsatmalar odatda bir yoki bir nechta operandlarga ega.

Kod qatori 120 belgidan oshmasligi kerak.

Har qanday satr yorliq bilan boshlanishi mumkin, bu ikki nuqta bilan tugaydigan belgilar qatori. Yorliqlar o'tish paytida boshqaruv o'tkaziladigan joyni ko'rsatish, shuningdek o'zgaruvchilar nomlarini ko'rsatish uchun ishlatiladi.

Kirish satri to'rtta shakldan birini olishi mumkin:

[label:] direktiv [operandlar] [Izoh][label:] ko'rsatma [operandlar] [Izoh]IzohBo'sh qator

Sharh quyidagi shaklga ega:

; [Matn]

Kvadrat qavs ichidagi pozitsiyalar ixtiyoriy. Nuqtali verguldan (;) keyin va satr oxirigacha matn kompilyator tomonidan e'tiborga olinmaydi. Yorliqlar, ko'rsatmalar va ko'rsatmalar quyida batafsilroq tavsiflanadi.

Misollar:

teg: .EQU var1=100 ; var1 ni 100 ga o'rnatadi (Bu direktivdir) .EQU var2=200 ; Var2 ni 200 ga o'rnatadi

test: rjmp testi; Cheksiz halqa (Bu ko'rsatma); Faqat bitta izoh bilan qator

; Izoh bilan boshqa qator

Kompilyator yorliqlar, direktivalar, sharhlar yoki ko'rsatmalar qatorning ma'lum bir ustunida bo'lishini talab qilmaydi.

avr protsessor ko'rsatmalari

Quyida AVR protsessorlari uchun buyruqlar to'plami keltirilgan; ularning batafsil tavsifini AVR ma'lumotlar kitobida topish mumkin.

Arifmetika va mantiqiy ko'rsatmalar

Mnemonika

Operandlar

Tavsif

Operatsiya

Bayroqlar

Velosipedlar

Rd,Rr

Tashishsiz yig'ish

Rd,Rr

Tashish bilan yakunlash

Rd = Rd + Rr + C

Rd,Rr

Tashishsiz ayirish

Rd,K8

Konstantani ayirish

Rd,Rr

Tashish bilan ayirish

Rd = Rd - Rr - C

Rd,K8

tashish bilan doimiyni ayirish

Rd = Rd - K8 - C

Rd,Rr

Mantiqiy VA

Rd,K8

Mantiqiy VA doimiy bilan

Rd,Rr

Mantiqiy OR

Rd,K8

Mantiqiy OR doimiy bilan

Rd,Rr

Mantiqiy eksklyuziv OR

Bit inversiyasi

Belgini o'zgartirish (Qo'shimcha kod)

Rd,K8

Bit(lar)ni registrda o'rnating

Rd,K8

Registrdagi bit(lar)ni tozalash

Rd = Rd ($FF - K8)

Registr qiymatini oshirish

Registr qiymatini kamaytirish

Nol yoki negativlikni tekshirish

Registrni tozalash

Registrni o'rnating

Rdl,K6

Doimiy va so'z qo'shing

Rdh:Rdl = Rdh:Rdl + K6

Rdl,K6

So'zdan doimiyni ayirish

Rdh:Rdl = Rdh:Rdl - K 6

Rd,Rr

Imzosiz raqamlarni ko'paytirish

R1:R0 = Rd * Rr

Rd,Rr

Imzolangan raqamlarni ko'paytirish

R1:R0 = Rd * Rr

Rd,Rr

Imzolangan raqamni imzosiz raqam bilan ko'paytirish

R1:R0 = Rd * Rr

Rd,Rr

Belgilanmagan kasrlarni ko'paytirish

R1:R0 = (Rd * Rr)<< 1

Rd,Rr

Belgilangan kasrlarni ko'paytirish

R1:R0 = (Rd *Rr)<< 1

Rd,Rr

Belgilangan kasrni belgisiz raqam bilan ko'paytirish

R1:R0 = (Rd * Rr)<< 1

Filial ko'rsatmalari

Mnemonika

Operandlar

Tavsif

Operatsiya

Bayroqlar

Velosipedlar

Nisbiy o'tish

Bilvosita o'tish ( Z)

kengaytirilgan bilvosita o'tish ( Z)

STACK = PC+1, PC(15:0) = Z, PC(21:16) = EIND

Nisbiy subprogramma chaqiruvi

STACK = PC+1, PC = PC + k + 1

Bilvosita qo'ng'iroq ( Z)

STACK = PC+1, PC = Z

Kengaytirilgan bilvosita qo'ng'iroq ( Z)

STACK = PC+1, PC(15:0) = Z, PC(21:16) =EIND

Subprogrammaga qo'ng'iroq qilish

STACK = PC+2, PC = k

Pastki dasturdan qaytish

Interruptdan qaytish

Rd,Rr

Taqqoslang, agar teng bo'lsa, o'tkazib yuboring

agar (Rd ==Rr) PC = PC 2 yoki 3

Rd,Rr

Taqqoslash

Rd,Rr

Transfer bilan solishtiring

Rd,K8

Doimiy bilan solishtiring

Rr,b

Registrdagi bit tozalangan bo'lsa, o'tkazib yuboring

if(Rr(b)==0) PC = PC + 2 yoki 3

Rr,b

Registrdagi bit o'rnatilgan bo'lsa, o'tkazib yuboring

if(Rr(b)==1) PC = PC + 2 yoki 3

P,b

Portdagi bit tozalangan bo'lsa, o'tkazib yuboring

agar(I/O(P,b)==0) PC = PC + 2 yoki 3

P,b

Port bit o'rnatilgan bo'lsa, o'tkazib yuboring

agar(I/O(P,b)==1) PC = PC + 2 yoki 3

s,k

SREG-dagi bayroq o'chirilsa, o'tish

if(SREG(s)==0) PC = PC + k + 1

s,k

SREG-da bayroq o'rnatilgan bo'lsa, o'ting

if(SREG(s)==1) PC = PC + k + 1

Agar teng bo'lsa, boring

agar(Z==1) PC = PC + k + 1

Teng bo'lmasa, o'tkazib yuboring

agar(Z==0) PC = PC + k + 1

Agar uzatish o'rnatilgan bo'lsa, o'ting

agar(C==1) PC = PC + k + 1

Agar transfer o'chirilgan bo'lsa, o'ting

agar(C==0) PC = PC + k + 1

Teng yoki kattaroq bo'lsa sakrash

agar(C==0) PC = PC + k + 1

Agar kamroq bo'lsa, o'tkazib yuboring

agar(C==1) PC = PC + k + 1

Minus bo'lsa o'ting

agar(N==1) PC = PC + k + 1

Agar ortiqcha bo'lsa, o'ting

agar(N==0) PC = PC + k + 1

Agar kattaroq yoki teng bo'lsa, o'tish (imzolangan)

agar(S==0) PC = PC + k + 1

Agar kamroq bo'lsa, o'tish (imzolangan)

agar(S==1) PC = PC + k + 1

Ichki tashish bayrog'i o'rnatilgan bo'lsa, sakrab o'ting

agar(H==1) PC = PC + k + 1

Ichki tashish bayrog'i tozalangan bo'lsa, sakrab o'ting

agar (H==0) PC = PC + k + 1

T bayrog'i o'rnatilgan bo'lsa, o'tish

agar(T==1) PC = PC + k + 1

T bayrog'i tozalangan bo'lsa, sakrab o'ting

agar(T==0) PC = PC + k + 1

Agar to'ldirish bayrog'i o'rnatilgan bo'lsa, o'tish

agar(V==1) PC = PC + k + 1

Agar ortiqcha bayroq tozalansa, sakrab o'ting

agar(V==0) PC = PC + k + 1

Agar uzilishlar yoqilgan bo'lsa, o'ting

agar(I==1) PC = PC + k + 1

Agar uzilishlar o'chirilgan bo'lsa, o'ting

agar(I==0) PC = PC + k + 1

* Ma'lumotlarga kirish operatsiyalari uchun tsikllar soni ichki ma'lumotlar xotirasiga kirishda ko'rsatiladi va tashqi RAM bilan ishlashda to'g'ri emas. CALL, ICALL, EICALL, RCALL, RET va RETI ko'rsatmalari uchun 16 bitdan (dastur xotirasi 128 KB) kompyuterga ega bo'lgan kontrollerlarda har bir kutish uchun uchta sikl va ikkita tsikl qo'shilishi kerak. Dastur xotirasi 128 KB dan ortiq bo'lgan qurilmalar uchun har bir kutish uchun besh tsikl va uchta tsikl qo'shing.

Ma'lumotlarni uzatish bo'yicha ko'rsatmalar

Mnemonika

Operandlar

Tavsif

Operatsiya

Bayroqlar

Velosipedlar

Rd,Rr

Reestrdan nusxa oling

Rd,Rr

Bir nechta registrlardan nusxa oling

Rd+1:Rd = Rr+1:Rr, r,d juft

Rd,K8

Doimiy yuk

Rd,k

Rd,X

Rd,X+

Rd = (X), X=X+1

Rd,-X

X=X-1, Rd = (X)

Rd,Y

Rd,Y+

Rd = (Y), Y=Y+1

Rd,-Y

Y=Y-1, Rd = (Y)

Rd,Y+q

Rd,Z

Rd,Z+

Rd = (Z), Z=Z+1

Rd,-Z

Z=Z-1, Rd = (Z)

Rd,Z+q

To'g'ridan-to'g'ri saqlash

X,Rr

Bilvosita saqlash

X+,Rr

(X) = Rr, X=X+1

-X,Rr

Y,Rr

Bilvosita saqlash

Y+,Rr

Keyingi o'sish bilan bilvosita tejash

(Y) = Rr, Y=Y+1

-Y,Rr

Oldindan kamaytirish bilan bilvosita saqlash

Y=Y-1, (Y) = Rr

Y+q,Rr

Z,Rr

Bilvosita saqlash

Z+,Rr

Keyingi o'sish bilan bilvosita tejash

(Z) = Rr, Z=Z+1

-Z,Rr

Oldindan kamaytirish bilan bilvosita saqlash

Z=Z-1, (Z) = Rr

Z+q,Rr

O'zgartirish bilan bilvosita saqlash

R0 = ( Z)

Rd,Z

Rd = ( Z)

Rd,Z+

Rd = ( Z), Z=Z+1

R0 = (RAMPZ: Z)

Rd,Z

Rd = (RAMPZ: Z)

Rd,Z+

Rd = (RAMPZ: Z), Z = Z+1

Dastur xotirasiga saqlash

(Z) = R1:R0

Dastur xotirasida kengaytirilgan saqlash

(RAMPZ: Z) = R1:R0

Rd,P

Portni o'qish

P,Rr

Portga yozing

Registrni stekga surish

Stackdan registrni chiqarish

* Ma'lumotlarga kirish operatsiyalari uchun tsikllar soni ichki ma'lumotlar xotirasiga kirishda ko'rsatiladi va tashqi RAM bilan ishlashda to'g'ri emas. LD, ST, LDD, STD, LDS, STS, PUSH va POP ko'rsatmalari uchun har bir kutish uchun bitta sikl va bitta tsikl qo'shishingiz kerak.

Bitlar bilan ishlash bo'yicha ko'rsatmalar

Mnemonika

Operandlar

Tavsif

Operatsiya

Bayroqlar

Velosipedlar

Chapga mantiqiy siljish

Rd(n+1)=Rd(n), Rd(0)=0, C=Rd(7)

Mantiqiy o'ngga siljish

Rd(n)=Rd(n+1), Rd(7)=0, C=Rd(0)

C orqali chapga buriling

Rd(0)=C, Rd(n+1)=Rd(n), C=Rd(7)

C orqali o'ngga aylantiring

Rd(7)=C, Rd(n)=Rd(n+1), C=Rd(0)

Arifmetik o'ngga siljish

Rd(n)=Rd(n+1), n=0,...,6

Noutbuklarni qayta tartibga solish

Rd(3..0) = Rd(7..4), Rd(7..4) = Rd(3..0)

Bayroqni o'rnatish

Bayroqni tozalash

P,b

Portga bitni o'rnating

P,b

Portdagi bitni tozalash

Rr,b

Rd,b

Bitni T dan registrga yuklang

Yuk tashish bayrog'ini o'rnating

Tashish bayrog'ini tozalang

Salbiy raqam belgisini o'rnating

Salbiy raqam belgisini tozalang

Nolinchi bayroqni o'rnating

Nolinchi bayroqni tozalang

Interrupt bayrog'ini o'rnating

Interrupt belgisini o'chirish

Imzolangan raqam bayrog'ini o'rnating

Imzolangan raqam bayrog'ini tozalang

To'ldirish bayrog'ini o'rnating

To'ldiruvchi bayroqni tozalang

T bayrog'ini o'rnating

T bayrog'ini tozalang

Ichki tashish bayrog'ini o'rnating

Ichki tashish bayrog'ini tozalang

Operatsiya yo'q

Kutish (energiya sarfini kamaytirish)

Ko'rsatmalar tavsifiga qarang

Watchdog taymerini tiklash

Ko'rsatmalar tavsifiga qarang

Assembler katta-kichik harflarni sezmaydi.

Operandlar shu turdagi bo'lishi mumkin.

Hammaga xayrli kech! Men "assembler" deb nomlangan shinam dunyodan translyatsiya qilaman. Mavzu AVR mikrokontrollerlariga tegishli ekanligini darhol aniqlab beraman - va bu post assemblerdan boshqa har qanday vazifa uchun foydalanmoqchi bo'lganlar uchun foydali bo'ladimi yoki yo'qligini hali bilmayman. Gap shundaki, bir necha kun oldin men assemblerni noldan o'rganishni boshladim - bitta qurilma yasashim kerak - va men unda hamma narsani o'zim qilishga qaror qildim. Shunday qilib, bir kuni men buni tushunib etdim Assemblerni o'rganish mutlaqo foydasiz! Assambleya tilini faqat tushunish mumkin! Ya'ni, assembler tilida dasturlashmoqchi bo'lganlarning barchasiga mikrokontroller JISMONIY qanday ishlashini batafsil o'rganishingizni va keyin buyruqlarning nozik tomonlarini o'rganishingizni qat'iy tavsiya qilaman.
Shunday qilib, men sizga boshidan aytib beradigan kichik maqolalar seriyasini boshlayman qanday aniq Assembler tilini dasturlashda ba'zi narsalarni tushundim - menimcha, ASM nima ekanligini umuman tushunmaydiganlar uchun men bu masalada juda yaxshi bo'lganlarning tilidan shunday "tarjimon" bo'laman.

Darhol aytamanki, men DIHALT tashabbusi bilan bu mavzuga ozmi-koʻpmi kirganman - shuning uchun bu maqolalar super-duper assembly-mikrokontroller tilidan ko'pchilik uchun tushunarli tilga tarjimaning bir turi bo'ladi. Umid qilamanki, o'yin davom etar ekan, gurular meni tuzatadilar va agar men birdan noto'g'ri tushuntirsam, ular meni tuzatadilar.
Shunday qilib, bir necha kun oldin assembler haqida qilgan birinchi xulosalar meni hayratda qoldirdi - va men soat 23:00 dan ertalabki 5 gacha DI HALT maqolalarini o'qib o'tirdim - shundan so'ng mamnun va xursand bo'lib uxladim. mikrokontrollerlar uchun assembler tilini dasturlash.
Buni qanday qilib soddaroq tushuntirish mumkin? Menimcha, biz mohiyatdan boshlashimiz kerak.
***
Dastlab, biz texnik tafsilotlarga kirmaymiz (ular haqida keyingi maqolada gaplashamiz) - shunchaki 3 ta belgi borligini tasavvur qiling:
1. Mikrokontroller - Bu rus tiliga kelgan ingliz Stiv. U ingliz tilini mukammal biladi, lekin rus tilini umuman tushunmaydi - bitta so'z ham yo'q. Faqat ingliz tili. U bahsda mag‘lub bo‘ldi va rus undan so‘ragan ishni so‘roqsiz bajarishga va’da berdi.
2. Yig'uvchi - Bu onasi ingliz va otasi rus bo'lgan tarjimon Vasya. U ingliz va rus tillarini mukammal biladi.
3. Biz - Bu rus, unga ingliz kelgan. Xo'sh, ya'ni biz bizmiz =) Shu bilan birga, biz rus tilini mukammal bilamiz va (!!!) ozgina ingliz tilini - ozgina, lug'at bilan.
***
Bu vaziyatni tasavvur qiling - bir ingliz sizning xonangizdagi stulda o'tiradi. Va siz kompyuteringizda o'tirib, ushbu xabarni o'qiyapsiz, birdan derazangiz to'satdan ochildi! Bu omadsizlik! Shamol esmoqda, parda yelkanga aylandi... Yopsa yaxshi bo‘lardi! Ammo stuldan turish, oyoqlaringizni tizim blokidan olish, ularni shippaklarga solib qo'yish, kofe (pivo) ni qo'yish va elementlarga qarshi kurashish juda dangasa. Va keyin siz to'satdan xonada garovini yo'qotgan ingliz borligini va uni ta'qib qilish vaqti kelganini tushunasiz! Va siz unga shunday shirinlik bilan aytasiz: “Do'stim! Iltimos, derazani yoping, keyin yana stulga o'tiring! va u o'tiradi, sizga hayron bo'lib qaraydi va hech narsa qilmaydi! Siz, albatta, karam sho'rvasini urishingiz mumkin - lekin keyin u sizni hali ham tushunmaydi! Keyin siz tarjimon do'stingiz Vasiliyni chaqirasiz - u kelib, inglizning yoniga stulga o'tiradi. Va siz aytasiz - Tarjima: "Stiv, borib derazani yoping va keyin stulga o'tir!" Tarjimon ingliz tiliga tarjima qiladi - ingliz tushunadi va borib derazani yopadi, keyin kelib stulga o'tiradi.
Shu nuqtada, siz ushbu "Biz-Assembler-Controller" zanjirida assemblerning rolini tushunishingiz kerak.
Ya'ni, assembler nima ekanligini hamma qanday tushunadi? Keyin o'qing.
***

Shunday qilib, keling, bu vaziyatni tasavvur qilaylik. Siz Vasyaga aytasiz: "Quloq soling, qisqasi, men uyda kalkulyatorni unutib qo'ydim, 56983 ni 2 ga bo'ling va Stivga mushtlaringiz bilan juda ko'p push-up qilishni ayting" va Vasya kalkulyatorda hisoblaydi va Stivga ingliz tilida "Mushtlaringiz bilan 28491 marta push-up qiling" deb ataladi "DIREKTIVA"- boshqacha qilib aytganda, direktiv Vasya uchun vazifa bo'lib, uning natijasi Stivning harakatidir.

Yana bir holat bor - siz Vasyaga "Stivga 28491 marta push-up qilishni ayting" deysiz va Vasya so'zlaringizni ingliz tiliga tarjima qiladi. U deyiladi OPERATOR

Hammasi oddiy - direktiv bor va operator mavjud. Operator sizning to'g'ridan-to'g'ri Stivga nima qilish kerakligi haqida ko'rsatma beradi - bu erda Vasya sizning so'rovingizni faqat ingliz tiliga tarjima qiladi. Ko'rsatma Vasyaning o'zi uchun vazifadir - va Vasya avval siz unga aytganingizni qiladi, keyin esa natijaga qarab u Stivga nimadir aytadi.

Endi biz inglizni muntazam ravishda qiynoqqa solamiz! Lekin birinchi navbatda tarjimonimiz Vasyani yaxshiroq bilishimiz kerak. Siz quyidagilarni bilishingiz kerak - Vasya har doim sizga so'zsiz bo'ysunadi - unga aytilgan narsani qiladi. Vasya kalkulyatorida o'nlik kasrlar yo'q - agar siz misolni push-up bilan ko'rib chiqsangiz, u holda 56983 \ 2 = 28491,5 - lekin o'nli nuqta kesilgandan keyin Vasya hamma narsa - va u faqat butun sonni ko'radi - va bu muhim emas. 28491.000001 bo'ladimi yoki 28491.9999999 bo'ladimi - Vasya uchun bu bitta katta ish har ikkala holatda ham 28491 bo'ladi. Hech narsa yumaloq emas. Vasya haqida muhimroq ma'lumot. Vasya shafqatsiz - u Stivning yigirma sakkiz ming marta push-up qilayotganiga ahamiyat bermaydi. Ular unga Vasya tarjima qilganini aytishdi. Va u nafaqat tarjima qildi, balki meni siz so‘raganingizni qilishga majbur qildi. Shunday qilib, agar Stiv yigirma uch ming besh yuz o'n uchinchi surishda vafot etsa, bu butunlay sizning aybingiz bo'ladi.

Aslida, hozircha hammasi shu. Keyingi postda biz chuqurroq qazamiz - hozircha buni tushunish kifoya. Shunchaki vaziyatni tasavvur qiling va nima ekanligini, kim qanday rol o'ynashini va direktiv operatordan qanday farq qilishini tushuning.
Va keyin biz hamma narsani o'z nomi bilan chaqirishga harakat qilamiz va assembler kattalar kabi mikrokontroller bilan qanday ishlashini taxminiy baholaymiz.

Mikrokontrollerlar uchun professional dastur ishlab chiqaruvchisi bo'lish va yuqori maoshli ishni osongina topish va olish imkonini beradigan mahorat darajasiga erishish uchun nima kerak (Rossiyada 2015 yil boshida mikrokontroller dasturchisining o'rtacha maoshi
80 000 rubl).

QO‘SHISH

Sintaksis: ADD reg1, reg2 Bu buyruq reg1 va reg2 registrlarining mazmunini qo'shib, natijani reg1 registrida saqlaydi. H, S, V, N, Z, C bayroqlarining holatini o'zgartiradi.

VA

Sintaksis: AND reg1, reg2 Bu buyruq reg1 va reg2 registrlari o'rtasida Mantiqiy VA amalini bajaradi, natijani reg1 registrida saqlaydi. S, V, N, Z bayroqlarining holatini o'zgartiradi.

ANDI

Sintaksis: ANDI hreg, raqam Bu buyruq yuqori registr hreg mazmuni va doimiy son (0...255) o'rtasida Mantiqiy VA amalini bajaradi, natijani registrda saqlaydi. S, V, N, Z bayroqlarining holatini o'zgartiradi.

BRBC

Sintaksis: BRBC bit, label Ushbu buyruq SREG registr bitining ($3F) holatini tekshiradi va bit aniq bo'lsa, yorliqga o'tadi. Yorliq brbc buyrug'ining 63 ta buyrug'i ichida bo'lishi kerak.

BRBS

Sintaksis: BRBS bit, label Ushbu buyruq SREG registr bitining ($3F) holatini tekshiradi va bit o'rnatilgan bo'lsa, yorliqga o'tadi. Yorliq brbs buyrug'ining 63 ta buyrug'i ichida bo'lishi kerak.

BRCC

Sintaksis: BRCC bit, label Ushbu buyruq tashish bayrog'ini (C) tekshiradi va agar u aniq bo'lsa, yorliqga o'tadi.

BRCS

Sintaksis: BRCS bit, label Ushbu buyruq tashish bayrog'ini (C) tekshiradi va agar u o'rnatilgan bo'lsa, yorliqga o'tadi.

BREQ

Sintaksis: BREQ bit, label Ushbu buyruq nol (Z) bayrog'ini tekshiradi va agar u o'rnatilgan bo'lsa, yorliqga o'tadi.

BRNE

Sintaksis: BRNE bit, label Ushbu buyruq nol (Z) bayrog'ini tekshiradi va agar u aniq bo'lsa, yorliqga o'tadi.

C.B.I.

Sintaksis: CBI ioreg, bit Bu buyruq ioreg kiritish/chiqarish registrining bitini ($00...$1F) 0 ga tiklaydi. Bit raqami bit operandini aniqlaydi.

CLR

Sintaksis: CLR reg Bu buyruq reg registrining barcha bitlarini 0 ga tiklaydi. S, V, N, Z bayroqlarining holatini o'zgartiradi.

C.P.

Sintaksis: CP reg1, reg2 Bu buyruq reg1 va reg2 registrlari tarkibini reg1 dan reg2 ayirish orqali solishtiradi. Registrlarning mazmuni o'zgarmaydi. H, S, V, N, Z, C bayroqlarining holatini o'zgartiradi.

CPI

Sintaksis: CPI hreg, raqam Bu buyruq registrdan doimiyni ayirib, hreg registrining mazmunini son konstantasi bilan solishtiradi. Registrlarning mazmuni o'zgarmaydi. H, S, V, N, Z, C bayroqlarining holatini o'zgartiradi. Buyruq faqat R16…R31 registrlari bilan ishlaydi.

DEC

Sintaksis: DEC reg Bu buyruq registr reg tarkibini bittaga kamaytiradi va natijani registrga qayta yozadi. S, V, N, Z bayroqlarining holatini o'zgartiradi.

IN

Sintaksis: IN reg, ioreg Bu buyruq ioreg kiritish-chiqarish registrining mazmunini RON reg ga o'tkazadi.

INC

Sintaksis: INC reg Bu buyruq registr reg tarkibini bittaga oshiradi va natijani registrga qayta yozadi. S, V, N, Z bayroqlarining holatini o'zgartiradi.

LD

Sintaksis: LD reg, longreg Bu buyruq ma'lumotlar xotirasidan (uzunroq registrdagi xotira manzili) reg registriga (1200 modeli uchun) bir bayt yuklaydi.

LDI

Sintaksis: LDI hreg, raqam Bu buyruq raqamning bevosita qiymatini yuqori hreg registriga yuklaydi (buyruq faqat R16...R31 registrlari bilan ishlashi mumkin). Raqam 0…255 oralig'ida bo'lishi kerak.

LSR

Sintaksis: LSR reg Ushbu buyruq reg registrining mazmunini mantiqiy o'ngga siljitishni amalga oshiradi. Bunda 0-bit C bayrog'iga ko'chiriladi, 7-bit 0 ga qayta o'rnatiladi. S, V, N, Z, C bayroqlarining holatini o'zgartiradi.

ORI

Sintaksis: ORI hreg, raqam Bu buyruq yuqori registr hreg mazmuni va son konstantasi (0...255) o'rtasida Mantiqiy YOKI operatsiyani bajaradi, natijani registrda saqlaydi. S, V, N, Z bayroqlarining holatini o'zgartiradi.

OUT

Sintaksis: OUT ioreg, reg Bu buyruq umumiy maqsadli registr reg tarkibini ioreg kiritish-chiqarish registriga o'tkazadi.

RCALL

Sintaksis: RCALL yorlig'i Bu buyruq rcall (nisbiy qo'ng'iroq) buyrug'ining 2048 buyrug'i ichida bo'lishi kerak bo'lgan yorliq bilan aniqlangan pastki dasturni chaqiradi.

RET

Sintaksis: RET Bu buyruq asl qo'ng'iroq buyrug'idan keyingi buyruqqa o'tish orqali pastki dasturdan qaytadi.

RETI

Sintaksis: RETI Bu buyruq pastki dasturdan qaytadi va umumiy uzilishni yoqish bayrog'ini o'rnatadi.

RJMP

Sintaksis: RJMP yorlig'i Nisbiy o'tish. RJMP buyrug'ining 2048 oralig'ida bo'lishi kerak bo'lgan yorliqda ko'rsatilgan dastur bo'limiga o'tadi.

SBI

Sintaksis: SBI ioreg, bit Bu buyruq I/U registr bitini ioreg ($00...$1F) ni 1 ga o'rnatadi. Bit raqami bit operandini aniqlaydi.

SBIC

Sintaksis: SBIC ioreg, bit Bu buyruq I/U registr bitini tekshiradi ($00...$1F) va agar bu bit aniq bo'lsa, keyingi buyruqni o'tkazib yuboradi. Bit raqami bit operandini aniqlaydi.

SBIS

Sintaksis: SBIS ioreg, bit Bu buyruq I/U registr bitini tekshiradi ($00...$1F) va agar bu bit o'rnatilgan bo'lsa, keyingi buyruqni o'tkazib yuboradi. Bit raqami bit operandini aniqlaydi.

SEI

Sintaksis: SEI Bu buyruq umumiy uzilishni yoqish bayrog'ini o'rnatadi.

SER

Sintaksis: SER reg Bu buyruq reg registrining barcha bitlarini 1 ga o'rnatadi S, V, N, Z bayroqlarining holatini o'zgartiradi Buyruq faqat R16...R31 registrlari bilan ishlashi mumkin.

ST

Sintaksis: ST reg, longreg 1200 modeli uchun ushbu buyruq reg registrining mazmunini ma'lumotlar xotirasida saqlaydi (xotira joyi uzunroq registrda joylashgan), ya'ni. bilvosita PON reg tarkibini uzoqroq registrda saqlangan manzilga uzatadi.

SUBI

Sintaksis: SUBI hreg, raqam hregning yuqori registridan doimiy sonni ayiradi. Natija bir xil registrda saqlanadi. H, S, V, N, Z, C bayroqlarining holatini o'zgartiradi. Buyruq faqat R16…R31 registrlari bilan ishlashi mumkin.

Revich Yu.V.

Atmel AVR mikrokontrollerlarini tilda amaliy dasturlash
assembler - 2-nashr, rev. -

Operatsion tamoyillari, me'moriy xususiyatlari va texnikasi ko'rsatilgan

Atmel AVR mikrokontrolderlarini dasturlash. Tayyor retseptlar taqdim etiladi
zamonaviy mikroelektron uskunalarning asosiy funktsiyalarini dasturlash uchun
Rature: javobdan tugmani bosish yoki dinamik displeyni qurish
ma'lumotlarni tashqi xotiraga yoki xususiyatlarga yozib olish uchun murakkab protokollarga
real vaqtda soat ulanishi. Ma'lumotlar almashinuviga alohida e'tibor beriladi
shaxsiy kompyuterga ega raqamli mikroelektron qurilmalar berilgan
dastur misollari. Kitob zamonaviy AVR modellarining xususiyatlarini va birgalikdagi xususiyatlarini hisobga oladi.
ishlab chiqarishning so'nggi yillarida sayohat qiluvchi mikrosxemalar. Ilovalar asosiy o'z ichiga oladi
AVR mikrokontrollerlarining parametrlari, buyruqlar ro'yxati va ular uchun dastur matnlari,
shuningdek, ishlatiladigan atamalar va qisqartmalar ro'yxati.

Talabalar, muhandislar va radio havaskorlari uchun

Nashrga tayyorgarlik guruhi:

Bosh muharrir

Ekaterina Kondukova

o'rinbosari bosh muharrir

Igor Shishigin

Bosh muharrirlar tomonidan

Grigoriy Dobin

muharrir

Yuriy Rojko

Kompyuterning joylashuvi

Olga Sergienko

Tuzatuvchi

Zinaida Dmitrieva

Qopqoq dizayni

Elena Belyaeva

Bosh ishlab chiqarish

Nikolay Tverskix

Mikrokontrollerlar, ularning kelib chiqishi va qo'llanilishi...................................... ...... 7

Mikrokontrollerlar haqida ma'lumot................................................. .... ................................................. ... 8

Yunoncha uslubdagi elektronika................................................. ...... ................................................... ............ ... 10

Nima uchun AVR? ................................................................ ...... ................................................... ............ ........................... 12

I QISM. QURILMANING UMUMIY PRINSİPLARI
ATMEL AVR VA FOYDALANISHI ................................................ ....... ............... 17

1-bob. Atmel AVR mikrokontrollerlarining umumiy ko'rinishi ...................................... ...... ......... 19

AVR oilalari ................................................ .... ................................................. ....... ........................... 21

AVR MK dan amaliy foydalanish xususiyatlari ...................................... ...................... 23

Iste'mol haqida................................................. ... ................................................... ......... ................... 23

Zanjirlarda AVR dan foydalanishning ba'zi xususiyatlari...................................... ................................ 25

2-bob. Umumiy tuzilma, xotirani tashkil etish, soatlash, qayta o'rnatish............ 27

Dastur xotirasi................................................. ........ ................................................ ............................................... 27

Ma'lumotlar xotirasi (RAM, SRAM) ................................................ .... ................................................. ......... ......... 29

O'zgaruvchan bo'lmagan ma'lumotlar xotirasi (EEPROM) ...................................... ............................ 31

Soat usullari................................................. ........ ................................................ .......................... ............... 32

Qayta o'rnatish................................................ . ................................................................ ..... ................................................... 34

3-bob: Periferik qurilmalarga kirish........................................... ...... 37

Kirish/chiqarish portlari.............................................. ...................... ................................................. ................................ 38

Taymerlar-hisoblagichlar................................................. ......... ................................................... ............... ................................. 39

Analog-raqamli konvertor................................................. ........ ................................................ 41

Seriya portlar................................................. ... ................................................... ......... ......... 42

UART................................................. .. ................................................. ........ ................................... 43

SPI interfeysi ................................................. ... ................................................... ......... ................... 46

TWI interfeysi (I

C) ................................. ...................... ................................................ ...... ..... 50

USI universal seriyali interfeysi ............................................. .............. ............. 50

4-bob. Uzilishlar va quvvatni tejash rejimlari...................................... ............ 53

Uzilishlar................................................. ....... ................................................. ............................................. 53

Uzilish turlari................................................. ................ ................................. ................... 57

Energiyani tejash rejimlari................................................. ................ ................................. ....................... ........ 58

II QISM. MIKRONATROLLERLARNI DASTURLASH
ATMEL AVR ................................................. ... ................................................... ......... ................ 61

5-bob. AVR oilasining MCU-larini dasturlashning umumiy tamoyillari ................................ 63

Assambleya yoki C? ................................................................ ...... ................................................... ...................... ................... 63

AVR dasturlash usullari va vositalari ................................................ ....... ........................... 67

Kod muharriri................................................. ... ................................................... ......... ........................... 67

AVR Studio haqida ................................................... ...... ................................................ ...................... 68

Assemblerni tartibga solish................................................. ...................... ................................................. ................ ... 70

Dasturchilar................................................. ....... ................................................. ............. .............. 71

Hex fayllar haqida................................................. ......... ................................................... ............... .......................... 75

AVR assemblerining buyruqlari, ko'rsatmalari va yozuvlari...................................... ............ ........................... 78

Raqamlar va iboralar................................................. ......... ................................................... ............... .............. 79

Ko'rsatmalar va funktsiyalar ............................................... ................................................................ .......................... ......... 80

AVR dasturining umumiy tuzilishi................................................. ........ ................................................ ......... 84

Uzilishlar bilan ishlash................................................. ................................................................ ......................... ......... 85

QAYTA O'RNATISH ................................................. .... ................................................. ...................................... 89

Eng oddiy dastur.............................................. .... ................................................. ............ ............... 90

Kechikish................................................. ................................................................ ...... ........................... 92

Hisoblagich dasturi................................................. ........ ................................................ ...................... 94

Uzilishlardan foydalanish................................................. ................................................................ ...................... 96

Taymerning kechikishi................................................. ........ ................................................ .............. ............ 97

Uzilishlar yordamida hisoblagich dasturi................................................. ................... ............ 98

Konfiguratsiya bitlari haqida................................................. ................................................................ .......................... ...... 101

6-bob. AVR buyruqlar tizimi ...................................... ........ ................................... 105

Nazorat o'tkazish bo'yicha ko'rsatmalar va ro'yxatdan o'ting SREG ...................................................................... 105

Tekshirish buyruqlari................................................. ................................................................ ......................... ..... 111

Mantiqiy amallar buyruqlari.............................................. ................................................................ .......................... 113

Shift ko'rsatmalari va bit operatsiyalari................................................. ....... ................................................. 114

Arifmetik amallar bo'yicha ko'rsatmalar................................................. ...................................................... 116

Ma'lumotlarni uzatish buyruqlari................................................. ................................................................ .......................... ...... 118

Tizimni boshqarish buyruqlari................................................. ...................... ................................................. ................ 122

Assemblerda standart protseduralarni bajarish...................................... ...................... ........................... 123

Stack, mahalliy va global o'zgaruvchilar haqida ................................... ............................ 125

7-bob. Arifmetik amallar...................................... ....... ........................... 127

Standart arifmetik amallar................................................. ................................................................ ..... 128

Ko'p xonali sonlarni ko'paytirish................................................. ................................................................ ...... 129

Ko'p xonali sonlarning bo'linishi...................................... ................................................................ .............. 131

Kasr sonlar bilan amallar................................................. ...... ........................................... 134

Tasodifiy raqamlar generatori................................................. ................................................................ ...... ...... 136

BCD formatidagi raqamlar bilan amallar ...................................... ........ ................................................ ..... 138

MKdagi manfiy sonlar...................................... ...... ................................................ ............ ......... 143

8-bob. Taymerlarni dasturlash...................................... ....... ................... 147

8 va 16 bitli taymerlar...................................... ......... ................................................... ............... ......... 147

Berilgan chastota qiymatini shakllantirish................................................. ........ ........................... 149

Ortga hisoblash................................................. ................................................................ ................................................ 153

Vaqtni aniq tuzatish................................................. ................................................................ ................ 158

Chastota o'lchagich va davr o'lchagich................................................. ...... ................................................... ............ ......... 160

Chastotani o'lchagich................................................. ... ................................................... ......... ......................... 160

Davr o'lchagich................................................. ........ ................................................ ............................................... 164

Dinamik displeyni boshqarish................................................. ................................................................ ...... 167

LED ko'rsatkichlari va ularning ulanishi................................................. ...................................... 168

Dinamik displeyni dasturlash................................................. ...................... ............... 171

PWM rejimidagi taymerlar ............................................. ...... ................................................... ............ ............ 174

9-bob. EEPROM dan foydalanish ................................................ ....... ........................... 179

EEPROM-dagi ma'lumotlarning xavfsizligi haqida yana bir bor ...................................... ...................................... 179

EEPROM yozish va o'qish ................................................... ...... ................................................... ............ ......... 181

EEPROMda konstantalarni saqlash ...................................... ................................................................ ...................... 183

10-bob. Analog komparator va ADC...................................... ......... ................. 187

Analog-raqamli amallar va ularning xatolari...................................... ......... ........................... 187

Analog komparator bilan ishlash................................................. ................................................................ ............. 190

ADC ni komparatorga integratsiya qilish................................................ ....... ................................. 193

Ishlash printsipi va hisoblash formulalari................................................. ....... ........................... 194

ADC dasturini integratsiyalash................................................. ................................................................ ...... 198

O'rnatilgan ADC................................................. ...... ................................................ ............ ........................... 201

ADC dan foydalanishga misol................................................. ................................................................ ................................ 204

Dastur................................................................. ................................................................ ...................................... 206

11-bob. SPI dasturlash ................................... ....... ........................... 215

SPI orqali asosiy operatsiyalar ................................................ ................................................................ ........................... ... 215

Uskuna opsiyasi................................................. ... ................................................... ......... ......... 216

Dasturiy ta'minot opsiyasi................................................. ... ................................................... ......... ...... 218

Doimiy xotira turlari haqida................................................. ............................ 219

SPI orqali flesh-xotirani yozish va o'qish ............................................. ......... ................................................... .. 221

SPI orqali 45DB011B xotirasi bilan almashish dasturi ...................................... .... ............... 224

Fleshli kartalarni yozish va o'qish................................................. ...... ................................................... ............ ............ 225

MMS kartalarni ulash................................................. .... ................................................. ............ 225

Buyruqlarni topshirish va MMCni ishga tushirish...................................... ......... ........................... 228

MMS yozish va o‘qish................................................. ...... ................................................ ............ ......... 232

12-bob. TWI interfeysi (I

C) va undan amaliy foydalanish................ 237

Asosiy protokol I

C ............................................. ............ ............................................. ...... ......... 237

I Protokolning dasturiy emulyatsiyasi

C ............................................. ............ ...................... 240

Ma'lumotlarni tashqi doimiy xotiraga yozish...................................... ............ ......... 241

AT24 xotirasi bilan rejimlarni almashish ................................................ ....... ................................................. 241

Dastur................................................................. ................................................................ ...................................... 243

Interfeysli soat I

C ............................................. ............ ............................................. ...... .... 247

Ma'lumotlarni yozib olish ................................................... ........ ................................................ ............................... 255

Ma'lumotlarni o'qish................................................. ........ ................................................ ............................... 259

13-bob. UART/USART dasturlash ...................................... .... ............. 261

UARTni ishga tushirish ................................................ ... ................................................... ......... .............. 262

Ma'lumotlarni uzatish va qabul qilish................................................. ...... ................................................ ............ ......... 263

UART yordamida DS1307 soatini sozlash misoli ...................................... ...... ................... 266

Aloqa nosozliklaridan himoya qilish usullari................................................. ................................................ 271

Paritet tekshiruvi................................................. ................................................................ ...................... ........ 271

To'g'ri almashinuvni qanday tashkil qilish kerak................................................. ................................ ........................... ...... 273

Qo'shimcha USART xususiyatlari ................................................ ...................................... 274

RS-232 va RS-485 interfeyslarini amalga oshirish ...................................... ................................................................ ..... 276

RS-232 uchun darajali konvertorlar ...................................... ........ ................................... 280

RS-485 ................................................... ...... ................................................ ................................................ 283

14-bob. Quvvatni tejash rejimlari va Watchdog taymeri................................... 285

Energiyani tejash rejimini dasturlash...................................... ................................................ 286

Batareya bilan ishlaydigan qurilmaga misol................................................. ......... ................................... 287

Dasturni yakunlash ................................................... ...................... ................................................. ...................... 289

Kuzatuv taymeridan foydalanish................................................. ................................................................ ............ 293

ILOVALAR...................................................... ....... ................................................. ............. ....... 299

Ilova 1. Atmel AVR mikrokontrollerlarining asosiy parametrlari ......... 301

2-ilova. Atmel AVR buyruqlari ...................................... ...... ........................... 309

Arifmetik va mantiqiy buyruqlar........................................... ...................................... 310

Bit operatsiyalari bo'yicha ko'rsatmalar ................................................... ................................................................ .......................... ...... 311

Taqqoslash buyruqlari................................................. ... ................................................... ......... ................... 312

O'tkazish buyruqlarini boshqarish ................................................ ......... ................................................... ............... .313

Shartsiz o'tish va pastki dasturlarni chaqirish uchun buyruqlar...................................... ............ ... 313

Tekshirish-o'tkazib yuborish ko'rsatmalari va shartli sakrash bo'yicha ko'rsatmalar...................................... ................ 314

Ma'lumotlarni uzatish buyruqlari................................................. ................................................................ .......................... ........ 315

Tizimni boshqarish buyruqlari................................................. ...................... ................................................. ................ 316

3-ilova. Dastur matnlari...................................... ...... ................................. 317

Flash Communication demo dasturi 45DB011B
SPI interfeysi orqali ................................................... .... ................................................. ............................ 317

Interfeys almashinuvi protseduralari I

C ............................................. ............ ...................... 321

Ilova 4. Shaxsiy kompyuter bilan ma'lumotlar almashinuvi
va UART orqali disk raskadrovka dasturlari ................................................ ....... ................................ 329

Delphida COM port bilan ishlash ................................................ ... ................................................... ......... ..... 329

DOS va Windows da RTS liniyasini o'rnatish ...................................... ...................... ................................. 335

COM2000 dasturi ................................................... ... ................................................... ......... ................... 337

Terminal emulyatori yordamida dasturlarni disk raskadrovka qilish................................................... ........ ................... 339

5-ilova. Ko'p qo'llaniladigan qisqartmalar va atamalar lug'ati....... 341

Adabiyot.................................................. ................................................................ ...... .............. 347

Mavzu indeksi................................................. ................................................ 349

KIRISH

Mikrokontrollerlar,
ularning kelib chiqishi va qo'llanilishi

Ularning aytishicha, 1960-yillarda talabalar namoyishlari ishtirokchilarini kuzatgan
norozilik, Gordon Mur dedi: "Biz haqiqiy inqilobchilarmiz." Talabalar
tranzistor ixtirochilaridan biri V. Shoklining xodimi, shu jumladan,
mashhur Silikon vodiysining yashirin asoschisi, o'z navbatida asos solgan
tel va rivojlanishda etakchi rol o'ynashga mo'ljallangan kompaniyalarning rahbari
mikroelektronika, Mur nima haqida gapirayotganini bilar edi. Paradoksal ravishda shunday
Mur va uning hamkorlarining ixtirolari o'sha dunyoning asosiga aylanishi kerak edi
unda keyinchalik "isyonkor yoshlar" faoliyati jamlangan
1960-yillar Zamonaviy xakerlar (gazetalardagi kompyuter bezorilari emas, balki haqiqiy)
kompyuter olimlari o'z ishlariga ishtiyoqli) - bevosita mafkuraviy merosxo'rlar
Sorbonna talabalari va “Make
urush emas sevgi"

to "Shiorlarni yozmang - kod yozing." Ko'pchilikning mashhurligi tasodif emas

elektron hisoblash sanoatining taniqli namoyandalari, ixtiro mualliflari, asoschilar
zamonaviy dunyoning yuzini shakllantirganlar - o'sha "bunga" yaqin muhitdan kelganlar.
charchagan yoshlar."
Mikrokontrollerlar haqidagi hikoyamiz 1957 yilda Gordon Mur bilan hamkorlik qilganidan boshlandi.
keyinchalik mikrofon ixtirochilaridan biriga aylangan Robert Noys bilan birga
roschemy va Shockley Semiconductor Labsning yana olti nafar xodimi (Shockley chaqirdi
ularning "xiyonatkor sakkizligi") Fairchild Semiconductor kompaniyasiga asos solgan. Unga biz
nafaqat yarimo'tkazgichlar bozorining rivojlanishi va mikrosxemalarning joriy etilishi
muhandislik amaliyotiga, balki, chunki u bir turdagi kadrlar va
yosh sanoat uchun g'oyalar generatori.
Bu yerda faqat bir necha tarixiy faktlar keltirilgan. Murning o'zi 1960-yillarning oxirida Noys bilan
Qisqartirilgan Intel nomi ostida Integrated Electronics kompaniyasini yaratdi
Endi har bir maktab o'quvchisiga tanish. Jeremi Sanders, boshqa mashhur asoschisi
Eng yirik kompaniya - AMD ham Fairchildni tark etdi va u erda hamkorlikni ochish bilan ajralib turdi.
yarimo'tkazgichni ishlab chiqarish va sotish uchun vaqtinchalik iqtisodiy model
komponentlar, bunda mahsulot tannarxi oshgani sayin nolga intiladi

"Urush emas, sevgi qiling" shiori 1960-yillardagi hippilarning Vetnam urushiga norozilik bildirgan shiori edi.

Kirish

to'plam hajmini o'zgartirish. Charli Spork, Fairchildning asosiy menejerlaridan biri, 1967 yilda
Milliy Semiconductor direktori bo'ldi, keyinchalik u chorak davomida rahbarlik qildi
asr. "Xiyonatkor sakkizlik" ning yarmi - Gen Xerni, Evgeniy Kleiner,
Jey Last va Sheldon Roberts - 1961 yilda Amelco kompaniyasiga asos solgan
keyinchalik hozirda taniqli Intersil, Maxim va Ixys o'sdi. Xodim
Biz Fairchildga operativ kuchaytirgichlar ixtirosi uchun Robert Uidlarga qarzdormiz -
mikrosxemalar navlari va hozirgi kunga qadar mashhurlik bo'yicha ikkinchi o'rinda turadi
mikroprotsessorlar. Bundan tashqari, Fairchild tarixi mashhurlarning paydo bo'lishi bilan bog'liq
hal qiluvchi rol o'ynagan yangi korxona (ya'ni, "xavfli") moliyalashtirish modeli
elektronika, kompyuter va elektronika bilan bog'liq barcha tarmoqlarni rivojlantirishda muhim rol o'ynaydi
telekommunikatsiya. Fairchildni ko'pincha "barcha elektr energiyasining onasi" deb atashgani bejiz emas.
tronics".

Mikrokontrollerlar haqida ma'lumot

Bu voqealar bo'roni ichida bizning hikoyamiz uchun muhim bo'lgan narsa shu
boshqa yangiliklar, Fairchild xodimlari birinchi bo'lib yarimo'tkazgichni targ'ib qilishdi
soxta xotira. Endi, CD va DVD disklari, qattiq disklar va flesh-kartalar asrida, biz
1960-yillarning boshlarida kompyuter dasturlarini tasavvur qilish qiyin
asosan karton varaqlarda (perfokartalarda), hurda konstruktorlarda saqlangan
boshingiz simob kechikish liniyalari ustida qimmat RAM modullari ustida yoki yo'qligini, osiloskop
grafik naychalar va ferrit halqalar, bu erda har bir bit qo'lda "tikilgan"
yo'q. O'sha yillardagi ma'lumotlarni saqlash uchun eng ixcham elektron qurilma
RAMAC 305 deb nomlangan magnit disklari hajmi 5 MB bo'lgan
sanoat muzlatgichi bilan va oyiga 5 ming dollarga ijaraga olingan.
Bu yirtqich hayvonlarning qorong'u shohligidagi yagona "nur nuri" ixtiro edi
1956 yilda qabul qilingan Amerika Bosch Arma korporatsiyasi xodimi Yen Chou
Endi "bir martalik dasturlashtiriladigan ROM" deb nomlanuvchi qurilma uchun patent
(OTP ROM

). Aytgancha, ushbu patentda bu atama birinchi marta ishlatilgan

"Kuyish" - mikromodul erituvchi o'tish moslamalari bo'lgan matritsadan iborat edi
Ularga yuqori kuchlanish qo'llash orqali dasturlash paytida yonib ketgan.
OTP ROMlar uzoq vaqt davomida ixcham uchun yagona qurilmalar bo'lib qoldi
ma'lumotlarni saqlash va yaqin vaqtgacha o'z ma'nosini yo'qotmagan -
dunyodagi mikrokontrollerlarning kamida to'rtdan bir qismi, ayniqsa oddiyroq bo'lganlar, gacha
hali ham shunday bir martalik dasturlashtiriladigan o'rnatilgan dastur bilan ishlab chiqariladi
o'ta arzonligi tufayli ajinlar. Va faqat so'nggi yillarda "yonib ketgan" pa-
xotira asta-sekin qulayroq flesh-xotira bilan almashtirila boshlandi, ikkinchisi
narxi shu qadar tushib ketdiki, OTP ROM dan foydalanishning deyarli ma'nosi yo'q.
Ammo keling, 1960-yillarga qaytaylik. Yilni yarimo'tkazgich xotirasi mutlaqo kerak edi
uni hamma yaxshi ko'radi - harbiylar va NASAdan tortib maishiy texnika ishlab chiqaruvchilarigacha. Boshida
Fairchild bugungi kunda DRAM deb ataladigan narsani taqdim etdi, xususan, bunday mikro
Rossiya sxemalari (har biri 256 bit sig'imga ega 32 768 chip) banner xotirasi qurilgan.

Ba'zi qisqartmalarning tushuntirishlari uchun qarang 5-ilova.

ILLIAC-IV filamentli superkompyuteri, mahalliy BESM-6 ga raqobatchi. Sezgan holda
Shamol qaysi tomonga essa, 1968 yilda Mur va Noys Fairchildni tark etib, Intelga asos soldi.
xotirani ishlab chiqish va ishlab chiqarish bo'yicha ixtisoslashgan kompaniya. Ular hali yo'q
Intelning eng mashhur mahsuloti umuman xotira emas, balki kichik bo'lishini bilar edi
Mikroprotsessor deb ataladigan qurilma (B1-rasm), uning rivojlanishi birinchi navbatda edi
dastlab an'anaviy hisobni loyihalashda yordamchi bosqich sifatida ishlab chiqilgan
Tavrot.

Guruch. IN 1. Mikroprotsessor

VA

MIKROPROCESSORNING IXTIROSI

1969 yilda Intel kompaniyasida yaponiyalik yosh Busicom kompaniyasidan bir necha kishi paydo bo'ldi.
kalkulyatorlar ishlab chiqarish bilan shug'ullanuvchi ilmiy-tadqiqot instituti. Ularga 12 ta to'plam kerak edi.
gral sxemalari yangi arzon ish stoli kalkulyatorining asosiy elementi sifatida -
Tavrot. Loyihani yapon kompaniyasi vakili Masatoshi Shima ishlab chiqdi
Ron. Ted Xoff (Marcian E. Ted Hoff, 1937 yilda tug'ilgan), bo'lim boshlig'i.
Intel mahsulotlari uchun ilovalarni ishlab chiqish, loyiha bilan tanishib, men buni angladim
ba'zi dasturlash imkoniyatlariga ega kalkulyator yaratish o'rniga
dasturlash, siz buning aksini qilishingiz mumkin, kompyuter sifatida ishlash uchun dasturlashtirilgan
kalkulyator. G'oyani ishlab chiqishda, 1969 yilning kuzida Xoff san'atga qaror qildi
kelajakdagi mikroprotsessorning arxitekturasi. Bahorda Xoffa kafedraga keldi (barchasi bir xil
Fairchild, bizga allaqachon ma'lum), yangi xodim Frederiko Faggin, kim
ry va butun tizim uchun nom bilan keldi: "oila 4000". Oila iborat edi
to'rtta 16 pinli chiplardan iborat: 4001 2 KB ROMga ega; 4002 - operativ xotira bilan
4-

dasturlarni yuklab olish uchun bit chiqish porti; 4003 10 bitli edi

Ketma-ket kirish va parallel chiqishga ega I/U kengaytirgichi
klaviatura, indikator va boshqa tashqi qurilmalar bilan aloqa qilish uchun uy; ammo-
4004 4-bitli protsessor (markaziy protsessor) edi. Bu CPU
2300 tranzistorni o'z ichiga olgan va 108 kHz takt chastotasida ishlaydi. 15 noyabr
1971

Birinchi mikroprotsessorning yaratilishi e'lon qilindi. Busicom sotib olindi

Intel kompaniyasiga 60 000 dollar to'laydi, lekin Intel bu pulni Busicomga qaytarishga qaror qildi.
mikroprotsessorga bo'lgan huquqlarni qayta tiklash.
I4004 birinchi elektron kompyuter bilan taqqoslanadigan qayta ishlash quvvatiga ega edi.
Yuter ENIAC (1946). 4004 tizimda o'zining birinchi amaliy qo'llanilishini topdi
svetofor va qon analizatorlarini boshqarish. Bu mikroprotsess
sor sayyoralararo Pioneer-10 zondining bort uskunasida ishlatilgan
ry shunga o'xshash qurilmalar orasida uzoq umr ko'rish rekordini o'rnatdi: u ishga tushirildi
1972

, va 2001 yil sentyabriga kelib Pioneer-10 Yerdan 11,78 milliard km uzoqlashdi va hali ham shunday edi.

NASA rasmiy ravishda 2003 yil fevral oyida ishlagan va, ehtimol, hanuzgacha ishlaydi
ijtimoiy u bilan xayrlashdi.

Kirish

Shunday qilib, keyinchalik bo'linib ketgan mikroprotsessorlarning g'alabali yurishi boshlandi
asosan ikkita asosiy guruhga tegishli bo'lgan bir nechta navlarga bo'linadi:
mikroprotsessorlar (MP) va mikrokontrollerlar (MC) o'zlari. Birinchi
hisoblash tizimlarining bir qismi sifatida foydalanish uchun mo'ljallangan, eng keng tarqalgan
ularning aksariyati shaxsiy kompyuterlar (ShK), shuning uchun ular hali ham tez-tez ishlatiladi
"Kompyuter protsessorlari" deb ataladi (garchi bu guruh odatda ishlab chiqarilganlarni ham o'z ichiga oladi
serverlar va boshqalar uchun haydovchi MP). MK MPdan shu bilan farq qiladi
ular asosan turli tizimlarni boshqarish uchun mo'ljallanganligi,
shuning uchun nisbatan zaifroq hisoblash yadrosi bilan ular o'z ichiga oladi
ko'plab qo'shimcha tugunlar mavjud. Oddiy deputat uchun bu haqiqat deb taxmin qilinadi
tashqi chipsetlarda yoki qo'shimcha modullarda zaxira (xotira, kirish portlari)
chiqish, taymerlar, uzilish kontrollerlari, analog signallarni qayta ishlash uchun tugunlar
baliq ovlash va boshqalar), MKda u to'g'ridan-to'g'ri chipda joylashgan, shuning uchun ular bir vaqtlar moda bo'lgan
uni "mikrokompyuter" deb nomlang.
Haqiqatan ham, eng oddiy holatda, to'liq funktsional qurish uchun
kompyuter uchun ulangan bitta MK chipi
unga ulangan kirish/chiqarish qurilmalari. Oddiy monokristalning zamonaviy modellari
po'lat MKlar 286-chi pro-da IBM PC AT ning hisoblash imkoniyatlaridan oshib ketadi.
1980-yillarning ikkinchi yarmidagi protsessor. MP va o'rtasidagi chegara hududlar mavjud
MKni amalga oshirish qiyin: masalan, mobil qurilmalar uchun protsessorlar
telefonlar va cho'ntak kompyuterlari protsessor joylashgan raqamli kameralarga
tugun rivojlangan hisoblash funktsiyalariga ega bo'lishi va bir nechtasini boshqarishi kerak
ko'plab tashqi komponentlar.

Yunoncha uslubdagi elektronika

1962 yilda Perlegos oilasida yunon emigrantlari tug'ilgan
Tripolis shahri aholisi. Ota-onalar o'z vatanlarida bo'lgani kabi uzumchilik bilan shug'ullangan, o'g'illari esa
Novya, Jorj va Gust Perlegos muhandislikning moda mutaxassisligini tanladilar
elektronika muhandisi: ikkalasi ham avval San-Xose universitetini, keyin esa Stenfordni tamomlagan
universitet. 1974 yilda, 24 yoshida, aka-ukalarning eng kichigi Jorj Perlegos,
Intel kompaniyasida ishlay boshladi, u erda u o'zini eng ilg'or sohalardan birida topdi:
yoqilgan OTP ROM o'rnini bosuvchi elektr o'chiriladigan xotirani ishlab chiqish.
Perlegosdan oldin ham, 1971 yilda mikroprotsessor ixtirosi bilan deyarli bir vaqtda,
Intel xodimi Don Frohman suzuvchi panjurni ixtiro qildi va birinchi UVni yaratdi
2K o'chiriladigan EPROM (256 8).

Z

CHARJDAGI QAYDLAR

"Oddiy" hayotda bitta harfdan iborat bo'lgan ma'lumotlar birliklari uchun qisqartmalardan foydalaning
"K" (shuningdek, "M") tavsiya etilmaydi: ba'zan bu yoki yo'qligini tushunish juda qiyin
kilobitlar, kilobaytlar, "kilowords" yoki odatda soniyada kilobitlar haqida. Shunga qaramasdan
bunday qisqartmalar tez-tez uchraydi, shu jumladan texnik hujjatlarda va biz kelamiz
Men ba'zan bu misolga amal qilishga harakat qilaman. Aniqlik uchun biz quyidagi qoidalarni qabul qilamiz:
la: bitta bosh harf "K" ikkilik kilobitlarni (1024 bit), "M" ikkilik kilobitlarni anglatadi
ikkilik megabitlar (1024 kbit). Garchi adabiyotda kilobaytlar ko'pincha qabul qilinadi
"KB" va kilobitlar "KB" deb qisqartirilsa, biz bu chalkashlikdan qochishga harakat qilamiz va

Mikrokontrollerlar, ularning kelib chiqishi va qo'llanilishi

Boshqa barcha holatlarda to'liq yozing: kbayt va MB, kbit/s, MB/s. Bundan tashqari -
ishlab chiqarilgan bo'lsa, mikrokontroller dasturlari xotira hajmini belgilash bo'ladi
ikki baytli so'zlar bilan o'lchanadi: masalan, 4K so'zlar 4096 hujayrani bildiradi -
so'zlar (8 kbayt).

Jorj Perlegos bu jarayonda birinchi navbatda uning ishtirokida faol ishtirok etdi va
keyin va uning bevosita rahbarligida ikkita texnologiya yaratildi,
Ulardan biri butun flesh-xotira sanoati uchun o'sish nuqtasiga aylandi
zamonaviy "raqamli inqilob" ning asosiy ustunlari. U birinchi bo'lib ixtiro qilingan
chip 2716 - 16K (2048 8) EPROM bitta besleme zo'riqishida +5 V, keyin esa
2816 - birinchi EEPROM, elektr bilan o'chiriladigan ROM, prototipga aylandi
flesh xotira.
1981 yilda Perlegos Intelni va bir nechta xodimlari bilan (shu jumladan
boshqa mashhur Chips & kompaniyasining bo'lajak yaratuvchisi Gordon Kempbell edi.
Technologies) Seeq kompaniyasini yaratadi. Bu elektron sanoatning tanazzulga uchragan davri edi.
sanoatlashtirish va uch yildan so'ng kompaniya da'vo tufayli ketishga majbur bo'ldi
investorlar. Endi ularga ishonmay, Jorj va uning ukasi Gust va boshqalar
1984 yilda Seeq xodimlari bilan biz shaxsiy mablag'larga ega kompaniya yaratdik,
kimning to'liq ismi Advanced Technology Memory and Logic yoki kabi eshitiladi
Atmel deb qisqartirilgan.
Avvaliga Atmel mahsulotlari barcha turdagi uchuvchan bo'lmagan xotira chiplari edi
yangi xususiyatlar - seriyali va parallel OTP EPROM va EEPROM kabi
kirish va Flash. 1985 yilda Atmel dunyodagi birinchi uyga asoslangan EEPROM-ni chiqardi.
bugungi kunda rivojlanayotgan CMOS texnologiyasi va 1989 yilda birinchi quvvatli flesh-xotira
bir kuchlanishdan +5 V. 1980-yillarning oxirida Intel bir qator kompaniyalarni jazolashga kirishdi.
EPROM ishlab chiqaruvchi kompaniyalar, shu jumladan Atmel, patentlarni buzganlikda ayblanib,
ammo, oxir-oqibat, litsenziyalar almashinuvi to'g'risida kelishib olish mumkin edi. Va oxirida -
Oxir-oqibat, Atmel klassik mikrokontrollerlarni ishlab chiqarish uchun litsenziya oldi.
ler 8051, Intel o'sha paytda qo'llab-quvvatlashdan asta-sekin uzoqlashayotgan edi.
shaxsiy kompyuter protsessorlari bilan tanishish.

P

TAFsilotlar

Eslatib o'tamiz, EEPROM flesh-xotiradan birinchisi ruxsat berishi bilan farq qiladi
har qanday ixtiyoriy hujayraga alohida kirish, ikkinchisi - faqat butun bloklarga. By-
bu EEPROM hajmi kichikroq (maxsus mikro-
EEPROM sxemalari - kilobit birliklaridan megabit birliklarigacha) va hozirda qimmatroq
u asosan ma'lumotlarni saqlash uchun, shu jumladan mikrokontrollerlarning bir qismi sifatida ishlatiladi
Lerov. Flash xotira sodda va arzonroq, shuningdek, tezlikni sezilarli darajada oshiradi.
katta hajmdagi ma'lumotlar, ayniqsa oqimli o'qish/yozish bilan o'sish,
media qurilmalari (masalan, raqamli kameralar yoki MP3 pleerlar) uchun xosdir. Kiritilgan
Mikrokontrollerlarning flesh xotirasi dasturlarni saqlash uchun ishlatiladi. Ba'zi tafsilotlar
Turli xil xotira turlari va ularning ishlashi haqida ko'proq ma'lumot olish uchun qarang 11-bob.

Shunday qilib, Atmel o'zini mikrokontroller ishlab chiqaruvchilari soniga "chizilgan" deb topdi, ularda
rum juda tez birinchi o'rinlarni egalladi: ishlab chiqarish 1993 yilda boshlangan
o'rnatilgan flesh-dastur xotirasi bilan sanoatdagi birinchi MCU AT89C51. Buning ma'nosi
barcha muhandislik amaliyotida inqilob boshlandi, chunki mavjud
Ilgari, MKlarda bir martalik dasturlashtiriladigan OTP xotirasi yoki

Kirish

Ishlab chiqarish va u bilan ishlash ancha qimmatga tushadigan UV-yuvish mumkin
ishlab chiquvchi vaqtini katta yo'qotishga olib keladi. UV uchun qayta yozish davrlari soni
PROM bir necha o'ndan oshmaydi va to'g'ridan-to'g'ri kunduzi tushadi
bunday kristall ma'lumotni o'chirishga olib kelishi mumkin. Shuning uchun, hatto kichik
ry qurilmalari, birinchi navbatda, yordamida ishlab chiqarilishi kerak edi
OTP ROMni iste'mol qiling, bu juda xavfliroq: hatto eng kichik bo'lsa ham o'zgartirish
yozib olingan dasturdagi xatolar endi mumkin emas edi. dan flesh xotiraning paydo bo'lishi
bu hududdagi butun "landshaft" ni o'zgartirdi: uning joriy etilishi natijasida po'latdir
dasturiy ta'minotni kompyuterning BIOS-ni yangilash yoki "qayta tiklash" kabi mumkin bo'lgan narsalar.
hal qilish" iste'molchi elektron qurilmalar uchun nazorat dasturlari.
1995 yilda Trondagi Norvegiya fan va texnologiya universitetining ikki talabasi
Heime, Alf Bogen va Vegard Wollen 8 bitli RISC yadrosi g'oyasini ilgari surdilar.
Atmel rahbariyatiga taklif qilingan. Ishlab chiquvchilarning ismlari san'at nomiga kiritilgan.
AVR arxitekturasi: Alf + Vergard + RISC. Bu g‘oya menga shu qadar yoqdiki, 1996 yilda
Atmel tadqiqot markazi Trondxaymda tashkil etilgan va allaqachon bir xil oxirida
Yangi AVR seriyasining birinchi eksperimental mikrokontrolleri chaqirildi
AT90S1200. 1997 yilning ikkinchi yarmida Atmel korporatsiyasi seriyali chiqara boshladi
AVR oilasini ishlab chiqarish.

Nima uchun AVR?

"Tug'ilgandan" AVR kontrollerlari ularni bir-biridan ajratib turadigan ikkita xususiyatga ega
MKning qolgan qismidan oila. Birinchidan, AVR yadrosining ko'rsatmalar to'plami va arxitekturasi
pro-tillar uchun kompilyatorlarni ishlab chiqaruvchi kompaniya bilan birgalikda ishlab chiqilgan
yuqori darajadagi dasturlash IAR tizimlari. Natijada bu mumkin bo'ldi
AVR dasturlarini C tilida ishlashda katta yo'qotishlarsiz yozing
assembler tilida yozilgan dasturlarga nisbatan. Bu haqida batafsil ma'lumot
ichida muhokama qilamiz 5-bob.
Ikkinchidan, AVR ning muhim afzalliklaridan biri konveyerdan foydalanish edi
ra. Natijada, AVR uchun mashina aylanishi tushunchasi yo'q: ko'pchilik
buyruqlar bir soat siklida bajariladi. Taqqoslash uchun shuni ta'kidlaymizki, foydalanayotganlar
PIC oilasining MKlari juda mashhur bo'lib, ular 4 soat tsiklida buyruqni bajaradilar va sinf
sical 8051 - odatda 12 tsiklda (zamonaviy modellar ham mavjud bo'lsa ham X 51 ma bilan
bir tsikldagi avtobus aylanishi).
To'g'ri, shu bilan birga biz buyruq tizimining soddaligini biroz qurbon qilishimiz kerak edi,
bilan solishtirganda ayniqsa sezilarli x 51, bu erda, masalan, har qanday ekspeditorlik operatsiyalari
boshqaruvchi ichidagi ma'lumotlar, adreslash usulidan qat'i nazar, xuddi shu tarzda amalga oshiriladi
milliy terma jamoa

turli variantlarda, AVRda esa deyarli uchun

Har bir usul o'z buyrug'iga ega va ba'zan cheklangan harakatlar doirasiga ega.
viy. Bitlar bilan ishlash sohasida ba'zi qiyinchiliklar mavjud. Biroq, bu emas
AVR assemblerni o'rganishda sezilarli qiyinchiliklarga olib keladi: aksincha, matnlar
dasturlar qisqaroq va yuqori tildagi dasturni eslatadi
Daraja. Shuni ham hisobga olish kerakki, jamoalarning umumiy soniga qarab 90 dan 130 gacha
modelga qarab, faqat 50-60 noyob, qolganlari bir-birini almashtiradi.

Mikrokontrollerlar, ularning kelib chiqishi va qo'llanilishi

Va nihoyat, C tilidan foydalanganda bu kamchilik butunlay yo'q qilinadi,
aslida turli arxitekturalarni pro-ko'rsatkichlar nuqtai nazaridan tenglashtirish
dasturlash
AVR arxitekturasining katta afzalligi - bu 32 ta operatsion registrning mavjudligi,
butunlay teng emas, lekin ba'zi hollarda murojaat qilmaslikka imkon beradi
RAM va stekdan foydalanmang (bu asosan bir xilda mumkin emas
oila X 51), bundan tashqari, quyi AVR modellarida stek odatda mavjud emas
dasturchi Shu sababli, AVR uchun assembler dasturlarining tuzilishi shubhali bo'lib qoldi.
bayonotlar ishlaydigan yuqori darajadagi til dasturlariga juda o'xshaydi
xotira kataklari va registrlari bilan emas, balki mavhum o'zgaruvchilar va konstantalar bilan.
AVR-ning sxema dizayni nuqtai nazaridan yana bir xususiyati shundaki, barcha pinlar ichkarida
ular uchta holatda (kirish - o'chirilgan - chiqish) va elektr bo'lishi mumkin
chang'ilar CMOS tuzilmalari (ya'ni, chiqishning simmetriyasi mavjud).
signallari va kirish uchun yuqori qarshilik). Umuman olganda, bu muhim ahamiyatga ega
portlarga qaraganda qulayroq X 51 (bi-barqaror va TTL-mos) va yaxshiroq taklif qiladi
shovqin immuniteti (hech bo'lmaganda er avtobusidagi shovqinlardan).
Turli manbalardan olingan fikrlarni umumlashtirib, o'z tajribamga asoslanib,
muallif uchta eng ko'p qo'llanilish sohalarining taxminan quyidagi bo'linishiga keldi
boshqaruvchilarning umumiy oilalari.

Klassik arxitektura kontrollerlari X 51 (oilaning birinchi mikrosxemalari
8051 1980-yillarning boshlarida chiqarilgan) umumiy uchun eng yaxshisidir
mavzuni o'rganish. E'tibor bering, Atmeldan tashqari, X 51 ta mos mahsulotlar siz-
yana o'nga yaqin kompaniyalar ishga tushmoqda, jumladan Philips va kabi gigantlar
Siemens-ning mahalliy analoglari ham mavjud (1816, 1830 va boshqalar), bu buni amalga oshiradi.
arxitektura eng universal hisoblanadi.

AVR oilasi elektronika bo'yicha yangi boshlanuvchilar uchun tavsiya etiladi,
qurilmaning soddaligi va ko'p qirraliligi tufayli, strukturaning uzluksizligi uchun
har xil turdagi kontrollerlar, sxemani loyihalash va dasturlashning soddaligi
(bu holda "dasturlash" dasturni yozib olish jarayonini anglatadi
har bir chip uchun gramm).

Microchip PIC-lar oddiy qurilmalarni loyihalash uchun ideal.
to'dalar, ayniqsa replikatsiya uchun mo'ljallangan.

Ushbu tasnif asosan sub'ektivdir va muallif boshqalar bilan bahslashmaydi
nuqtai nazar: turli MK oilalari parametrlar bo'yicha asta-sekin yaqinlashmoqda,
to'liq almashtiriladigan bo'lib va, barcha zamonaviy elektr kabi
Nik, bir yoki boshqa oilaning tanlovi ko'pincha "diniy" xarakterga ega.
Bundan tashqari, MK ning uchta qayd etilgan oilalari faqat eng keng tarqalgan
universal kontrollerlar orasida, lekin umuman olganda eng mashhurlaridan uzoqda. General
mikrokontrollerlarning mavjud oilalari soni taxminan taxmin qilinadi.
Aslida 100 dan ortiq, har yili ko'proq va ko'proq paydo bo'ladi. Har biri
bu oilalar o'nlab turli modellarni o'z ichiga olishi mumkin. Shu bilan birga, birinchi o'rin
8-bitli MK ishlab chiqaruvchilari orasida an'anaviy ravishda Motorola-ga tegishli,
asosan mobil qurilmalar uchun kontrollerlar tufayli. Mikrochip kompaniyasi

Kirish

PIC oilasi bilan u uchinchi o'rinda, Atmel esa faqat oltinchi o'rinda. Bunda,
8-bitli AVR MCU-larga qo'shimcha ravishda, Atmel yana bir nechta turdagi MCU-larni ishlab chiqaradi,
Bu nafaqat 8051 ning qayd etilgan vorislarini, balki ARM-ni ham o'z ichiga oladi.
turli ilovalar uchun protsessorlar va maxsus mikrokontrollerlar. Shunga qaramasdan
bu rasmiy statistika hali hech narsani anglatmaydi - masalan, o'rnatilgan MKlar orasida
Atmel flesh-xotirasi allaqachon jahon bozorining uchdan biriga egalik qiladi.
2002-2003 yillarda dunyoda har yili 3,2 milliard dona mikrokonteyner ishlab chiqarilgan.
trollerlar. E'tibor bering, kompyuter protsessorlarini ishlab chiqarish hajmini hisoblash mumkin
Yiliga 200 million dona, ya'ni bu bozorning atigi 6% ni tashkil qiladi (moliyaviy jihatdan)
Umuman olganda, nisbat har xil, chunki oddiy MK ning odatiy narxi
2–5 dollarni tashkil etadi va kompyuter protsessori hech bo'lmaganda kattalikdan yuqori va
ba'zan yuzlab dollarga etadi). Shunday ekan, desak mubolag'a bo'lmaydi
ixtisoslashgan elektronika muhandisi ixtisosligi mikro-
kontrollerlar, kompyuter dasturchisidan kam muhim va kam emas -
tizim muhandisi yoki maxsus ilovalar yaratuvchisi.

Ushbu kitob konstruktsiya va sxema dizaynini o'rganmoqchi bo'lgan o'quvchi uchun mo'ljallangan
AVR MK ning maxsus xususiyatlari va ularning asosiy funktsiyalaridan to'g'ri foydalanishni o'rganing
imkoniyatlar. Shuning uchun muallif o'zini montaj tili bilan cheklaydi (batafsil savolni o'qing
Biz dasturlash muhitini tanlashni ko'rib chiqamiz 5-bob). Kitobdagi urg'u
o'quvchiga amaliy maslahatlar berish, uchun tayyor algoritmlarni tavsiflash
muayyan ishlarni amalga oshirishda ishlab chiquvchilar uchun paydo bo'ladigan odatiy vazifalar
MK funktsiyalari. Muallif o'quvchilar bilan birgalikda bir qator masalalarni batafsil ko'rib chiqadi
ry odatda MK dasturlash qo'llanmalari doirasidan tashqariga chiqadi: keyin bilan ishlash
amaliy interfeyslar, arifmetik amallar, shaxsiy kompyuter bilan interfeys, amaliy
energiya tejash rejimlarini texnik amalga oshirish.
Shu bilan birga, muallif hamma narsani batafsil tahlil qilishni maqsad qilmagan -
STI MK AVR: buning uchun hatto bir nechta jildlar ham etarli bo'lmaydi. Biz aylanib o'tishga majburmiz
JTAG interfeysi yordamida disk raskadrovka va dasturlash kabi masalalar istiqbolli
Siz, kontrollerlarning o'z-o'zini dasturlashini kashf qilgan, faqat tasodifan
Biz ovoz sintezining eng qiziqarli muammosini va PWM rejimlarining boshqa ilovalarini kutmoqdamiz
taymerlar.
Ushbu kitobda ko'pgina misollar minordan foydalanishga qaratilgan
(8 MB xotira sig'imi bilan) Mega kichik oilasining modellari, chunki ular eng ko'p
Ko'p qirrali va keraksiz murakkabliklarsiz keng ko'lamli vazifalar uchun javob beradi
sxema. Oddiyroq holatlarda muallif eng universalga e'tibor qaratdi
yosh ATtiny2313 modellaridan (uning "klassik" versiyaga mosligi haqida
AT90S2313 sm. Bo'lim "Uzilishlar yordamida hisoblagich dastur" bo'limi
siz 5
). Berilgan misollarning aksariyati deyarli hech qanday o'zgartirishlarsiz bajarilishi mumkin.
tegishli konfiguratsiyaga ega boshqa AVR modellariga moslashtirilgan
tion.

QISM

Qurilmaning umumiy printsiplari

va Atmel AVR ning ishlashi

1-bob. Atmel AVR mikrokontrolörlarini ko'rib chiqish

2-bob. Umumiy tuzilishi, xotirani tashkil etish,

soat, qayta o'rnatish

3-bob. Periferik qurilmalarga kirish

4-bob. Uzilishlar va quvvatni tejash rejimlari

C H A P T E R

Mikrokontrollerni ko'rib chiqish
Atmel AVR

Atmel AVR - bu ko'p qirrali 8-bitli mikrokonsonlar oilasi.
turli xil o'rnatilgan tashqi qurilmalarga ega umumiy yadroga asoslangan trollerlar
to'dalar. AVR MK ning imkoniyatlari ko'plab tipik muammolarni hal qilishga imkon beradi,
radioelektron uskunalarni ishlab chiquvchilar oldida paydo bo'lgan.
Atmel AVR mikrokontrollerlarining xususiyatlari.

Ishlash tezligi taxminan 1 MIPS/MGts. MIPS (Millionlab ko'rsatmalar boshiga
Ikkinchidan, soniyada million buyruqlar) eng qadimgi va ko'p jihatdan biridir
protsessor ishlashining yomon xarakteristikasi, chunki ko'rsatmalar to'plami
turli protsessorlar uchun har xil va shunga mos ravishda bir xil raqam
turli tizimlar bo'yicha ko'rsatmalar turli xil foydali natijalar beradi. Shunga qaramasdan
ko'rsatmalarni o'z ichiga olmaydi oddiy 8-bit hisoblash tizimlari uchun, operatsion
katta sonlar, suzuvchi nuqtali raqamlar va massivlar bilan ishlash
ma'lumotlar, bu ularning ish faoliyatini taqqoslash uchun yaxshi ko'rsatkichdir. Hisoblash
Bir qator vazifalar bo'yicha AVR ning ishlash yadrosi 16 martadan oshadi
in-line 80286 protsessor.

Kengaytirilgan RISC arxitekturasi. RISC (qisqartirilgan) tushunchasi
Ko'rsatmalar to'plamini hisoblash, qisqartirilgan ko'rsatmalar to'plami bilan hisoblar) afzalroqdir
minimal ixcham va tezkorlikdan iborat buyruqlar to'plamining mavjudligini talab qiladi
ko'rsatmalarni bajarish; shu bilan birga, kabi og'irroq operatsiyalar
suzuvchi nuqta hisoblari yoki ko'p bitli arifmetika
haqiqiy sonlarda u subprogrammalar darajasida amalga oshirilishi kerak. Kontseptsiya
RISC yadro tuzilishini soddalashtiradi (odatiy AVR yadrosi faqat 32 ming birlikni o'z ichiga oladi).
tranzistorlar, o'n millionlab kompyuter protsessorlaridan farqli o'laroq) va tezlashtirilgan
uning ishlashini ko'rsatadi: odatdagi buyruq bir soat siklida bajariladi (buyruqlardan tashqari)
dasturning tarmoqlanishi, xotiraga kirish va boshqalar bilan ishlaydi
uzoq ma'lumotlar). AVR oddiy ikki bosqichli konfiguratsiyaga ega.
Weir, buyruq bir soat siklida bajarilganda, keyingisi olinadi.
Intel arxitekturasidan farqli o'laroq, "klassik" AVR apparat multiplikatoriga ega emas
bo'linish/bo'linish, ammo Mega subfamily ko'paytirish operatsiyalarini o'z ichiga oladi.

Alohida buyruqlar va ma'lumotlar xotira avtobuslari. AVR (boshqalar kabi
mikrokontrollerlar) deb ataladigan narsaga ega. Garvard arxitekturasi, bu erda xotira joylari