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

6.3 Порядок выполнения и пример оформления лабораторной работы

Выполнение лабораторной работы состоит из двух этапов: самостоятельная работа; работа на лабораторном стенде.

На этапе самостоятельной работы студент в соответствии с полученным заданием должен разработать алгоритм решения поставленной задачи и написать текст исходного модуля программы в текстовом редакторе «Блокнот». Текст программы должен быть снабжён достаточно полными комментариями. Наличие текста с исходным модулем программы является основанием для допуска к выполнению лабораторной работы.

Второй этап выполняется на лабораторном стенде и состоит из следующих шагов:

  • создания проекта и включение в него исходного текста программы в среде AVR Studio;

  • компиляция исходного текста и устранение синтаксических ошибок

  • логическая отладка программы с применением встроенного отладчика (Debug);

  • формирования текста командного файла для программатора и программирование Flash памяти микроконтроллера;

  • проверка правильности выполнения программы на реальном устройстве (макете) и в случае выявления ошибок исправление исходного текста программ и переход к компиляции программы с выполнением всех последующих шагов.

Защита лабораторной работы происходит в форме свободной беседы по теме лабораторной работы.

Отчёт по лабораторной работе должен содержать следующие разделы:

  • цель работы;

  • задание на лабораторную работу для своего варианта ;

  • чертёж структурной схемы стенда на основе рисунка 6.1 с указанием только тех элементов схемы, которые используются в данной лабораторной работе;

  • чертёж блок схемы алгоритма решаемой задачи с необходимыми пояснениями;

  • исходный текст отлаженной программы с комментариями;

  • выводы по работе.

Отчёт по лабораторной работе должен быть оформлен в соответствии с требованиями стандарта ВУЗА.

Ниже приводится пример оформления отчёта по лабораторной работе.

Лабораторная работа 1

Работа с портом ввода/вывода общего назначения

микроконтроллера AT90S2313.

Цель работы: Разработать программу вывода информации на светодиодный индикатор через порт РВ с использованием программной временной задержки.

Задание: Вид выводимой информации – «Бегущая единица», начиная с РВ0; временная задержка изменения состояний – 0,5 С.

Чертёж структурной схемы лабораторного макета приведен на рисунке Л1.1

Рисунок Л1.1 Структурная схема лабораторного макета.

Чертёж блок схемы алгоритма решения задачи приведен на рисунке Л1.2.

Рисунок Л1.2 Блок схема алгоритма программы

Примечание: переменная In1 содержит текущее значение выводимого в порт В значения.

Ниже приведен исходный текст программы proba.asm решающий поставленную задачу

.include "2313def.inc" ; определение типа устройства для которого разработана

;программа

.def In1 r18 ; определить для хранения переменной In1 регистр r18

; определение таблицы векторов прерываний

rjmp MAIN ; сброс по reset , переход на начало программы; метка MAIN

reti ; не определено; возврат

reti ;

reti ;

reti ;

reti ;

reti ;

reti ;

reti ;

reti ;

reti ;

reti ;

reti ;

;-----------------------------------------------------

;начало программы

MAIN: ;

ldi r16,low(RAMEND) ;установка указателя стека

out spl,r16

ldi r16,255 ; настройка порта В на вывод информации

out ddrb,r16 ;

;------------------------------------------------------

;основной цикл

tostart:

ldi In1,1 ; In1 = 1

oneop: ;

ldi r16,low(50000) ;записать в регистры r16, r17 значение множителя временной

ldi r17,high(50000) ;задержки с учётом, что шаг задержки 100 мкС для передачи

; в п/п временной задержки

rcall wait ; вызов подпрограммы временной задержки

com In1 ; инвертировать значение In1 (необходимость этого продиктована

особенностями работы блока индикации)

out portb, In1 ; вывести In1 в порт В

com In1 ; инвертировать значение

lsl In1 ; логический сдвиг влево на 1 разряд значения In1

breq tostart ; если In1 = 0, переход на метку tostart

rjmp oneop ; в противном случае на метку oneop

;--------------------------------------------------------

;подпрограмма временной задержки

; содержимое регистров r16 (младшая часть) и r17 (старшая часть) содержат множитель ;временной задержки

wait:

cpi r16,0 ; сравнить содержимое r16 с 0

breq wait1 ; переход на метку wait1 если 0

rcall wait100us ; вызов подпрограммы «задержка на 100 мкС»

dec r16 ; вычесть единицу из содержимого регистра r16

rjmp wait ; перейти в начало п/п

wait1: ;

cpi r 17,0 ; сравнить содержимое r16 с 0

breq waitend ; переход на метку waitend если 0

dec r16 ; вычесть единицу из содержимого регистра r16

dec r17 ; вычесть единицу из содержимого регистра r17

rjmp wait ; перейти в начало п/п

waitend: ;

ret ; возврат в основную программу

;---------------------------------------------

; подпрограмма формирования временной задержки длительностью 100 мкС

.equ CLK=4000000 ; присвоить переменной CLK значение тактовой частоты 4МГц

wait100us: ;

push r16 ; поместить r16 в стек

ldi r16,((CLK/10000-16)/4) ; загрузить в регистр r16 коэффициент пересчёта

;тактовой частоты микроконтроллера в частоту 10 кГц

;( период 100 мкС) с учётом времени выполнения цикла ;wait100us1

wait100us1: ;

nop ; «нет операции» задержка счета на 1 цикл тактовой частоты

dec r16 ; ; вычесть единицу из содержимого регистра r16

brne wait100us1 ; перейти на wait100us1если содержимое r16 не равно 0

pop r16 ; загрузить из стека регистр r16

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

После компиляции и загрузки программы в Flash память микроконтроллера на линейке светодиодных индикаторов наблюдается заданная информационная последовательность с частотой смены состояний порядка 0,5 С

Выводы: В ходе выполнения лабораторной работы получены навыки программирования порта ввода/вывода общего назначения и разработки программы временной задержки без применения периферийных устройств микроконтроллера.