Занимательная микроэлектроника — страница 109 из 117

главы 12, в настоящее время указанные типы микроконтроллеров AVR «Classic» заменяются на более развитые версии, в названиях которых присутствуют приставки «Mega» или «Типу» (например, ATmega8515), но электрические характеристики у них одни и те же, за исключением быстродействия (до 16 МГц, а в случае ATtuny2313 до 20 МГц) и в некоторых случаях расширенного диапазона питания (до 1,8 В).

Производитель: Atmel (США).

Тип прибора указывается на корпусе.

Тип корпуса: DIP-20 (AT90S2313), DIP-40 (AT90S8515, AT90S8535) и др.


Основные электрические параметры

Напряжение питания, В… 2,7–6,0.

Входное напряжение лог. 0, не более, В… 0,2Uпит.

Входное напряжение лог. 1, не менее, В… 0,6Uпит.

Входное напряжение лог. 1 выводов XTAL, не менее, В… 0,8Uпит

Входное напряжение лог. 1 вывода Reset, не менее, В… Uпит

Максимальное входное напряжение лог. 1, В… Uпит + 0.5 В.

Минимальное входное напряжение лог. 0, В… — 0,5 В.

Выходное напряжение лог. 0, не более, В… 0,6.

Выходное напряжение лог. 1, не менее, В:

Uпит = 5 В… 4,2;

Uпит = 3 В… 2,3.

Потребляемый ток в режиме:

Uпит = 3 В, FT = 4 МГц… 3,5 мА;

Power Down… 1 мкА;

Power Down + WDT… 50 мкА.

Входной ток утечки в режиме входа, мкА… 8.

Нагрузочный резистор по входу, кОм… 35—120.

Входное напряжение сдвига аналогового компаратора, мВ… 20.

Входной ток смещения аналогового компаратора, нА… 10.

Максимальный ток через вывод питания или «земли», мА:

AT90S2313, AT90S8515… 140;

AT90S8535… 200.

Максимально допустимый ток одного вывода порта, мА… 40.

Максимальный постоянный ток одного вывода порта, мА… 20.

Максимально допустимый суммарный ток всех выводов порта, мА:

для AT90S2313… 80 (каждый из портов В и D);

для AT90S8515… 80 (порт А), 80 (порты В, С и D в сумме);

для AT90S8535… 100 (порт А), 100 (порты В, С и D в сумме).

Максимальная частота тактового генератора, МГц:

при Uпит = 2,7–6,0 В… 10 (AT90S2313), 4 (AT90S8515, AT90S8535);

при Uпит = 4,0–6,0 В… 16 (AT90S2313), 8 (AT90S8515, AT90S8535).

Приложение 4Базовые команды Atmel AVR

Система команд микроконтроллеров Atmel AVR довольно обширна и включает в себя от 90 до 133 команд, в зависимости от разновидности микроконтроллера. Далее приводится выборочный перечень наиболее часто употребляемых команд по группам. Приведенных команд в принципе достаточно для того, чтобы составить большинство законченных программ для МК AVR, хотя многие полезные, но редко употребляемые команды (такие как eor, сом, neg и др.), здесь отсутствуют. Поэтому для полноценной работы следует иметь полный справочник по командам. Краткие таблицы команд прилагаются ко всем описаниям МК, полный перечень команд на русском имеется в пособиях [1] и [2] (берегитесь неточностей, которые встречаются в первых изданиях этих пособий!). Официальный перечень команд на английском (AVR Instruction Set) можно скачать с сайта atmel.com в виде PDF-документа.

Будьте внимательны при работе с командами: следует обращать внимание на то, что некоторые команды могут быть применены только к определенным регистрам (к примеру, операции с константами работают только со старшими 16 регистрами, начиная с R16), а сами константы не всегда могут иметь полный диапазон значений. Поэтому следует внимательно смотреть характеристики команд, прежде чем использовать их в программе. Команды, помеченные серым цветом, действительны не для всех моделей AVR (для семейства Mega, как правило, действительны все, но стоит уточнить по описанию конкретного контроллера).

В табл. П4.1—П4.6 приняты следующие сокращения: РОН (регистр общего назначения), РВВ — регистр ввода/вывода, PC — счетчик команд (программный счетчик, Program Counter). Буквой с в регистре флагов SREG обозначается флаг переноса (устанавливается при возникновении переноса при арифметических операциях), буквой z — флаг нуля (устанавливается по равенству операндов при сравнении). Последний не путать с парой регистров R31:R30, которые задействованы в командах переноса данных, и также обозначаются буквой z. В этих командах используются также обозначения X (пара регистров R27:R26) и Y (пара регистров R29:R28).


