Аппараттық және бағдарламалық қамтамасыз етуді орнату

Масштабты сағат бағдарламасы mcs 51. MCS – 51 микроконтроллерлер

Микроконтроллердің негізі (1-суретті қараңыз) 8 разрядты арифметикалық-логикалық блок (ALU) болып табылады. МК жадында Гарвард архитектурасы бар, яғни. логикалық түрде бөлінеді: программалық жадыға – PP (ішкі немесе сыртқы), 16-разрядты командалық санауыш (SC) арқылы адрестелетін және деректер жады – ішкі (резиденттік деректер жады – RPD) 128 (немесе 256) байт, сонымен қатар сыртқы (Сыртқы) болып бөлінеді. деректер жады - VPD) 64 КБ дейін. Физикалық тұрғыдан бағдарлама жады ROM (тек оқу үшін), ал деректер жады – жедел жадта (деректерді жазуға және оқуға болады) жүзеге асырылады.

Сыртқы сигналдарды қабылдау және жеткізу P0..P3 сегіз разрядты 4 порт арқылы жүзеге асырылады. Сілтеме жасағанда сыртқы жады P0 және P2 порттары мультиплексирленген сыртқы мекенжай/деректер шинасы ретінде пайдаланылады. P3 порт желілері балама функцияларды да орындай алады (1-кестені қараңыз).

16-биттік DPTR регистрі VFD мекенжайын немесе Аккумуляторды түрлендіру пәрменіндегі Бағдарлама жадының негізгі мекенжайын құрайды. DPTR регистрін операндтарды сақтау үшін екі тәуелсіз 8 разрядты регистрлер (DPL және DPH) ретінде де пайдалануға болады.

8-разрядты ішкі командалар регистрі (РК) орындалатын команданың кодын алады; бұл код басқару сигналдарын тудыратын басқару тізбегі арқылы декодталған (1-суретті қараңыз).

Арнайы функциялардың регистрлеріне сілтеме жасау - RSF (SFR - 1-суретте олар нүктелі сызықпен дөңгеленген) 128 (80h) және одан жоғары мекенжайлар диапазонында тікелей байтты адрестеуді қолдану арқылы ғана мүмкін болады.


MCS-51 микроконтроллерлерінің алғашқы үлгілеріндегі тұрақты деректер жадысы (RPM) көлемі 128 байт болды. RPD-тің ең төменгі 32 байттары да жалпы мақсаттағы регистрлер болып табылады - RON (8 RON-ның 4 банкі). Бағдарлама белсенді банктің 8 RON біреуін шеше алады. Белсенді RON банкін таңдау процессордың күй регистрінде – PSW екі битті бағдарламалау арқылы жүзеге асырылады.


1-кесте - MCS-51 түйреуіштерінің мақсаты

PIN нөмірі. Белгілеу Кездесу
1..8 Р1 8-биттік квази-екі бағытты енгізу/шығару порты
9 RST

Қалпына келтіру сигналы (белсенді деңгей - жоғары);

RST сигналы тазалайды: ДК және Арнайы Функция Регистрлерінің (SFR) көпшілігі, барлық үзілістер мен таймер жұмысын өшіреді; Банк RON 0 таңдайды; P0_P3 порттарына «барлығын» жазады, оларды енгізуге дайындайды; 07H кодын стек көрсеткішіне (SP) жазады;

10..17

8-биттік квази-екі бағытты енгізу/шығару порты; сәйкес «1» санатына жазғаннан кейін – қосымша (балама) функцияларды орындайды:

Сериялық портты енгізу - RxD;

Сериялық порт шығысы - TxD;

Сыртқы үзу кірісі 0 - ~ INT0;

Сыртқы үзу кірісі 1 - ~ INT1;

Таймер / есептегіш кіріс 0 - T0;

Таймер / есептегіш кіріс 1 - T1;

Строб шығысы. VPD-ге жазу кезіндегі сигнал - ~ WR;

Строб шығысы. VPD-ден оқу кезіндегі сигнал - ~ RD;

18, 19 X1, X2 Кварц резонаторын немесе LC-тізбекті қосуға арналған өткізгіштер;
20 GND Жалпы қорытынды;
21..28 P2 8-биттік квази-екі бағытты енгізу/шығару порты; немесе сыртқы жадымен (VFP немесе VFD) жұмыс режимінде А адресінің шығысы;
29 PME Сыртқы бағдарлама жадын оқу стробосы тек сыртқы ROM-ға қол жеткізген кезде шығарылады;
30 Але Сыртқы жад мекенжайының стробы (VPP немесе VPD);
31 EA RPP өшірілгенде, осы кірістегі «0» деңгейі MC пәрмендер таңдауына ауысады тек ұшу-қону жолағынан ;
39..32 P0 8-биттік екі бағытты енгізу/шығару порты; Сыртқы жадқа қатынасу кезінде ол A адрестерін шығарады (олар ALE сигналы арқылы сыртқы регистрге жазылады), содан кейін ~ PME (пәрмендер үшін) немесе ~ WR, ~ RD (VFD деректері үшін) сигналымен синхронды түрде байтты алмастырады. ), Сыртқы жадқа кіру кезінде барлық блоктар порт регистріне P0 жазылады, онда сақталған ақпаратты жояды;
40 Ucc Қоректендіру кернеуінің шығысы

RON банктерін ауыстыру ішкі бағдарламаларды орындауды және үзілістерді өңдеуді жеңілдетеді, өйткені ішкі бағдарламаны шақыру кезінде негізгі бағдарламаның RON мазмұнын стекке итерудің қажеті жоқ (ішкі бағдарламадағы RON-дың басқа белсенді банкіне көшу жеткілікті).

RPD-ге қол жеткізу жанама немесе тікелей байтты адрестеу арқылы мүмкін болады (тікелей байт адрестеу RPD-тің тек алғашқы 128 байтына қол жеткізуге мүмкіндік береді).

128-ден (80h) 255-ке (FFh) дейін кеңейтілген RPD аймағы (MCS-52 тобының микроконтроллерлері және одан кейінгі отбасылар үшін) тек жанама адрестеу әдісін қолдана отырып шешілуі мүмкін.

2-кесте – Арнайы функциялар тізілімдерінің блогы (s f r)

Мнемо коды Аты
0E0h * ACC Батарея
0F0h * Б Батареяны кеңейту регистрі
0D0h * PSW Процессор күйі Word
0В0сағ * P3 Порт 3
0A0h * P2 Порт 2
90 сағ * P1 Порт 1
80 сағ * P0 Порт 0
0B8h * IP Басымдық тізілімін үзу
0A8h * IE Үзіліс маскасы тіркелімі
99 сағ SBUF Сериялық трансивер буфері
98 сағ * SCON Сериялық портты басқару / күй тізілімі
89 сағ TMOD Таймер / Есептегіш режимінің тіркелімі
88 сағ * TCON Таймер / санағышты басқару / күй регистрі
8Dh TH1 Таймер 1 (жоғары байт)
8Bh TL1 Таймер 1 (төмен байт)
8-бөл TH0 Таймер 0 (жоғары байт)
8Ah TL0 Таймер 0 (төмен байт)
83 сағ DPH Деректер көрсеткішінің тізілімі (DPTR) (жоғары байт)
82 сағ DPL Деректер көрсеткішінің тізілімі (DPTR) (төмен байт)
81 сағ SP Стек көрсеткішінің регистрі
87 сағ PCON Қуатты тұтынуды бақылау регистрі

2. MCS – 51 БАҒДАРЛАМАЛЫҚ ҚҰРАМДЫҚ МОДЕЛІ


ПАРМАН ТҮРЛЕРІ MCS – 51

Нұсқаулардың жартысы дерлік 1 машиналық циклде (МК) орындалады. Кристалды осциллятор жиілігі 12 МГц болғанда мұндай команданың орындалу уақыты 1 мкс құрайды. Қалған командалар 2 машиналық циклде орындалады, яғни. 2μс үшін. 4 машиналық циклде тек көбейту (MUL) және бөлу (DIV) нұсқаулары орындалады.

Бір машина циклі барысында екі командалық байтты оқу немесе сыртқы деректер жадына (EPM) бір қатынасу үшін Бағдарлама жадына (ішкі немесе сыртқы) екі қоңырау болады.

3. MCS-51 АДРЕСТЕУДІҢ ӘДІСТЕРІ (ӘДІСТЕРІ).

1. ТІРКЕУ АДРЕСІ – 8-разрядты операнд регистрлердің таңдалған (белсенді) банкінің RON-да болады;

