- •1 Вивчити систему роботи стека мк51. 32
- •1 Вивчити систему роботи стека мк51. 38
- •1 Вивчити систему роботи стека мк51. 41
- •1 Вивчити систему роботи стека мк51. 49
- •1 Загальні положення
- •1.1 Вступ
- •1.2 Вимоги з техніки безпеки
- •1.3 Загальні вимоги до підготовки, проведення та здавання лабораторних робіт
- •1.1Порядок підготовки до лабораторної роботи
- •1.2Порядок проведення лабораторної роботи
- •1.3Здавання лабораторних робіт
- •1.4Вимоги до форми та змісту звіту
- •1.3.4.1 Вимоги до змісту звіту до однієї лабораторної роботи
- •1.4 Робота зі стендом
- •2 Лабораторна робота 1. Вивчення стенда і команд однокристальної еом сімейства mcs-51
- •Порядок виконання лабораторної роботи
- •Приклад виконання лабораторної роботи 1
- •Короткі теоретичні відомості Системи відображення інформації.
- •Система переривань еом 80c51
- •Структура переривань
- •Приклад програми:
- •Режими роботи таймерів-лічильників
- •Приклад програми
- •Порядок виконання лабораторної роботи
- •Приклад програми
- •Варіанти індивідуальних завдань
- •Список літератури
- •Абрайтис в.Б. Быстродействующие интегральные микросхемы " Электронная промышленность ", 1989.
- •Додаток а (довідковий) Теоретичні відомості.
- •Система команд mk51 Структура інформаційних зв'язків
- •Група команд операцій з бітами
Система команд mk51 Структура інформаційних зв'язків
Залежно від способу адресації і місця розташування операнда можна виділити дев'ять типів операндів, між якими можливий інформаційний обмін. Граф можливих операцій передавання даних показаний на рис. А.4. Акумулятор (А) поданий на цьому графові окремою вершиною, оскільки багато команд використовують неявну адресацію.
Рисунок А.4 - Граф шляхів передавання даних в МК51
Передавання даних у МК51 можуть виконуватися без участі акумулятора.
Акумулятор. Звернення до акумулятора може бути виконане в МК51 з використанням неявної і прямої адресації. Залежно від способу адресації акумулятора застосовується одне із символічних імен : A або ACC (пряма адреса). При прямій адресації звернення до акумулятора проводиться як до одного з РСФ, і його адреса зазначається в другому байті команди.
Використання неявної адресації акумулятора прийнятніше, проте не завжди можливо, наприклад, при зверненні до окремих бітів акумулятора.
Звернення до зовнішньої пам'яті даних. Режим непрямої адресації ЗПД. При використанні команд MOVX @Ri забезпечує доступ до 256 байтів зовнішньої пам'яті даних.
Продовження додатка А
Існує також режим звернення до розширеної ЗПД, коли для доступу використовується 16-бітова адреса, що зберігається в регістрі DPTR. Команди MOVX @DPTR забезпечують доступ до 65 536 байтів ЗПД.
Таблиця А.2 - Група команд передавання даних
Назва команди |
Мнемокод |
КОП |
Операція |
Пересилка в акумулятор з регістра (n = 0 - 7) |
MOV A, Rn |
11101rrr |
((A) = (Rn) |
Пересилка в акумулятор прямоадресованого байта |
MOV A, ad |
11100101 |
((A) = (ad) |
Пересилка в акумулятор байта з РПД (i = 0, 1) |
MOV A, @Ri |
1110011i |
((A) = ((Ri)) |
Завантаження в акумулятор константи |
MOV A, #d |
01110100 |
((A) = #d |
Пересилка в регістр з акумулятора |
MOV Rn, A |
11111rrr |
((Rn) = (A) |
Пересилка в регістр прямоадресованого байта |
MOV Rn, ad |
10101rrr |
((Rn) = (ad) |
Завантаження в регістр константи |
MOV Rn, #d |
001111rrr |
((Rn) = #d |
Пересилка за прямою адресою акумулятора |
MOV ad, A |
11110101 |
((ad) = (A) |
Пересилка за прямою адресою регістра |
MOV ad, Rn |
10001rrr |
((ad) = (Rn) |
Пересилка прямоадресованого байта за прямою адресою |
MOV add, ads |
10000101 |
((add) = (ads) |
Пересилка байта з РПД за прямою адресою |
MOV ad, @Ri |
1000011i |
((ad) = ((Ri)) |
Пересилка за прямою адресою константи |
MOV ad, #d |
01110101 |
((ad) = #d |
Пересилка в РПД з акумулятора |
MOV @Ri, A |
1111011i |
((((Ri)) = (A) |
Пересилка в РПД прямоадресованого байта |
MOV @Ri, ad |
00110011i |
((((Ri)) = (ad) |
Пересилка в РПД константи |
MOV @Ri, #d |
00111011i |
((((Ri)) = #d |
Завантаження покажчика даних |
MOV DPTR, #d16 |
10010000 |
((DPTR) = #d16 |
Пересилка в акумулятор байта з ПП |
MOVC A, @A + DPTR |
10010011 |
((A) = ((A) + (DPTR)) |
Продовження табл. А.2
Пересилка в акумулятор байта з ПП |
MOVC A, @A + PC |
10000011 |
((PC) = (PC) + 1 ((A) = ((A) + (PC)) |
Пересилка в акумулятор байта з ЗПД |
MOVX A, @Ri |
1110001i |
((A) = ((Ri)) |
Пересилка в акумулятор байта з розширеної ЗПД |
MOVX A, @DPTR |
11100000 |
((A) = ((DPTR)) |
Пересилка у ЗПД з акумулятора |
MOVX @Ri, A |
1111001i |
((((Ri)) = (A) |
Пересилка в розширену ЗПД з акумулятора |
MOVX @DPTR, A |
11110000 |
((((DPTR)) = (A) |
Завантаження в стек |
PUSH ad |
11000000 |
((SP) = (SP) + 1 ((((SP)) = (ad) |
Витягання із стека |
POP ad |
11010000 |
((ad) = (SP) ((SP) = (SP) - 1 |
Обмін акумулятора з регістром |
XCH A, Rn |
11001rrr |
((A) <-> (Rn) |
Обмін акумулятора з прямоадресованим байтом |
XCH A, ad |
11000101 |
((A) <-> (ad) |
Обмін акумулятора з байтом з РПД |
XCH A, @Ri |
1100011i |
((A) <-> ((Ri)) |
Обмін молодшої тетради акумулятора з молодшою тетрадою байта РПД |
XCHD A, @Ri |
1101011i |
(A0 - 3) <-> ((Ri) 0-3) |
Група команд арифметичних операцій
Цю групу утворюють 24 команди.
Таблиця А.3 - Група команд арифметичних операцій
Назва команди |
Мнемокод |
КОП |
Операція |
Складання акумулятора з регістром (n = 0 - 7) |
ADD A, Rn |
0000101rrr |
((A(Rn) |
Складання акумулятора з прямоадресованим байтом |
ADD A, ad |
00100101 |
((A(ad) |
Складання акумулятора з байтом з РПД (i = 0, 1) |
ADD A, @Ri |
000010011i |
((A((Ri)) |
Складання акумулятора з константою |
ADD A, #d |
00100100 |
((A) = (A) + #d |
Складання акумулятора з регістром і перенесенням |
ADDC A, Rn |
0000111rrr |
((A(C) |
Продовження табл. А.3
Складання акумулятора з прямоадресованим байтом і перенесенням |
ADDC A, ad |
00110101 |
((A(C) |
Складання акумулятора з байтом з РПД і перенесенням |
ADDC A, @Ri |
000011011i |
((A(C) |
Складання акумулятора з константою і перенесенням |
ADDC A, #d |
00110100 |
((A) = (A) + #d + + (C) |
Десяткова корекція акумулятора |
DA A |
11010100 |
Якщо (A0 - 3) > 9 \/ ((AC) = 1), те (A0 - 3) + 6, потім якщо (A4 - 7) > 9 \/ ((C)= 1), те (A4 - 7) + 6 |
Віднімання з акумулятора регістра і позики |
SUBB A, Rn |
10011rrr |
((A) = (A) - (C) - (Rn) |
Віднімання з акумулятора прямоадресованого байта і позики |
SUBB A, ad |
10010101 |
((A) = (A) - (C) - - ((ad)) |
Віднімання з акумулятора байта РПД і позики |
SUBB A, @Ri |
1001011i |
((A) = (A) - (C) - - ((Ri)) |
Віднімання з акумулятора константи і позики |
SUBB A, #d |
10010100 |
((A) = (A) - (C) - - #d |
Інкремент акумулятора |
INC A |
00000100 |
((A) = (A) + 1 |
Інкремент регістра |
INC Rn |
000000001rrr |
((Rn) = (Rn) + 1 |
Інкремент прямоадресованого байта |
INC ad |
00000101 |
((ad) = (ad) + 1 |
Інкремент байта в РПД |
INC @Ri |
000000000011i |
((((Ri)) = ((Ri)) +1 |
Інкремент покажчика даних |
INC DPTR |
10100011 |
((DPTR) = (DPTR) + 1 |
Декремент акумулятора |
DEC A |
00010100 |
((A) = (A) - 1 |
Декремент регістра |
DEC Rn |
00000011rrr |
((Rn) = (Rn) - 1 |
Продовження табл. А.3
Декремент прямоадресованого байта |
DEC ad |
00010101 |
((ad) = (ad) - 1 |
Декремент байта в РПД |
DEC @Ri |
0000001011i |
((((Ri)) = ((Ri)) - 1 |
Множення акумулятора на регістр B |
MUL AB |
10100100 |
((B(B) |
Ділення акумулятора на регістр B |
DIV AB |
10000100 |
((A(B) |
Команди ADD і ADDC допускають складання акумулятора з великим числом операндів. Аналогічно командам ADDC існують чотири команди SUBB, що дозволяє простіше проводити віднімання байтів і багатобайтових двійкових чисел. У МК51 реалізується розширений список команд інкремента/декремента байтів, введена команда інкремента
16-бітового регістра-покажчика даних.
Група команд логічних операцій
Цю групу утворюють 25 команд.
Таблиця А.4 - Група команд логічних операцій
Назва команди |
Мнемокод |
КОП |
Операція |
Логічне І акумулятора і регістра |
ANL A, Rn |
001011rrr |
((A(Rn) |
Логічне І акумулятора і прямоадресованого байта |
ANL A, ad |
01010101 |
((A(ad) |
Логічне І акумулятора і байта з РПД |
ANL A, @Ri |
00101011i |
((A((Ri)) |
Логічне І акумулятора і константи |
ANL A, #d |
01010100 |
((A) = (A) /\ #d |
Логічне І прямоадресованого байта і акумулятора |
ANL ad, A |
01010010 |
((ad(A) |
Логічне І прямоадресованого байта і константи |
ANL ad, #d |
01010011 |
((ad) = (ad) /\ #d |
Логічне АБО акумулятора і регістра |
ORL A, Rn |
001001rrr |
((A(Rn) |
Логічне АБО акумулятора і прямоадресованого байта |
ORL A, ad |
01000101 |
((A(ad) |
Продовження табл. А.4
Логічне АБО акумулятора і байта з РПД |
ORL A, @Ri |
00100011i |
((A((Ri)) |
Логічне АБО акумулятора і константи |
ORL A, #d |
01000100 |
((A) = (A) \/ #d |
Логічне АБО прямоадресованого байта і акумулятора |
ORL ad, A |
01000010 |
((ad(A) |
Логічне АБО прямоадресованого байта і константи |
ORL ad, #d |
01000011 |
((ad) = (ad) \/ #d |
АБО акумулятора і регістра |
XRL A, Rn |
001101rrr |
(A(Rn) |
АБО акумулятора і прямоадресованого байта |
XRL A, ad |
01100101 |
(A(ad) |
АБО акумулятора і байта з РПД |
XRL A, @Ri |
00110011i |
(A((Ri)) |
АБО акумулятора і константи |
XRL A, #d |
01100100 |
(A) =
(A) |
АБО прямоадресованого байта і акумулятора |
XRL ad, A |
01100010 |
(ad(A) |
АБО прямоадресованого байта і константи |
XRL ad, #d |
01100011 |
(ad) =
(ad) |
Скидання акумулятора |
CLR A |
11100100 |
((A) = 0 |
Інверсія акумулятора |
CPL A |
11110100 |
(A) = ( ¬A) |
Переміщення акумулятора вліво циклічно |
RL A |
00100011 |
(An+1) = (An), n = 0 ? 6(A7) |
Переміщення акумулятора вліво через перенесення |
RLC A |
00110011 |
(An+1) = (An), n = 0 ? 6(C) (C) = (A7) |
Переміщення акумулятора вправо циклічно |
RR A |
00000011 |
(A n) = (A n+1), n = 0 ? 6(A0) |
Переміщення акумулятора вправо через перенесення |
RRC A |
00010011 |
(A n) = (A n+1), n = 0 ? 6(C), (C) = (A0) |
Обмін місцями тетрад в акумуляторі |
SWAP A |
11000100 |
(A0 - 3) <-> (A4 - 7) |
Продовження додатка А
