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

19. Микроконтроллеры avr. Система команд.

20. Микроконтроллеры avr. Методы адресации.

21. Микроконтроллеры avr. Организация интерфейса с семисегментным индикатором и матричной клавиатурой.

.include "m16def.inc"

.def temp=r16

.def radch=r25

.def radcl=r24

.def reg0=r23

.def delay1=r20

.def delay2=r21

.def delay3=r22

.def regind=r17

jmp RESET

.org $001c

jmp LADC

.org $0030

RESET: ldi r16,high(RAMEND)

out SPH,r16

ldi r16,low(RAMEND)

out SPL,r16 ; инициализация стека

ldi temp,0b00000000

out SFIOR,temp

ldi temp,0b01100100

out ADMUX,temp

ldi temp,0b11101110

out ADCSRA,temp

ldi temp,$FF ; инициализация портов

out DDRB,temp

ldi temp,$FF

out DDRD,temp

sei ; установка глобального флага прерывания

WORK: ldi temp,0b0000010 ; вывод на второй слева индикатор

out PORTB,temp

mov reg0,radch

ldi r29, $0F ; 0F для выделения при умножении мл. части числа

and reg0, r29 ; умножение, выделение младшей reg0

call DC0

call TIME

ldi temp,0b00000001 ; вывод на первый слева индикатор

out PORTB,temp

mov reg0,radch

swap reg0 ; смена мест младшей и старшей части переменной

and reg0, r29 ; выделение старшей части

call DC0

call TIME

jmp WORK

LADC: in radcl,ADCL ; чтение выхода ЦАП

in radch,ADCH

reti ; возвращение после прерывания по адресу из стека

TIME: ldi delay1,$FF

ldi delay2,$00

ldi delay3,$00

LOOP: subi delay1,1

sbci delay2,0

sbci delay3,0

brcc LOOP

ret

DC0: cpi reg0,0 ; "0"

brne DC1

ldi regind,0b00111111

out PORTD,regind

ret

DC1: cpi reg0,1 ; "1"

brne DC2

ldi regind,0b00000110

out PORTD,regind

ret

и т.д.

22. Ассемблер микроконтроллеров avr. Приемы программирования.

23. Программные и аппаратные средства разработки и отладки микропроцессорных систем.

Отличительные особенности стартового набора STK500 фирмы Atmel:

Совместимость с программой AVR Studio

Связь с ПК через интерфейс RS-232 для программирования и управления

Стабилизированный источник питания с входом 10 – 15В

8-, 20-, 28-, 40-выводные панели для установки DIP-корпусов AVR-микроконтроллеров

Поддержка параллельного и последовательного программирования повышенным напряжением всех AVR-микроконтроллеров

Последовательное внутрисистемное программирование (ISP) всех AVR-устройств

Внутрисистемный программатор для программирования микроконтроллера непосредственно в целевом приложении

Перепрограммирование AVR-микроконтроллеров

8 кнопок общего назначения

8 светодиодов общего назначения

Все порты ввода-вывода выведены на штырьки разъема

Дополнительный порт RS-232 общего назначения

Разъемы расширения для подключения внешних модулей и областей для макетирования

Встроенная флэш-память DataFlash емкостью 2 Мбит для энергонезависимого хранения данных.

Набор STK500 поставляется с микроконтроллером AT90S8515-8PC на панели с маркировкой SCKT3000D3. Исходные установки перемычек обеспечивают работу микроконтроллера совместно с тактовым генератором и стабилизатором напряжения, установленных на плате STK500.

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

Для работы требуется внешний источник питания 10 – 15В. Входная схема выполнена как двухполупериодный выпрямитель и STK500 распознает полярность приложенного напряжения. Если к центральному штырьку разъема приложен положительный полюс источника, то это может привести к невозможности выключения STK500, т.к. переключатель питания разрывает цепь GND, а она может быть организована через кабель порта RS-232 или через другое альтернативное подключение. Подключите кабель питания между источником питания и STK500. Подайте 10-15В постоянного напряжения на кабель питания. Перемещением переключателя питания можно включить или отключить STK500. Свечение красного светодиода сигнализирует о подаче питания, а состояние статусного светодиода будет изменяться от красного к желтому, а затем к зеленому. Зеленый цвет светодиода сигнализирует о наличии напряжения VCC (питание микроконтроллера). Программа в AT90S8515 начинает работать, изменяя состояние светодиодов при нажатии на кнопки.

Стартовый набор может настраиваться на различные частоты тактирования и источники питания.

AVR Studio – интегрированная среда проектирования (IDE), предназначенная для разработки и отладки AVR-приложений. AVR Studio содержит средства управления проектом, редактор исходных файлов, симулятор, интерфейс внутрисхемного эмулятора и интерфейс программирования для STK500.

