Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Пример алгоритма программы



Алгоритм программы решения задачи представлен на рис. 5.1. В начале программы размещаются операторы, организующие требуемую структуру данных, а затем операторы решения задачи.

 


 

Запись кода в порт С
$3f   $6d
$06   $7d
$5b   $07
$4f   $7f
$66   $6f

 

Рекомендуется выбирать максимально возможный из доступных адресов SRAM
К начальному адресу прибавляяется результат вычитания или ноль
Рекомендуется выбирать максимально возможный из доступных адресов SRAM
Определение имен констант для хранения адресов кодов


Нет
Начало  

 

 


  Задание стека

 

 


задание адреса начала зарезервированных ячеек

 


Присвоение имен ячейкам SRAM

 

  Настройка портов
Задание уменьшаемого и вычитаемого
Задание семисегментных кодов
Произвести вычитание
Да
Результату присвоить значение нуля  
Тумблер включен?
Определение адреса ячейки с кодом результата
Из ячейки выдать код на индикацию

 


Рис. 5.1. Алгоритм программы для примера 5.1

 


Пример текста программы

 

Полученный алгоритм реализуется программой № 1. Один блок алгоритма может реализовываться несколькими командами.

 

;*****************************************************

;Программа № 1.Использование директивы EQU

;************************************** **********************

;******подключаемые дополнительные файлы******

.include "8535def.inc" ;включить файл – описание для AT90S8535

 

.dseg ;объявление сегмента данных

 

;******* ;присвоение имен ячейкам SRAM **********************

.equ cod0=$64

.equ cod1=$65

.equ cod2=$66

.equ cod3=$67

.equ cod4=$68

.equ cod5=$69

.equ cod6=$6a

.equ cod7=$6b

.equ cod8=$6c

.equ cod9=$6d

 

.cseg ;объявление сегмента кодов

.org 0 ; адрес начала программы в программной памяти

rjmp reset ;прерывание по сбросу

 

;*******начало основной программы**********

.org $30

reset:

; ******* задание стека с вершиной по адресу $025f *******

ldi r16,$02

out sph,r16

ldi r16,$5f

out spl,r16

 

; ******* задание адреса начала зарезервированных ячеек *******

ldi zl,$64

ldi zh,$00

 

; ******* Настройка портов ****************************

ldi r16,$ff ;настроить порт С на выход

out ddrc,r16

ldi r16,00 ;настроить порт А на вход

out ddra,r16

ldi r16,$c ;настроить порт В: биты 2 и 3 на выход, остальные на вход

out ddrb,r16

ldi r16,$f0 ;настроить порт D: биты 0...4 на вход, остальные на выход

out ddrd,r16

 

sbi portB,3 ;выдать 1 на разряд 3 порта В (активен HG2)

 

; ******* задание семисегментных кодов *******

ldi r17,$3f

sts cod0,r17

ldi r17,$06

sts cod1,r17

ldi r17,$5b

sts cod2,r17

ldi r17,$4f

sts cod3,r17

ldi r17,$66

sts cod4,r17

ldi r17,$6d

sts cod5,r17

ldi r17,$7d

sts cod6,r17

ldi r17,$07

sts cod7,r17

ldi r17,$7f

sts cod8,r17

ldi r17,$6f

sts cod9,r17

 

;******* Задание уменьшаемого и вычитаемого *******

ldi r17,5 ;задание уменьшаемого

ldi r18,3 ;задание вычитаемого

 

m1:

 

;******* Проверка «Тумблер включен?» *******

sbis pina,4 ;если включен тумблер SA1,то пропустить

rjmp m2 ;следующую команду

;******* Произвести вычитание *******

mov r20,r17 ; в r20 поместить уменьшаемое

sub r20,r18 ; вычесть вычитаемое результат остается в r20

rjmp vv

 

;******* Результату присвоить значение нуля *******

m2:

ldi r20,0 ;в r20 записать ноль

 

;******* Определение адреса ячейки с кодом результата *******

vv:

push zl ;сохранить zl в стеке

add zl,r20 ;сложить zl с результатом

ld r0,z ;семисегментный код результата переслать в r0

pop zl ;извлечь zl из стека

 

;******* Из ячейки выдать код на индикацию *******

out portc,r0 ;запись кода в порт С

 

rjmp m1

 

 

НАБОР И ОТЛАДКА ПРОГРАММ

Набор программы

Для ввода программы используется программа AvrStudio.

Для запуска программы запустите файл AvrStudio.exe. Появится основное диалоговое окно программы.


 

В верхней части программы находится меню, в нем надо выбрать Project–>New.

В появившемся окне выберите имя проекта (Project name),

место на диске, куда сохранять проект (Location),


а также тип проекта(Project type), щелкнув мышью на AVR assembler, затем щелкнув на кнопке OK.

 