2 DIRECT ADDRESSING (- # арқылы белгіленеді) - операнд команданың екінші (және 16-разрядты операнд үшін және үшінші) байтында;

3 ЖАНА АДРЕСТЕУ (- @ арқылы белгіленеді) – операнд деректер жадында (RPD немесе VPD), ал жад ұяшығының адресі жанама адресацияның RON бірінде (R0 немесе R1) қамтылған; PUSH және POP командаларында адрес SP стек көрсеткішінде қамтылған; DPTR регистрінде 64K дейінгі IPT мекенжайы болуы мүмкін;

4 DIRECT BYTE ADRESSING - (дир) - RPD ұяшықтарына (00h… 7Fh мекенжайлары) және SFR арнайы функцияларының регистрлеріне (80h… 0FFh мекенжайлары) қол жеткізу үшін қолданылады;

5 DIRECT BIT ADDRESSING - (бит) - 20H ... 2FH мекенжайларындағы RPD ұяшықтарында орналасқан бөлек адрестелетін 128 битке және арнайы функциялар регистрлерінің бөлек адрестелетін биттеріне сілтеме жасау үшін қолданылады (3-кестені және бағдарлама үлгісін қараңыз);

6 ЖАНА ИНДЕКСТІ АДРЕСТЕУ (- @ арқылы белгіленеді) – Бағдарлама жадындағы кестелерді қарауды жеңілдетеді, РР мекенжайы базалық регистрдің (ДК немесе DPTR) және индекстік регистрдің (Аккумулятор) қосындысымен анықталады;

7 ӘСЕРДІК (КІРІСТІРІЛГЕН) АДРЕСТЕУ – пәрмен кодында операндтардың біріне (көбінесе Батареяға) жасырын (әдепкі бойынша) сілтеме бар.

4. ПРОЦЕССОР МЕМЛЕКЕТТІК СӨЗДІҢ ФОРМАТЫ (PSW)

C - Carry flag (CARY) немесе қарызға алу, сонымен қатар биттермен жұмыс істейтін нұсқауларда «Бульдік аккумулятор» қызметін атқарады;

AC – көмекші (қосымша) тасымалдау жалауы – егер қосу командасында (ADD, ADDC) төменгі нибльден жоғарыға (яғни 3-ші разрядтан 4-ші разрядқа) ауысу орын алса, «1» күйіне қойылады;

F0 – пайдаланушы жалауы – орнату, тазарту және программалық түрде тексеру;

RS1 RS0 Банк Мекенжай (директор)
0 0 0 00..07
0 1 1 08 сағ..0 фс
1 0 2 10 сағ..17 сағ
1 1 3 18 сағ.. 1 фс

RS1, RS0 - Тіркеу банкін таңдаңыз:

OV - арифметикалық толып кету жалауы; оның мәні ALU ең маңызды разрядының кіріс және шығыс тасымалдағыштарының сигналдарының «Айрықша НЕМЕСЕ» жұмысымен анықталады; осы жалаушаның бір мәні екінің толықтауыш кодындағы арифметикалық операцияның нәтижесі ауқымнан тыс екенін көрсетеді: –128 ... + 127; бөлу операциясын орындау кезінде ОВ жалауы тазартылады, ал нөлге бөлінген жағдайда ол орнатылады; көбейту кезінде нәтиже 255-тен (0FFH) жоғары болса, OV жалауы орнатылады;

Bit PSW - Сақталған, жазу немесе оқу үшін қол жетімді флип-флопты қамтиды;

P – паритет жалауы – аккумулятордағы жалғыз разрядтар санын жұпқа дейін толықтыру; комбинациялық схема арқылы құрылған (бағдарламалық қамтамасыз ету тек оқу арқылы қол жетімді).

MCS-51 микроконтроллерлерінде «Z» жалаушасы жоқ. Бірақ шартты секіру нұсқауларында (JZ, JNZ) Аккумулятордың ағымдағы (нөлдік немесе нөлдік емес) мазмұны комбинациялық схемамен тексеріледі.

Операндтарды тасымалдауға және ауыстыруға арналған барлық командаларды батарея арқылы орындауға болады (3-суретті қараңыз). Сонымен қатар, /дан сыртқы жадқа (бағдарлама жады немесе деректер жады) тасымалдауды тек батарея арқылы жүзеге асыруға болады.

Көптеген аударымдарды тікелей мекенжай байты (директоры) арқылы да жасауға болады. Тіпті дир-дир форвардтар да бар (3-суретті қараңыз).

RON-дан RON-ға жетіспейтін трансферттерді RON-дан тікелей адрестелетін байт-директорға тасымалдаулар ретінде жүзеге асыруға болады (РОН-лар резиденттік деректер жадысының бастапқы аймағында орналасқанын ескере отырып, оның ұяшықтары dir ретінде адрестелуі мүмкін).

XCH алмасу командалары екі операндты да жоймай байтты тасымалдауға мүмкіндік береді.

Арифметикалық командалар тек Аккумуляторда орындалады. Сондықтан бірінші операндты алдымен Аккумуляторға орналастыру керек, содан кейін екінші операндты қосу немесе азайту керек. Нәтиже батареяға салынады.


SUBB шегеру пәрмені тек қарыз арқылы орындалады (яғни, нәтижеден Сары жалаушасы да алынады). Сондықтан, алуды алу командасын қарызға алмай орындау үшін алдымен С жалауын (CLRC) тазалау командасын орындау керек.

Бір байтты операндтарды көбейту нұсқауы - MULAB - екі байтты (16 бит) нәтижені орналастырады: төмен байт - Батареяға, жоғары байт - В регистріне.

Бір байтты операндтарды бөлу командасының орындалу нәтижесі – DIVAB – орналасады: quotient – ​​аккумулятор, қалғаны – В регистріне.

INC арифметикалық нұсқауы таңдалған операндқа біреуін қосады. DEC арифметикалық нұсқауы таңдалған операндтан біреуін алып тастайды. Ондық жинақтаушыны түзету (DAA) пәрмені екілік-ондық сандарды (BCD сандары) он алтылық пішімге (он алтылық пішім) түрлендірусіз қосуға көмектеседі. Бастапқы операндтар BCD пішімінде болуы керек, яғни. бір байттың әрбір тетрадасы тек 0-ден 9-ға дейінгі сандарды қамтиды (он алтылық сандар болуы мүмкін емес: A, B, C, D, E, F). Демек, бір байт бумаланған BCD нөмірлері үшін 00-ден 99-ға дейінгі сандарды немесе бумасыз BCD сандары үшін 0-ден 9-ға дейінгі сандарды қамтуы мүмкін.

DA A - ондық түзету пәрмені процессорға BCD сандарын қосқаннан кейін (сандар он алтылық арифметика заңдарына сәйкес қосылды) Аккумулятордың мазмұнына келесідей әрекеттерді орындайды (мысалды қараңыз):

· Аккумулятордың ең төменгі тістеуінің мазмұны 9-дан жоғары болса немесе қосалқы тасымалдау жалауы орнатылса (AC = 1), онда аккумулятордың мазмұнына 6 қосылады (яғни он алтылық форматтағы жетіспейтін алты сан);

· Егер осыдан кейін аккумулятордың жоғары тістеуінің мазмұны 9-дан жоғары болса немесе C жалауы орнатылса, онда аккумулятордың жоғары тістеуіне 6 саны қосылады.

DA A ондық түзету пәрмені өсу пәрменінен (INC) кейін қолданылмайды, себебі өсу пәрмені C және AC жалауларына әсер етпейді (өзгертпейді).

Логикалық командалар:

Логикалық «ЖӘНЕ» - ANL,

Логикалық «НЕМЕСЕ» - ORL,

«ЭКСКЛЮЗИВ НЕМЕСЕ» - XRL– логикалық пәрмені Аккумуляторда орындалады (сонымен қатар арифметикалық), бірақ логикалық командаларды тікелей адрестелетін байтта (дир) де орындауға болады. Бұл жағдайда екінші операнд болуы мүмкін:

Батареяда немесе

Пәрмендегі жедел операнд.

Айналдыру командалары (RR A, RL A) және CARY жалауы арқылы айналдыру командалары (RRC A, RLC A) Аккумулятордың мазмұнын циклдік түрде 1 битке ауыстырады.Биттік құрылғы сілтемелері тек C жалаушасы арқылы жүзеге асырылады.

MCS-51 отбасының архитектурасы негізінен оның мақсаты - құрылыспен алдын ала анықталған жинақыжәне арзансандық құрылғылар. Микрокомпьютердің барлық функциялары бір микросұлбаның көмегімен жүзеге асырылады. MCS-51 тобына ең қарапайым микроконтроллерлерден бастап күрделі микросұлбаларға дейін бірқатар микросұлбалар кіреді. MCS-51 тобының микроконтроллерлері әртүрлі құрылғылар үшін басқару тапсырмаларын орындауға және аналогтық схеманың жеке түйіндерін жүзеге асыруға мүмкіндік береді. Бұл отбасының барлық микросұлбалары жұмыс істейді бірдей командалық жүйемен, олардың көпшілігі бірдей жағдайларда орындалады сәйкес пинут(денеге арналған аяқтардың саны). Бұл әзірленген құрылғы үшін әртүрлі өндірушілердің (мысалы, Intel, Dallas, Atmel, Philips және т.б.) микросұлбаларын пайдалануға мүмкіндік береді. құрылғының және бағдарламаның схемалық схемасын өзгертпей.

Сурет 1. K1830BE751 контроллерінің құрылымдық схемасы

Контроллердің құрылымдық сұлбасы 1-суретте көрсетілген және келесі негізгі функционалдық блоктардан тұрады: басқару блогы, арифметикалық логикалық құрылғы, таймер/санауыш блок, сериялық интерфейс және үзу блогы, бағдарлама санауышы, деректер жады және бағдарлама жады. Екі бағытты алмасу ішкі 8-биттік деректер магистралінің көмегімен жүзеге асырылады. Әр блоктың мақсатын толығырақ қарастырайық. MCS-51 отбасының барлық дерлік өкілдері осы схемаға сәйкес салынған.... Бұл отбасының әртүрлі микросұлбалары тек арнайы мақсаттағы регистрлерде (порттардың санын қоса) ерекшеленеді. Командалық жүйе барлық контроллерлер MCS-51 отбасында 111 бар негізгі командаларпішімі 1, 2 немесе 3 байт және бір микросұлбадан екіншісіне ауысқанда өзгермейді. Бұл бір микросұлбадан екіншісіне бағдарламалардың тамаша тасымалдануын қамтамасыз етеді.

Басқару және синхрондау блогы

Уақыт және басқару блогы оның жұмысының барлық рұқсат етілген режимдерінде OEVM қондырғыларының бірлескен жұмысын үйлестіруді қамтамасыз ететін синхрондау және басқару сигналдарын құруға арналған.Басқару блогына мыналар кіреді:

  • уақыт ұяшығын қалыптастыру құрылғысы,
  • I/O логикасы,
  • командалар тізілімі,
  • бақылау реестрі электр энергиясын тұтыну,
  • командалардың дешифраторы, компьютерді басқару логикасы.

Уақыт аралығын қалыптастыруға арналған құрылғыфазалардың, тактілердің және циклдердің ішкі синхрондау сигналдарын қалыптастыруға және беруге арналған. Машина циклдарының саны команданың орындалу ұзақтығын анықтайды. Ұзақтығы төрт машиналық циклді құрайтын көбейту және бөлу командаларынан басқа OEVM командаларының барлығы дерлік бір немесе екі машиналық циклде орындалады. Негізгі осциллятордың жиілігін F g арқылы белгілейік.Одан кейін машина циклінің ұзақтығы 12/Fg немесе негізгі осциллятор сигналының 12 периодын құрайды. Кіріс - шығыс логикасы ақпарат алмасуды қамтамасыз ететін сигналдарды қабылдауға және шығаруға арналған сыртқы құрылғылар P0-P3 кіріс/шығыс порттары арқылы.

Командалық регистрорындалатын команданың 8-разрядты операциялық кодын жазуға және сақтауға арналған. Операция коды командалар мен компьютерді басқару логикасы көмегімен командаларды орындау микропрограммасына түрлендіріледі.

Тұтынуды бақылау тізілімі (PCON) қуатты тұтынуды азайту және микроконтроллерден келетін шу деңгейін төмендету үшін микроконтроллердің жұмысын тоқтатуға мүмкіндік береді. Қуатты тұтынуды одан әрі азайтуға және шуды азайтуға микроконтроллердің негізгі осцилляторын тоқтату арқылы қол жеткізуге болады. Бұған PCON тұтынуды бақылау тізілімін аздап айналдыру арқылы қол жеткізуге болады. n-MOS (1816 сериясы немесе ортасында «c» жоқ шетелдік микросұлбалар) үшін PCON тұтынуды басқару тізілімінде SMOD сериялық портының жіберу жылдамдығын басқаратын тек бір бит бар және қуатты басқару биттері жоқ.

«MCS-51 микроконтроллерлерінің архитектурасы» мақаласымен бірге оқыңыз:


http: //site/MCS51/tablms.php


http: //site/MCS51/SysInstr.php


http: //site/MCS51/port.php

ӘОЖ 681.5, 681.325.5 (075.8)

ҚБ 32.973.202-018.2 i 73

Щербина А.НЕсептеу машиналары, жүйелер және желілер. Басқару жүйелеріндегі микроконтроллерлер мен микропроцессорлар:чеб. жәрдемақы / А.Н. Щербина, П.А. Нечаев- СПб.: Политехникумнан. Университет, 2012.-226 б.

менеджмент саласындағы мамандарды даярлау бағыттары мен мамандықтарының мемлекеттік білім беру стандартының мазмұнына сәйкес келеді техникалық жүйелер, электр энергетикасы және электротехника және «Есептеу машиналары, жүйелері және желілері» пәні бойынша шамамен оқу жоспарының мазмұны.

Микропроцессорлық жүйелерді логикалық ұйымдастырудың іргелі мәселелері Intel фирмасының MCS-51 микроконтроллер тобының негізгі архитектурасының мысалында қарастырылады. Assembler және SI тілдерінде микроконтроллерлерді бағдарламалау технологиясы сипатталған.

Бұл жоғары техникалық оқу орындарының студенттері мен оқытушыларына, технологиялық процестер мен өндірістік жабдықтарды автоматтандыру мамандарына, сонымен қатар микропроцессорлық жүйелердің инженер-конструкторларына пайдалы болуы мүмкін.

Сондай-ақ 140400 «Электр энергетикасы және электротехника» бағыты бойынша бакалавриат, техникалық және магистратурадағы «Басқару жүйелеріндегі микроконтроллерлер және микропроцессорлар» және «Автоматтандырудың электрондық құрылғылары» пәндерінің мемлекеттік білім беру стандартының мазмұнына сәйкес келеді.

Редакциялық-баспа кеңесінің шешімімен қайта басылды

Санкт-Петербург мемлекеттік политехникалық университеті.

© Щербина А.Н., Нечаев П.А., 2012

© Санкт-Петербург штаты

Политехникалық университет, 2012 ж

ISBN 978-5-7422-3553-8


Кіріспе .. 7

1-тарау. MCS51 отбасының архитектурасы. 10

1.1 Жалпы сипаттамалар 10

1.2 Блок-схема 11



1.3 8051 15 микроконтроллердің қорытындыларының мақсаты

1.4 Жадты ұйымдастыру 17

1.4.1 Бағдарлама жады (ROM) 18

1.4.2 Деректер жады (RAM) 19

1.4.3 Арнайы функциялардың регистрлері. жиырма

1.4.4 Жалаулар тізілімі (PSW) 23

1.5 Басқару және синхрондау құрылғысы 26

1.6 Енгізу/шығару порттарын орналастыру 27

1.6.1 Негізгі ақпарат. 27

1.6.2 Балама функциялар. 27

1.7. 8051 микроконтроллерлер үшін таймерлер / есептегіштер.28

1.7.1. Таймер-санауыштардың құрылымы. 28

1.7.2 Таймер-есептегіштердің жұмыс режимдері. отыз

1.8. Сериялық порт 32

1.8.1. Сериялық порт құрылымы. 32

1.8.2. Трансиверді басқару / күй регистрі SCON .. 34

1.8.3. Қуатты басқару регистрі PCON .. 36

1.9. Үзу жүйесі 37

1.9.1. Үзіліс жүйесінің құрылымы. 37

1.9.2 Үзу тәртібін орындау. 40

2-тарау. 80C51GB микроконтроллерінің мүмкіндіктері .. 42

2.1 Мүмкіндіктер 42

2.2 Енгізу/шығару порттары P0-P5 43

2.2.1 Енгізу-шығару порттарының жұмыс істеуі. 43

2.2.2 Портқа жазу .. 46

2.3 8XC51GB үзу жүйесінің мүмкіндіктері .. 49

Үзілістерді қосу/өшіру. 50

Басымдылықты басқаруды үзу. 51

Сыртқы үзілістер. 54

2.3. ADC түйіні 56

2.4. Аппараттық бақылаушы 61

2.5. Сағат қатесін анықтау 63

2.6. RSA 64 бағдарламаланатын есептегіштердің матрицасы

2.6.1. PCA құрылымы .. 64

2.6.2. PCA санауыш режимінің регистрі (CMOD) 66

2.6.3. PCA есептегіш басқару регистрі (CON) 67

2.6.4. Модульдерді салыстыру / тапсыру. 68

2.7. Кеңейтілген сериялық порт 76

2.8. Таймерлер / Есептегіштер 79

8XC51GB тобындағы микроконтроллерлердің түйреуіштері .. 86

3-тарау. MK 8051GB бағдарламалау .. 89

3.1. Бағдарламалау моделі 89

3.2 Деректер түрлері 93

3.3 93 деректерін адрестеу әдістері

3.4 Командалық жүйе 95

3.4.1 Жалпы сипаттамалар. 95

3.4.2 Команда түрлері. 96

3.4.3 Операндтардың түрлері. 97

3.4.4 Микроконтроллер мәліметтерін тасымалдау командалары. 98

3.4.5 Арифметикалық амалдарға арналған командалар 8051.101

3.4.6 8051.104 микроконтроллердің логикалық операцияларының командалары

3.4.7 8051.106 микроконтроллердің биттерімен операцияларға арналған командалар

3.5 Түзету бағдарламалары 111

4 тарау. ASM-51 программалау тілі. 112

4.2 Бағдарлама мәтінін жазу 113

4.3 Тілдің әліпбиі. 114

4.4 Идентификаторлар. 115

4.5 117 сандар

4.6 Директивалар 118

4.7 ASM51 тілінде ішкі бағдарламаларды енгізу 122

4.7.1 ASM51 тіліндегі ішкі бағдарлама-процедураның құрылымы. 122

4.7.2 Ішкі бағдарламаға айнымалы параметрлерді беру. 123

4.7.3 ASM51 тілінде ішкі бағдарлама функцияларын жүзеге асыру. 123

4.7.4 ASM51 тілінде үзілістерді өңдеу тәртібін енгізу. 124

4.8 Құрылымдық бағдарламалауассемблер тілінде. 125

4.9 Көпмодульді бағдарламаларды таратудың ерекшеліктері 126

4.10 Сегменттерді пайдалану 128

4.10.1 МК жадын сегменттерге бөлу .. 128

4.10.2 Абсолютті жады сегменттері. 129

4.10.2 Қайталанатын жады сегменттері. 131

5-тарау. Бағдарламалау тілі С-51. 134

5.1 Тілдің жалпы сипаттамасы 134

5.3 Бағдарлама құрылымы С-51 136

5.3. С-51 программалау тілінің элементтері 138

5.3.1. Таңбалар .. 138

5.3.2. Лексикалық бірліктер, бөлгіштер және бос орындардың қолданылуы. 141

5.3.3 Идентификаторлар .. 142

5.3.4 Түйін сөздер. 143

5.3.5 Тұрақтылар .. 143

5.4. Тілдік операторлардағы өрнектер 146

бағдарламалау C-51 146

5.5. Операциялардың басымдықтары 148

5.6. С-51 программалау тілінің операторлары 149

5.6.1. Декларация операторлары. 150

5.6.2 Орындалатын операторлар .. 150

5.6.3 Тағайындау операторы. 151

5.6.4 Шартты оператор. 151

5.6.5 Құрылымдық оператор (). 152

5.6.6 Оператор цикл үшін. 152

5.6.7 while циклінің денесіне дейінгі шартты тексеретін цикл операторы. 153

5.6.8 циклдің операторы do while циклінің денесінен кейінгі жағдайды тексеру. 154

5.6.9 Оператордың үзілуі. 155

5.6.10 Операторды жалғастыру. 155

5.6.11 Коммутаторды таңдау операторы. 155

5.6.12 Goto шартсыз тармақтарының операторы. 157

5.6.13 Оператор өрнегі. 158

5.6.14 Ішкі бағдарламадан қайтару операторы. 158

5.6.15 Бос мәлімдеме. 158

5.7. C-51 бағдарламалау тілінде айнымалыларды жариялау. 159

5.7.1. Айнымалы декларация. 159

5.7.3 Бүтін деректер түрлері. 161

5.7.4 Жылжымалы нүктелі сандар. 162

5.7.5 Санақталған түрдегі айнымалылар. 162

5.7.6. C-51 программалау тілінде массивтерді жариялау. 164

5.7.7. Құрылымдар .. 165

5.7.8. Комбинациялар (қоспалар) 166

5.8. C-51 167-де көрсеткіштерді пайдалану

5.8.1. Көрсеткіштердің декларациясы. 167

5.8.2. Терілмеген көрсеткіштер. 168

5.8.3. Жадқа тәуелді көрсеткіштер. 169

5.9. Жаңа айнымалы типтерді жариялау 169

5.10. Деректерді инициализациялау 170

5.11. С-51 бағдарламалау тілінде ішкі бағдарламаларды қолдану. 170

5.11.1. Ішкі бағдарламаларды анықтау 171

5.11.2. Ішкі программалардың параметрлері 173

5.11.3. Ішкі бағдарламаларды алдын ала жариялау 174

5.11.4 Ішкі бағдарламаларды шақыру .. 176

5.11.5 Ішкі бағдарламаларды рекурсивті шақыру 176

5.11.6 Үзілістерді өңдеу тәртібі. 177

5.11.7 Айнымалылар мен ішкі бағдарламалардың аумақтары 178

5.12. Мультимодальдық бағдарламалар 179

6-тарау. Keil μVision2 біріктірілген әзірлеу ортасында бағдарламаларды дайындау. 182

6.1 ASM-51 тілінде жоба құру 182

6.2 Keil μVision2 интеграцияланған әзірлеу ортасында оқыту контроллері үшін C тілінде жобаны құру мысалы 188

Жаттығу контроллерінің сипаттамасы .. 199-тарау

7.1. Контроллер құрылымы 199

7.2. Мекенжай кеңістігі 200

7.2.1. Жадты бөлу. 200

7.2.2 Сыртқы жад. 201

7.2.3. Ішкі деректер жады. 202

7.3. Енгізу/шығару портын салыстыру 202

7.4. Сериялық порт ……………………………… 203

7.5. LCD 205-пен жұмыс істеу

7.6. Контроллер тақталары ……………………………………………… 213

ҚОСЫМША P2ЛАБОРАТОРИЯ ЕСЕПТІҢ ҚҰРЫЛЫМЫ …… ..217

Қосымша A3 Машина нұсқауларының кодтары. 217

Әдебиеттер ... 224


Кіріспе

Технологиялық процестер мен өндірістерді автоматтандыруға байланысты мамандықтарды дамытуда микроконтроллерлерді зерттеу маңызды бөлімдердің бірі болып табылады.

Әлемде 16 және 32 разрядты микроконтроллерлер мен микропроцессорлардың үздіксіз дамуы мен пайда болуы байқалады, бірақ әлемдік микропроцессорлар нарығының ең үлкен үлесі осы күнге дейін 8 разрядты құрылғыларға тиесілі. Таяу болашаққа аналитикалық компаниялардың барлық болжамдары бойынша әлемдік нарықта 8-разрядты микроконтроллерлердің жетекші позициясы сақталады.

Қазіргі уақытта барлық 8-биттік микроконтроллерлер арасында MCS-51 отбасы сорттар саны мен оның модификацияларын шығаратын компаниялардың саны бойынша сөзсіз көшбасшы болып табылады. Ол өз атауын осы отбасының бірінші өкілі - 8051 микроконтроллерінен алды. перифериялық құрылғылар, сыртқы немесе ішкі бағдарлама жадын икемді таңдау және қолайлы баға осы микроконтроллердің нарықтағы табысын қамтамасыз етті.

MCS-51 отбасының артықшылықтары:

· Де-факто стандарт болып табылатын сәулет;

· Отбасының ерекше кеңдігі және мүмкіндіктерінің алуан түрлілігі;

· Процессорлардың өнімділігі жоғары және кеңейтілген нұсқаларының болуы;

· Еркін қолжетімді бағдарламалық және аппараттық әзірлемелердің айтарлықтай саны;

· Аппараттық бағдарламалаудың қарапайымдылығы, оның ішінде схема ішіндегі бағдарламалау;

· Төмен құны және негізгі чиптердің болуы;

Пайдаланудың ерекше жағдайлары үшін контроллерлердің мамандандырылған нұсқаларының болуы

· Электромагниттік кедергілердің төмендетілген деңгейі бар контроллерлердің нұсқаларының болуы;

· Аға буын әзірлеушілері арасында әлемде де, ТМД елдерінде де кеңінен танымал;

· Әлемнің жетекші оқу орындарының сәулет өнерін қолдауы.

Ақырында, басты артықшылығы: отбасының негізгі чипін игеріп, сіз Cygnal, Dallas Semiconductor, Analog Devices, Texas Instruments микроконтроллерлері сияқты есептеуіш «құбыжықтармен» оңай жұмыс істей аласыз.

MCS-51 тобына ең қарапайым микроконтроллерлерден бастап күрделі микросұлбаларға дейін бірқатар микросұлбалар кіреді. Бүгінгі таңда 20-ға жуық компания шығарған 8051 микроконтроллерлер тобының 200-ден астам модификациясы бар. Жыл сайын осы отбасының өкілдерінің көбірек нұсқалары пайда болады.

Дамудың негізгі бағыттары:

· Жұмыс өнімділігін арттыру (тағаттық жиілікті арттыру және архитектураны қайта құру);

· Қоректену кернеуі мен қуат тұтынуды азайту;

ЖЖҚ көлемінің ұлғаюы және Флеш жадысхемадағы бағдарламалауы бар чипте;

· Микроконтроллердің перифериясына жетекті басқару жүйелері, CAN және USB интерфейстері және т.б. сияқты күрделі құрылғыларды енгізу.

MCS-51 тобының микроконтроллерлері әртүрлі құрылғылар үшін басқару тапсырмаларын орындауға және аналогтық схеманың жеке түйіндерін жүзеге асыруға мүмкіндік береді. Бұл отбасының барлық микросұлбалары бірдей нұсқаулар жиынтығымен жұмыс істейді. Олардың көпшілігі бірдей түйреуішпен бірдей жағдайларда жасалған (корпус үшін аяқтардың нөмірленуі). Бұл құрылғының және бағдарламаның схемасын өзгертпей әзірленген құрылғы үшін әртүрлі өндірушілердің микросұлбаларын пайдалануға мүмкіндік береді.

Әлемдегі 51-ші отбасы сорттарының негізгі өндірушілері - Philips, Siemens, Intel, Atmel, Dallas, Temic, Oki, AMD, MHS, Gold Star, Winbond, Silicon Systems және басқалар.

Кеңейтілген мүмкіндіктері бар MCS-51 тобының (Intel 8XC51FA, 8XC51GB, 80C152) микроконтроллерлерінің аналогтарының сипаттамалары кестеде көрсетілген. IN 1.

В.1-кесте

Жедел Жадтау Құрылғысы Тұрақты Жадтау Құрылғысы PCA ADC WDT T / C Туғаннан кейінгі. Арналар Ерекшеліктер
Атмель: AT89C2051
- - - - UART Flash 2 Кб
AT89C4051 - - - - UART Flash 4Kb
AT89S4D12 128 мың - - - UART, SPI Flash 4Kb
DALLAS жартылай өткізгіш: DS5000FP
- - - + UART Bootstrap жүктеушісі
DS5001FP - - - + UART Bootstrap жүктеушісі
DS8xC520 16 мың - - + 2xUART 2 DPTR
SIEMENS: C505C
16 мың - + + UART, CAN 8 DPTR
C515C 64 мың - + + UART + SSC + CAN 4 PWM, 8 DPTR
Philips: * 89C51RA +
- + - + UART 2 DPTR, 4 lv. үзу, өшіру, жарқыл 8K
P51XAG1x 8K - - + 2 UART
Intel: 8xC51RA
8K - + + UART 4 деңгейлі IRQ, сағаттан шығу
8XC196KC 64 мың 16 мың - + - UART 3 PWM
80C196KB 64 мың 8K - + - UART PWM

1-тарау. MCS51 отбасының архитектурасы

MCS-51 8 разрядты бір чипті микроконтроллерлер жақсы жобаланған архитектурасына байланысты микропроцессорлық басқару жүйесінің конструкторлары арасында өте танымал болды. Микроконтроллер архитектурасы - бұл бағдарламалық қамтамасыз ету қол жетімді аппараттық ресурстар мен нұсқаулық жүйелерінің ішкі және сыртқы жиынтығы. MCS-51 отбасының архитектурасы негізінен оның мақсатымен алдын ала анықталған - ықшам және арзан цифрлық құрылғылардың құрылысы. Бір микросұлбаны пайдаланып микрокомпьютердің барлық функцияларын орындайтын микроконтроллерлер бір микросхемалық компьютерлер (OEVM) деп аталады.

Intel корпорациясы Intel 8051 микроконтроллерінің операциялық ядросының негізінде 50-ге жуық модельді шығарды.Сонымен қатар көптеген басқа фирмалар, мысалы, Atmel, Philips MCS-51 стандартында әзірленген өздерінің микроконтроллерлерін шығара бастады.

Жалпы сипаттамалар

Отбасының негізгі белгілері:

8-бит Орталық Есептеуіш Бөлім(CPU), атқарушы құрылғыларды басқаруға бағытталған;

· Орталық процессордың 8-разрядты аппараттық құралдарды көбейту және сандарды бөлу үшін кірістірілген схемасы бар;

· Нұсқаулар жиынында тікелей адрестелетін разрядтармен жұмыс істеуге арналған операциялардың үлкен санының болуы биттік деректермен жұмыс істеуге арналған процессор туралы айтуға мүмкіндік береді (логикалық процессор);

· Әртүрлі кристалдар үшін көлемі 4-тен 32 Кб-қа дейін болатын маскаланған немесе қайта бағдарламаланған типтегі ішкі (чипте орналасқан) программалық жады, кейбір нұсқаларында ол жоқ;

· Ұйымдастыру, тіркеу банктері, пайдаланушы деректерін стек және сақтау үшін пайдаланылатын резиденттік деректердің ЖЖҚ 128 байттан кем емес;

· Ақпаратты енгізу немесе шығару үшін жеке конфигурацияланған кемінде 32 екі бағытты интерфейстік желілер (порттар);

· Сыртқы оқиғаларды санау, уақыт кідірістерін ұйымдастыру және байланыс портын сағаттау үшін қолданылатын екі 16 разрядты көп режимді есептегіш/таймер;

· Екі бағытты дуплексті асинхронды қабылдағыш (UART), микроконтроллер мен деректерді беру жылдамдығының кең диапазоны бар сыртқы құрылғылар арасындағы байланыс арналарын ұйымдастыруға арналған. Қосылған жүйеге микроконтроллерлерді аппараттық және бағдарламалық қамтамасыз етуді біріктіру құралдары бар;

· Оқиғалардың 4 ішкі және 2 сыртқы көздерінен үзілістердің кемінде 5 векторын қолдайтын екі деңгейлі басымдықты үзу жүйесі;

· Кірістірілген сағат генераторы.

Құрылымдық схема

Контроллердің құрылымдық сұлбасы 1.1-суретте көрсетілген және келесі негізгі функционалдық блоктардан тұрады: басқару блогы, арифметикалық логикалық құрылғы, таймер/санау құрылғысы, сериялық интерфейс және үзу блогы, бағдарлама санауышы, деректер жады және бағдарлама жады. Екі бағытты алмасу ішкі 8-биттік деректер магистралінің көмегімен жүзеге асырылады. MCS-51 отбасының барлық дерлік өкілдері осы схемаға сәйкес салынған. Бұл отбасының әртүрлі микросұлбалары тек арнайы мақсаттағы регистрлерде (порттардың санын қоса) ерекшеленеді.

Уақыт және басқару блогы- оның жұмысының барлық рұқсат етілген режимдерінде OEVM қондырғыларының бірлескен жұмысын үйлестіруді қамтамасыз ететін синхрондау және басқару сигналдарын құруға арналған. Басқару блогына мыналар кіреді:

уақыт интервалдарын қалыптастыруға арналған құрылғы;

енгізу/шығару логикасы;

командалар тізілімі;

электр энергиясын тұтынуды бақылау тізілімі;

командалардың дешифраторы, компьютерді басқару логикасы.

Күріш. 1.1. I8051 контроллерінің құрылымдық диаграммасы.

Уақыт аралығын қалыптастыруға арналған құрылғыфазалардың, тактілердің және циклдердің ішкі синхрондау сигналдарын қалыптастыруға және беруге арналған. Машина циклдарының саны команданың орындалу ұзақтығын анықтайды. Ұзақтығы төрт машиналық циклді құрайтын көбейту және бөлу командаларынан басқа OEVM командаларының барлығы дерлік бір немесе екі машиналық циклде орындалады. Негізгі осциллятор жиілігін F g арқылы белгілейік.Машина циклінің ұзақтығы 12/Fg немесе негізгі осциллятор сигналының 12 кезеңі. Кіріс-шығыс логикасы P0-P3 кіріс/шығыс порттары арқылы сыртқы құрылғылармен ақпарат алмасуды қамтамасыз ететін сигналдарды қабылдауға және шығаруға арналған.

Командалық регистрорындалатын команданың 8-разрядты операциялық кодын жазуға және сақтауға арналған. Операция коды командалық дешифратордың және компьютерді басқару логикасының көмегімен командаларды орындау үшін микропрограммаға түрлендіріледі.

Тұтынуды бақылау тізілімі (PCON)қуатты тұтынуды азайту және микроконтроллерден келетін шу деңгейін төмендету үшін микроконтроллерді тоқтатуға мүмкіндік береді. Қуатты тұтынуды одан әрі азайтуға және шуды азайтуға микроконтроллердің негізгі осцилляторын тоқтату арқылы қол жеткізуге болады. Бұған PCON тұтынуды бақылау тізілімін аздап айналдыру арқылы қол жеткізуге болады. n-MOS (1816 сериясы немесе ортасында «c» жоқ шетелдік микросұлбалар) үшін PCON тұтынуды басқару тізілімінде SMOD сериялық портының жіберу жылдамдығын басқаратын тек бір бит бар және қуатты басқару биттері жоқ.

Арифметикалық логикалық бірлік (ALU)— арифметикалық және логикалық амалдарды орындайтын параллельді сегіз разрядты құрылғы. ALU мыналардан тұрады:

аккумулятор регистрлері, TMP1 және TMP2 ұстау регистрлері;

тұрақтылардың ROM;

қосқыш;

қосымша тізілім (В тізілімі);

батарея (ACC);

бағдарлама күйінің тіркелімі (PSW).

Тіркелу аккумулятор және ұстау регистрлері- операндтарды олармен орындалатын операциялардың ұзақтығына қабылдауға және сақтауға арналған сегіз разрядты регистрлер. Бұл регистрлерге бағдарлама арқылы қол жеткізу мүмкін емес.

ROM тұрақтыларыекілік-ондық деректерді ұсыну үшін түзету кодын, разрядтық операциялар үшін маска кодын және тұрақты кодты құруды қамтамасыз етеді.

Параллель сегіз разрядты қосқышқосудың арифметикалық амалдарын, алудың және қосудың, көбейтудің, тең емес және бірдей логикалық амалдарды орындауға арналған бірізді тасымалдағышы бар комбинациялық типті схема.

Тіркелу В- көбейту және бөлу амалдары кезінде қолданылатын сегіз разрядты регистр. Басқа нұсқаулар үшін оны қосымша супер-оперативті регистр ретінде қарауға болады.

Батарея- арифметикалық-логикалық операцияларды немесе ауыстыру операцияларын орындау кезінде алынған нәтижені қабылдауға және сақтауға арналған сегіз разрядты регистр

Сериялық интерфейс және үзу бірлігі (PIP)ақпараттың дәйекті ағындарын енгізу – шығаруды ұйымдастыруға және бағдарламаларды үзу жүйесін ұйымдастыруға арналған. Блок мыналарды қамтиды:

PIP буфері;

бақылау логикасы;

бақылау реестрі;

таратқыш буфері;

қабылдағыш буфері;

сериялық порт трансивері;

басымдық тізілімін үзу;

үзу қосу регистрі;

үзу жалауын өңдеу логикасы және векторларды генерациялау схемасы.

Бағдарлама есептегішіағымдағы 16 разрядты адресті қалыптастыруға арналған ішкі жадыбағдарламалар және сыртқы бағдарлама жадысының 8/16 разрядтық адрестері. Нұсқаулар есептегіші 16-биттік ДК буферін, ДК регистрін және өсу тізбегін (мазмұнын 1-ге ұлғайту) қамтиды.

Деректер жады (RAM)бағдарламаны орындау процесінде қолданылатын ақпаратты уақытша сақтауға арналған.

P0, P1, P2, P3 порттарыквази-екі жақты енгізу-шығару порттары болып табылады және 32 енгізу-шығару жолын құра отырып, компьютер мен сыртқы құрылғылар арасында ақпарат алмасуды қамтамасыз етуге арналған.

Бағдарлама күй тізілімі (PSW)бағдарламаны орындау кезінде ALU күйі туралы ақпаратты сақтауға арналған.

Бағдарлама жады (EPROM)бағдарламаларды сақтауға арналған және тек оқуға арналған жад (ROM) болып табылады. Әртүрлі микросұлбаларда маска, УК-өшірілетін немесе FLASH ROM қолданылады.

Деректер көрсеткішінің тізілімі (DPTR)сыртқы деректер жадысының 16 разрядты адресін сақтауға арналған.

Стек көрсеткіші (SP)кез келген жад ұяшығын уақытша сақтауға болатын деректер жадының (стек) арнайы аймағын ұйымдастыруға арналған сегіз разрядты регистр болып табылады.

1.3 8051 микроконтроллердің қорытындыларының мақсаты(1.2-сурет)

· U ss – жалпы сымның потенциалы («жер»);

· U cc - негізгі қоректендіру кернеуі +5 В;

· X1, X2 - кварц резонаторын қосуға арналған өткізгіштер;

RST – микроконтроллердің жалпы қалпына келтіру кірісі;

PSEN - сыртқы ROM-ға қатынасу кезінде ғана берілетін сыртқы бағдарлама жадысының рұқсаты;

· ALE – сыртқы жады адресінің стробы;

· ЕА - бағдарламаның ішкі жадын өшіру; бұл кірістегі 0 деңгей микроконтроллерді бағдарламаны тек сыртқы ROM-дан орындауға мәжбүрлейді; ішкі ескермеу (егер соңғысы бар болса);

Күріш. 1.2. PIN тағайындау 8051.

· P1 – сегіз разрядты квази-екі бағытты енгізу/шығару порты, порттың әрбір биті басқа биттердің күйіне қарамастан ақпаратты енгізу үшін де, шығару үшін де бағдарламалануы мүмкін;

· P2 – сегіз разрядты квази-екі бағытты порт, Р1-ге ұқсас, бұл порттың түйреуіштері сыртқы бағдарламаға немесе деректер жадына кіру кезінде адрестік ақпаратты шығару үшін қолданылады (егер соңғысы 16-разрядты адрестеу болса). Сонымен қатар, микроконтроллерге адрестің жоғары ретті разрядтарын енгізу үшін бағдарламалау кезінде порттың түйреуіштері пайдаланылады;

РЗ - сегіз разрядты квази-екі бағытты порт, P1-ге ұқсас, бұл порттың түйреуіштері таймерлерді, сериялық енгізу-шығару портын, үзу контроллерін және сыртқы бағдарлама мен деректерді пайдалану кезінде қолданылатын бірқатар балама функцияларды орындай алады. есте сақтау;

· P0 – мультиплексирленген сегіз разрядты екі бағытты ақпаратты енгізу-шығару порты, осы порт арқылы әртүрлі уақытта адрес пен деректердің төменгі байты шығарылады.

Есте сақтауды ұйымдастыру

Барлық MCS-51 сериясы Гарвард архитектурасына ие, яғни бағдарлама жады мен деректерге арналған бөлек адрестік кеңістіктер. Жад құрылымы суретте көрсетілген. 1.3.

Микросұлба түріне байланысты микросхемада орналасқан ішкі (резиденттік) бағдарлама жадысының (ROM, EPROM немесе OTP ROM) көлемі 0 (ROMсыз), 4К (негізгі кристал), 8К, 16К немесе 32К болуы мүмкін. Қажет болса, пайдаланушы сыртқы ROM орнату арқылы бағдарлама жадын кеңейте алады. Ішкі немесе сыртқы ROM-ға қол жеткізу EA пин (Сыртқы кіру) сигналының мәнімен анықталады:

EA = V cc (қоректену кернеуі) - ішкі ROM-ға кіру;

EA = V ss (жердегі потенциал) - сыртқы ROM-ға қол жеткізу.

ROM (ROM жоқ) кристалдар үшін EA істікшесі V ss-ге тұрақты түрде қосылуы керек.

Күріш. 1.3. MCS-51 отбасының есте сақтау ұйымы

Сыртқы ROM оқу стробы - (Program Store Enable) сыртқы бағдарлама жадына кіру кезінде жасалады және чипте орналасқан ROM-ға кіру кезінде белсенді емес. Бағдарлама жадының төменгі адрестерінің аймағын үзу жүйесі пайдаланады. 8051 чипінің архитектурасы бес үзу көздеріне қолдау көрсетеді:

· Екі сыртқы үзу;

· Таймерлерден екі үзу;

· Сериялық порттан үзілістер.

күріште. 1.4 бағдарлама жадысының төменгі аймағының картасын көрсетеді.

Күріш. 1.4. Төменгі бағдарлама жады картасы

Бағдарлама жады (ROM)

8051 жанұясының микроконтроллерлерінде бағдарлама жады мен деректер жады бір-бірінен тәуелсіз және әр түрлі командалар мен басқару сигналдары арқылы адрестелетін құрылғылардан тәуелсіз.

8051 микроконтроллерінің микросхемасында орналасқан кіріктірілген бағдарлама жадысы 4 Кбайт (отбасында 32-ге дейін). Бағдарламаның сыртқы жадына қатынасу кезінде 8051 отбасының барлық микроконтроллерлері әрқашан 64 КБ ROM жадысына рұқсат беретін 16 разрядты адресті пайдаланады. Микроконтроллер операциялық кодты және операндтарды оқу кезінде (ДК командалық есептегішін пайдалану), сонымен қатар бағдарлама жадынан байтты батареяға көшіру нұсқауларын орындау кезінде бағдарлама жадына қол жеткізеді. Деректерді көшіру пәрмендері орындалған кезде, деректер оқылатын бағдарлама жады ұяшығын адрестеу ДК есептегішімен де, арнайы екі байттық DPTR деректер көрсеткіші регистрімен де жүзеге асырылуы мүмкін.

Деректер жады (RAM)

Чиптегі деректер жадының көлемі 128 байт. Сыртқы деректер жады 64 КБ дейін болуы мүмкін. Алғашқы 32 байт жалпы мақсаттағы регистрлердің төрт банкіне ұйымдастырылған, сәйкесінше 0 банк - 3 банк деп белгіленеді. Олардың әрқайсысы R0 – R7 сегіз регистрден тұрады. Бағдарлама кез келген уақытта регистрлік адресациямен қол жетімді болады, олардың саны PSW бағдарламасының күй сөзінің үшінші және төртінші разрядтарында қамтылған регистрлердің бір ғана банкі.

8051 микроконтроллер жадының бит аймағының мекенжайлары

1.1-кесте

Байт мекенжайы (он алтылық) Биттік адрестер
D7 D6 D5 D4 D3 D2 D1 D0
2F 7F 7E 7D 7B
2E
2D 6F 6E 6D
2B 5F 5E 5D
4F 4E 4D 4C 4B
3F 3E 3D 3B
2F 2E 2D 2B
1F 1E 1D 1B
0F 0E 0D 0B 0A
20 сағ

Қалған мекенжай кеңістігін әзірлеуші ​​өз қалауы бойынша конфигурациялай алады: ол стек, жүйе және пайдаланушы деректерінің аумақтарын орналастыра алады. Деректер жады ұяшықтарына екі жолмен қол жеткізуге болады. Бірінші әдіс - жад ұяшығын тікелей адрестеу. Бұл жағдайда ұяшық адресі сәйкес команданың операнды болып табылады. Екінші әдіс – R0 немесе R1 көрсеткіш регистрлерінің көмегімен жанама адрестеу: сәйкес команданы орындау алдында олардың біріне адрестелетін ұяшықтың адресін енгізу керек.

Сыртқы деректер жадына қол жеткізу үшін R0 және R1 регистрлерін немесе 16-биттік DPTR көрсеткіш регистрін пайдалану арқылы тек жанама адрестеу қолданылады.

Мәліметтер жадының бір бөлігі разрядтық аймақ болып табылады, онда арнайы разрядтық нұсқаулардың көмегімен жад ұяшықтарының әрбір бит адресациясын жасауға болады. Тікелей адрестелетін разрядтардың адресі (БайтАдрес) (бит) түрінде де жазылуы мүмкін. Бұл екі адрестеу әдісінің сәйкестігін кестеден анықтауға болады. 1.1.

MCS-51 жанұясының микроконтроллерлері Гарвард архитектурасы бойынша құрастырылған, оларда программа жады мен деректер жады бөлінген, өздерінің адрестік кеңістіктері және оларға қол жеткізу тәсілдері бар.

Бағдарлама жады


Жадтың максималды көлемі 64К байт, оның 4К, 8К, 16К немесе 32К байт жады (7.3.1-кесте) микросхемада орналасқан, қалғаны матрицаның сыртында.
EA терминалындағы кернеумен = V CC ішкі жады да, сыртқы жады да пайдаланылады, EA = V CC = 0 - тек сыртқы жады.
7.3.1-кестеде көрсетілген бағдарлама жады мекенжайларыкөрсетілген жағдайлар үшін.
Бағдарлама жадының төменгі аймағы микроконтроллерді іске қосу үшін сақталған ( бастапқы мекенжайҚалпына келтіруден кейін 0000сағ) және үзулерді өңдеу үшін (үзу мекенжайлары 8 байт интервалмен орналасқан: 0003h, 000Bh, 0013h және т.б.).


Бағдарлама жады тек оқуға арналған және қол жеткізген кезде:

● дейін сыртқы жадыбағдарламаларда ¯PSEN сигналы жасалады және әрқашан 16-биттік мекенжай қалыптасады.
Мекенжайдың төмен байты машина циклінің бірінші жартысында P0 порты арқылы беріледі және регистрдегі ALE стробының шетінде бекітіледі.
Циклдің екінші жартысында Р0 порты МК-ға сыртқы жадтан мәліметтердің бір байтты енгізу үшін пайдаланылады.
Адрестің жоғары ретті байты P2 порты арқылы жадыға қол жеткізудің барлық уақытында беріледі (7.1.11-сурет);

● дейін ішкі жадыоқу сигналы жасалмайды және микроконтроллердің ішкі шинасында алмасу циклдері қолданылады.

Деректер жады

Ішкі жадымәліметтерді шартты түрде үш блокқа бөлуге болады (7.3.2-кесте).

Ішкі жад әрқашан тек 256 жад орнын мекендеген байтпен адрестеледі.
Сондықтан 7.3.2-кестеден көріп отырғанымыздай, ішкі оперативті жадының жоғарғы 8-разрядты ұяшықтарын және бір адрестік кеңістікті алатын SFR арнайы функциялардың регистрлерін адрестеу үшін командалар адрестеудің әртүрлі әдістерін қолданады: жанама және тікелей.

Ішкі жедел жадының төменгі аймағын ұйымдастыру ерекшеліктері 7.3.3 кестеде көрсетілген.

Төмен 32 байт ішкі жедел жады 00h мекенжайлары бар.
1Fh әрқайсысы сегіз регистрі бар төрт банкке топтастырылған (R0.R7).
Келесі 16 байт жедел жады 20 сағ мекенжайлары бар.
2Fh 8 × 16 = 128 бит жад аймағын білдіреді, бұл әрбір жеке битке қол жеткізуге мүмкіндік береді.
Банк регистрінің мекенжайын таңдау үшін оның R0 атауы қолданылады.
R7, банкті таңдау үшін – PSW күй сөзінің регистрінің RS0, RS1 биттері.

Бит адрестері

Бит адрестері 7.3.3-кестеде келтірілген.

Адресация жүргізіледі тікелейжол.

SFR арнайы функцияларының барлық регистрлерінің тізбесі олардың мекенжайларымен 7.2.2-кестеде келтірілген.
Түсінікті болу үшін 7.3-кестеде.

4 шоу мекенжай картасын тіркеуSFR MCS-51 отбасының қарастырылған микросұлбаларының.
SFR мекенжайы он алтылық санау жүйесіндегі баған мен жол нөмірлерінің тіркесімі арқылы анықталады.

Мысалы, CMOD регистрінде D9h адресі бар.

Мекен-жайлары 0h немесе 8h әрпімен аяқталатын SFR регистрлері үшін (олар қою қаріппен жазылған), қосымша байтрұқсат биттікадрестеу.

Бұл жағдайда биттің мекен-жайы орналасқан N-ші тіркеубит, XXh + ​​0Nh ретінде анықталады, мұнда XXh - SFR регистрінің мекенжайы, N = 0,7.
Бұл аймақтағы бит адрестері 80H және FFH аралығында болады.
Мысалы, ACC аккумуляторының бит адрестері E0h-E7h диапазонында жатыр.

Сыртқы жадыдеректер (64 КБ дейін) MC-ге қосылған қосымша жад микросхемаларымен жасалады.
Сыртқы деректер жадымен жұмыс істеу үшін арнайы командалар пайдаланылады, сондықтан сыртқы және ішкі жадтың адрестік кеңістіктері бір-біріне сәйкес келмейді, сондықтан деректер жадының екі түрі де бір уақытта қолданылуы мүмкін.

Сыртқы деректер жадысының ұяшықтарына қол жеткізу үшін пайдаланылады (7.1.8-сурет):
● жанама адресациясы бар командалар;
● ¯RD оқу және ¯WR жазу сигналдары;
● мекенжайдың ең аз маңызды байтын жіберуге және деректер байттарын қабылдауға/беруге арналған P0 порты;
● Мекенжайдың жоғары ретті байтты жіберуге арналған P2 порты.
Адресті анықтау әдістері.
Командалық жүйе мыналарды пайдаланады:
● тура, жанама, регистрлік, жанама-регистрлік, тура және индекстік адрестеу (базалық және индекстік регистрлердің қосындысы бойынша жанама адрестеу) бастапқы операндтар;
● тікелей, регистрлік және жанама-регистрлік адрестеу тағайындалған операндтар.
Осы әдістердің комбинациясы (адрестеу) 21 адрестеу режимін қамтамасыз етеді.
Бұл пәрмен жүйесі және төмендегі кестелер келесі белгілерді пайдаланады:

Тікелей адрестеу.

Бұл адрестеу әдісімен байт немесе деректер битінің орны екінші (және үшінші) команда байтының 8 разрядты адресімен анықталады.
Тікелей адрестеу тек ішкі деректер жадына (ЖЖҚ ​​128 байттан төмен) және арнайы функция регистрлеріне қол жеткізу үшін қолданылады.

Адресті тіркеу.


Бұл адрестеу әдісі сегіз R0 регистрлерінің бірінде сақталған деректерге қол жеткізуді қамтамасыз етеді.
Жұмыс регистрлерінің ағымдағы банкінің R7.
Сондай-ақ оны A, B, AB регистрлеріне (қос регистр), DPTR көрсеткіш регистріне және C жалауын тасымалдау үшін пайдалануға болады.
Бұл регистрлердің адресі операциялық кодқа енгізілген, осылайша команда байттарының санын азайтады.

Жанама регистрлік адрестеу.


Бұл жағдайда деректердің адресі көрсеткіш регистрінде сақталады, оның орналасуы операциялық кодпен анықталады.
Бұл адрестеу әдісі сыртқы жедел жадыға және ішкі жедел жадтың жоғарғы жартысына қол жеткізу үшін қолданылады.
8-разрядты адрестердің регистрлері-көрсеткіштері жұмыс регистрлерінің таңдалған банкінің R0, R1 регистрлері немесе SP стектің көрсеткіші болуы мүмкін, 16-разрядты адрестеу үшін тек деректер көрсеткіші регистрі DPTR қолданылады.

Тікелей адрестеу.


Бұл адрестеу әдісімен деректер командада тікелей көрсетіледі және команданың екінші (немесе екінші және үшінші) байттарында орналасады, яғни.
жадты адрестеу қажет емес.
Мысалы, MOV A, № 50 командасы бойынша 50 саны А аккумуляторына жүктеледі.

Индекстелген адрестеу.


Бұл әдіс жанама регистрлік адрестеу болып табылады, онда деректер байт мекенжайы базалық (DPTR немесе ДК) және индекс (A) регистрлерінің мазмұнының қосындысы ретінде анықталады.
Жол тек бағдарлама жадына қол жеткізу үшін және тек оқу режимінде қолданылады;бұл бағдарлама жадына бекітілген кестелерді қарауды жеңілдетеді.

Командалық құрылым.

Команданың ұзындығы бір (49 команда), екі (45 команда) немесе үш (17 команда) байт.
Пәрменнің бірінші байты әрқашан операция кодын (OP) қамтиды, ал екінші және үшінші байт операндтардың мекенжайлары немесе дереу деректер мәндері болып табылады.

Операнд ретінде жеке биттерді, тетрадаларды, байттарды және қос байтты сөздерді қолдануға болады.
Командалардың 13 түрі бар, олар 7.3.5-кестеде көрсетілген:

● A, PC, SP, DPTR, Rn (n = 0, 7) - аккумулятор, инструкциялық есептегіш, стек көрсеткіші, деректер көрсеткішінің регистрі және ағымдағы банк регистрі;
● Rm (m = 0, 1) - жанама адресация үшін қолданылатын ағымдағы банктің тізілімі;
● тікелей – тікелей адрестелген операндтың 8-разрядты адресі;
● бит – тікелей адрестелген биттің адресі;
● rel – көшудің салыстырмалы адресі;
● addr11, addr16 - 11 және 16-разрядты абсолютті өту адресі;
● # data8, # data16 - 8- және 16-биттік ұзындықтағы тікелей деректер (операндтар);
● A10, A9, A0 – 11-разрядты адрестің жеке разрядтары;
● (.) - жақшада көрсетілген мекенжайдағы жад ұяшығының мазмұны;
● SB, MB – 16-разрядты операндтың жоғары және төменгі байттары.

Командалар жүйесі туралы жалпы мәліметтер.

Командалық жүйе бит, жазу кітапшасы, байт, қос байт сөздер түріндегі деректерді өңдеуге, сонымен қатар нақты уақыт режимінде басқаруға үлкен мүмкіндіктер береді.
Командаларды сипаттау үшін ASM51 макро ассемблер тілі қолданылады. Көптеген командалар үшін синтаксис орындалатын операцияның мнемоникалық (қысқартылған) және одан кейін операндтардан тұрады.
Белгілеу үшін операндтар қолданылады әртүрлі жолдарадрестеу және деректер түрлері.

Атап айтқанда, MOV аббревиатурасында әртүрлі адрестік кеңістіктердегі мәліметтердің үш түрін (биттер, байттар, мекенжайлар) өңдеуге арналған 18 түрлі нұсқаулар бар.
Командалар жинағында 33 МК функциясын нақтылау үшін командалардың 111 түрінің 42 мнемоникалық белгілері бар.

111 команданың 64-і бір машиналық циклде, 45-і екі циклде және тек екі команда (MUL – көбейту және DIV – бөлу) 4 циклде орындалады. 12 МГц тактілік генератор жиілігімен машина циклінің ұзақтығы (12 тактілік цикл) 1 мкс құрайды. Авторы функционалдық қасиетікомандаларды бес топқа бөлуге болады. Төменде кесте түрінде берілген әр топтың командаларының сипаттамасы берілген. Кестелердің жинақылығы үшін командалар тобын бөліп алайық (7.3.6-кесте), олардың орындалуы әсер етеді(+ белгісімен белгіленген) жалаулардың күйі туралыкүй сөзі тіркелімі PSW.

Мәліметтерді тасымалдау командалары

Тасымалдау командаларын бөлек ішкі топтарға бөлуге болады.
Ішкі жад ұяшықтары арасында мәліметтерді тасымалдау және алмасу командалары(7.3.7-кесте).

Мнемоникалық MOV dest, src бар 1-16 пәрмендері жіберу src көзінен тағайындалған мақсатқа дейінгі деректердің байт немесе екі байты (16 пәрмені), бұл кезде:
● көрсету көзі(src) адрестеудің төрт әдісі қолданылады: регистрлік (2-4, 6, 8 командалар), тікелей (1, 7, 9, 11 командалар), жанама (5, 10 командалар) және тікелей (12-16 командалар);
● көрсету қабылдағыш(тағдыр) үш әдіс қолданылады: регистрлік (1, 3 ... 5, 9, 12, 14, 16 командалар), тікелей (2, 7, 8, 10, 13 командалар), жанама (6, 11, 15 командалар).

17-20 командалар қамтамасыз етеді айырбастауішкі деректер жадысының екі ұяшығы арасындағы ақпарат (немесе екі жақты тасымалдау).
XCH командалары орындалғанда байттар алмасады, XCHD командасының А байт операндтарының төменгі тетрадаларымен алмасады.

Ұяшықтардың бірі әрқашан аккумулятор А. Басқа ұяшық ретінде байт алмасу кезінде ағымдағы банктің Rn регистрлерінің бірі пайдаланылады, А сонымен қатар ішкі жадтың тікелей немесе жанама адрестелетін ұяшығы болып табылады; тетрадалармен алмасу кезінде – ішкі жадтың жанама адрестелетін ұяшығы ғана.

Барлық MCU құрылғыларында стек ішкі жедел жадта орналасқандықтан, бұл ішкі топты қамтиды командалар(20, 21) стекке қол жеткізу PUSH src, POP мақсаты.
Бұл пәрмендер стекке байтты жазу немесе оны стектен қалпына келтіру үшін тікелей адрестеу әдісін ғана пайдаланады.
ЖЖҚ-да жоғарғы 128 байт жоқ MCU-де стекті 128 байттан жоғары ұлғайту деректердің жоғалуына әкелетінін есте ұстаған жөн.

Ішкі және сыртқы деректер жады арасындағы мәліметтерді тасымалдау командалары(7.3.8-кесте).

Бұл командалар тек жанама адрестеуді пайдаланады, бұл ретте бір байттық адрес ағымдағы регистрлер банкінің P0 немесе R1-де орналасуы мүмкін, ал екі байттық адрес DPRT деректер көрсеткішінің регистрінде орналасуы мүмкін.
Сыртқы жадқа кез келген қол жеткізуде А батареясы ішкі жадта қабылдағыш немесе операндтар көзі рөлін атқарады.

Бағдарлама жадынан мәліметтерді тасымалдау нұсқаулары(7.3.9-кесте).

Бұл командалар бағдарлама жадынан кестелерді оқуға арналған.

MOVC A, @ A + DPTR нұсқауы 0-ден 255-ке дейінгі кірістер саны бар кестеге сілтеме жасау үшін қолданылады.

Кестенің қажетті жазбасының нөмірі аккумуляторға жүктеледі, ал DPTR регистрі кестенің бастапқы нүктесіне орнатылады. Басқа пәрменнің айрықша ерекшелігі - бағдарламалық есептегіш ДК базалық көрсеткіш ретінде пайдаланылады және кестеге ішкі бағдарламадан қол жеткізу. Алдымен аккумуляторға қажетті кіру нүктесінің нөмірі жүктеледі, содан кейін MOVC A, @ A + PC командасы арқылы ішкі бағдарлама шақырылады. Кестеде 1-ден 255-ке дейінгі сандары бар 255 кіріс болуы мүмкін, өйткені 0 ішкі бағдарламаның шығуының RET командасының адресі үшін пайдаланылады.

Арифметикалық мәліметтерді өңдеу командалары. Барлық арифметикалық командалар таңбасыз бүтін сандарда орындалады. Екі операнд бойынша амалдар(7.3.10-кесте). Операцияларда толықтыруларҚОСУ, өткізу қосымшасы ADDC және несиелік шегерім SUBB:

● бір 8-разрядты операндтың көзі және нәтижені қабылдаушы аккумулятор болып табылады;
● басқа операндтың көзі не ағымдағы банктің Rn (n = 0-7) жұмыс регистрлерінің бірі болып табылады, немесе тікелей тікелей немесе жанама @Rm (m = 0, 1) жедел жадтың мекенжайлық жад орны немесе тікелей деректер #деректер.

Операциялар көбейту MUL және бөлу DIV A және B регистрлерінің мазмұны бойынша орындалады. Көбейту кезінде нәтиженің жоғарғы 8 биттері В регистріне, төменгі 8 биттері А регистріне жазылады.
Өнім 255-тен үлкен болса, OV толып кету жалауы орнатылады; тасымалдау жалауы C әрқашан тазаланады. DIV командасы А аккумуляторының 8 разрядты операнды В регистрінің 8 разрядты операндына бөледі.
Бөлу кезінде бөлінді (ең маңызды разрядтар) регистрге А-да, қалғаны (ең аз маңызды разрядтар) - В-де жазылады. C тасымалдау жалаулары және толып кету OV тазаланады.
0-ге бөлу әрекеті OV толып кету жалауын орнатады. Бөлу операциясы көбінесе ауысымдар мен базалық түрлендірулер үшін қолданылады.

Бөлу кезінде екілік сан 2 Н-ға, ол N битке солға жылжиды.
Қосымша разрядтар В регистріне беріледі.

Бір байт операндтары бойынша операциялар(7.3.11-кесте).

DA командасы BCD операцияларын орындау үшін қолданылады. INC, DEC командалары сәйкесінше жад ұяшығының мазмұнын бір есе арттыруға немесе азайтуға мүмкіндік береді.
Олар A аккумуляторының мазмұнына, Rn жұмыс регистрлерінің біріне немесе тікелей және жанама түрде адрестелген жад ұяшығына қолданылады.
Көбейту әрекеті 16-биттік DPTR көрсеткіш регистрінің мазмұнына да қолданылады.

Логикалық командалар.

Қосарлы операциялар

(7.3.12-кесте).

AML, ORL, XRL командалары 8-разрядты операндтарда екі орынды үш логикалық операцияны орындауға мүмкіндік береді: ANL – логикалық көбейту (ЖӘНЕ), ORL – логикалық қосу (OR), XRL – эксклюзивті НЕМЕСЕ (XOR).
Операндтардың жеке биттері бойынша операциялар орындалады. Операндтардың бірінің көзі және бір уақытта нәтижені қабылдаушы не аккумулятор (А) немесе тікелей адрестелетін жады ұяшығы (тікелей) болып табылады.
Басқа операндтың көзі үшін регистр, тура, жанама немесе тікелей адрестеу әдісі қолданылады.

Бірыңғай операциялар

(7.3.13-кесте).
Топ сондай-ақ A аккумуляторының мазмұны бойынша бірқатар жалғыз операцияларды қамтиды: анық (CLR), логикалық толықтыру немесе инверсия (CPL), оңға (RL, RLC) және солға 1 битке циклдік және кеңейтілген циклдік ығысулар (RR, RRC), алмасу тетрадалары немесе байттың 4 битке циклдік ығысуы (SWAP), A да бос операция (NOP), нәтижесінде барлық MC регистрлерінің күйі (бағдарлама санауышынан басқа) өзгеріссіз қалады.

Тасымалдау командаларын басқару

Шартсыз секіру пәрмендері

(7.3.14-кесте).

1-3 пәрмендері тағайындалған мекенжай пішімінде ғана ерекшеленеді.

LJMP (L - Long) командасы көрсетілген addr16 мекенжайына «ұзын» сөзсіз өтуді орындайды, екінші және үшінші команда байттары бар ДК есептегішін жүктейді.
Пәрмен 64К байт мекенжай кеңістігіндегі кез келген нүктеге өтуді қамтамасыз етеді.

AJMP (A - абсолютті) пәрмені 2К байт бетіндегі мекенжайға «абсолютті» өтуді қамтамасыз етеді, оның бастапқы мекенжайы ДК бағдарламасы санауышының ең маңызды бес битімен орнатылады (бастапқыда ДК мазмұны болып табылады). 2-ге өсті).

