Автор работы: Пользователь скрыл имя, 08 Апреля 2014 в 12:27, курсовая работа
Различные выполняемые функции и сферы применения обусловили специализацию СБИС. По данному признаку достаточно условно их можно разделить на следующие классы:
СБИС с аппаратной реализацией алгоритмов обработки данных;
микропроцессоры универсальные;
микропроцессоры сигнальные;
микроконтроллеры, включая интерфейсные схемы для образования мультипроцессорных систем;
микросхемы памяти: статические и динамические;
программируемые логические интегральные схемы (ПЛИС).
ВВЕДЕНИЕ 2
ТЕОРЕТИЧЕСКАЯ ЧАСТЬ 5
1.1.Архитектура МК attiny13 6
1.2.Процессорное ядро МК attiny13 11
1.3.Способы адресации 15
1.4.Энергонезависимая память данных 15
1.5.Порты ввода/вывода 20
2.РАЗРАБОТКА МК УСТРОЙСТВА 22
2.1.Индикатор температуры тела 32
2.2. Принципиальная схема 33
3. РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ МКУ 36
3.1.Интегрированная среда программирования 38
3.2.Программа на языке Ассемблера 42
Список используемой литературы 45
ЗАКЛЮЧЕНИЕ 50
Система тактирования (Clock System). Данную систему можно сравнить
с сердечно-сосудистой системой
Модуль обработки прерываний (Interrupt Unit)
Периферийные устройства:
Порты ввода/вывода
EEPROM память
USB (только в xMega), USART, I2C, SPI, JTAG
Сторожевой таймер, Таймер/Счетчик (с функцией ШИМ генератора, захвата/сравнения
и т.д.)
АЦП, ЦАП (только в xMega), Аналоговый компаратор
Модули внешнего прерывания (External Interrupts)
Одним из плюсов AVR микроконтроллеров является возможность использования периферийных устройств в различных совместных режимах работы, что очень часто упрощает задачу разработчика. Также в AVR встроена система сброса и отслеживания уровня питающего напряжения (System Control and Reset), обеспечивающая нормальный старт микроконтроллера и в случае необходимости, надежное завершение работы.
Регистры управления/состояния периферийных устройств находятся в области памяти данных (Data memory), между регистрами общего назначения и оперативной памятью, что обеспечивает высокое быстродействие в работе с периферией. Разработчик, естественно, имеет полный доступ к данным регистрам (I/O Registers).
Здесь вырисовываются три базовых направления:
1.3. Способы адресации.
Все микроконтроллеры AVR семейства поддерживают 8 способов адресации для доступа к различным областям памяти данных (РОН, РВВ, ОЗУ).
В действительности способов адресации всего два:
Однако каждый способ адресации имеет несколько разновидностей в зависимости от того, к какой области памяти производится обращение (для прямой адресации) или какие дополнительные действия выполняются над индексным регистром (для косвенной адресации).
Прямая адресация
При прямой адресации адреса операндов содержатся непосредственно в слове команды. В соответствии со структурой памяти данных существуют следующие разновидности прямой адресации: прямая адресация одного РОН, прямая адресация двух РОН, прямая адресация РВВ, прямая адресация ОЗУ.
Прямая адресация одного регистра общего назначения
Этот способ адресации используется в командах, оперирующих с одним из регистров общего назначения. При этом адрес регистра- операнда (его номер) содержится в разрядах 8…4 (5 бит) слова команды.
Примером команд, использующих этот способ адресации, являются команды работы со стеком (PUSH, POP), команды инкремента (INC), декремента (DEC), а также некоторые команды арифметических операций.
Прямая адресация двух регистров общего назначения
Этот способ адресации используется в командах, оперирующих одновременно с двумя регистрами общего назначения. При этом адрес регистра-источника содержится в разрядах 9, 3…0 (5 бит), а адрес регистра-приемника в разрядах 8…4 (5 бит) слова команды.
К командам, использующим этот способ адресации, относятся команда пересылки данных из регистра в регистр (MOV), а также большинство команд арифметических операций.
Данный способ адресации используется командами пересылки данных между регистром ввода/вывода и регистровым файлом – IN и OUT. В этом случае адрес регистра ввода/вывода содержится в разрядах 10, 9, 3…0 (6 бит), а адрес РОН – в разрядах 8…4 (5 бит).
Прямая адресация ОЗУ
Как следует из названия, данный способ используется при обращении ко всему адресному пространству памяти данных. Естественно, этот способ адресации не поддерживается микроконтроллером AT90S1200.
В системе команд микроконтроллеров семейства имеется только две команды, использующие этот способ адресации. Это команды пересылки байта между одним из РОН и ячейкой ОЗУ – LDS иSTS. Каждая из этих команд занимает в памяти программ два слова (32 бита). В первом слове содержится код операции и адрес регистра общего назначения (в разрядах с 8-го по 4-й). Во втором слове находится адрес ячейки памяти, к которой происходит обращение.
При косвенной адресации адрес ячейки памяти (для AT90S1200 – регистра) находится в одном из индексных регистров X, Y и Z. В зависимости от дополнительных манипуляций, которые производятся над содержимым индексного регистра, различают следующие разновидности косвенной адресации: простая косвенная адресация, относительная косвенная адресация, косвенная адресация с преддекрементом и косвенная адресации с постинкрементом.
Простая косвенная адресация
При использовании команд простой косвенной адресации обращение производится по адресу, который находится в индексном регистре. Никаких действий с содержимым индексного регистра при этом не производится.
Микроконтроллеры поддерживают 6 команд
(по 2 для каждого индексного регистра) простой
косвенной адресации: LD Rd, X/Y/Z, Rd (
Относительная косвенная адресация
При использовании команд относительной косвенной адресации адрес ячейки памяти, к которой производится обращение, получается суммированием содержимого индексного регистра (Y илиZ) и константы, задаваемой в команде. Другими словами, производится обращение по адресу, указанному в команде, относительно адреса, находящегося в индексном регистре.
Соответственно микроконтроллера поддерживают
4 команды относительной косвенной адресации
(две для регистра Y и две для регистра Z): LDD Rd, Y+q/Z+q (
Косвенная адресация с преддекрементом
При использовании команд косвенной адресации с преддекрементом содержимое индексного регистра сначала увеличивается на 1, а затем производится обращение по полученному адресу.
Микроконтроллеры семейства поддерживают 6 команд (по 2 для каждого индексного регистра) косвенной адресации с преддекрементом: LD Rd, - X/ -Y/ -Z (пересылка байта из РОН в ОЗУ).Адрес регистра общего назначения содержится в разрядах 8…4 слова
Косвенная адресация с постинкрементом
При использовании команд косвенной адресации с постинкрементом после обращения по адресу, который находится в индексном регистре, содержимое индексного регистра уменьшается на 1.
Микроконтроллеры семейства
поддерживают 6 команд (по 2 для каждого
индексного регистра) косвенной адресации
с постинкрементом: LD Rd, X+/
1.4. Энергонезависимая память данных.
Как уже было сказано, микроконтроллеры AVR имеют в своем составе энергонезависимую память (EEPROM). Объем этой памяти колеблется от 64 байт до 512 байт в старших моделях. EEPROM-память расположена в своем адресном пространстве и так же, как и ОЗУ, организована линейно.
Для обращения к EEPROM-памяти используются три регистра: регистр адреса, регистр данных и регистр управления. Все эти регистры, а также их использование подробно рассматриваются в этом пункте.
В регистр адреса загружается адрес ячейки,
к которой будет производиться обращение. В моделях микроконтроллеров
с объемом EEPROM-памяти до 256 байт регистр адреса
реализован на одном РВВ (регистр ввода/вывода) – EEAR (EEPROM Addres Register
Все перечисленные регистры доступны как для записи, так и для чтения. При этом содержимое разрядов 7…1 регистра EEARH, разумеется, игнорируется.
Регистр данных
Регистр ввода/вывода, являющийся
регистром данных EEPROM-памяти, называется EEDR (EEPROM Data R
Как следует из названия, данный регистр используется для управления доступом к EEPROM-памяти.
Этот регистр,
который называется EECR (EEPROM Contro
Таким образом, процедура записи одного байта в EEPROM-память состоит из следующих этапов:
1. Дождаться готовности EEPROM к приему новых данных (ждать, пока не сбросится флаг EEWE регистра EECR).
2. Загрузить байт данных в регистр EEDR, а требуемый адрес – в регистр EEAR (EEARH:EEARL).
3. Установить в «1» флаг EEMWE регистра EECR. Причем для выполнения этой операции необходимо в том же машинном цикле записать «0» в разряд EEWE.
4. В течение 4 машинных циклов после установки флага EEMWE записать в разряд EEWE регистра EECR лог: «1».
Длительность цикла записи составляет 2…4 мс, в зависимости от напряжения питания микроконтроллера (2 мс при Vcc = 2,7 В). По окончании цикла записи разряд EEWE аппаратно сбрасывается, после чего программа может начать запись следующего байта.
Процедура чтения данных из EEPROM гораздо проще, чем процедура записи. После загрузки требуемого адреса в регистр EEAR (EEARH;EEARL) программа должна установить в «1» разряд EERE регистра EECR. Когда запрошенные данные будут находиться в регистре данных EEDR, произойдет аппаратный сброс этого разряда.
К сожалению, у EEPROM-памяти есть один недостаток: во время работы при пониженном напряжении питания хранящиеся в ней данные могут быть повреждены. Это может произойти по двум причинам:
1. Обычная процедура записи в EEP
2. Микроконтроллер сам может выполнять команды некорректно, если напряжение питания будет ниже некоторой величины.
Чтобы избежать повреждения данных, хранящихся в EEPROM, достаточно воспользоваться одним из трех следующих решений:
1.5. Порты ввода/вывода.
Каждый микроконтроллер содержит
порты ввода-вывода, к которым, можно подключить
какое либо устройство, будь это светодиод
или кнопка. В некоторых AVR микроконтроллерах
некоторые порты ввода-вывода можно сконфигурировать
как аналоговые порты ввода-вывода, например
АЦП (Аналого-цифровой преобразователь),
ШИМ (Широтно-импульсная модуляция).
Порты ввода-вывода AVR микроконтроллера
Attiny13:
Как видно на картинке, у микроконтроллера Attiny13, 6 портов ввода-вывода (PB0 – PB5) и 2 ножки по питанию (VCC, GND). Но, первая ножка микроконтроллера Attiny13 (порт PB5), по умолчанию не порт ввода-вывода, а сброс (Reset) микроконтроллера. Его можно переключить в порт ввода-вывода специальным фьюз битом (RSTDISBL), но тогда микроконтроллер не будет поддерживать внутрисхемное программирование (по SPI интерфейсу).