Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Программирование микроконтроллеров семейства CORTEX-M. Учебное пособие

.pdf
Скачиваний:
1
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
61
5. Лабораторные эксперименты в режиме симулятора
5.1. Изучение интегрированной среды разработки Keil µVision. Ин-
сталляция, настройка.
ЦЕЛЬ РАБОТЫ: Установка пакета Keil MDK на ПЭВМ лабораторного стенда.
ПОДГОТОВКА К РАБОТЕ
Изучить способы загрузки пакета Keil MDK, приведенные в разделах 1, 2.
РАБОЧЕЕ ЗАДАНИЕ
1. Скачать пакет Keil MDK с официального сайта Keil (www.keil.com).
2. Установить систему на диск C.
3. Загрузить в среду Keil uVision 5 с сайта http://www.milandr.ru
дополнительный программный пакет Software pack необходимый для поддержки микроконтроллера К1986ВЕ92QI компании Milandr.
4. Предъявить преподавателю развернутое главное окно среды.
5.2. Создание и запуск проекта в среде Keil µVision в режиме симу-
лятора с использованием языка ARM ассемблера.
ЦЕЛЬ РАБОТЫ: Научиться создавать и настраивать проекты в среде Keil
MDK, а также исполнять программу в различных режимах при помощи встро-
енного в среду симулятора.
ПОДГОТОВКА К РАБОТЕ
1. Изучить способы настройки среды Keil MDK в режиме симулятора
(разделы 1, 2).
2. Ознакомиться со структурой исходных программ и способами их
отладки (раздел 4).
РАБОЧЕЕ ЗАДАНИЕ
1. Убедиться, что на компьютере выставлена текущая дата и время.
Если нет, то изменить их вручную.
62
2. Запустить Keil μVision с помощью соответствующего ярлыка на ра-
бочем столе. Откроется главное окно управления среды.
3. Открыть новый проект и создать новый каталог проекта по адресу
D:/ARM_projects/2018-2019/<Ваша фамилия>. Там будут храниться
файлы проекта. После создания папки необходимо перейти в неё, ввести имя нового проекта, затем нажать кнопку Сохранить
4. В окне выбора устройства выбрать микроконтроллер ARMCM3
(ARM -> ARM Cortex M3) и нажать ОК
5. В открывшемся окне с перечнем компонентов нажать кнопку «OK».
6. В окне управления проектом необходимо в меню Target 1 выделить
правой кнопкой мыши рпцию Options for Target ‘Target 1’ или нажать сочетание клавиш Alt + F7
7. На вкладке Output поставить галку напротив пункта Create HEX File
8. На вкладке Listing снять галку с пункта Linker Listing
9. На вкладке Linker нужно отметить пункт Use Memory Layout from
Target Dialog
10. На вкладке Debug выбрать пункт Use Simulator и нажать ОК.
11. Создать ассемблерный файл, куда будет вноситься код. Для этого
нужно кликнуть ПКМ по Source Group 1(в каталоге Target1) -> Add
New Item to Group ‘Source Group1’. В открывшемся окне выбрать тип файла – Asm File (.s), в поле Name пишем имя создаваемого файла и нажимаем кнопку Add.
12. В открывшемся окне исходного текста программы внести следую-
щий код:
63
stack_top
AREA STACK, READWRITE EQU 0x400 PRESERVE8
AREA RESET, DATA, READONLY
DCD stack_top
const1
AREA Prog1, CODE, READONLY THUMB EQU 0xFF; EXPORT start
start
ENTRY
MOVS R0,#const1 MOVS R1,#20 ADDS R2, R0, R1 PUSH {R0,R1,R2} B . END
13. Скомпилировать проект, нажав клавишу F7 или в окне проекта Pro-
ject -> Build Target
14. Перейти в режим отладки для работы в окне дизассемблера, нажав
Debug -> Start/Stop Debug Session
Внимание! Возникнет предупреждение, которое напоминает о том, что у Lite-версии среды есть ограничение на размер программ. В данном случае всё будет работать корректно, нажимаем ОК.
15. Отладить программу в пошаговом режиме. Для исполнения одной
команды необходимо нажать клавишу F11 или кнопку Step на па­нели инструментов окна дизассемблера.
16. После выполнения каждой команды наблюдаем изменения в окне
регистров (Registers).
64
5.3. Изучение программистской модели микроконтроллера
К1986ВЕ92QI
ЦЕЛЬ РАБОТЫ: Изучение системы команд и адресных пространств мик­роконтроллера
ПОДГОТОВКА К РАБОТЕ
Изучить способы кодирования команд и распределение адресных про­странств по методическим указаниям [1].
РАБОЧЕЕ ЗАДАНИЕ
1. Получить у преподавателя вариант задания с фрагментом программного ко-
да в HEX формате.
2. Преобразовать фрагмент программного кода из HEX формата в последова-
тельность ассемблерных команд.
3. Определить вручную результат, получаемый в заданном регистре после ис-
полнения программы.
СОДЕРЖАНИЕ ОТЧЕТА
вариант задания (заданный программный код);
программа на языке ассемблера;результат исполнения программы.
5.4. Выполнения арифметических операций
ЦЕЛЬ РАБОТЫ: Изучение способов выполнения арифметических опера­ций над 32-разрядными беззнаковыми кодами.
ПОДГОТОВКА К РАБОТЕ
1. Изучить краткое руководство по Ассемблеру, приведенное в разделе 3.
2. По варианту программы, заданному в таблице 1, разработать блок-схему и
написать на языке ассемблера программу, реализующую вычисления по формуле.
3. Разработать тестовые задания для проверки правильности функционирова-
ния программы.
65
Таблица 1
Варианты заданий к лабораторной работе № 2
№ вар
Формула
К1(hex)
К2(hex)
Δ(hex)
1.
S1 7
256
12
2.
S2 15
272
10
3.
S3 24
123
16
4.
S4 36
232
8
5.
S1 48
321
32
6.
S2 63
172
24
7.
S3 72
192
28
8.
S4 A0
200
B4
9.
S1 31
300
20
10.
S2 В8
175
36
11.
S3 39
100
40
12.
S4 А1
104
44
13.
S1 42
110
48
14.
S2 80
209
52
15.
S3 68
180
56
16.
S4 42
240
60
Размещение
переменных в памяти
Ячейка ОП с адресом
0х20000000h
Δ
S
Х1
Х2
Х
3
Варианты формул
S
1
= (К1Х1 - К2Х2) + Х3
S
2
= К1(Х1 + К2Х2) - Х3
S
3
= К1Х1 + К2(Х2 - Х3)
S
4
= К1Х1 + К2(Х2 - Х3)
66
РАБОЧЕЕ ЗАДАНИЕ
1. Запустить Keil μVision с помощью соответствующего ярлыка на рабочем
столе и создать проект для разработки программы.
2. Настроить проект для работы в режиме симулятора и ввести разработанную
программу.
3. Запустить программу и отладить ее на тестовых заданиях.
СОДЕРЖАНИЕ ОТЧЕТА
вариант задания;
блок-схема алгоритма и исходный текст программы;листинг программы и тестовые примеры, использованные при отладке.
5.5. Обработка многобайтных чисел.
ЦЕЛЬ РАБОТЫ: Изучение способов хранения и обработки многобайтных чисел.
ПОДГОТОВКА К РАБОТЕ
1. По варианту задания разработать блок-схему и написать на языке ассемблера
программу, реализующую заданный алгоритм обработки. Программа должна располагаться в памяти начиная с адреса 0х08000xxx. Все многобайтные данные должны храниться в памяти следующим образом: младший байт – по меньшему адресу, старший байт – по большему адресу (принцип small endian). Адресом многобайтных данных является младший (меньший) адрес. Программа должна быть работоспособна при любых значениях исходных данных. Если результат арифметической операции переполняет разрядную сетку, в качестве результата может выступать произвольный код (случай пе­реполнения отдельно не обрабатывается и факт переполнения не фиксирует­ся).
2. Разработать тестовые задания для проверки правильности функционирования
программы.
67
ВАРИАНТЫ ЗАДАНИЯ К ЛАБОРАТОРНОЙ РАБОТЕ № 3
1. Произвести циклический сдвиг влево на один разряд многобайтного
кода, находящегося начиная с адреса 0х20002000. Количество байт в коде находится по адресу 0х20001000.
2. Даны два 16-байтных числа в обратном коде. Адреса – 0х20002000 и
0х20002010. Найти их сумму (в обратном коде) и записать по адресу 0х20002020. Переполнение не фиксировать.
3. Даны два 16-байтных числа в обратном коде. Адреса – 0х20002000 и
0х20002010. Найти их разность (в обратном коде) и записать по адресу 0х20002020. Переполнение не фиксировать.
4. Дан массив двухбайтных чисел в дополнительном коде. Подсчитать их
сумму (в формате четыре байта). Начальный адрес массива 0х20002000. Коли­чество байт в коде находится по адресу 0х20001000. Результат записать, начи­ная с адреса 0х20003000.
5. Даны два 16-байтных числа в дополнительном коде. Адреса –
0х20002000 и 0х20002010. Найти их сумму. Результат записать по адресу 0х20002020. Переполнение не фиксировать.
6. Даны два 16-байтных числа в дополнительном коде. Адреса –
0х20002000 и 0х20002010. Найти их разность. Результат записать по адресу 0х20002020. Переполнение не фиксировать.
7. Произвести арифметический сдвиг влево (умножить на 2N) 16-байтного
числа в дополнительном коде, находящегося по адресу 0х20002000. Сдвигать на число разрядов (N), хранящееся по адресу 0х20003000.
8. Произвести арифметический сдвиг вправо (умножить на 2N) 16-
байтного числа в дополнительном коде, находящегося по адресу 0х20000000. Сдвигать на число разрядов (N), хранящееся по адресу 0х20001000.
9. Подсчитать число двоичных единиц (бит) в массиве. Начальный адрес
массива 0х20000000. Число байт в массиве указано по адресу 0х20001000. Ре­зультат занести по адресу 0х20002000 (4 байта).
68
10. Дан массив однобайтных положительных чисел (без знака). Найти
минимальный и максимальный элементы массива. Начальный адрес массива 0х20001000, количество байт в массиве указано по адресу 0х20000000, мини­мальный элемент массива переслать по адресу 0х20001004, максимальный – по адресу 0х20001008.
11. Дан массив однобайтных чисел без знака. Упорядочить массив в по-
рядке убывания. Начальный адрес исходного массива 0х20000000, количество байт в массиве указано по адресу 0х20001000Н. Упорядоченный массив разме­стить 0х20002000.
12. Дана квадратная двоичная матрица 32х 32. Каждая строка матрицы
занимает одну из 32 ячеек памяти, начиная с адреса 0х20001000. Определить контрольные суммы (по модулю 2) по строкам и по столбцам, разместив их со­ответственно в ячейках 0х20002000, 0х20002004.
13. Дан 16-байтный код находящийся по адресу 0х20001000. Подсчитать
число цепочек 01 (включая межбайтные) и записать по адресу 0х20002000.
14. Дан 16-байтный код находящийся по адресу 0х20002000. Подсчитать
число цепочек 10 (включая межбайтные) и записать по адресу 0х20001000.
15. Произвести циклический сдвиг вправо 16-байтного кода, находящего-
ся по адресу 0х20001000. Сдвигать на число разрядов, хранящееся по адресу 0х20002000.
16. Даны два 4-байтных числа в дополнительном коде. Адреса –
0х20001000 и 0х20001004. Меньшее из них записать по адресу 0х20001008, а большее – по адресу 0х2000100С.
17. Дан массив однобайтных чисел без знака. Упорядочить массив в по-
рядке возрастания. Начальный адрес исходного массива 0х20002000, количе­ство байт в массиве указано по адресу 0х20000000Н. Упорядоченный массив разместить 0х20001000.
18. Произвести циклический сдвиг вправо 16-байтного кода, находящего-
ся по адресу 0х20001000. Сдвигать на число разрядов, хранящееся в дополни-
69
тельном коде по адресу 0х20002000. Положительное число сдвигов означает сдвиг влево, а отрицательное – сдвиг вправо.
РАБОЧЕЕ ЗАДАНИЕ
1. Запустить Keil μVision с помощью соответствующего ярлыка на рабочем
столе и создать проект для разработки программы.
2. Ввести в память микроконтроллера программу, подготовленную по варианту
задания и отладить ее, используя возможности симулятора.
СОДЕРЖАНИЕ ОТЧЕТА
вариант задания; блок-схема алгоритма и исходный текст программы; листинг программы и тестовые примеры, использованные при отладке.
5.6. Логические операции над битами многоразрядных слов.
ЦЕЛЬ РАБОТЫ: Изучение способов выполнения логических операций над битами 32-разрядных кодов.
ПОДГОТОВКА К РАБОТЕ
1. По варианту программы, заданному в таблице 2, разработать блок-схему и
написать на языке ассемблера операторную программу, реализующую вы­числения по формуле c использованием логических операций.
2. По варианту программы, заданному в таблице 2, разработать блок-схему и
написать на языке ассемблера бинарную программу, реализующую вычис­ления по формуле c использованием команд условного перехода.
3. Разработать тестовые задания для проверки правильности функционирова-
ния программы.
70
Таблица 2
Варианты заданий к лабораторной работе № 4
№ вар
Десятичные номера бит ячейки
Функция
Смещение Δ(hex) ад-
реса ячейки
(0x20000000 + Δ)
х1
х2
х3
х4
у
1.
0 1 2 3 4
y1
10
2.
1 2 3 4 5
y2
20
3.
2 3 4 5 6
y3
34
4.
3 4 5 6 7
y4
40
5.
4 5 6 7 8
y5
14
6.
8 9 10
11
12
y6
18
7.
9
10
11
12
13
y7
44
8.
10
11
12
13
14
y8
48
9.
23
15 2 17
31
y1
38
10.
4 6 22
11
30
y2
30
11.
27
28
29
30
31
y1
40
12.
26
27
28
29
30
y2
44
13.
25
26
27
28
29
y3
34
14.
24
25
26
27
28
y4
48
15.
23
24
25
26
27
y5
54
16.
22
23
24
25
26
y6
60
17.
21
22
23
24
25
y7
3С
18.
20
21
22
23
24
y8
10
19.
10 9 8
11
12
y1
24
20.
9
10
11
12
13
y2
28
y1 = x1x2 ⊕ x
3 4
y2 = x1(x2 ∨ x4) ⊕ x
4
y3 = (x
1
⊕
2
) ∨3x4
y4 = (x1∨ x2) ⊕ (x3∨ x4)
y5 = (x1x2x3) ⊕ 4
y6 =
y7 = x3x4
y8 = (x1x2 ⊕ x3)
РАБОЧЕЕ ЗАДАНИЕ
1. Запустить Keil μVision и создать проект для разработки программы.
2. Ввести в память микроконтроллера программы, подготовленные по вари-
анту задания и отладить их, используя возможности симулятора.
СОДЕРЖАНИЕ ОТЧЕТА
Вариант задания; блок-схема алгоритма и исходный текст программы; листинг программы и тестовые примеры, использованные при отладке.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]