
- •Введение
- •1. Микроконтроллеры at90s4434/8535 семейства avr
- •1.1. Структура микроконтроллеров avr
- •1.2. Представление данных в языке ассемблера
- •1.2.1. Двоичная система счисления
- •1.2.2. Биты, байты и слова
- •1.2.3. Шестнадцатеричная система счисления
- •1.3. Адресное пространство микроконтроллеров avr
- •2. Лабораторный комплекс
- •2.1. Назначение и состав комплекса
- •2.2. Блок управления
- •3. Директивы ассемблера
- •3.1. Директивы организации сегментов
- •3.2. Директивы счетчика текущего адреса
- •3.3. Директивы определения данных
- •3.4. Директивы присваивания
- •3.5. Директивы задания набора допустимых команд
- •3.6. Директивы управления файлами
- •3.7. Директивы управления листингом
- •4. Система команд микроконтроллеров семейства avr
- •4.1. Команды пересылки данных
- •4.2. Арифметические команды
- •4.3. Логические команды
- •4.4. Команды перехода
- •5. Программа на ассемблере
- •5.1. Структура программы
- •5.2. Алгоритм решения задачи и структура данных
- •5.3. Пример алгоритма программы
- •5.4. Пример текста программы
- •6. Набор и отладка программ
- •6.1. Набор программы
- •6.2. Отладка программы
- •6.3. Запись программы в микроконтроллер
- •7. Меры безопасности при эксплуатации комплекса
- •8. Общие методические указания к лабораторным работам
- •Порядок выполнения лабораторных работ:
- •Содержание отчета по лабораторной работе:
- •9. Лабораторная работа № 1. Изучение системы команд микроконтроллера и директив ассемблера
- •9.2. Пояснения к работе
- •9.3. Варианты индивидуальных заданий
- •10. Лабораторная работа № 2. Система параллельного ввода/вывода
- •10.1. Цель работы
- •10.2. Пояснения к работе
- •Для вызова подпрограммы используется команда rcall pprmet, где pprmet – это метка и название подпрограммы.
- •10.3. Варианты индивидуальных заданий
- •11. Лабораторная работа № 3. Динамическая индикация
- •11.1. Цель работы Освоить организацию динамической индикации, используемой в программах. Экспериментально определить влияние длительности задержек на качество индикации.
- •11.2. Пояснения к работе
- •Работа продолжает изучение 8-разрядных двунаправленных портов программируемого микроконтроллера ат90s8535 для ввода и вывода дискретной информации, при этом используется динамическая индикация.
- •Если нет необходимости в длительной задержке, количество ступеней в подпрограмме можно уменьшить.
- •11.3. Варианты индивидуальных заданий
- •12. Лабораторная работа № 4. Система внешних прерываний микроконтроллера
- •12.1. Цель работы
- •12.2. Пояснения к работе
- •12.3. Варианты индивидуальных заданий
- •13. Лабораторная работа № 5. Программирование таймеров/счетчиков
- •13.1. Цель работы
- •13.2. Пояснения к работе
- •13.3.1. Работа в режиме счетчика
- •13.3.2. Работа в режиме таймера
- •13.3.3. Работа в режиме широтно-импульсного модулятора
- •13.3. Варианты индивидуальных заданий
- •Библиографический список
- •Алгоритм
- •Текст программы
- •Выводы по работе:
- •Содержание
- •Ломакин Игорь Владимирович
1.3. Адресное пространство микроконтроллеров avr
В микроконтроллерах AVR все регистры и память данных располагаются в одном адресном пространстве. Это означает, что память данных совмещена с регистрами. Такой подход называется «отображением ресурсов МК на память».
Памятью программ является внутрисистемно программируемая Flash-память объемом 8 Кбайт. Поскольку все команды имеют формат одного или двух 16-разрядных слоев, то и память программ имеет организацию 4К×16. Flash-память обеспечивает не менее 1000 циклов стирания/записи.
Счетчик программ AT90S8535 (PC) является 12-разрядным в зависимости от объема памяти программ (4096). Адреса памяти программ от $0000 до $FFF.
Память данных AVR микроконтроллера AT90S8535 состоит из:
– 32-х 8-разрядных регистров общего назначения;
– 64-х 8-разрядных регистров пространства памяти I/O;
– статического ОЗУ (СОЗУ, SRAM) объемом 512 байт (512 × 8);
– блока энергонезависимой памяти данных EEPROM (ЭСППЗУ) объемом 512 байт (512 × 8), доступного программе микроконтроллера непосредственно в ходе ее выполнения.
EEPROM обычно используется для хранения промежуточных данных, констант, таблиц перекодировок, калибровочных коэффициентов и т.п. Эта память может быть загружена извне как через SPI интерфейс, так и с помощью обычного программатора. EEPROM имеет собственный набор адресов от $0000 до $1FF.
Адресное пространство представлено на рис. 1.3.
Память программ |
|
|
Память данных |
|
||||||
Flash-память программ (4К × 16) |
$0000 |
|
|
32 регистра общего назначения |
$0000 |
|
EEPROM (512 × 8) |
$0000 |
|
|
|
|
|
|
|
|
|
||||
|
|
|
$001F |
|
|
|
||||
|
|
|
|
|
|
|||||
|
|
64 регистра I/O |
$0020 |
|
|
|||||
|
|
|
|
|
||||||
|
|
$005F |
|
|
||||||
|
|
|
|
|
|
|
|
|||
$FFF |
|
|
Встроенная SRAM (512 × 8) |
$0060 |
|
$1FF |
|
|||
|
|
|
|
|
|
|
|
|
||
|
|
|
|
$025F |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
Рис. 1.3. – Конфигурация памяти микроконтроллера AT90S8535
Первые 96 адресов занимают регистровый файл и пространство регистров ввода-вывода. В следующих 512 адресах размещается встроенная SRAM; 32 регистра общего назначения и 64 регистра I/O, кроме адресов в общем пространстве памяти данных, имеют и свои собственные адреса, по которым к ним можно обращаться с помощью специальных команд (рис. 1.4).
|
Дополнительные обозначения |
Собственные адреса (обозначения) |
Адреса в общем пространстве памяти данных |
|
|
|
|
|
|
Файл регистров общего назначения |
|
R0 |
$0000 |
|
|
… |
… |
|
|
|
R25 |
$0019 |
|
|
X - регистр |
R26 |
$001A |
|
|
R27 |
$001B |
|
||
Y - регистр |
R28 |
$001C |
|
|
R29 |
$001D |
|
||
Z - регистр |
R30 |
$001E |
|
|
R31 |
$001F |
|
||
|
|
|
|
|
Файл регистров пространства ввода - вывода |
$00 |
$0020 |
|
|
… |
… |
|
||
$3F |
$005F |
|
||
|
|
|
|
|
Встроенная SRAM |
|
$0060 |
|
|
|
… |
|
||
|
$025F |
|
||
|
|
|
|
|
Рис. 1.4. Организация SRAM микроконтроллера AT90S8535
Всеми режимами адресации перекрывается все адресное пространство данных, включая 32 регистра общего назначения, 64 регистра ввода/вывода и 512 байт внутренних данных SRAM в AT90S8535.
В таблице 1.3 показаны адреса и наименования всех регистров пространства ввода/вывода.
Таблица 1.3. Пространство ввода/вывода (I/O) микроконтроллеров AT90S4434/8535
Адрес I/O (адрес SRAM) |
Обозначение |
Функция |
$3В ($5В) |
GIMSK |
(General Interrupt MaSK register) |
$3А ($5А) |
GIFR |
(General Interrupt Flag Register) |
$39 ($59) |
TIMSK |
(Timer/Counter Interrupt MaSK register) |
$38 ($58) |
TIFR |
(Timer/Counter Flag Register) |
$35 ($5) |
MCUCR |
(MCU general Control Register) |
$34 ($45) |
MCUSR |
(MCU general Status Register) |
$33 ($53) |
TCCR0 |
(Timer/CounterO Control Register) |
$32 ($52) |
TCNT0 |
(Timer/CounterO 8-bit) |
$ |
TCCR1A |
(Timer/Counteri Control Register A) |
$2E ($4E) |
TCCR1B |
(Timer/Counteri Control Register B) |
$2D ($4D) |
TCNT1H |
(Timer/Counteri ст. байт) |
$2C ($4C) |
TCNT1L |
(Timer/CounteM мл. байт) |
$2B ($4B) |
OCR1AH |
(Timer/Counteri Output Compare Register A ст. байт) |
$2A ($4A) |
OCR1AL |
(Timer/Counteri Output Compare Register A мл. байт) |
$29 ($49) |
OCR1BH |
(Timer/Counteri Output Compare Register В ст. байт) |
$28 ($48) |
OCR1BL |
(Timer/Counteri Output Compare Register В мл. байт) |
$27 ($47) |
OCR1H |
(T/C Input Capture Register ст. байт) |
$26 ($46) |
OCR1L |
(T/C Input Capture Register мл. байт) |
$25 ($45) |
TCCR2 |
(Timer/Counter2 Control Register) |
$24 ($44) |
TCNT2 |
(Timer/Counter2 8-bit) |
$23 ($43) |
OCR2 |
(Timer/Counter2 Output Compare Register) |
$22 ($42) |
ASSR |
(Asynchronous Mode Status Register) |
$1B($3B) |
PORTA |
Data Register, Port A |
$1A ($3A) |
DDRA |
Data Direction Register, Port A |
$19 ($39) |
PINA |
Input Pins, Port A |
$18 ($38) |
PORTB |
Data Register, Port В |
$17 ($37) |
DDRB |
Data Direction Register, Port В |
$16 ($36) |
PINB |
Input Pins, Port В |
$15 ($35) |
PORTC |
Data Register, Port С |
$14 ($34) |
DDRC |
Data Direction Register, Port С |
$13 ($33) |
PINC |
Input Pins, Port С |
$12 ($32) |
PORTD |
Data Register, Port D |
$11 ($31) |
DDRD |
Data Direction Register, Port D |
$10 ($30) |
PIND |
Input Pins, Port D |