Эта программа записывает данные из регистра R3 в ячейку с адресом 10H внешней памяти данных, а затем читает данные из ячейки с адресом 18H ВПД и пересылает их в регистр R6.
Так как в исследуемой программе используется внешняя память данных, то для ее работы требуется загрузить в симулятор файл ram (без расширения), имеющийся в вашей папке. Этот файл формирует в симуляторе внешнюю память данных размером 1К ячеек. В файле ram (в формате Intel Hex) содержатся начальный адрес 0000H, конечный – 03FFH и данные для начальной загрузки ячеек ВПД – 00H.
Для загрузки файла ram необходимо выполнить команды из меню команд симулятора:
LOAD à DATA
Затем в командной строке необходимо набрать имя файла ram и нажать клавишу Enter:
Enter Filename: ram
При отладке программы нужно будет следить за правильностью передачи данных между МК и ВПД. Согласно тексту программы задействованы будут ячейки с адресами 0010H и 0018H.
Используем нижнее окно Data Space (область Dump 2) для отображения ячеек ВПД, начиная с адреса 0000H. С этой целью необходимо выполнить команду:
DUMP
Затем в командной строке ввести номер дампа 2:
Select DUMP : 2
Затем выбрать команду задания типа адресации ячеек дампа:
Absolute
И, наконец, в командной строке набрать начальный адрес области ВПД (дампа 2) в HEX-коде:
Enter Expression in Data Address Space: X: 0000H
После нажатия клавиши Enter убеждаемся, что нижнее окно получило название External Data Space, т.е. внешняя память данных, а начальный адрес стал 0000H. Во всех ячейках ВПД записаны нули.
Исследуйте работу программы в пошаговом режиме, предварительно задав исходные данные: в регистре R3 число 55H, а в ячейке ВПД с адресом 0018H – число AAH. Наблюдайте за изменением содержимого регистров, ячеек памяти, а также за флагами МК.
3.6. Исследование команд обмена
Запишите в память программ симулятора коды команд:
MOV A, #0AAH ; Загрузить в аккумулятор число AAH
MOV R1, #11H ; Загрузить в аккумулятор число 11H
MOV 30H, #33H ; Загрузить в ячейку 30H число 33H
MOV B, #0BBH ; Загрузить в регистр B число BBH
XCH A, R1 ; Обмен аккумулятора с регистром R1
XCH A, 30H ; Обмен аккумулятора с ячейкой ПД
XCH A, B ; Обмен аккумулятора с регистром B
MOV R0, #30H ; Загрузить в R0 адрес ячейки ПД
MOV @R0, # 33H ; Загрузить в ячейку ПД число 33H
MOV A, #55H ; Загрузить в аккумулятор число 55H
XCHD A, @R0 ; Обмен младшей тетрады аккумулятора с младшей тетрадой
; ячейки ПД
NOP
Исследуйте работу программы в пошаговом режиме. Наблюдайте за изменением содержания регистров, ячеек памяти, а также флагами МК.
3.7. Исследование команд чтения из памяти программ
В микроконтроллерах семейства МК51 имеется возможность прочитать данные из памяти программ, в том числе для выборки элемента с порядковым номером из таблицы. Обычно для этих целей используется команда
MOVC A, @A + DPTR.
Действие этой команды можно описать так: переслать в аккумулятор содержимое ячейки памяти программ, адрес которой вычисляется сложением двухбайтного значения регистра-указателя данных DPTR с однобайтным беззнаковым операндом из аккумулятора. Эту же операцию можно интерпретировать, как чтение элемента с номером, который задан в аккумуляторе, из таблицы с начальным адресом, который хранится в DPTR.
Рассмотрим применение этой команды на примере вычисления функций с помощью таблиц. Предположим, что нужно иметь программу вычисления квадрата целого десятичного числа X в диапазоне от 0 до 10 включительно. Для вычисления используем подпрограмму SQ, которая выбирает результаты из таблицы SQTAB, размещенной в памяти программ. Текст подпрограммы:
;****************************************************************
; SQ – подпрограмма вычисления квадрата числа
; Входной параметр: регистр R7 – десятичное число в HEX-коде
; Выходной параметр: регистр A – квадрат исходного числа в HEX-коде
;*****************************************************************
SQ: MOV A,R7 ; Пересылка исходного числа в аккумулятор
MOV DPTR, #SQTAB ; Загрузить в DPTR адрес таблицы SQTAB
MOVC A, @A+DPTR ; Пересылка в аккумулятор данных из таблицы
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.