Микропроцессоры.
Отчет по лабораторным работам.
Лабораторная работа №1.
Задание.
Составить программу записи во все порты О ЭВМ чередующихся нулей и
единиц. Например в порт Р0 записать число в двоичной форме 01010101, в
порт Р1 – 10101010 и т.д. Затем необходимо инвертировать значения во
всех портах, т.е. в Р0 – 10101010, в Р1 – 01010101 и т.д.
Структурная схема.
Подробная структурная схема.
Программа.
NAME S название модуля программы для сборки
CSEG AT 0H задание сегмента памяти программ с адреса 0Н
ORG 0000H задание адреса начала программы с 9000Н
MOV P0,#01010101B запись двоичного числа 01010101 в порт P0
MOV P1,#10101010B запись двоичного числа 10101010 в порт P1
MOV P2,#11001100B запись двоичного числа 11001100 в порт P2
MOV P3,#11001101B запись двоичного числа 11001101 в порт P2
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
Контрольный пример.
В порты были введены числа в двоичном формате: в P0 – 01010101; в
P1-10101010; в P2 – 11001100; в P3 – 11001101. При запуске отладчика
программы эти числа были отображены в шестнадцатеричном виде: 55, AA,
CC, CD соответственно. После выполнения программы эти значения были
инвертированы: AA, 55, 33, 32 соответственно. Результаты совпали
расчетными.
Лабораторная работа №2.
Задание.
Запустить программу, написанную в лабораторной работе №1 на отладочной
плате.
Для работы с отладочной платой программа должна начинаться с адреса
9000h. Для этого необходим псевдооператор ORG 9000H. Для отображения
выполнения программы на дисплее нужен оператор CALL 87bdh. Для контроля
результатов необходимо записать полученные данные во внешнюю память, но
считывание внешней памяти происходит с использованием портов 0 и 2,
поэтому необходимо использовать только порты 1 и 3.
Структурная схема.
Подробная структурная схема.
Программа.
NAME S название модуля программы для сборки
CSEG AT 0H задание сегмента памяти программ с адреса 0Н
ORG 9000H задание адреса начала программы с 9000Н
MOV P1,#10101010B запись двоичного числа 10101010 в порт P1
CALL 87bdh
MOV P3,#11001101B запись двоичного числа 11001101 в порт P3
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 P1,#01010101B запись двоичного числа 01010101 в порт P1
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 P3,#11001100B запись двоичного числа 11001100 в порт P3
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
Контрольный пример.
В порты были введены числа в двоичном формате: в P0 – 01010101; в
P1-10101010; в P2 – 11001100; в P3 – 11001101. На дисплее платы эти
числа были отображены в шестнадцатеричном виде: 55, AA, CC, CD
соответственно. После выполнения программы эти значения были
инвертированы: AA, 55, 33, 32 соответственно и записаны в ячейки внешней
памяти. Результаты совпали с расчетными.
PAGE
PAGE 6
Загрузка данных в порты.
Пересылка в A содержимого портов.
Инвертирование данных в A.
Пересылка данных из А в порты.
Конец.
Конец.
P0?A
CPL A.
A?P0
P0?01010101; P1?10101010; P2?11001100; P3?11001101
P1?A
CPL A
A?P1
P2?A
CPL A
A?P2
P3?A
CPL A
A?P3
Конец.
Пересылка данных из А в порты.
Инвертирование данных в A.
Пересылка в A содержимого портов.
Загрузка данных в порты.
Пересылка в A содержимого ячеек внутренней памяти.
Пересылка данных из A в ячейки внешней памяти.
R5=0
20H?P1
P1?A
CPL A
A?P1
P1?01010101, P3?11001100
21H?P1; 23H?P3
A?P3
P1?A
A?M(R0)
R5=0
Подготовка следующих ячеек R0?R0H, DPTR?DPTR+1
22H?P3
P3?A
CPL A
A?P3
CPL A
A?P1
P1?10101010; P3?11001101
нет
да
Пересылка данных из портов через A в ячейки внутренней памяти.
M(DPTR)?A
Конец.
R0?20H; DPTR?0; R5?10
да
нет
Нашли опечатку? Выделите и нажмите CTRL+Enter