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