SJMP (S - Қысқа) пәрмені мекенжайға «қысқа» сөзсіз өтуге мүмкіндік береді, ол бұрын 2-ге ұлғайтылған ДК есептегішінің мазмұнымен екінші команда байтындағы қол қойылған офсет rel қосу арқылы есептеледі.

Секіру мекенжайы пәрмен мекенжайына қатысты -128 + 127 байт ішінде.
64 килобайттық мекенжай кеңістігіндегі кез келген басқа нүктеге өту үшін жанама @ A + DPTR мекенжайы бар 4 пәрменін де пайдалануға болады.
Бұл жағдайда А мазмұны таңбасыз бүтін сан ретінде түсіндіріледі.

Нөлдік операция (NOP), нәтижесінде барлық микропроцессорлық регистрлердің күйі (бағдарлама санауышынан басқа) өзгеріссіз қалады.

Шартты тармақ командалары

(7.3.15-кесте).

JZ және JNZ командаларының көмегімен аккумулятордың мазмұны сәйкесінше тең немесе нөлге тең болмаса, секіру орындалады.
Секіру мекенжайы 2 (байттағы пәрмен ұзындығы) қосқаннан кейін ДК пәрмен есептегішінің мазмұнына салыстырмалы ығысу rel белгісін қосу арқылы есептеледі.

