Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Mikroprotsesorni-pristroyi (1)

.pdf
Скачиваний:
59
Добавлен:
02.02.2015
Размер:
3 Мб
Скачать
☆

прапори переривань опитуються на кожному машинному циклі (момент S5P2). Ранжирування переривань по рівню пріоритету виконується протягом наступного машинного циклу. Система переривань викликає (апаратно формує виклик LCALL) програму обслуговування переривань, якщо вона не заблокована однією з наступних умов:

∙в даний момент обслуговується запит переривання рівного або вищого рівня пріоритету;

∙поточний машинний цикл не останній в циклі виконуваної команди;

∙виконується команда, пов'язана із зверненням до регістрів IE і IP.

7

 

0

EA

X

X

ES

ET1

EX1

ET0

EX0

 

 

 

 

 

 

 

 

Біт дозволу зовнішнього переривання 0. Установка/скидання програмою.

Біт дозволу переривання від таймера 0 Установка/скидання програмою.

Біт дозволу зовнішнього переривання 1. Установка/скидання програмою для дозволу/заборони переривань

Біт дозволу переривання від таймера 1. Установка/скидання програмою для дозволу/заборони переривань від таймера 1.

Біт дозволу переривання від УАПП. Установка/скидання програмою для дозволу/заборони переривань від прапорів TI й RI

Зняття блокування переривань. Скидається програмно для заборони всіх переривань незалежно від стану IE4-IE0

Рисунок 5.10 – Призначення бітів регістра дозволу переривань (IE)

141

7

0

X

X

X

PS

PT1

PX1

PT0

PX0

 

 

 

 

 

 

 

 

Біт пріоритету зовнішнього переривання 0. Установка/скидання програмою для присвоєння вищого/нижчого пріоритету зовнішньому перериванню INT0

Біт пріоритету таймера 0. Працює аналогічно РТ1 тільки від таймера 0.

Біт пріоритету зовнішнього переривання 1. Установка/скидання програмою для присвоєння вищого/нижчого пріоритету зовнішньому перериванню INT1

Біт пріоритету таймера 1. Установка/скидання програмою для присвоювання перериванню від таймера 1 вищого/нижчого пріоритету

Біт пріоритету переривання від УАПП. Установка/скидання програмою для присвоєння перериванню від УАПП вищого/ нижчого пріоритету.

Рисунок 5.11 – Призначення бітів регістра пріоритетів переривань (IP)

За адресою вектора переривання повинна бути розташована команда безумовної передачі управління (JMP) до початкової адреси підпрограми обслуговування переривання. Підпрограми обслуговування переривання обов'язково повинні закінчуватися командою RETI. По ній знімається блокування переривання і в лічильник команд із стека перезавантажується збережена адреса повернення в основну програму.

Скидання, режими холостого ходу і зниженого електроживлення

Скидання здійснюється шляхом подачі на вхід СБР (RST) сигналу 1. Для упевненого скидання сигнал 1 повинен утримуватися протягом двох машинних циклів (24 періоди резонатора). Квазідвонаправлені буферні схеми зовнішніх виведень ALE і РSEN знаходяться при цьому в режимі вводу. Скидається вміст таких регістрів: PC, A, B, PSW, DPTR, TMOD, TCON T/C0, T/C1, IE, IP, SCON.

У режимі PCON скидається тільки старший біт. У регістр покажчик стека SP завантажується 07Н. У порти Р0 і Р3 коди 0FFH. Стан SBUF невизначений і

142

на вміст осередків РПД сигнал не впливає.

Режим холостого ходу. Будь-яка команда, по якій встановлюється біт IDL регістра PCON.0, переводить МК51 в режим холостого ходу. При цьому продовжує працювати внутрішній генератор синхросигналів, і всі регістри зберігають свої значення. На виходах всіх портів утримується той логічний стан, який на них був у момент переходу в режим холостого ходу. Вийти з режиму холостого ходу можна по сигналу СБР або по перериванню.

Режим зниженого енергоспоживання. Перехід в режим здійснюється по команді установки біта PD (PCON.1) в 1. При цьому відбувається зупинка генератора синхросигналів, зберігається вміст РПД, РСФ, утримується напруга на виходах портів. Напруга енергоживлення VCC +5B може бути відключена. Живлення здійснюється через виведення RST (СБР). Вихід з режиму зниженого енергоспоживання можливий тільки по сигналу СБР. При цьому вміст регістрів спеціальних функцій перевизначається, а вміст РПД не змінюється.

