Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЦМПУ / Новая папка (1) / ЦИМПУ(atmega 128).doc
Скачиваний:
102
Добавлен:
16.04.2015
Размер:
4.2 Mб
Скачать

Задание для индивидуальной работы

Таблица 2.8 Варианты индивидуальных заданий

№ Вар.

Задание

1

Необходимо написать программу сложения содержимого вершины стека со вторым значением, хранящимся в стеке. Результат поместить в стек.

2

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

3

Определить количество отрицательных элементов из пяти шестнадцатеричных чисел: F9,7A,F2,74,9C. Отрицательное число идентифицируется по "единице" в самом старшем разряде. Числа хранятся в последовательно расположенных ячейках памяти, начиная с адреса $0060. Результат занести в один из регистров.

4

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

5

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

2.5 Контрольные вопросы

  1. Дать краткую характеристику микроконтроллера ATmega128.

  2. Дать краткий обзор архитектуры микроконтроллера ATmega128.

  3. Расскажите о SRAM?

  4. Какие адреса имеет пространство ввода-вывода данных?

  5. Что такое регистр статуса SREG?

  6. Для чего используются индексные регистры?

  7. Что такое регистр MCUCR?

  8. Расскажите о EEPROM (ЭСППЗУ)

  9. Расскажите о FlashROM

  10. Дать краткий обзор организации памяти микроконтроллера ATmega128.

  11. Расскажите о внешних прерываниях.

  12. Какое отличие директив .CSEG, .DSEG, .ESEG?

  13. Какие существуют директивы для определения символического имени, байт- и слов- констант?

  14. Расскажите о регистре EIMSK.

  15. Расскажите о регистре MCUCSR

  16. Расскажите о регистрах EICRA и EICRB

2.6 Содержание отчета по лабораторной работе

  1. Краткое теоретическое введение.

  2. Алгоритм и Блок схема программы самостоятельного задания.

  3. Листинг программы и проектного файла с комментариями.

  4. Выводы по лабораторной работе.

Лабораторная работа №3

«Изучение простейших операций микроконтроллера»

3.1 Цель работы: Изучить выполнение микроконтроллером простейших операций пересылки и передачи управления.

3.2 Теоретическое введение

3.2.1 Общие сведения

Команда микроконтроллера – программная единица, представляющая собой двоичной число, которое, будучи прочитано микроконтроллером, заставляет его выполнять определенные действия.

Команда микроконтроллера должна содержать информацию двух видов. Во–первых, команда должна сообщить микроконтроллеру, что делать. Во–вторых, указывать местоположение обрабатываемых данных. В соответствии с этим команда состоит из двух частей: кода операции и адреса или данных. Если длина команды составляет два или три слова, то первое из них – это код операции, второе и третье – адрес данных и др. Но неправильно считать, что команды в одно слово – безадресные.

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

Так как память программ является 16-разрядной, соответственно большинство команд описывается 16-разрядным словом, которое называется также кодом операции (КОП). Код операции – это число, расположенное в памяти программ и определяющее действие, которое необходимо произвести между источником и приемником. Ряд команд, у которых один из операндов является 16-разрядным адресом, занимает две ячейки памяти программ. Соответственно код операции таких команд является 4-байтным числом. В ряде случаев значение операнда-источника может содержаться непосредственно в коде операции, а не в регистре. Это происходит в том случае, когда операндом-источником является непосредственное значение (константа). Использование констант позволяет повысить удобочитаемость программы, а также упростить ее отладку и дальнейшее развитие.

Микроконтроллер ATmega128 поддерживают 8 способов адресации для доступа к различ­ным областям памяти данных (РОН, РВВ, ОЗУ). В действительности способов адресации всего два: прямая адресация и косвенная. Однако каждый способ адресации имеет несколько разновидностей в зависимости от того, к какой области памяти производится обра­щение (для прямой адресации) или какие дополнительные действия выполняются над индексным регистром (для косвенной адресации).

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

Регистровый файл с быстрым доступом содержит 32 x 8-разрядных рабочих регистров общего назначения с однотактовым циклом доступа. Благодаря этому, достигнута однотактность работы арифметико-логического устройства (АЛУ). При обычной работе АЛУ сначала из регистрового файла загружается два операнда, затем выполняется операция, а после результат отправляется обратно в регистровый файл и все это происходит за один машинный цикл.

6 регистров из 32 могут использоваться как три 16-разрядных регистра косвенного адреса для эффективной адресации в пределах памяти данных. Один из этих указателей адреса может также использоваться как указатель адреса для доступа к таблице преобразования во флэш-памяти программ. Данные 16-разрядные регистры называются X-регистр, Y-регистр и Z-регистр и описываются далее в этом разделе.

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

Для ветвления программы поддерживаются инструкции условных и безусловных переходов и вызовов процедур, позволяющих непосредственно адресоваться в пределах адресного пространства. Большинство инструкций представляют собой одно 16- разрядное слово. Каждый адрес памяти программ содержит 16- или 32- разрядную инструкцию. Флэш-память программ разделена на две секции: секция программы начальной загрузки и секция прикладной программы. Обе секции имеют раздельные биты защиты от записи и чтения/записи. Инструкция SPM (запись в секцию прикладной программы) должна использоваться только внутри секции программы начальной загрузки.

При генерации прерывания и вызове подпрограмм адрес возврата из программного счетчика записывается в стек. Стек эффективно распределен в статическом ОЗУ памяти данных и, следовательно, размер стека ограничен общим размером статического ОЗУ и используемым его объемом. В любой программе сразу после сброса должна быть выполнена инициализация указателя стека (SPH, SPL) (т.е. перед выполнением процедур обработки прерываний или вызовом подпрограмм). Указатель стека – (SPH, SPL) – доступен на чтение и запись в пространстве ввода-вывода. Доступ к статическому ОЗУ данных может быть легко осуществлен через 5 различных режимов адресации архитектуры AVR, описываемые в следующих работах.

Гибкий модуль прерываний содержит свои управляющие регистры в пространстве ввода-вывода и имеет дополнительный бит общего разрешения работы системы прерываний в регистре статуса. У всех прерываний имеется свой вектор прерывания в соответствии с таблицей векторов прерываний. Прерывания имеют приоритет в соответствии с позицией их вектора. Прерывания с меньшим адресом прерывания имеют более высокий приоритет.

Пространство памяти ввода-вывода содержит 64 адреса с непосредственной адресацией или может адресоваться как память данных, следующая за регистрами по адресам $20 - $5F. Кроме того, ATmega128 имеет пространство расширенного ввода-вывода по адресам $60 - $FF в статическом ОЗУ, для доступа к которому могут использоваться только процедуры (команды) ST/STS/STD и LD/LDS/LDD.

Соседние файлы в папке Новая папка (1)