Батареяның мазмұны өзгеріссіз қалады.
Пәрмендер жалаушаларға әсер етпейді.

CJNE (3-6) командалары екі 8 разрядты операндтарды салыстыру нәтижесіне негізделген шартты секіруді жүзеге асыру үшін пайдаланылады, олардың орналасуы командаларда көрсетілген.
Егер олардың мәндері тең болмаса, тармақ жасалады.

Секіру мекенжайы бұрын 3-ке ұлғайған ДК есептегішінің мазмұнымен ығысу rel қосу арқылы есептеледі.
В әйтпесекелесі пәрмен орындалады.

Алгоритм бағаны салыстырылған 8-разрядты операндтардың мәндерінің C тасымалдау жалауына әсерін көрсетеді.
DJNZ (7) командалары бағдарлама циклдерін ұйымдастыруға арналған.

Rn регистрі немесе тікелей адрестелетін орын циклды қайталау есептегіші болып табылады, ал rel ығысуы (екінші және үшінші команда байттарында) цикл басына өтудің салыстырмалы мекенжайы болып табылады.
Командалар орындалғанда, санауыштың мазмұны біреуге азаяды және нөлге тексеріледі.
Есептегіштің мазмұны нөлге тең болмаса, циклдің басына көшу орындалады.
Әйтпесе, келесі пәрмен орындалады.