Примітка. Склад регістра PCON залежить від технології виготовлення контроллера. При n-МОП технології PCON містить всього лише один прапорець SMOD. Повний склад прапорців можна зустріти тільки в КМОП варіантах.

Система команд МК51. Загальні відомості

Система команд, приведена у табл. 5.7, налічує 111 команд, з них: 49 – однобайтних; 45 – двобайтних; 17 – трьохбайтних.

Поява трьохбайтних команд пов'язана з введенням прямої адресації. Всі команди виконуються за один або два машинні цикли. Виняток становлять команди MUL і DIV, які вимагають чотири цикли.

При тактовій частоті 12 Мгц тривалість машинного циклу дорівнює 1 мкс. Більшість двобайтних команд – одноциклові, а всі трьохбайтні команди – двохциклові. Це пояснюється тим, що за один машинний цикл може вводиться

до двох байтів програмного коду.

Всю безліч команд МК51 можна розділити на п'ять груп: пересилки (28); логічних операцій (25); арифметичних операцій (24); передачі управління (17); операцій з бітами (булевого процесора) (17).

143

Таблиця 5.7 – Команди Асемблера МК51

Команди пересилки, обміну і завантаження

Мнемокод

КОП

Т Б Ц

Коментар

 

 

 

 

 

 

 

 

 

 

 

MOV A, Rn

11101rrr

1

1

1

A <= Rn;

MOV A, @Ri

1110011i

1

1

1

A<= (Ri);

MOV A, dir

11100101

3

2

1

A<= (dir);

MOV A, #DAT

01110100

2

2

1

A<=#DAT

MOV Rn, A

11111rrr

1

1

1

Rn <= A;

MOV @Ri, A

1111011i

1

1

1

(Ri) <= A;

MOV dir, A

11110101

3

2

1

(dir)<= A;

MOV DIR, #DAT

1111011i

7

3

2

(dir) <= #DAT;

MOV Rn, #DAT

01111rrr

2

2

1

Rn <= #DAT;

MOV @Ri, #DAT

0111011i

2

2

1

(Ri) <= #DAT;

MOV dir, dir

10000101

9

3

2

(dir) <= (dir);

MOV Rn, dir

10101rrr

3

2

2

Rn <= (dir);

MOV @Ri, dir

1010011i

3

2

2

(Ri) <= (dir);

MOV dir, Rn

10001rrr

3

2

2

(dir) <= Rn;

MOV dir, @Ri

1000011i

3

2

2

(dir) <= (dir);

MOV DPTR, # D16

10010000

3

2

2

DPTR <= #D16;

XCH A, Rn

11001rrr

1

1

1

A <=> Rn;

XCH A, @Rn

1100011i

1

1

1

A <=> (Rn);

XCH A, dir

11000101

3

2

1

A <=> (dir);

XCHD A, @Ri

1101011i

1

1

1

A <=> (Ri);

SWAP A

11000100

1

1

1

Обмін тетрад акумулятора

PUSH dir

11000000

3

2

2

SP <= SP+1; SP <= (dir);

POP dir

11010000

3

2

2

(dir) <= (SP); SP <= SP-1;

MOVX A, @DPTR

11100000

1

1

2

A <= (DPTR);

MOVX @DPTR, A

11110000

1

1

2

(DPTR) <= A;

MOVX A, @Ri

1110001i

1

1

2

A <= (Ri);

MOVX @Ri, A

1111001i

1

1

2

(Ri) <= A;

MOVC A, @A+DPTR

10010011

1

1

2

A <= ((A+DPTR));

MOVC A, @A+PC

10000011

1

1

2

A <= ((A+PC));

ADD A, Rn

00101rrr

1

1

1

A<=A+Rn;

 

 

 

 

 

 

144

Продовження табл. 5.7

Мнемокод

КОП

Т Б Ц

КОМЕНТАР

 

 

 

 

 

 

ADDC A, Rn

00111rrr

1

1

1

A<=A+Rn+C;

ADDC A, @RI

0011011i

1

1

1

A<=A+(Ri)+C;

ADDC A, dir

00110101

3

2

1

A<=A+(dir)+C;

ADDC A, #DAT

00110100

2

2

1

A<=A+#DAT+C;

DA A

11010100

1

1

1

Десяткова корр. аккум.

 

 

 

 

 

Арифметичні і логічні команди

 

 

 

 

 

 

SUBB A, Rn

10011rrr

1

1

1

A<=A-Rn-C;

SUBB A, @Ri

1001011i

1

1

1

A<=A-(Ri)-C;

SUBB A, dir

10010101

3

2

1

A<=A-(dir)-C;

SUBB A, #DAT

10010100

2

2

1

A<=A-#DAT-C;

