Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект мпсу.doc
Скачиваний:
90
Добавлен:
22.09.2019
Размер:
6.71 Mб
Скачать

Урок №11 Тема: Упражнения. Подготовка к лабораторным работам №3, 4

Упражнение 1

В исходном состоянии содержимое регистра r0 равно нулю: r0=0. Определите содержимое регистра r0 после выполнения фрагмента программы:

.org 0

inc r0

rjmp 10

inc r0

inc r0

.org 10

rjmp 20

inc r0

.org 20

inc r0

inc r0

nop

Упражнение 2

Исследуйте работу счетчика команд в процессе выполнения фрагмента программы. Установите указатель стека на адрес $ 025f: sph=02, spl=$5f. Составьте схему заполнения стека. Результаты занесите в таблицу

.org $0

rjmp $30

.org $30

nop

rcall $40

nop

rcall $20

nop

rjmp $34

.org $20

nop

rcall $40

nop

ret

.org $40

nop

ret

Адрес

Команда

Счетчик команд

Указатель стека

SP, hex

Стек

02

5e

02

5f

025f

Упражнение 3

Программа обработки прерывания от внешнего устройства int0 начинается метки ind, какую команду необходимо записать в вектор прерывания int0. Укажите адрес вектора int0.

Упражнение 4

По сигналу прерывания int0 необходимо очистить регистр r0. Заполните вектор прерывания и составьте текст подпрограммы прерывания.

Упражнение 5

Как организовать стек начиная с адреса $025f&

.

Урок №12 Лабораторная работа №3 Анализ работы микропроцессора в программном режиме и в режиме вызова подпрограмм

Цель работы: закрепить навыки ввода, компиляция и отладки программ в AVR Studio, исследовать работу счетчика команд в различных режимах работы МП.

1 Практические задания и методические указания по их выполнению

Задание 1 Исследуйте работу счетчика команд в программном режиме

Исследуемый фрагмент программы progr_counter.asm:

.org 0 ;организовать запись следующей команды в ячейку

;с адресом 0

rjmp 10 ;прыжок на ячейку с адресом 10 (000а)

clr r0 ;очистить регистр r0

clr r1

rjmp 12 ;прыжок на ячейку с адресом 12 (000с)

clr r2

.org 10 ;организовать запись следующей команды в ячейку

;с адресом 10

clr r16

rjmp 1 ;прыжок на ячейку с адресом 1

rjmp 0 ;прыжок на начало

Определите порядок очистки регистров. Все ли регистры, указанные в программе будут очищены?

Составим схему выполнения фрагмента

Таблица 1

Адрес

текст

СК

0

rjmp 10

10=$0a

10

clr r16

11=$0b

11

rjmp 1

1

1

clr r0

2

2

clr r1

3

3

rjmp 12

12=$0c

12

rjmp 0

0

0

rjmp 10

10=$0a

10

clr r16

11=$0b

11

rjmp 1

1

и т. Д.

Запишем и откомпилируем программу в AVR Studio.

Запустим отладчик. Введем в регистры r0, r1, r2, r16 число ff.

Выполним программу по шагам. Убедимся, что схема выполнения фрагмента составлена правильно. Какой регистр остался неочищенным?

Задание 2 Исследуйте работу счетчика команд в режиме вызова подпрограмм

Исследуем фрагмент программы call.asm:

установим sp=$0061

;*********основная программа********

.org 0 ;записать следующую строку в ячейку с ;адресом 0

nop ;нет операции

rcall $30 ;вызов подпрограммы, с начальным адресом ;$30

nop ;нет операции

rjmp 0 ;прыжок на начало

;*********подпрограмма***********

.org $30

nop ;нет операции

ret ;возврат из подпрограммы

Составим схему выполнения фрагмента

Таблица 2

Адрес, hex

Команда

Счетчик команд

Указатель стека

SP, hex

Стек

60

61

0000

nop

0001

0061

ff

ff

0001

rcall $30

0030

005f

00

02

0030

nop

0031

005f

00

02

0031

ret

0002

0061

00

02

0002

nop

0003

0061

0003

rjmp 0

0000

0061

Запишем и откомпилируем программу в AVR Studio.

Запустим отладчик. Прежде чем начать пошаговое выполнение программы, установим стек. Для этого в окне I/O запишем в регистр «Указатель стека» начальный адрес spl=$61 (рисунок 1).

Рисунок 1

Чтобы наблюдать за работой стека, откроем окно памяти данных в меню View (рисунок 1).

Выполним программу по шагам. Убедимся, что схема выполнения фрагмента составлена правильно.

Рисунок 1

Задание 3 (выполняется самостоятельно)

Исследуйте работу счетчика команд в процессе выполнения фрагмента программы. Установите указатель стека на адрес $ 66: sph=00, spl=$66. Составьте схему заполнения стека. Результаты занесите в таблицу

.org $30

nop

rcall $20

nop

rjmp $32

.org $20

nop

rcall $40

nop

ret

.org $40

nop

ret

Таблица 3

Адрес

Команда

Счетчик команд

Указатель стека

SP, hex

Стек

63

64

65

66

2 Оформление отчета

В отчете необходимо указать:

3.1 Название цель работы

3.2 Задания 1-3: тексты фрагментов, схемы выполнения

3.3 Выводы