- •Микроконтроллеры
- •Базовая информация о микроконтроллерах
- •Сущность и назначение микроконтроллера. Семейства микроконтроллеров
- •Состав микроконтроллера
- •Назначение микроконтроллера
- •Cемейства микроконтроллеров
- •Отправная точка. Микроконтроллерi8051
- •Основные характеристики микроконтроллераi8051
- •Назначение выводовi8051
- •Структурная схемаi8051
- •Микроконтроллеры семействаavrкомпанииatmel
- •Общая характеристика архитектуры, системы команд и ассемблераAvr
- •Состав семейства и основные характеристики микроконтроллеровAvr
- •Структура ассемблерного кодаAvr
- •Группы команд микроконтроллеров avr
- •Директивы ассемблераAvr
- •Список директив ассемблераAvr
- •Директива byte
- •Директива cseg
- •Директива db
- •Директива def
- •Директива device
- •Директива dseg
- •Директива dw
- •Директивы macro иEndmacro
- •Директива equ
- •Директива set
- •Микроконтроллер atmega8535
- •Характеристики, назначение выводов и структура микроконтроллера aTmega8535
- •Характеристики микроконтроллера aTmega8535
- •Назначение выводов микроконтроллера aTmega8535
- •Структура микроконтроллера aTmega8535
- •Сброс микроконтроллера aTmega8535. Режимы пониженного энергопотребления. Сигналы запроса внешних прерываний. Регистры управления
- •Сброс микроконтроллера aTmega8535
- •Регистр mcucsr (mcu Control and Status Register)
- •Регистр mcucr (mcu Control Register)
- •Режимы пониженного энергопотребления
- •Форма сигналов запроса внешних прерываний
- •Регистры общего назначения, регистр состояния и указатель стека микроконтроллера aTmega8535
- •Регистры общего назначения
- •Регистр состояния (sreg)
- •Указатель стека
- •Ввод-вывод
- •Регистры и команды ввода-вывода
- •Порты ввода-вывода
- •Прерывания
- •Источники и таблица векторов прерываний
- •Регистр gicr (General Interrupt Control Register)
- •Внешние прерывания
- •Регистр gifr (General Interrupt Flag Register)
- •Таймеры микроконтроллера aTmega8535
- •Общая информация о таймерах микроконтроллера aTmega8535
- •Множество таймеров aTmega8535
- •Регистр timsk (Timer/Counter Interrupt Mask Register)
- •Регистр tifr (Timer/Counter Interrupt Flag Register)
- •Примеры программ работы с таймером
- •Таймер t0
- •Назначение и свойства таймера t0
- •Структура таймера t0
- •Регистры таймера t0
- •Регистр tccr0 (Timer/Counter Control Register)
- •Устройство сравнения таймера t0
- •Режимы работы таймера t0
- •Режим Normal
- •Режим ctc
- •Режим быстрой шим (fastPwMmode)
- •Режим шим с корректировкой фазы (Phase Correct pwm Mode)
- •Таймер t1
- •Назначение и свойства таймера t1
- •Структура таймера t1
- •Регистры таймера t1
- •Регистр tccr1a (Timer/Counter1 Control Register a)
- •Регистр tccr1b (Timer/Counter1 Control Register b)
- •Задание режима генерации сигнала битами wgm13:0
- •Устройство захвата (Input Capture Unit)
- •Режимы работы таймера t1
- •Список режимов работы таймера t1
- •Режим быстрой шим (fast pwm mode) таймера t1
- •Режим шим с корректировкой фазы (Phase Correct pwm Mode) таймера t1
- •Режим шим с корректировкой фазы и частоты (Phase and Frequency Correct pwm Mode) таймера t1
- •Таймер t2
- •Назначение и свойства таймера t2
- •Структура таймера t2
- •Регистры таймера t2
- •Регистр tccr2 (Timer/Counter Control Register)
- •Устройство сравнения таймера t2
- •Режимы работы таймера t2
- •Режим Normal
- •Режим ctc
- •Режим быстрой шим (fast pwm mode)
- •Режим шим с корректировкой фазы (Phase Correct pwm Mode)
- •Асинхронный режим работы таймера t2. Регистр assr (Asynchronous Status Register)
Регистры общего назначения, регистр состояния и указатель стека микроконтроллера aTmega8535
Регистры общего назначения
Множество регистров общего назначения в документации Atmel называется регистровым файлом. Число регистров общего назначения — 32. Разрядность — 8. Они обозначаются как R0 — R31. Каждый регистр ассоциируется с определенным адресом памяти данных: R0 — 0x00, R1 — 0x01, … R31 — 0x1F. Таким образом, регистровый файл занимает первые 32 байта адресного пространства, хотя физически эти регистры не являются ячейками памяти данных. Последние шесть регистров R26 – R31 составляют попарно три 16-разрядных регистра-указателя X, Y и Z, которые используются для косвенной адресации.
Для адресации регистра общего назначения требуется пять бит в коде команды. Это довольно много, особенно если учесть, что большинство команд AVR двухбайтные. В архитектуре x86 требуется всего три бита для адресации регистра, а команды там бывают намного длиннее. Поэтому для экономии места в коде некоторых команд отводится четыре бита под адрес регистра, и могут быть использованы только регистры старшей половины — r16-r31. Это, например, команда непосредственной загрузки регистра, ldi rd, k , где 16<=d<=31.
Регистр состояния (sreg)
Регистр состояния фиксирует признаки выполнения арифметических и логических операций, которые затем могут быть использованы для организации потока управления командами условных переходов. Регистр состояния относится к числу регистров ввода-вывода.
Формат SREG:
Бит 7 — I: Global Interrupt Enable, флаг разрешения прерываний. Установка в единицу приводит к общему разрешению прерываний. Конкретные прерывания управляются отдельными битами в соответствующих регистрах. Если флаг I сброшен, никакие прерывания не разрешены вне зависимости от установок конкретных прерываний. Флаг прерывания сбрасывается аппаратно при переходе к обработке прерывания и устанавливается командой RETI для разрешения последующих прерываний. I-флаг может быть также установлен и сброшен программно с помощью команд SEI и CLI.
Бит 6 — T: Bit Copy Storage, бит загрузки-размещения, временный бит. Бит T используется командами BLD (Bit LoaD) и BST (Bit STore) как источник или назначение обрабатываемого бита.
Бит 5 — H: Half Carry Flag, флаг полупереноса (переноса между тетрадами). Устанавливается при выполнении арифметических операций в случае переноса из младшей тетрады байта в старшую или заема из старшей тетрады. Полезен в двоично-десятичной арифметике.
Бит 4 — S: Sign, флаг знака, позволяет представить результат арифметической операции над восьмиразрядными числами в виде девятиразрядного числа, являясь как раз девятым разрядом. S = N V.
Бит 3 — V: Two’s Complement Overflow Flag, флаг переполнения (при операциях над числами в дополнительном до двух коде), устанавливается, если результат арифметической операции выходит за пределы допустимого диапазона знаковых чисел: -128 127.
Бит 2 — N: Negative Flag, флаг отрицательного результата, устанавливается, если старший разряд результата, бит 7, равен единице.
Бит 1 — Z: Zero Flag, флаг нуля.
Бит 0 — C: Carry Flag, флаг переноса.
Все флаги SREG порождают условия, по которым может быть произведен переход.