INC A

00000100

1

1

1

A<=A+1;

INC Rn

00001rrr

1

1

1

Rn<=Rn+1;

INC @Ri

0000011i

1

1

1

(Ri)<=(Ri)+1;

INC dir

00000101

3

2

1

(dir)<=(dir)+1;

INC DPTR

10100011

1

1

2

DPTR<=DPTR+1;

DEC A

00010100

1

1

1

A<=A-1;

DEC Rn

00011rrr

1

1

1

Rn<=Rn-1;

DEC @Ri

0001011i

1

1

1

(Ri)<=(Ri)-1;

DEC dir

00010101

3

2

1

(dir)<=(dir)-1;

MUL AB

10100100

1

1

4

BA<=A*B; Множення А на В

 

 

 

 

 

B<=старший байт, А<=мл. байт

DIV AB

10000100

1

1

4

A•B<=A/B; Ділення А на В,

 

 

 

 

 

А<=байт частки B<=остаток

ANL A, Rn

01011rrr

1

1

1

A<=A & Rn ;

ANL A, @Ri

0101011i

1

1

1

А<=А & (Ri);

ANL A, dir

01010101

3

2

1

А<=А & (dir);

ANL A, #DAT

01010100

2

2

1

А<=А & #DAT;

ANL dir, A

01010010

3

2

1

(dir) <= (dir) & A;

ANL dir, #DAT

01010011

7

3

2

(dir) <= (dir) & # DAT;

ORL A, Rn

01001rrr

1

1

1

A<=A Rn;

ORL A, @Ri

0100011i

1

1

1

A<=A (Ri);

ORL A, dir

01000101

3

2

1

A<=A (dir);

ORL A, #DAT

01000100

2

2

1

A<=A# DAT

 

 

 

 

 

 

145

Продовження табл. 5.7

ORL dir, A

 

01000010

 

3

2

1

 

(dir)<=(dir)/A;

ORL dir, #DAT

 

01000011

 

7

3

2

 

(dir)<=(dir)/ # DAT;

 

 

 

 

 

 

 

 

 

 

 

 

Логічні команди

 

 

 

 

 

 

 

 

 

Мнемокод

 

КОП

 

Т Б Ц

 

 

 

Коментар

 

 

 

 

 

 

 

 

 

 

XRL A, Rn

 

01101rrr

 

1

1

1

 

 

A<=A (+) Rn

XRL A, @Ri

 

0110011i

 

1

1

1

 

A<=A (+) (Ri)

XRL A, dir

01100101

 

3

2

1

 

A<=A (+) (dir)

XRL A, #DAT

01100100

 

2

2

1

 

A<=A (+) # DAT

XRL dir, A

01100010

 

3

2

1

 

(dir)<=(dir) (+) A

XRL dir, #DAT

01100011

 

7

3

2

 

(dir)<=(dir) (+) # DAT

CLR A

11100100

 

1

1

1

 

A<=0; Скидання аккум.

CPL A

11110100

 

1

1

1

 

 

 

 

 

A<= А ; Інверсія аккум.

RL A

00100011

 

1

1

1

 

Циклічне зрушення вліво

RLC A

00110011

 

1

1

1

 

Циклічне зрушення

 

 

 

 

 

 

 

 

вліво через перенесення

RR A

00000011

 

1

1

1

 

Циклічне зрушення вправо

RRC A

00010011

 

1

1

1

 

Циклічне зрушення вправо через

 

 

 

 

 

 

 

 

 

перенесення

 

 

 

 

Команди безумовних переходів і виклику підпрограм

 

 

 

 

 

 

 

 

Мнемокод

 

КОП

 

Т Б Ц

 

 

КОМЕНТАР

 

 

 

 

 

 

LJMP 16ADR

00000010

 

12 3 2

 

PC[0 15]<=16ADR; довг. перехід

AJMP 11ADR

sss00001

 

6 2

2

 

PC[0 11]<=11ADR; абсолютний

 

 

 

 

 

 

 

 

перехід всередині стор. в 2 кбайта

SJMP rel

10000000

 

5

2

2

 

PC<=PC+2+rel; відносний перехід

JMP @A+DPTR

01110011

 

1

1

2

 

PC<=A+DPTR; непрямий відносний

 

 

 

 

 

 

 

 

перехід

LCALL 16ADR

00010010

 

12

3

2

 

(SP)<=PC+3; PC[0 15]<=16ADR;

 

 

 

 

 

 

 

 

довгий виклик підпрограми

ACALL 11ADR

sss10001

 

6

2

2

 