Секіру мекенжайы бұрын пәрмен ұзындығына (2 немесе 3-ке) ұлғайтылған есептегіш мазмұнға ығысуды қосу арқылы есептеледі.
Командалық жалаушаларға әсер етпейді.

Ішкі бағдарламаларды шақыруға және бағдарламалардан оралуға арналған командалар

(7.3.16-кесте).
LCALL ұзақ қоңырау және ACALL абсолютті қоңырау пәрмендері шартсыз шақырукөрсетілген мекенжайда орналасқан ішкі бағдарлама.

Бұл нұсқаулардың жоғарыда қарастырылған шартсыз өту нұсқауларынан айырмашылығы - олар стекте негізгі бағдарламаға қайтарылатын адресті (санауыштың мазмұнын) сақтайды.
RET ішкі бағдарламасының қайтару пәрмені стектен бағдарлама есептегішінің мазмұнының мәнін қалпына келтіреді, ал RETI пәрмені де қызмет деңгейінің үзілістерін қосады.

Салыстырмалы адрестеу басқаруды тасымалдау командаларында кеңінен қолданылады, ол ауыстырылатын бағдарлама модульдерін қолдайды.
8-биттік қол қойылған офсет rel салыстырмалы адрес ретінде әрекет етеді, ол ДК есептегішінің ағымдағы орнынан екі бағытта ± 127 байтқа тармақталуын қамтамасыз етеді.

