Микропроцессоры.
Отчет по лабораторным работам.
Лабораторная работа №1.
Задание.
Составить программу записи во
все порты О ЭВМ чередующихся нулей и единиц. Например в порт Р0 записать число
в двоичной форме 01010101, в порт Р1 - 10101010 и т.д. Затем необходимо инвертировать
значения во всех портах, т.е. в Р0 - 10101010, в Р1 - 01010101 и т.д.
Структурная
схема.
Подробная структурная
схема.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Программа.
NAME S
модуля программы для сборки
CSEG AT 0H
памяти программ с адреса 0Н
ORG 0000H
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
MOV P1,#10101010B
числа 10101010 в порт P1
CALL 87bdh
MOV P3,#11001101B
числа 11001101 в порт P3
CALL
87bdh
MOV
A,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
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 соответственно
и записаны в ячейки внешней памяти. Результаты совпали с расчетными.