(SP)<=PC+2; PC[0 10]<=11ADR;

 

 

 

 

 

 

 

 

абс. виклик підпрограми в сторінці

 

 

 

 

 

 

 

 

в 2 Кб

 

 

 

 

 

 

 

 

 

 

 

146

Продовження табл. 5.7

RET

00100010

 

1

1

2

PC<=(SP); повернення з підпрог.

RETI

00110010

 

1

1 2

PC<=(SP); повернення з

 

 

 

 

 

 

 

підпрограми обробки переривань

NOP

00000000

 

1 1 1

PC<=PC+1; холоста команда

 

 

 

 

 

 

 

 

 

 

 

Команди умовних переходів

 

 

 

 

 

 

 

 

 

Мнемокод

КОП

Т Б Ц

 

 

 

Коментар

 

 

 

 

 

 

 

 

 

 

 

JZ rel

01100000

 

5

2

2

 

PC<=PC+2+rel, якщо A=0

JNZ rel

01110000

 

5

2

2

 

PC<=PC+2+rel, якщо A< >0

JC rel

01000000

 

5

2

2

PC<=PC+2+rel, якщо прапор C=1

JNC rel

01010000

 

5

2

2

PC<=PC+2+rel, якщо прапор C=0

 

 

 

 

 

 

 

 

 

 

JB bit, rel

00100000

 

11 3

2

 

PC<=PC+3+rel, якщо (bit)=1

JNB bit, rel

00110000

 

11 3

2

 

PC<=PC+3+rel, якщо (bit)=0

JBCbit, rel

00010000

 

11 3

2

 

PC<=PC+3+rel, якщо (bit)=1

CJNE Rn,#DAT,rel

10111rrr

10 3

2

 

PC<=PC+3+rel, якщо Rn< >#DAT;

 

 

 

 

 

 

 

 

C < = 1, якщо Rn < # DAT;

 

 

 

 

 

 

 

 

C<=0, якщо Rn> #DAT

CJNE @Ri, #DAT, rel

1011011i

10 3

2

 

PC<=PC+3+rel,

 

 

 

 

 

 

 

 

якщо (@Ri)< >#DAT;

 

 

 

 

 

 

 

 

C<=1, якщо (@Ri)<#DAT;

 

 

 

 

 

 

 

 

C<=0, якщо (@Ri)>#DAT

CJNE A, #DAT,rel

10110100

 

10 3

2

 

PC<=PC+3+rel, якщо A< >#DAT;

 

 

 

 

 

 

 

 

C<=1, якщо A<#DAT;

 

 

 

 

 

 

 

 

C<=0, якщо A>#DAT

CJNE A, dir, rel

10110101

 

8

3

2

 

PC<=PC+3+rel, якщо A< >(dir);

 

 

 

 

 

 

 

 

C<=1, якщо A<(dir);

 

 

 

 

 

 

 

 

C<=0, якщо A>(dir)

DJNZ Rn, rel

11011rrr

5

2

2

 

PC<=PC+2+rel, якщо Rn-1< >0

DJNZ dir, rel

11010101

 

8

3

2

 

PC<=PC+3+rel, якщо (dir)-1< >0

 

 

 

 

 

 

 

 

 

 

 

Операції з бітами

 

 

 

 

 

 

 

 

 

Мнемокод

 

КОП

 

Т Б Ц

 

 

 

Коментар

 

 

 

 

 

 

 

 

CLR C

 

11000011

 

 

1 1 1

 

C<=0; скидання прапора C

SETB C

 

11010011

 

 

1 1 1

 

C<=1; встановлення прапора C

CPL C

 

10110011

 

 

1 1 1

 

 

 

 

 

 

C<= С ; інверсія прапора C

CLR bit

 

11000010

 

 

4 2

1

 

(bit)<=0;скидання прямоадрес. біта

 

 

 

 

 

 

 

 

 

 

 

147

Продовження табл. 5.7.

SETB bit

11010010

4

2

1

CPL bit

10110010

4

2

1

ANL C, bit

10000010

4

2

2

ANL C, /bit

10110000

4

2

2

ORL C, bit

01110010

4

2

2

 

 

 

 

ORL C, /bit

10100000

4 2

2

MOV C, bit

10100010

4

2

1

MOV bit, C

10010010

4

2

2

(bit)<=1; установка “ біта”

(bit)<= bit ; інверсія “ біта”

C<=C & (bit)

C<=C & ( bit )

C<=C V (bit)

C<=C V( bit ); лог. “ АБО” С і інверсії прямоадресованного біта в прапор С

C<=(bit) пересилка біта в прапор С (bit)<=C; пересилка із С в “ біт”