64Кбайт мекенжай кеңістігіндегі кез келген басқа нүктеге өту үшін тікелей addr16 мекенжайын немесе жанама @ A + DPTR мекенжайын пайдалануға болады.
Соңғы жағдайда А мазмұны таңбасыз бүтін сан ретінде түсіндіріледі.

2К-байт көлеміндегі adr11 қысқа тікелей адрестеу нұсқасы ағымдағы бет MK48 архитектурасымен үйлесімділік үшін енгізілген.

Барлық осы адрестеу түрлері тек тармақтық операцияға ғана қолданылуы мүмкін, ал шақыру операциясы үшін тек тікелей addr16 және ішкі addr11 адрестеу әдістеріне рұқсат етіледі.
Барлық шартты операцияларда тек салыстырмалы адрестеуді қолдануға болады.

MK51 үзу сұрауын таныған кезде, ол қайтару мекенжайының стекте сақталуын автоматты түрде қамтамасыз ететін LCALL addr16 нұсқауларының бірін жасайды.
Дегенмен, MK48-ден айырмашылығы, MK51-де автоматты түрде сақталған күй ақпараты жоқ.

Бұл жағдайда үзіліс логикасы қызметке қабылданған деңгейдегі сұраныстарға жауап беруді тоқтатады.
Үзіліс деңгейін төмендету үшін RETI үзуінен қайтару пәрмені пайдаланылады, ол RET-ке баламалы операциядан басқа үзуді қосу операциясын қамтиды. бұл деңгей.
JZ, JNZ операциялары да МК51 стандартты шартты операцияларға жатады.
Дегенмен, CJNE «Салыстыру және бару» жаңа операциясы бар.