Появится окно проектов (Project :), в котором находится дерево файлов. В него входят файлы, которые будут компилироваться, с расширением .asm (Assembler Files), а также дополнительные файлы библиотек (Other Files).

На ветви Assembler Files необходимо щелкнуть правой кнопкой мыши появится меню, в нем необходимо выбрать пункт Create New File.


 

В появившемся окне выбрать имя файла (Name), обязательно с расширением .asm и нажать кнопку OK.


 

В открывшемся окне проектов имя файла появится в дереве файлов отдельной ветвью. Его нужно перетащить, удерживая на нем правую кнопку мыши на ветвь Assembler Files. После этого, щелкнув правой клавишей мыши снова вызвать меню и выбрать пункт Параметры проекта (Project Settings). В появившемся окне AVR Assembler Options в пункте формат выходного файла (Output file format:) выбрать Intel Intellec 8/ MDS (Intel Hex), нажать OK.


Затем снова вернуться в окно проектов и, щелкнув правой кнопкой мыши на ветви другие файлы (Other Files) вызвать меню и выбрать пункт добавить файл (Add File), найти файл 8535def.inc и подключить его к проекту.

Необходимо отметить, что этот файл должен находиться в той же папке, что и asm файл, который создается, поэтому его лучше скопировать заранее из папки Programm files\ Atmel \ AVR Studio \ Appnotes., иначе это вызовет ошибку компиляции. Если все сделано правильно, то окно проектов должно выглядеть следующим образом:


Теперь щелкаем два раза на asm файле и в открывшемся окне набираем программу.

После того как программа набрана, нажимаем F7 и производим её компиляцию, при этом создается файл с расширением hex, который затем надо будет записать в микроконтроллер.

 

После компиляции появится окно Project Output, в котором указано, какой файл ассемблируется, используемый файл библиотеки, количество слов в программе и сообщение об отсутствии ошибок Assembly complete with no errors. Если есть ошибки, то в этом окне указывается тип ошибки, номер строки с ошибкой и в конце – общее число ошибок. Для их исправления необходимо вернуться к редактируемому файлу и их исправить, а затем снова откомпилировать программу.

AvrStudio позволяет не только компилировать программы, но и отлаживать их на этапе разработки. При этом AvrStudio эмулирует работу микроконтроллера, всех портов ввода/вывода, счетчиков/таймеров, прерываний, ШИМ и АЦП. Эмуляция работы программы позволяет рассмотреть её работу, как если бы она была записана в микроконтроллер.

Необходимо отметить, что можно эмулировать работу только программ, не содержащих ошибок. Поэтому перед эмуляцией AvrStudio произведет компиляцию программы и если есть ошибки то эмулировать (отладить) программу не удастся.

 

Отладка программы

 

Для отладки программы в папку сasm файломнеобходимоскопировать файл AT90S8535_Std.aio,который находится в папке Programm files\ Atmel \ AVR Studio \ IOSetup.

В меню Project выбрать пункт Build and run или нажать Ctrl + F7. Появится окно опции эмулятора (Simulation Options).

В пункте устройство (Device) нужно выбрать микроконтроллер AT90S8535, в пункте частота (Frequency), частоту 8 МГц, нажать кнопку OK.


После этого появится окно, в котором набиралась программа, но начало программы будет отмечено желтой стрелкой – это начало программы, выше идут директивы компилятора. При эмуляции работы программы необходимо видеть состояния регистров, портов ввода/вывода, процессора. В главном меню программы выбираем пункт просмотр (View), затем пункт регистры (Registers), далее пункты процессор(Processor), просмотр ввода/вывода (New IO View).

 

В меню View имеются и другие пункты, которые можно использовать, но в данном руководстве они не рассматриваются. Для наблюдения работы микроконтроллера в большинстве случаев достаточно только этих окон. Таким образом, после всех этих действий получится окно примерно такого вида:


 

Теперь можно приступить к запуску программы. AvrStudio позволяет запустить программу в реальном времени, в пошаговом режиме, до указателя.

В главном меню в пункте отладка (Debug), находятся все варианты запуска программы.

Reset – сброс на начало программы (желтая стрелка указателя показывает на начало),

Go – запуск в реальном времени (программа будет выполнятся до тех пор, пока не будет выбран пункт Break),

Step over – пошаговый режим (программа выполняется построчно, при этом останавливается после каждой команды, стрелка указывает на текущую команду),

Run to cursor – выполнять до курсора (программа выполняется до места отмеченного курсором в окне с редактируемой программой).

Во время выполнения программы можно наблюдать за состоянием регистров после каждой команды, тем самым проверяется правильность операций, производимых микроконтроллером.

 




Поиск по сайту:

©2015-2020 studopedya.ru Все права принадлежат авторам размещенных материалов.