В процесі виконання команди впливають на ряд прапорців-ознак результату, що входять до складу ССП (PSW). Ознака Р встановлюється всякий раз, коли приймачем результату служить акумулятор А, включаючи операції пересилки.

Склад операндів МК51 включає: біти, 4-бітові цифри, байти, 16-бітові слова.

МК51 має 128 програмно керованих прапорів користувача. Є також можливість адресації окремих бітів блоку регістрів спеціальних функцій і портів. Для адресації бітів використовується пряма 8-бітова адреса. Непряма адресація бітів неможлива.

Порти і РСФ адресуються тільки прямим способом. Байти пам'яті також можуть адресуватися непрямим чином через адресні регістри (R0, R1, DPTR і PC).

Способи адресації даних:

∙пряма – в команді міститься адреса місця розташування даних;

∙безпосередня – в команді міститься сам операнд, який слідує за кодом

операції;

∙непряма – в команді приведена адреса, по якій знаходиться операнд;

148

∙регістрова непряма – в команді вказані регістри, в яких зберігається адреса, по якій знаходиться операнд; у МК51 використовуються всі 8 біт адресних регістрів R0 і R1;

∙неявна – в команді адресне поле відсутнє, адресна інформація міститься в коді операції, тобто сама операція несе дані про місце знаходження одного або всіх операндів, використаних в ній.

Регістр “ слово стану програми” ( ССП) включає чотири прапори:

C– перенесення, АC–

допоміжне перенесення OV– переповнення,

Р– парітет.

С – встановлюється, якщо в старшому біті результату виникає перенесення/ позика; при виконанні операцій множення і ділення С скидається.

АС – встановлюється, якщо при виконанні операції складання/віднімання між тетрадами байта виникло перенесення/позика.

OV – встановлюється, якщо результат складання/віднімання не укладається в семи бітах і старший (восьмий) біт не може інтерпретуватися як знаковий. При виконанні операцій ділення OV скидається, і встановлюється тільки при діленні на нуль. При множенні OV встановлюється, якщо результат більше 255.

Р – встановлюється і скидається апаратно в кожному циклі команди, фіксує парне/непарне число одиничних бітів в акумуляторі, тобто виконує контроль по парності.

Символічна адресація. При використанні асемблера МК51 (ASM51) для отримання об'єктних кодів програм допускається застосування в програмах символічних імен регістрів спеціальних функцій (РСФ), портів і їх окремих бітів.

Для окремих бітів РСФ і портів (така можливість не у всіх РСФ) можна використовувати символічне ім'я біта наступної структури:

<ім'я РСФ або порта>.<номер біта>.

Символічні імена РСФ і портів є зарезервованими словами і їх не треба перевизначати директивами асемблера.

149

Біти користувача (0-128), що адресуються, в бітах 32–47 внутрішнього

ОЗУ.

Група команд передачі даних. Велику частину команд цієї групи, приведеної у табл. 5.7, складають команди передачі і обміну байтів. Всі команди даної групи не модифікують прапори результату, за винятком команд завантаження PSW і акумулятора (прапор паритету).

Команди логічних операцій виконують операції логічного І, логічного АБО, ВИКЛЮЧАЮЧОГО АБО, очищення, інверсії, зсуву.

Команди арифметичних операцій виконують операції складання,

десяткової корекції, віднімання, множення, ділення, інкремента і декремента даних. У операціях цілочисельного множення і ділення без знаку бере участь акумулятор і регістр В. При множенні 8-розрядне значення А помножується на 8-розрядне значення В, а 16-розрядний результат записується в пару ВА. При діленні 8-розрядного значення А на 8-розрядне значення В частка записується в А, а залишок у В.

Група команд операцій з бітами. У командах цієї групи як операнди виступають окремі біти портів, деяких РСФ і 128 програмних прапорів користувача (байт 32–47). Для адресації бітів використовуються пряма 8– розрядна адреса. Непряма адресація бітів неможлива.

Група команд передачі управління включає команди, що забезпечують умовне і безумовне управління, виклик підпрограм і повернення з них, а також порожні операції NOP.

Довгий перехід. Перехід по всьому адресному простору ПП. В команді міститься повна 16-бітова адреса переходу. На практиці рідко виникає необхідність такого переходу.

Абсолютний перехід. Перехід в межах сторінки пам'яті програми розміром 2048 байт. Такі команди містять тільки 11 молодших бітів адреси переходу.

Відносний перехід. Короткий відносний перехід дозволяє передати управління в межах -128 – +127 байт щодо адреси команди, наступної за командою відносного переходу.

150