Бұл пәрмен үшін операнд алдымен тұрақтысы бар бүтін сандарды алу ережелері бойынша салыстырылады, ал салыстыру нәтижесіне сәйкес CY жалауы қойылады.Содан кейін тұрақтымен сәйкес келмеген жағдайда тармақталу жүргізіледі. орындалды. Аккумуляторды, регистрді немесе жад ұяшығын тұрақтылар тізбегімен салыстыру арқылы біз, мысалы, ерекше жағдайларды анықтау үшін сәйкестіктерді тексерудің ыңғайлы әдісін аламыз.

Шын мәнінде, CJNE пәрмені CASE түріндегі жоғары деңгейлі тіл операторының мүшесі болып табылады.

DJNZ командасы одан әрі дамыды.
Енді программалаушы есептегіш ретінде Rn жұмыс регистрлерінің біреуін ғана емес, сонымен қатар кез келген DSEG жады ұяшығын да пайдалана алады.

Биттік операциялар командалары.

Топ бір немесе екі разряд бойынша операцияларды орындауға мүмкіндік беретін 12 командадан (қайта орнату, орнату, разрядты инверсия, А сонымен қатар логикалық ЖӘНЕ және НЕМЕСЕ) және шартты өтулерді жүзеге асыруға арналған 5 командадан тұрады (7.3.17-кесте).

Нұсқаулар 20h мекенжайлары бар ішкі жедел жадтың алты-он бір ұяшықтарында орналасқан 128 биттің тікелей адрестелуін қамтамасыз етеді.
2Fh (7.3.3-кесте) және адрестері сегізге еселік болатын арнайы мақсаттағы регистрлерде орналасқан 128 бит (7.3.4-кестеде қою шрифтпен белгіленген).

Екі бір разрядты операндтармен операцияларды орындау кезінде логикалық жинақтаушы ретінде тасымалдау жалауын С сақтайтын PSW регистрінің флип-флобы қолданылады (кесте 7.1.2).

MOV (1,2) нұсқаулары орындалады жөнелтуішкі жедел жадтың бір тікелей адрестелетін биттік ұяшығынан Flip-flop C-ге немесе керісінше бит.
Сәйкесінше CRL (3, 4), SETB (5, 6) командалары үйіндінөлге немесе орнатубір тасымалдау жалауында C немесе көрсетілген бит.
CPL, ANL, ORL (7-12) командаларының көмегімен инверсия, қосу және көбейтудің логикалық операциялары орындалады.

Топ сонымен қатар салыстырмалы 8-биттік ығысумен шартты тармақтық операцияларды орындауға арналған пәрмендерді (13-17) қамтиды.
Өтпелер бит немесе тасымалдау жалауы орнатылған кезде де (13, 16 командалар) және ол тазартылған кезде де (14, 17 командалар) жүзеге асырылуы мүмкін.

JBC пәрмені есептелген адреске көшумен қатар, шарт (бит) = 1 орындалғанда, бұл битті нөлге қайтарады.
Шартты тармақталу командаларын орындау кезінде тармақтың адресі санауышқа 3 немесе 2 сандарын қосқаннан кейін есептеледі (командадағы байт санын көрсетеді).

ДӘРІС ЖОСПАРЫ

1. Кіріспе

2. Арифметикалық және логикалық нұсқаулар

3. Мәліметтерді тасымалдауға арналған командалар

4. Логикалық операциялар

5. Өту нұсқаулары

1. Кіріспе

Командалық жүйе MCS-51атқарушы құрылғыларды басқаруға арналған 8-биттік алгоритмдерді орындауға арналған нұсқаулардың бір жинағын қолдайды. Шағын деректер құрылымдарында разрядтық операцияларды орындай отырып, ішкі жедел жады адресациясының жылдам әдістерін қолдануға болады. Логикалық алгебраның логикалық және басқару командаларында бөлек биттерді пайдалануға мүмкіндік беретін дербес деректер типі ретінде бір разрядты айнымалыларды адрестеудің кең жүйесі бар.

Адрес режимдері : пәрмендер жинағы MCS-51келесі адрестеу режимдерін қолдайды. Тікелей адрестеу: операнд нұсқаудағы 8 разрядты адреспен анықталады. Тікелей адрестеу ішкі деректер мен регистр жадысының төменгі жартысы үшін ғана қолданылады SFR. Жанама адрестеу: нұсқау операндтың адресін қамтитын регистрге жүгінеді. Адрестің бұл түрі сыртқы және ішкі жедел жады үшін қолданылады. Регистрлерді 8 разрядты адрестерді көрсету үшін пайдалануға болады R0және R1таңдалған тізілімдер банкі немесе стек көрсеткіші SP... 16-биттік адрестеу үшін тек деректер көрсеткішінің регистрі пайдаланылады DPTR.

Нұсқауларды тіркеу : тіркеледі R0 – R7ағымдағы тізілімдер банкіне нұсқаулықтың өзінде тізілім нөмірін көрсететін 3 разрядты өрісі бар нақты нұсқаулар арқылы жүгінуге болады. Бұл жағдайда пәрмендегі сәйкес мекенжай өрісі жоқ. Арнайы регистрлерді қолданатын операциялар: кейбір нұсқаулар жеке регистрлерді пайдаланады (мысалы, батарея операциялары, DPTR, және т.б.). Бұл жағдайда операндтың адресі командада мүлде көрсетілмейді. Ол opcode арқылы алдын ала анықталған.

Дербес тұрақтылар : тұрақты мәнді операциялық кодтан кейінгі пәрменде табуға болады.

Индекстелген адрестеу : индексті адрестеу тек бағдарлама жадына кіру үшін және оқу режимінде ғана пайдаланылуы мүмкін. Бұл режимде кестелер бағдарлама жадында қаралады. 16-биттік регистр ( DPTRнемесе бағдарлама есептегіші) қажетті кестенің негізгі мекенжайын көрсетеді, ал аккумулятор оған кіру нүктесін көрсетеді.

Пәрмендер жинағыосы жүйенің 33 функциясын нақтылау үшін командалардың 42 мнемоникалық белгілері бар. Көптеген ассемблер тілінің пәрмендерінің синтаксисі адрестеу әдістері мен деректер түрлерін көрсететін операндтардан кейін мнемоникалық функция белгілеушісінен тұрады. әртүрлі түрлерідеректер немесе адрестеу режимдері мнемоникалық өзгерістермен емес, орнатылған операндтармен анықталады.

Командалар жүйесін шартты түрде бес топқа бөлуге болады: арифметикалық командалар; логикалық командалар; мәліметтерді тасымалдау командалары; биттік процессор командалары; тармақталу және басқаруды тасымалдау командалары. Командалар жүйесінде қолданылатын аббревиатуралар мен белгілер төменде көрсетілген.

Кесте. Командалар жүйесінде қолданылатын белгілер мен белгілер

Белгі, таңба

Кездесу

Батарея

Ағымдағы таңдалған тізілім банкінің регистрлері

Пәрменде көрсетілген жүктелген регистрдің нөмірі

тікелей

Ішкі деректердің жедел жады орны (0-127) немесе SFR арнайы функция тізілімі (128-255) болуы мүмкін тікелей адрестелетін 8-биттік ішкі деректер ұяшығының мекенжайы.

Ішкі деректер оперативті жадының жанама адрестелетін 8 разрядты ұяшығы

8-бит тікелейоперациялық кодқа (CPC) енгізілген деректер

деректерH

Тікелей 16-биттік деректердің ең маңызды биттері (15-8).

деректерЛ

Тікелей 16-биттік деректердің ең аз маңызды биттері (7-0).

11 биттік тағайындау мекенжайы

addrL

Тағайындалған мекенжайдың ең аз маңызды биттері

8-биттік офсеттік байт