Для того, чтобы запрограммировать hex-файл в AVR-микроконтроллер, выполните команду “STK500” из меню “Tools” программы AVR Studio.

Выберите тип AVR-микроконтроллера из раскрывающегося списка на закладе “Program” и укажите путь к записываемому intel-hex-файлу в поле «Input HEX File».

Нажмите кнопку “Erase Device” (стирание), расположенную на закладке программирования “Program”. Статусный светодиод светится желтым цветом во время программирования, а после успешного завершения загорается зеленым цветом. После выявления ошибки программирования светодиод загорается красным цветом.

При программировании микроконтроллеров всё большую популярность приобретает язык Си. При его использовании сокращается время на разработку, что особенно заметно при написании больших программ, обеспечивается их переносимость на другие платформы. Недостатком языка Си по сравнению с языком Ассемблера является больший объем кода и, как следствие, более низкая скорость работы. благодаря тому, что в архитектуре AVR изначально заложено эффективное декодирование и исполнение инструкций, генерируемых компиляторами, после компиляции Си - программ получается высокопроизводительный код.

Существует ряд компиляторов Си, поддерживающих архитектуру AVR: CodeVisionAVR, ImageСraft C, AVR GCC и др., которые включают в себя широкий набор библиотек для работы с периферийными устройствами и поддерживают форматы объектных файлов, используемых при отладке в AVR Studio. Кроме того, многие компиляторы поддерживают возможность программирования микроконтроллеров после компиляции исходного текста программы

Среда CodeVisionAVR

Программа CodeVisionAVR фирмы HP InfoTech – это интегрированная среда разработки, содержащая компилятор языка Си, графическую оболочку, автоматический генератор программ и встроенный программатор, ориентированные на работу c семейством микроконтроллеров AVR.

Наряду со стандартными библиотеками языка Си и системой справок по языку компилятор имеет библиотеки для работы с периферийными устройствами (ЖКИ - индикаторами с встроенными контроллерами, датчиками температуры, часами реального времени, энергонезависимой памятью EEPROM, шиной SPI и др.). Также имеется автоматический генератор программ для инициализации внутренних и периферийных ресурсов микроконтроллера: портов, системы прерываний, встроенного АЦП, таймеров, ЖКИ - индикатора и т.д. Для систем, использующих последовательную передачу данных (RS232, RS422, RS485), имеется встроенный в компилятор буферTerminal.

Генерируемые объектные файлы COFF позволяют осуществлять с помощью отладчика AVR Studio отладку программы непосредственно в коде Си.

Наглядность программы. Язык высокого уровня позволяет использовать сложные структуры данных, такие как массивы, строки, списки, записи, обеспечивает максимальное удобство при написании циклов и ветвлений, избавляет программиста от написания рутинных фрагментов программ.

Программирование на Ассемблере требует знаний всех ресурсов МК. Программа, написанная на Ассемблере, не всегда наглядна, разобраться в коде достаточно сложно, при использовании микроконтроллеров с RISC-архитектурой возникают проблемы при программировании сложных операций, таких как умножение и деление, при работе со структурами данных.

Размер кода. При использовании всех возможностей языка Си программа может быть очень компактной, однако при сравнении откомпилированных кодов оценки могут измениться. Код, написанный на Ассемблере, минимален по размеру и оптимизирован под конкретную задачу, что позволяет получить высокую скорость работы программы. Компилятор же оперирует фрагментами кода по общим правилам. Например, в приведенном примере со светодиодами в начале работы программы 6.1 обнуляются все регистры МК и оперативная память SRAM, при входе в процедуру прерывания регистры сохраняются в стеке, а затем восстанавливаются при выходе. Однако в приложении работа с памятью данных алгоритмом не предусмотрена и используется всего лишь несколько регистров.

Отладка. Если программа пишется на языке высокого уровня, а отлаживать предполагается откомпилированный код, то весь процесс может занять больше времени, чем написание и отладка программы на Ассемблере. Вместе с тем, написание и отладка на языке Си программ, ориентированных в большей степени на обработку данных, проще, чем при использовании Ассемблера.

Переносимость. Изменение частоты синхронизации МК, очевидно, влияет на длительности выполнения процедур. В случае если время выполнения должно остаться неизменной величиной (в нашем случае это время включения светодиода), потребуется вносить изменения в программу на Ассемблере, заново пересчитывая коэффициенты в циклах задержки. В программе на Си необходимо только заменить частоту в конфигурации проекта, и компилятор пересчитает всё автоматически, что, безусловно, проще.

Учитывая факт, что откомпилированный код всегда больше исходного кода, написанного на Ассемблере, и, также, принимая невозможность простой оптимизации откомпилированного кода, можно сделать выводы о предпосылках выбора языка программирования: это сложность и направленность задачи, наличие средств отладки, доступный размер памяти МК, требуемое быстродействие процедур, сроки проектирования и др.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]