- •Часть 1. Изучение интегрированной системы mcStudio
- •Порядок работы с интегрированной системой mcStudio
- •Запуск интегрированной системы mcStudio
- •2. Написание программы на языке Ассемблер
- •Визуализация контролируемых ресурсов микроконтроллера
- •4. Выполнение симуляции программы
- •5. Создание и отладка новой программы
- •6. Загрузка ранее созданной программы
- •7. Выход из интегрированной системы mcStudio
- •8. Некоторые дополнительные возможности mcStudio
- •Часть 2. Изучение команд передачи данных
- •Задание
- •Оформление программы
- •Контрольные вопросы
- •Задание
- •Контрольные вопросы
- •Лабораторная работа № 3 Реализация функций времени. Часть 1 Введение
- •Задание
- •Контрольные вопросы
- •Лабораторная работа № 4 Реализация функций времени. Часть 2 Введение
- •Задание
- •Контрольные вопросы
- •Задание
- •Контрольные вопросы
- •Лабораторная работа № 6 Программирование последовательного порта микроконтроллера Введение
- •Задание
- •Контрольные вопросы
- •Варианты заданий
- •Контрольные вопросы
- •Особенности использования демонстрационной версии интегральной системы mcStudio
- •Библиографический список
Задание
Составить программу, которая демонстрирует основные способы сложения однобайтовых чисел. Слагаемые разместить во внутренней памяти данных, а результат разместить в ячейках внешней памяти данных.
Составить программу для перевода 8-разрядного двоичного числа (109 в десятичном представлении) в трехзначное – в двоично-десятичном формате. Число сотен этого числа записать в переменную hund, десятков –ten, единиц – ed. Присвоение имен hund, ten, ed ячейкам внутренней памяти данных с адресами 21h, 22h, 23h произвести с помощью директив EQU. Например, hund equ 21h.
Составить программу сложения двух двухбайтовых чисел (01FFh и 0110h) с размещением результата во внутренней памяти данных.
Составить программу вычитания двух однобайтовых чисел. Программа должна определять знак результата и размещать положительный результат в ячейке РПД 20h, а модуль отрицательного числа размещать в ячейке 21h. Для определения модуля отрицательного числа использовать последовательность команд cpl A и inc A.
С
оставить
программу вычисления булевой функции
трех переменных Y=XVW(XV).
Переменные X, V,
W поступают на линии 2, 1,
0 порта P1 соответственно.
Результат Y необходимо
вывести на линию 3 порта 1. Для присвоения
имен переменных битам порта использовать
директиву EQU. Например,
X EQU P1.2.
Перед выполнением программы произвольно
установить значения битов порта.
Составить программу вычисления с использованием табличной функции, расположенной в памяти программ. Для обращения к таблице использовать подпрограмму, в состав которой входят команда inc A, команда movc A,@A+PC и команда RET (выход из подпрограммы). Значения функции расположить за подпрограммой с помощью директивы db (определить байт), например
db 0
db 2
db 4
....
db 10
Обращение к подпрограмме производится командой acall metka (абсолютный вызов по 11-битному адресу) или lcall metka (дальний вызов по 16-битному адресу).
Извлечь значения функции (Y) из табл. 5 для аргументов (X) 3, 5 и 8, разместить их во внутренней памяти данных, начиная с адреса 10h, а их сумму поместить в ячейку с адресом 15h.
Таблица 5
X |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
Y |
1 |
2 |
4 |
6 |
8 |
10 |
9 |
7 |
5 |
3 |
1 |
Контрольные вопросы
В каком случае при сложении устанавливается бит переноса?
Когда необходимо производить сложение с учётом переноса?
Когда используется сложение с десятичной коррекцией результата?
Как организовать цикл с условием в программе?
Каким образом определить, что результат вычитания отрицательное число?
Какой командой можно инвертировать бит порта?
Поясните алгоритм извлечения значения функции, расположенной в памяти программ. В каких случаях целесообразно использование таблиц значений функции? Какие есть альтернативные способы получения значений функции по значению аргумента?
Когда и зачем при извлечении числа из таблицы в памяти программ используется команда inc A?
Чем будет отличаться программа, если из таблицы извлекать данные с помощью команды movc A,@A+DPTR вместо movc A,@A+PC?
Приведите примеры возможного использования битовых переменных.