Тікелей адрестелетін бит, оның мекен-жайы ішкі деректердің жедел жадында немесе SFR арнайы функциялар регистрінде орналасқан КҚК-ны қамтиды.

a15, a14 ... a0

Тағайындалған мекенжай биттері

X элементінің мазмұны

X элементінде сақталған мекенжайдағы мазмұн

X элементінің М разряды


+

*
ЖӘНЕ
НЕМЕСЕ
XOR
/ X

Операциялар:
толықтырулар
алу
көбейту
бөлу
логикалық көбейту (ЖӘНЕ операциясы)
логикалық қосу (НЕМЕСЕ операциясы)
қосымша режим 2 (ерекше НЕМЕСЕ)
X элементінің инверсиясы

Функциялық мнемотехника адрестеу әдістері мен деректер түрлерінің арнайы комбинацияларымен бірегей түрде байланысты. Командалар жүйесінде барлығы 111 осындай комбинациялар мүмкін.

2. Арифметикалық және логикалық нұсқаулар

Қалай Н мысал арифметикалық команда, қосу әрекетін келесі командалардың бірімен орындауға болады.

ҚОСУА,7 Ф 16 - А регистрінің мазмұнына 7 санын қосыңыз F 16 және нәтижені А регистрінде сақтаңыз;

ҚОСУА,@ Р0 - А регистрінің мазмұнына адресі болатын санды қосыңыз (@ – коммерциялық сағ ) регистрде сақталадыР 0 (жанама адрестеу) және нәтижені А регистрінде сақтаңыз;

A, R7 ҚОСУ- регистрдің мазмұнын А регистрінің мазмұнына қосуР 7 және нәтижені А регистріне сақтаңыз;

A ҚОСУ, № 127- А регистрінің мазмұнына сақтау орнының мекенжайы 127 болатын санды қосыңыз ( # - сан белгісі) және нәтижені регистрге сақтаңыз Т- қайта А.

Нұсқаудан басқа барлық арифметикалық командалар бір машиналық циклде орындалады INC DPTR(деректер көрсеткішінің ығысуы DPTRкелесі байтқа), бұл екі машиналық циклді, сондай-ақ 4 машиналық циклде орындалатын көбейту және бөлу операцияларын қажет етеді. Ішкі деректер жадындағы кез келген байтты батареяны пайдаланбай-ақ көбейтуге және азайтуға болады.

Нұсқаулар MUL ABөнімді A (төмен жартысы) және В (жоғары жартысы) регистрлеріне орналастыра отырып, аккумулятордағы деректерді В регистріндегі деректерге көбейтуді орындайды.

Нұсқаулар DIV ABаккумулятордың мазмұнын В регистріндегі мәнге бөледі, қалғанын В-да, ал бөліндіні аккумуляторда қалдырады.

Нұсқаулар ДА Аекілік-ондық арифметикалық амалдарға (екілік-ондық кодта көрсетілген сандарға арифметикалық амалдар) арналған. Ол екілік файлды түрлендірмейді екілік ондық, бірақ екі BCD санын қосқанда ғана дұрыс нәтиже береді.

Мысал логикалық команда: Логикалық ЖӘНЕ операциясын келесі пәрмендердің бірімен орындауға болады:

ANLА,7 Ф 16 - А регистрінің мазмұнын 7 санына логикалық көбейту F 16 және нәтиже А регистрінде сақталады;

ANLА,@ Р1 - А регистрінің мазмұнын адресі регистрде сақталатын санға логикалық көбейтуР 1 (жанама адрестеу) және нәтижені А регистрінде сақтаңыз;

ANL A, R6- А регистрінің мазмұнын регистрдің мазмұнына логикалық көбейтуР 6, және нәтижені А регистрінде сақтаңыз;

ANL A, № 53 - сақтау орнының адресі 53 16 болатын санға А регистрінің мазмұнын логикалық көбейту және нәтиже А регистрінде сақталады.

Аккумулятордың мазмұны бойынша барлық логикалық операциялар бір машиналық циклде, қалғандары екіде орындалады. Логикалық операциялар ішкі деректер жадысының төменгі 128 байт кез келгенінде немесе кез келген регистрде орындалуы мүмкін SFR (арнайы функция регистрлері) батареяны пайдаланбай тікелей адрестеу режимінде.

RL A, RLC A және т.б. циклдік ауыстыру операциялары аккумулятордың мазмұнын бір бит оңға немесе солға жылжытады. Солға циклдік ығысу жағдайында ең аз маңызды бит ең маңызды орынға жылжытылады. Оң жақ циклдік ығысу жағдайында керісінше орын алады.

Операция SWAP Aаккумулятордағы кіші және аға дәптерлерін ауыстырады.

3. Мәліметтерді тасымалдауға арналған командалар

Команда MOV dest, srcішкі ЖЖҚ ұяшықтары немесе арнайы функциялардың регистр аймағы арасында деректерді тасымалдауға мүмкіндік береді SFRбатареяны пайдаланбай. Бұл ретте ішкі жедел жадтың жоғарғы жартысымен жұмыс тек жанама адрестеу режимінде жүзеге асырылуы мүмкін, ал регистрлерге қол жеткізу. SFR- тек тікелей адрестеу режимінде.

Барлық микросұлбаларда MCS-51стек деректердің резидент жадына тікелей бөлінеді және жоғары қарай өседі. Нұсқаулар БАСЫҢЫЗалдымен стек көрсеткішінің регистріндегі мәнді арттырады SPсодан кейін деректер байтты стекке итереді. Командалар БАСЫҢЫЗжәне ПОПтек тікелей адрестеу режимінде қолданылады (байтты жазу немесе қалпына келтіру), бірақ регистр арқылы жанама адрестеу кезінде стекке әрқашан қол жетімді. SP... Осылайша, стек деректер жадының жоғарғы 128 байтты пайдалана алады. Дәл осындай ойлар регистрлерді адрестеу үшін стек нұсқауларын пайдалану мүмкіндігін жоққа шығарады. SFR.

Деректерді тасымалдау нұсқаулары 16 биттік тасымалдау операциясын қамтиды MOV DPTR, # деректер16ол деректер көрсеткішінің регистрін инициализациялау үшін пайдаланылады DPTRбағдарлама жадындағы кестелерді қарау кезінде немесе сыртқы деректер жадына қол жеткізу үшін.

Операция XCH A, байтаккумулятор мен адрестелген байт арасында мәліметтер алмасу үшін қолданылады. Команда XCHD A, @ Riалдыңғыға ұқсас, бірақ операндтардың алмасуына қатысатын төменгі тетрадалар үшін ғана орындалады.

Сыртқы деректер жадына қол жеткізу үшін тек жанама адрестеу қолданылады. Бір байт адрестер жағдайында регистрлер қолданылады R0немесе R1ағымдағы регистрлер банкі, ал 16-разряд үшін - деректер көрсеткішінің регистрі DPTR... Сыртқы деректер жадына қол жеткізудің кез келген әдісімен аккумулятор ақпарат көзі немесе қабылдаушы рөлін атқарады.

Бағдарлама жадында орналасқан кестелерге қол жеткізу үшін мына командаларды пайдаланыңыз:

MOVC A, @ A + DPTR ;

MOVC A, @ A + ДК .

Кестенің негізгі адресі ретінде деректер көрсеткіші регистрінің мазмұны пайдаланылады. DPTRнемесе ДК(бағдарлама есептегіші), ал ығысу мына жерден алынады А... Бұл командалар тек бағдарлама жадынан деректерді оқу үшін пайдаланылады, бірақ оған жазу үшін емес.

4. Логикалық операциялар

Микросұлбалар MCS-51құрамында «логикалық» процессор бар. Ішкі жедел жадта 128 тікелей адрестелетін бит бар. Арнайы функция регистрінің кеңістігі SFRсонымен қатар 128 биттік өрістерге дейін қолдау көрсете алады. Биттік нұсқаулар шартты секірулерді, тасымалдауларды, демптерді, инверсияларды, ЖӘНЕ және НЕМЕСЕ операцияларын орындайды.Барлық көрсетілген биттер тікелей адрестеу режимінде қол жетімді.

Тасымалдау CFарнайы функциялар регистрінде «бағдарлама күйінің сөзі PSW«Бульдік процессордың бір разрядты аккумуляторы ретінде пайдаланылады.

5. Өту нұсқаулары

Өтпелі операциялардың адрестері ассемблер тілінде белгі арқылы немесе бағдарлама жады кеңістігіндегі нақты мәнмен көрсетіледі. Шартты тармақты адрестер салыстырмалы ығысуға жинақталады – бағдарлама санауышына қосылған белгі байты ДКөтпелі шарт орындалса. Мұндай ауысулардың шекаралары нұсқаудан кейінгі бірінші байтқа қатысты минус 128 мен 127 аралығында болады. Арнайы функция регистрінде «бағдарлама күйінің сөзі PSW«Нөлдік жалау жоқ, сондықтан нұсқаулар Ж.Зжәне JNZаккумулятордағы деректерді сынау ретінде «нөлге тең» шартын тексеріңіз.

Шартсыз тармақ командасының үш түрі бар: SJMP, LJMPжәне AJMP- тағайындалған мекенжай форматында әртүрлі. Нұсқаулар SJMPмекенжайды салыстырмалы ығысу ретінде кодтайды және екі байтты алады. Секіру қашықтығы келесі нұсқауға қатысты минус 128-ден 127 байтқа дейінгі диапазонмен шектелген. SJMP.

Нұсқауларда LJMPтағайындалған мекенжай 16-биттік тұрақты ретінде пайдаланылады. Пәрмен ұзындығы үш байт. Тағайындалған мекенжай бағдарлама жадының кез келген жерінде орналасуы мүмкін.

Команда AJMP 11 разрядтық мекенжай тұрақтысын пайдаланады. Пәрмен екі байттан тұрады. Бұл нұсқау орындалғанда адрес санауышының төменгі 11 разряды нұсқаулықтағы 11 разрядты адреспен ауыстырылады. Бағдарламалық құрал есептегішінің бес маңызды биттері ДКөзгеріссіз қалады. Осылайша, секіруді 2Кбайттық блок ішінде орындауға болады, онда нұсқаулықтан кейінгі нұсқау орналасқан. AJMP.

Командалық ішкі бағдарламаны шақырудың екі түрі бар: LCALLжәне ACALL... Нұсқаулар LCALLшақырылған ішкі бағдарламаның 16-разрядты мекенжайын пайдаланады. Бұл жағдайда ішкі бағдарлама программа жадысының кез келген жерінде орналасуы мүмкін. Нұсқаулар ACALL 11-биттік ішкі бағдарлама мекенжайын пайдаланады. Бұл жағдайда шақырылатын ішкі бағдарлама келесі нұсқаумен бір 2Кбайт блокта орналасуы керек ACALL... Команданың екі нұсқасы да келесі команданың адресін стекке орналастырады және оны бағдарлама есептегішіне жүктейді ДК сәйкес жаңа мән.

Ішкі бағдарлама нұсқаумен аяқталады RETпәрменнен кейін нұсқауға оралу ҚОҢЫРАУ... Бұл нұсқау стектен қайтару мекенжайын шығарады және оны бағдарлама есептегішіне жүктейді. ДК ... Нұсқаулар RETIүзіліс қызметтерінен оралу үшін пайдаланылады. Жалғыз айырмашылық RETIбастап RETболып табылады RETIжүйеге үзілістерді өңдеудің аяқталғанын хабарлайды. Егер орындау кезінде RETIбасқа үзілістер жоқ, онда ол бірдей RET.

Нұсқаулар DJNZциклдарды басқаруға арналған. Циклды іске қосу үшін Н бір рет мәнмен байтты жүктеу керек Н және пәрменімен цикл денесін жабыңыз DJNZциклдің басталуын көрсетеді.

Команда CJNEоның екі операндын таңбасыз бүтін сандар ретінде салыстырады және салыстырылған операндтар тең болмаса, онда көрсетілген мекенжайға өтеді. Егер бірінші операнд екіншісінен аз болса, онда тасымалдау биті CF «1» мәніне орнатылған.

Құрастырылған түрдегі барлық командалар 1, 2 немесе 3 байтты алады.

Мақала ұнады ма? Достарыңызбен бөлісіңіз!
Бұл пайдалы болды ма?
Иә
Жоқ
Пікіріңізге рахмет!
Бірдеңе дұрыс болмады және сіздің дауысыңыз есептелмеді.
Рақмет сізге. Сіздің хабарламаңыз жіберілді
Мәтіннен қате таптыңыз ба?
Оны бөлектеңіз, басыңыз Ctrl + Enterжәне біз бәрін түзетеміз!