Мікропроцесори. p>
Звіт з лабораторних робіт. p>
Лабораторна робота № 1. p>
Завдання.
Скласти програму запису в усі порти Про ЕОМ чергуються нулів іодиниць. Наприклад в порт Р0 записати число в двійковій формі 01010101, в порт
Р1 - 10101010 і т.д. Потім необхідно Інвертувати значення у всіхпортах, тобто в Р0 - 10101010, в Р1 - 01010101 і т.д. p>
Структурна схема. p>
Детальний структурна схема. p>
Програма. p>
| NAME S | назва модуля програми для збирання |
| CSEG AT 0H | завдання сегменту пам'яті програм з адреси 0Н |
| ORG 0000H | завдання адреси початку програми з 9000Н |
| MOV | запис двійкового числа 01010101 в порт P0 |
| P0, # 01010101B | |
| MOV | запис двійкового числа 10101010 в порт P1 |
| P1, # 10101010B | |
| MOV | запис двійкового числа 11001100 в порт P2 |
| P2, # 11001100B | |
| MOV | запис двійкового числа 11001101 в порт P2 |
| P3, # 11001101B | |
| MOV A, P0 | запис даних з порту P0 в акумулятор |
| CPL A | інвертірованіе даних в акумуляторі |
| MOV P0, A | запис даних з акумулятора в порт Р0 |
| MOV A, P1 | запис даних з порту Р1 в акумулятор |
| CPL A | інвертірованіе даних в акумуляторі |
| MOV P1, A | запис даних з акумулятора в порт Р1 |
| MOV A, P2 | запис даних з порту Р2 в акумулятор |
| CPL A | інвертірованіе даних в акумуляторі |
| MOV P2, A | запис даних з акумулятора в порт P2 |
| MOV A, P3 | запис даних з порту P3 в акумулятор |
| CPL A | інвертірованіе даних в акумуляторі |
| MOV P3, A | запис даних з акумулятора в порт P3 |
| NOP | |
| END | | p>
Контрольний приклад.
У порти були введені числа в двійковому форматі: в P0 - 01010101; в P1-
10101010; в P2 - 11001100; в P3 - 11001101. При запуску відладчика програмиці числа були відображені в шістнадцятковому вигляді: 55, AA, CC, CDвідповідно. Після виконання програми ці значення були інвертовані:
AA, 55, 33, 32 відповідно. Результати збіглися розрахунковими. P>
Лабораторна робота № 2. P>
Завдання.
Запустити програму, написану в лабораторній роботі № 1 на налагоджувальноїплаті.
Для роботи з налагоджування платою програма повинна починатися з адреси
9000h. Для цього необхідний псевдооператор ORG 9000H. Для відображеннявиконання програми на дисплеї потрібен оператор CALL 87bdh. Для контролюрезультатів необхідно записати отримані дані в зовнішню пам'ять, алезчитування зовнішньої пам'яті відбувається з використанням портів 0 і 2, томунеобхідно використовувати тільки порти 1 і 3. p>
Структурна схема. p>
Детальний структурна схема. p>
Програма. p>
| | назва модуля програми для збирання |
| NAME S | |
| CSEG AT 0H | завдання сегменту пам'яті програм з адреси 0Н |
| ORG 9000H | завдання адреси початку програми з 9000Н |
| MOV | запис двійкового числа 10101010 в порт P1 |
| P1, # 10101010B | |
| CALL 87bdh | |
| MOV | запис двійкового числа 11001101 в порт P3 |
| P3, # 11001101B | |
| CALL 87bdh | |
| MOV A, P1 | запис даних з P1 в акумулятор |
| CALL 87bdh | |
| CPL A | інвертірованіе даних в акумуляторі |
| CALL 87bdh | |
| MOV P1, A | запис даних з акумулятора в порт Р1 |
| CALL 87bdh | |
| MOV A, P3 | запис даних з порту P3 в акумулятор |
| CALL 87bdh | |
| CPL A | інвертірованіе даних в акумуляторі |
| CALL 87bdh | |
| MOV P3, A | запис даних з акумулятора в порт Р3 |
| CALL 87bdh | |
| MOV 21H, P1 | запис даних з порту P1 в комірку пам'яті з адресою 21H |
| CALL 87bdh | |
| MOV 23H, P3 | запис даних з порту P3 в комірку пам'яті з адресою 21H |
| CALL 87bdh | |
| MOV | запис двійкового числа 01010101 в порт P1 |
| P1, # 01010101B | |
| CALL 87bdh | |
| MOV A, P1 | запис даних з порту P1 в акумулятор |
| CALL 87bdh | |
| CPL A | інвертірованіе даних в акумуляторі |
| CALL 87bdh | |
| MOV P1, A | запис даних з акумулятора в порт P1 |
| CALL 87bdh | |
| MOV 20H, P1 | запис даних з порту P1 в комірку пам'яті з адресою 20H |
| CALL 87bdh | |
| MOV | запис двійкового числа 11001100 в порт P3 |
| P3, # 11001100B | |
| CALL 87bdh | |
| MOV A, P3 | запис даних з порту P1 в акумулятор |
| CALL 87bdh | |
| CPL A | інвертірованіе даних в акумуляторі |
| CALL 87bdh | |
| MOV P3, A | запис даних з акумулятора в порт P3 |
| CALL 87bdh | |
| MOV 22H, P3 | запис даних з порту P3 в комірку пам'яті з адресою 20H |
| CALL 87bdh | |
| MOV R0, # 20H | в регістр R0 заноситься операнд 20H |
| CALL 87bdh | |
| MOV DPTR, # 0 | адресація зовнішньої пам'яті |
| CALL 87bdh | |
| MOV R5, # 10 | завантаження лічильника |
| CALL 87bdh | |
| M1: MOV A, @ R0 | пересилання в акумулятор вмісту внутрішньої пам'яті |
| CALL 87bdh | |
| MOVX @ DPTR, A | пересилання з акумулятора в зовнішню пам'ять, що адресуються |
| | Регістром DPTR |
| CALL 87bdh | |
| INC R0 | збільшення адреси внутрішньої пам'яті на 1; |
| CALL 87bdh | |
| INC DPTR | збільшення адреси зовнішньої пам'яті на 1; |
| CALL 87bdh | |
| DJNZ R5, M1 | зменшення лічильника на 1 і перевірка його на 0, якщо його |
| | Значення не дорівнює 0, то перехід на M1 |
| CALL 87bdh | |
| NOP | |
| END | | p>
Контрольний приклад.
У порти були введені числа в двійковому форматі: в P0 - 01010101; в P1-
10101010; в P2 - 11001100; в P3 - 11001101. На дисплеї плати ці числа буливідображені в шістнадцятковому вигляді: 55, AA, CC, CD відповідно. Післявиконання програми ці значення були інвертовані: AA, 55, 33, 32відповідно і записані в комірки зовнішньої пам'яті. Результати співпали зрозрахунковими.
----------------------- p>
Завантаження даних в порти. p>
Пересилання в A вмісту портів. p>
інвертірованіе даних у A. p>
Пересилання даних з А в порти. p>
Кінець. p>
Кінець. p>
P0 p>