Umumiy maqsadli registrlar
Umumiy maqsadli registrlar maydoni (ishchi registrlar) dasturlarni bajarish uchun protsessor tomonidan ishlatiladigan o'zgaruvchilar va ko'rsatkichlarni vaqtincha saqlash uchun mo'ljallangan. AVR mikrokontrollerlarida u 32 sakkiz bitli registrlardan iborat (manzillar diapazoni 0x000 – 0x01F). Pic mikrokontrollerlarida umumiy maqsadli registrlar ham sakkiz bitli, ammo ularning soni va manzillar diapazoni qurilmaning o'ziga xos turiga bog'liq.
C tilida yozilgan dasturlarda, agar Assambleya tilida parchalar ishlatilmasa, umumiy maqsadli registrlarga to'g'ridan-to'g'ri murojaat qilish talab qilinmaydi.
AVR mikrokontrollerlarining kirish/chiqish maydoni
AVR mikrokontrollerlarining kirish/chiqish maydoni atrof-muhit ma'lumotlarini boshqarish yoki saqlash uchun ishlatiladigan 64 ta registrni o'z ichiga oladi. Ushbu registrlarning har biriga kirish/chiqish manzili (0x000 dan boshlab) yoki SRAM manzili orqali kirish mumkin (bu holda kirish/chiqish manziliga 0x020 qo'shilishi kerak). C tilidagi dasturlarda odatda kirish/chiqish registrlarining shartli nomlari ishlatiladi va manzillar faqat assembler tilidagi dasturlar uchun muhimdir.
AVR mikrokontrollerlarining kirish/chiqish sohasidagi ismlar, kirish/chiqish va SRAM manzillari va registrlarning qisqacha tavsifi jadvalda keltirilgan. 2.1. Shuni ta'kidlash kerakki, mikrokontrollerlarning turli modellarida sanab o'tilgan registrlarning ba'zilari ishlatilmaydi va jadvalda ko'rsatilmagan manzillar. 2.1, kelajakda foydalanish uchun Atmel tomonidan ajratilgan.
Jadval 2.1. Kirish/chiqish sohasidagi registrlarning tavsifi
Nomi hamda ro'yxatdan
|
Manzil kiritish/ ishlab chiqarish
|
Manzil SRAM
|
Tavsif
|
|
ACSR
|
0x08
|
0x28
|
Ro'yxatdan nazorat qilish va maqomi analog comparator
|
|
UBRR
|
0x09
|
0x29
|
Ro'yxatdan ma'lumotlar uzatish tezligi orqali UART
|
|
UCR
|
0х0А
|
0х2А
|
nazorat Ro'yxatdan transceiver UART
|
|
USR
|
0х0В
|
0х2В
|
maqomi Ro'yxatdan transceiver UART
|
|
UDR
|
0х0С
|
0х2С
|
ma'lumotlar Ro'yxatdan UART transceiver
|
|
SPCR
|
0x0D
|
0x2D
|
nazorat Ro'yxatdan SPI interfeysi
|
|
SPSR
|
0х0Е
|
0х2Е
|
maqomi Ro'yxatdan SPI
|
|
SPDR
|
0x0F
|
0x2F
|
Ro'yxatdan I/o ma'lumotlarni jumladan, SPI interfeysi
|
|
PIND
|
0x10
|
0x30
|
port D pimi
|
|
DDRD
|
0x11
|
0x31
|
Ro'yxatdan ma'lumotlarni uzatish yo'nalishi port D
|
|
PORTD
|
0x12
|
0x32
|
ma'lumotlar Ro'yxatdan port D
|
|
PINC
|
0x13
|
0x33
|
Fikr-mulohazalarini port
|
|
DDRC
|
0x14,
|
0x34
|
Ro'yxatdan ma'lumotlarni uzatish yo'nalishi port
|
|
PORTC
|
0x15
|
0x35
|
ma'lumotlar Ro'yxatdan port
|
|
PINB
|
0x16
|
0x36
|
Fikr-mulohazalarini port
|
|
DDRB
|
0x17
|
0x37
|
Ro'yxatdan ma'lumotlarni uzatish yo'nalishi port-Yilda
|
|
invertion PORTB
|
0x18
|
0x38
|
ma'lumotlar Ro'yxatdan port
|
|
PINA
|
0x19
|
0x39
|
Fikr-mulohazalarini port BIR
|
|
DDRA
|
0х1А
|
0х3А
|
Ro'yxatdan ma'lumotlarni uzatish yo'nalishi port BIR
|
PORTA
|
0х1В
|
0х3В
|
ma'lumotlar Ro'yxatdan port BIR
|
EECR
|
0х1С
|
0х3С
|
nazorat Ro'yxatdan EEPROM
|
EEDR
|
0x1D
|
0x3D
|
ma'lumotlar Ro'yxatdan EEPROM
|
EEARL
|
0х1Е
|
0х3Е
|
manzil Ro'yxatdan EEPROM xotira (past bayt)
|
EEARH
|
0x1F
|
0x3F
|
manzil Ro'yxatdan EEPROM xotira (yuqori bayt)
|
WDTCR
|
0x21
|
0x41
|
nazorat Ro'yxatdan watchdog taymer
|
ICR1L
|
0x24
|
0x44
|
Ro'yxatdan qo'lga taymer/hisoblagichlar T/C1 (past bayt)
|
ICR1H
|
0x25
|
hisoblanadi 0x45
|
Ro'yxatdan qo'lga taymer/hisoblagichlar T/C1 (past bayt)
|
OCR1BL
|
0x28
|
0x48
|
Ro'yxatdan solishtirish Ichida taymer T/C1 (past bayt)
|
OCR1BH
|
0x29
|
0x49
|
Ro'yxatdan solishtirish Ichida taymer T/C1 (yuqori bayt)
|
OCR1AL
|
0х2А
|
0х4А
|
Ro'yxatdan taqqoslash Va taymer T/C1 (past bayt)
|
OCR1AH
|
0х2В
|
0х4В
|
Ro'yxatdan taqqoslash Va taymer T/C1 (yuqori bayt)
|
TCNT1L
|
0х2С
|
0х4С
|
hisoblash ro'yxatdan o'tish taymer/hisoblagichlar T/C1 (past bayt)
|
TCNT1H
|
0x2D
|
0x4D
|
hisoblash ro'yxatdan o'tish taymer/hisoblagichlar T/C1 (yuqori bayt)
|
TCCR1B
|
0х2Е
|
0х4Е
|
Ro'yxatdan nazorat taymer/hisoblagichlar T/C1
|
TCCR1A
|
0x2F
|
0x4F
|
nazorat Ro'yxatdan o'tish Va taymer/hisoblagichlar T/C1
|
TCNT0
|
0x32
|
0x52
|
hisoblash ro'yxatdan o'tish taymer/hisoblagichlar T/C0
|
TCCR0
|
0x33
|
0x53
|
nazorat qilish va Ro'yxatdan taymer/hisoblagichlar T/C0
|
MCUCR
|
0x35
|
0x55
|
nazorat qilish va Ro'yxatdan microcontroller
|
TIFR
|
0x38
|
0x58
|
Ro'yxatdan bayroqlar to'xtatishi taymerlar/rastalari
|
TIMSK
|
0x39
|
0x59
|
uch apparatlari, bir to'xtatishi taymerlar
|
GIFR
|
0х3А
|
0х5А
|
Umumiy ro'yxatdan to'xtatishi bayroqlar
|
GIMSK
|
0х3В
|
0х5В
|
Birgalikda uch apparatlari, bir to'xtatishi
|
SPL
|
0x3D
|
0x5D
|
suyakka Markerni (past bayt)
|
SPH
|
0х3Е
|
0х5Е
|
suyakka Markerni (yuqori bayt)
|
SREG
|
0x3F
|
0x5F
|
maqomi Ro'yxatdan
|
AVR mikrokontrollerlarining Sreg holati registri
Holat registri AVR mikrokontroller shartlari bayroqlarini o'z ichiga oladi va kirish/chiqish maydonida $3F (SRAM manzili $5F) da joylashgan. Qayta tiklash signali qo'llanilgandan so'ng, u nol bilan boshlanadi.
AVR mikrokontrollerlarida sakkiz xil bayroq operatsiyalarni bajarish natijasini ko'rsatish uchun ishlatiladi:
0 (C) tushirish-uzatish bayrog'i (tashish); arifmetik yoki mantiqiy operatsiyani bajargandan so'ng toshib ketishni (uzatishni) bildiradi;
1 (Z) – nol bayroq (nol); arifmetik yoki mantiqiy operatsiya natijasi nolga teng bo'lsa, har doim o'rnatiladi; agar operatsiya natijasi nolga teng bo'lmasa, tiklanadi;
2-toifa (N) - salbiy natija bayrog'i (salbiy); arifmetik yoki mantiqiy operatsiyani bajargandan so'ng salbiy natijani bildiradi;
3-toifa (V) – qo'shimcha kodlarda hisoblashda toshib ketish bayrog'i( ikkita to'ldirish oqimi); qo'shimcha kodlarning arifmetikasini qo'llab-quvvatlaydi (ikkitagacha qo'shilgan kodlarning arifmetikasi); agar tegishli operatsiyani bajarish paytida toshib ketish sodir bo'lsa, o'rnatiladi, aks holda u tiklanadi;
4-toifa (S) – belgi bayrog'i (Sign); S \ u003d NV – "istisno yoki" operatsiyasi yordamida n va V bayroqlarining bog'lanishi;arifmetik operatsiyaning haqiqiy natijasini aniqlash uchun belgi bayrog'idan foydalanish mumkin;
5-toifa (H) - yarim transport bayrog'i (yarim tashish); pastki yarim yo'lda toshib ketishni bildiradi (0-raqam)...3 bayt ma'lumot); kichik yarim baytdan katta baytga o'tkazilganda o'rnatiladi, aks holda u tiklanadi;
6-toifa (T) – nusxa ko'chirish bayrog'i (Transfer yoki nusxalash); dasturchi tomonidan bepul foydalanish uchun mo'ljallangan (masalan, bufer sifatida);
7-toifa (I) - uzilishlarning umumiy o'lchamlari (Global Interrupt); agar uzilishlarga ruxsat berilishi kerak bo'lsa, u holda davlat registrining 7-toifasi o'rnatilishi kerak (log. 1).
AVR mikrokontrollerlarining ichki va tashqi SRAM xotirasi
AVR mikrokontrollerlarining SRAM xotirasi ishchi registrlarga mos kelmaydigan ma'lumotlarni saqlash, shuningdek dasturiy ta'minot to'plamini tashkil qilish uchun mo'ljallangan. Ma'lumotlar odatda birinchi manzillardan boshlab SRAM-da saqlanadi va stek yuqori manzillarga mos keladi.
Agar SRAM ichki xotirasi etarli bo'lmasa, unda ba'zi AVR mikrokontrollerlarida tashqi xotira bloklarini ulash orqali uni 64 Kb gacha oshirish mumkin. Buning uchun mcucr registrida (kirish/chiqish maydonidagi manzil – $35, SRAM – dagi manzil - $55) jurnalga o'rnatilishi kerak. 1 Sre toifasi (7-toifa). Ushbu razryad o'rnatilgandan so'ng, a va C portlari manzil avtobusi va ma'lumotlar avtobusi vazifasini bajaradi va D portining 7 va 6 pinlari o'qish /RD boshqaruv signallari va shunga mos ravishda /wr tashqi SRAM xotirasi uchun), tegishli portlarda ushbu portlar uchun qanday ma'lumot uzatish yo'nalishlari o'rnatilganligidan qat'iy nazar ma'lumotlarni uzatish yo'nalishi registrlari.
Stack
Stack – bu protsessor tomonidan kichik dasturlardan qaytish manzillarini, hisoblashning oraliq natijalarini va boshqalarni vaqtincha saqlash uchun ishlatiladigan ma'lumotlar xotirasining maxsus maydoni.PIC mikrokontrollerlarida va ba'zi AVR mikrokontrollerlarida stek apparat tomonidan amalga oshiriladi-buning uchun bir necha (yoki bir necha o'nlab) baytlarda belgilangan hajmdagi alohida saqlash moslamasi ajratilgan. AVR mikrokontrollerlari uchun C tili kompilyatorlari (masalan, pastki dasturlarga kirishda) SRAM maydonining yuqori manzillaridan boshlab dasturiy ravishda bir yoki bir nechta steklarni yaratishi mumkin.
Stek LIFO printsipi asosida ishlaydi – "oxirgi, birinchi chiqish", ya'ni "oxirgi, birinchi chiqish"degan ma'noni anglatadi. Bu shuni anglatadiki, yangi ma'lumotlar avval stekning yuqori qismiga (birinchi darajaga) joylashtiriladi, so'ngra quyidagi ma'lumotlar kelib tushishi bilan uning pastki darajalariga "suriladi". Stekdan olib tashlash teskari tartibda amalga oshiriladi: birinchi navbatda, oxirgi marta tepaga joylashtirilgan ma'lumotlar o'qiladi, shundan so'ng pastki sathlarga joylashtirilgan ma'lumotlar xuddi bir darajaga "itarilgan" kabi. Hozirgi vaqtda stekning yuqori qismi bo'lgan xotira xujayrasi stek ko'rsatgichi bilan murojaat qilinadi (AVR uchun – SPL, SPH registr juftligi).
Dasturiy ta'minot to'plami uchun ajratilgan ma'lumotlar xotirasi maydoni faqat SRAM xotirasi bilan cheklanganligi sababli, dasturlarni yozishda foydali ma'lumotlarni yozib, stek juda katta bo'lmasligiga ishonch hosil qilishingiz kerak.
Dastur xotirasi
AVR mikrokontrollerlaridagi kabi dastur xotirasi Flash–EPROM texnologiyasidan foydalangan holda amalga oshiriladi, bu foydalanuvchi tomonidan dasturlash va elektr bilan o'chirishni o'z ichiga oladi. Ushbu xotira hajmi mikrokontrollerga qarab farq qiladi va odatda bir necha Kb buyruq so'zlarini tashkil qiladi.
Fleshli xotira uchuvchan emas, ya'ni mikrokontrollerning quvvatini o'chirgandan keyin ham unga yozilgan ma'lumotlarni saqlaydi. Ushbu turdagi xotira dasturlashtiriladigan bo'lsa ham, uni yozish uchun faqat tashqi apparat vositalaridan foydalaniladi, shuning uchun dasturchi nuqtai nazaridan dastur xotirasi faqat o'qish uchun mavjud deb aytish mumkin.
Dasturlar xotirasida buyruqlarni adreslash maxsus registr – buyruq hisoblagichi yordamida amalga oshiriladi, uning bit chuqurligi ushbu xotiraning ruxsat etilgan hajmini belgilaydi. Mikrokontroller turiga qarab dasturlarning xotira hujayralarining bit chuqurligi 14...
Bundan tashqari, shuni ta'kidlash kerakki, pic mikrokontrollerlarida dastur xotirasining birinchi joylarida (0x0000 manzilidan boshlab) tiklash va uzilishlar vektorlari (o'tish manzillari) mavjud.
|