Арифметические и логические команды

Арифметические и логические команды приведены в табл. П4.1.




Команды операций с битами

Команды операций с битами приведены в табл. П4.2.




1 Команды SBI и CBI действительны для PBB по первым 32 адресам (0…31)


Команды сравнения

В операциях сравнения с регистрами производятся те же действия, что и в соответствующих арифметических и логических операциях, однако результат никуда не помещается (и, соответственно, операнды не портятся), лишь устанавливаются соответствующие флаги (C и Z) в регистре флагов SREG. Значением этих флагов в дальнейшем определяется работа тех команд условного перехода, которые употребляются в паре с командами сравнения (исключение составляет опущенная здесь и редко употребляемая команда CPSE, которая содержит сравнение и переход «в одном флаконе»). Описание команд сравнения приведено в табл. П4.3.



Команды передачи управления

Команды передачи управления делятся, с одной стороны, на команды безусловного перехода и похожие на них команды вызова подпрограмм (последние от первых отличаются тем, что явно размещают в стеке содержимое счетчика команд для последующего возврата из подпрограммы), с другой стороны, — на команды условного перехода, т. е. нарушения последовательности выполнения операторов по какому-то условию. Большинство таких команд оперируют с адресом в памяти (К) оператора, на который производится переход. В тексте ассемблерных программ абсолютные или относительные числа, обозначающие адрес, в команды передачи управления не подставляются, вместо них указывают метки, которые затем компилятор интерпретирует, как абсолютный адрес. Команды, начинающиеся с буквы «В» (от Branch— «ветка») предполагают предварительный вызов одной из команд сравнения. Описание команд передачи управления приведено в табл. П4.4—П4.5.


Команды безусловного перехода и вызова подпрограмм



1Для устройств с максимально возможным объемом памяти программ до 64 К слов (128 кбайт).


Команды условного перехода




1Значение 2 — если следующая команда занимает одно слово (два байта) и 3 — если следующая команда занимает два слова (четыре байта).

2Команды SBIC и SBIS действительны только для РВВ по первым 32 адресам (0..31).


Команды переноса данных

В табл. П4.6 приведено описание команд переноса данных.




Команды управления системой

В табл. П4.7 приведены команды управления системой.


Приложение 5Тексты программ

Далее приведены полные тексты микропрограмм для конструкций, разбираемых в книге. Каждая программа подробно описана в указанных далее главах. Для воспроизведения сканируйте исходный текст с помощью Fine Reader, проверьте и сохраните в виде текстового файла с расширением asm. После этого программу можно компилировать и загружать в память контроллера, как описано в главе 13.


Программа для часов

Описание схемы и программы часов см. главу 14. Программа (листинг П5.1) занимает в памяти МК 298 слов (596 байт).

Листинг П5.1

;============== Программа часов

;AT90S2313 4 МГц

.include "2313def.inc"

;==== Управление сегментами ====

.equ segA = 5; PD5 (pin 9)

.equ segB = 6; PD6 (pin 11)

.equ segC = 2; PB2 (pin 14)

.equ segD = 4; PB4 (pin 16)

.equ segE = 5; PB5 (pin 17)

.equ segF = 6; PB6 (pin 18)

.equ segG = 7; PB7 (pin 19)


;==== Управление разрядами ====

.еqu em = 0; PD0 (pin2)

.equ dm = 1; PD1 (pin 3)

.equ eh = 2; PD2 (pin 6)

.equ dh = 4; PD4 (pin 8)


;==== Рабочие переменные ====

.def POS = r16  ;отсчет разрядов для динамической индикации

.def sek = r17  ;число секунд

.def temp = r18  ;рабочая переменная

.def emin = r19  ;число единиц минут

.def dmin = r20  ;число десятков минут

.def ehh = r21  ;число единиц часов

.def dhh = r22  ;число десятков часов

.def set_up = r23 ;отсчет разрядов при установке

.def count = r24  ;счетчик для мигания

.def Flag = r25  ;флаги режимов


;в регистре Flag: если бит0=1, то идет установка часов

;если бит1=1, то внешнее напряжение пропало


;======== Прерывания =========

rjmp RESET  ;процедура Reset

reti

rjmp INTT1  ;прерывание INTI по нажатию Кн1

reti

rjmp TIM1  ;прерывание Timer1 по сравнению CompareA (счет времени)

reti

rjmp TIM0  ;прерывание Timer0 по переполнению (управл. разрядами)

reti

reti