Разработка программной и аппаратной поддержки к методическим указаниям Программирование микроконтроллеров
Информация - Компьютеры, программирование
Другие материалы по предмету Компьютеры, программирование
массиве А хранится 8 показаний температуры больных .Проверить, нет ли среди них значений выше 37 и ниже 36 и вывести на индикатор соответственно два числа через пробел.
Основные принципы выполнения заданий.
Предполагается, что обучающийся должен иметь представление об архитектуре и системе команд микроконтроллеров AVR. При выполнении задания необходимо придерживаться следующих правил:
- уяснить поставленную задачу, понимая, что должно являться результатом;
- выбрать соответствующий микроконтроллер, исходя из требования задания;
- составить подробное (побитовое) описание необходимых для выполнения задания регистров имея перед собой таблицу всех регистров ввода/вывода (см. ПРИЛОЖЕНИЕ 2);
- определить необходимые векторы прерываний и составить алгоритмы соответствующих обработчиков векторов прерываний;
- составить алгоритм основной программы, учитывая особенности МК (стек и т.д.);
- приступить к написанию программы, выбирая необходимые команды ассемблера.
На рис. 3.15.1 изображена структурная схема процесса обучения. Она включает:
1) Написание программы прошивки микроконтроллера, для решения поставленной задачи;
2) Контроль правильности разработанной программы на симуляторе с помощью компьютера (первая петля обратной связи);
3) Прошивка микроконтроллера и сопряжение с системой индикации (внешними устройствами) для окончательного контроля правильности выполненной задачи (вторая петля обратной связи).
Рис. 3.15.1 Структурная схема процесса обучения.
3.2.2. Рассмотрение типовых примеров
В качестве примера работы с памятью рассмотрим следующее задание: Требуется написать программу копирования таблицы из 20 восьмибитных чисел данных из памяти программ (Program Memory) в оперативную память (SRAM) начиная с адреса 0х80.
Рассмотрим выполнение данной программы в соответствии с предложенными выше правилами.
В данном примере нам необходимо работать с оперативной памятью SRAM. Так как в МК AT90S1200 её нет, то выбираем к примеру AT90S8515 (или др). Теперь нам надо позаботиться о правильной инициализации стека, загрузив в указатель стека адрес старшей ячейки оперативной памяти. Данную программу можно полностью реализовать на симуляторе AVR Studio Simulator, где наглядно будет видна вся карта памяти. Ниже приведем программу с некоторыми пояснительными комментариями.
Программа копирования таблицы данных:
;********************************************************************
.include "8515def.inc"
.equBLOCK1 =$80;начальный адрес копируемой таблицы данных в SRAM
;памяти
.defflashsize =r16;РОН хранящий размер таблицы
.deftemp =r16;РОН для промежуточных действий
rjmpRESET;вектор прерывания по включению питания, сбросу
;RESET или сбросу от сторожевого таймера
;**********************************************************************
;* Подпрограмма копирования таблицы данных из памяти программ в SRAM
flash2ram:
lpm;загружаем из памяти программ в R0 байт адрес
;которого указан в Z
stY+,r0;сохраняем его в SRAM памяти с постинкрементом
;регистра Y
adiwZL,1;инкремент Z
decflashsize;декремент flashsize
brneflash2ram;если предыдущая операция не равна 0 то перейти на
;метку
ret;возврат в основную программу
;***********************************************************************
;* Основная программа
RESET:
lditemp, low(RAMEND); инициализируем указатель стека
outSPL, temp ;
lditemp, high(RAMEND) ;
outSPH, temp ;
ldiZH, high(F_TABLE*2);загружаем в регистр Z удвоенный адрес
ldiZL, low(F_TABLE*2) ; начала таблицы данных
ldiYH, high(BLOCK1) ;загружаем в регистр Y адрес начала
<