Рефераты

AVR микроконтроллер AT90S2333 фирмы Atmel

измерений. Если точность преобразования важна, уровень ума может быть

понижен при помощи следующей техники:

1. Аналоговая часть процессора и все аналоговые компоненты устройства

должны иметь отдельно разведенную на печатной плате землю. Аналоговая земля

должна соединяться с цифровой только в одной точке печатной платы.

2. Путь прохождения аналогового сигнала должен быть коротким насколько

можно. Старайтесь отделять аналоговые дорожки от цифровых аналоговой землей

и проводить их как можно дальше от высокоскоростных цифровых сигналов.

3. Вывод AVcc должен подключаться к источнику Vcc через RC цепочку, как

показано на рисунке:

4. Для уменьшения шума наводимого процессором используйте функцию

подавления шума.

5. Если какие-то выводы порта С используются для вывода цифровых сигналов,

они не должны переключаться во время преобразования.

ХАРАКТЕРИСТИКИ АЦП (T=-40...+85 град.)

Разрешение 10 бит

Интегральная нелинейность (Vref>2V), 0.2(тип),0.5(макс) ед.мл.разр.

Дифференц. нелинейность (Vref>2V), 0.2(тип),0.5(макс) ед.мл.разр.

Ошибка нуля (смещение) 1(тип) ед.мл.разр.

Время преобразования 65...260 мкС

Тактовая частота 50...200 кГц

Напряжение AVcc Vcc+-0.3В (не больше 6В)

Опорное напряжение Agnd...AVcc

Вх.сопр. по вх. опорн. напр. 6..10(тип)..13 кОм

Вх сопр. аналог. входа 100 (тип) МОм

ПОРТЫ ВВОДА/ВЫВОДА

Порт B

Порт B 6-разрядный двунаправленный порт ввода/вывода.

Для обслуживания порта отведено три регистра: регистр данных PORTB (18h,

38h), регистр направления данных - DDRB (17h, 37h) и ножки порта B - PINB

(16h, 36h). Адрес ножек порта B предназначен только для чтения, в то время

как регистр данных и регистр направления данных - для чтения/записи.

Все выводы порта имеют отдельно подключаемые подтягивающие резисторы.

Выходы порта B могут поглощать ток до 20 mA и непосредственно управлять

светодиодными индикаторами. Если выводы PB0..PB5 используются как входы и

замыкаются на землю, если включены внутренние подтягивающие резисторы,

выводы являются источниками тока (Iil). Дополнительные функции выводов

порта B приведены в таблице 20.

Таблица 21. Альтернативные функции выводов порта B

|Вывод|Альтернативная функция |

|PB0 |ICP (Вход захвата таймера/счетчика |

| |1) |

|PB1 |OC1 (Выход совпадения |

| |таймера,счетчика 1) |

|PB2 |SS (Выбор ведомого шины SPI) |

|PB3 |MOSI (Выход ведущего/ вход ведомого|

| |шины SPI) |

|PB4 |MISO (Вход ведущего/ выход ведомого|

| |шины SPI) |

|PB5 |SCK (Тактовые импульсы шины SPI) |

При использовании альтернативных функций выводов. регистры DDRB и PORTB

должны быть установлены в соответствии с описанием альтернативных функций.

РЕГИСТР ДАННЫХ ПОРТА B

PORTB

| |- |- |DDB5 | | | | |DDB0 |

| |R\W |R\W |R\W |R\W |R\W |R\W |R\W |R\W |

|Начальное|0 |0 |0 |0 |0 |0 |0 |0 |

|значение | | | | | | | | |

ВЫВОДЫ ПОРТА B

PINB

| |7 |6 |5 |4 |3 |2 |1 |0 |

|16h(36h) | | | | | | | | |

| |- |- |PINB5 | | | | |PINBO |

| |R |R |R\W |R\W |R\W |R\W |R\W |R\W |

|Начальное|0 |0 |Z |Z |Z |Z |Z |Z |

|значение | | | | | | | | |

PINB не является регистром, по этому адресу осуществляется доступ к

физическим значениям каждого из выводов порта B. При чтении PORTB, читаются

данные из регистра-защелки, при чтении PINB читаются логические значения

присутствующие на выводах порта.

ПОРТ B, КАК ПОРТ ВВОДА/ВЫВОДА ОБЩЕГО НАЗНАЧЕНИЯ

Все 6 бит порта B при использовании для ввода/вывода одинаковы.

Бит DDBn регистра DDRB выбирает направление передачи данных. Если бит

установлен (1), вывод сконфигурирован как выход. Если бит сброшен (0) -

вывод сконфигурирован как вход. Если PORTBn установлен и вывод

сконфигурирован как вход, включается КМОП подтягивающий резистор. Для

отключения резистора, PORTBn должен быть сброшен (0) или вывод должен быть

сконфигурирован как выход.

Таблица 22. Влияние DDBn на выводы порта B

|DDBn|PORTB|Вх/Вых|Подт.ре|Комментарий |

| |n | |зист | |

|0 |0 |Вход |Нет | |

|0 |1 |Вход |Да |PBn источник тока Iil, если извне |

| | | | |соединен с землей |

|1 |0 |Выход |Нет |Выход установлен в 0 |

|1 |1 |Выход |Нет |Выход установлен в 1 |

n = 5...0 - номер вывода

АЛЬТЕРНАТИВНЫЕ ФУНКЦИИ PORTB

SCK - PORTB, Bit 5 - Выход тактовой частоты ведущего и тактовый вход

ведомого процессора канала SPI. Если работа SPI разрешена и шина

сконфигурирована как ведомая, этот вывод устанавливается на ввод независимо

от установки DDB5. Если процессор работает как ведущий, направление

передачи данных по этому выводу определяется DDB5. Когда вывод

устанавливается на ввод, подключение подтягивающего резистора состоянием

бита PORTB5. Подробнее см. описание порта SPI.

MISO - PORTB, Bit 4 - Вход данных ведущего, выход ведомого в канале SPI.

Если разрешена работа SPI в качестве ведущего, вывод PB4 сконфигурирован

как вход независимо от установки DDB4. Если SPI разрешен и работает как

ведомый, направление передачи данных управляется состоянием DDB4. Когда

вывод принудительно сконфигурирован как вход, подключение подтягивающего

резистора по-прежнему управляется состоянием бита PORTB4. Подробнее см.

описание порта SPI.

MOSI - PORTB, Bit 3 - Выход данных ведущего, вход ведомого в канале SPI.

Когда SPI работает как ведомый, этот вывод работает как вход независимо от

установки бита DDB3. При работе SPI ведомым направление передачи этого

вывода управляется битом DDB3. Когда вывод принудительно сконфигурирован

как вход, подключение подтягивающего резистора по

прежнему управляется состоянием бита PORTB3. Подробнее см. описание

порта SPI.

SS - PORTB, Bit 2. - Вход выбора ведомого. Если канал работает как ведомый,

этот вывод работает как вход независимо то установки DDB2.

SPI активируется как ведомый при переводе этого вывода в низкое состояние.

При работе SPI как ведущего, направление передачи данных через этот вывод

управляется битом DDB2. Когда вывод переводится в состояние ввода,

подключение подтягивающего резистора управляется битом PORTB2. Подробнее

см. описание порта SPI.

OC1 - PORTB, Bit 1. Выход совпадения. Вывод PB1 может работать как внешний

выход совпадения таймера/счетчика 1. Для обслуживания этой функции вывод

должен быть сконфигурирован как выход (DDB1=1). Разрешение работы этой

функции рассмотрено при описании таймера. Вывод OC1

также работает как выход при работе таймера в режиме ШИМ.

ICP - PORTB, Bit 0. Вход захвата. Вывод PB0 может работать как внешний вход

захвата Таймера/счетчика 1. Для обслуживания этой функции вывод должен быть

сконфигурирован как вход. Подробнее см. описание работы таймера.

Порт C

Порт C 6-разрядный двунаправленный порт ввода/вывода.

Для обслуживания порта отведено три регистра: регистр данных PORTC (15h,

35h), регистр направления данных - DDRC (14h, 34h) и ножки порта C - PINC

(13h, 33h). Адрес ножек порта C предназначен только для чтения, в то время

как регистр данных и регистр направления данных - для чтения/записи. Все

выводы порта имеют отдельно подключаемые подтягивающие резисторы. Выходы

порта C могут поглощать ток до 20 mA и непосредственно управлять

светодиодными индикаторами. Если выводы PC0..PC5 используются как входы и

замыкаются на землю, если включены внутренние подтягивающие резисторы,

выводы являются источниками тока (Iil). Дополнительные функции порта C -

аналоговые входы АЦП. Если некоторые из выводов порта сконфигурированы как

выходы, во время преобразования не рекомендуется производить их

переключение. В экономичном режиме триггеры Шмитта отключаются от цифровых

входов. Это позволяет удерживать на входах аналоговое напряжение Vcc/2 без

заметного увеличения потребления.

РЕГИСТР ДАННЫХ ПОРТА C – PORTC

| |7 |6 |5 |4 |3 |2 |1 |0 |

|15h(35h) | | | | | | | | |

| |- |- |PORTC5 | | | | |PORTC0 |

| |R |R |R\W |R\W |R\W |R\W |R\W |R\W |

|Начальное|0 |0 |0 |0 |0 |0 |0 |0 |

|значение | | | | | | | | |

РЕГИСТР НАПРАВЛЕНИЯ ДАННЫХ ПОРТА B

DDRC

| |7 |6 |5 |4 |3 |2 |1 |0 |

|14h(34h) | | | | | | | | |

| |- |- |DDC5 | | | | |DDC0 |

| |R |R |R\W |R\W |R\W |R\W |R\W |R\W |

|Начальное|0 |0 |0 |0 |0 |0 |0 |0 |

|значение | | | | | | | | |

ВЫВОДЫ ПОРТА B

PINC

| |7 |6 |5 |4 |3 |2 |1 |0 |

|13h(33h) | | | | | | | | |

| |- |- |PINC5 | | | | |PINC0 |

| |R |R |R\W |R\W |R\W |R\W |R\W |R\W |

|Начальное|0 |0 |Z |Z |Z |Z |Z |Z |

|значение | | | | | | | | |

PINC не является регистром, по этому адресу осуществляется доступ к

физическим значениям каждого из выводов порта C. При чтении PORTC, читаются

данные из регистра-защелки, при чтении PINC читаются логические значения

присутствующие на выводах порта.

ПОРТ C, КАК ПОРТ ВВОДА/ВЫВОДА ОБЩЕГО НАЗНАЧЕНИЯ

Все 6 бит порта C при использовании для ввода/вывода одинаковы.

Бит DDCn регистра DDRC выбирает направление передачи данных. Если бит

установлен (1), вывод сконфигурирован как выход. Если бит сброшен (0) -

вывод сконфигурирован как вход. Если PORTCn установлен и вывод

сконфигурирован как вход, включается КМОП подтягивающий резистор. Для

отключения резистора, PORTCn должен быть сброшен (0) или вывод должен быть

сконфигурирован как выход.

Таблица 23. Влияние DDCn на выводы порта C

|DDC |PORTC |In\O|Подтягивающие |описание |

| | |ut |резисторы | |

|0 |0 |0 |Нет |Третье состояние |

|0 |1 |1 |Да |PBn источник тока Iil, если извне |

| | | | |соединен с землей |

|1 |0 |0 |Нет |Выход установлен в 0 |

|1 |1 |1 |Нет |Выход установлен в 1 |

Порт D

Порт D 8-разрядный двунаправленный порт ввода/вывода.

Для обслуживания порта отведено три регистра: регистр данных PORTD (12h,

32h), регистр направления данных - DDRD (11h, 31h) и ножки порта D - PIND

(10h, 30h). Адрес ножек порта D предназначен только для чтения, в то время

как регистр данных и регистр направления данных - для чтения/записи. Все

выводы порта имеют отдельно подключаемые подтягивающие резисторы. Выходы

порта D могут поглощать ток до 20 mA и непосредственно управлять

светодиодными индикаторами. Если выводы PD0..PD7 используются как входы и

замыкаются на землю, если включены внутренние подтягивающие резисторы,

выводы являются источниками тока (Iil). Альтернативные функции порта

приведены в таблице.

Таблица 24. Альтернативные функции порта D

|Вывод |Альтернативная функция |

|порта | |

|PD0 |RXD (вход данных UART) |

|PD1 |TXD (выход данных UART) |

|PD2 |INT0 (вход внешнего прерывания 0) |

|PD3 |INT1 (вход внешнего прерывания 1) |

|PD4 |T0 (внешний вход таймера счетчика 0) |

|PD5 |T1 (внешний вход таймера счетчика 1) |

|PD6 |AIN0 (неинвертирующ.вход компаратора)|

|PD7 |AIN1 (инвертирующий вход компаратора)|

РЕГИСТР ДАННЫХ ПОРТА D – PORTD

| |7 |6 |5 |4 |3 |2 |1 |0 |

|15h(35h) | | | | | | | | |

| |- |- |PORTD5 | | | | |PORTD0 |

| |R |R |R\W |R\W |R\W |R\W |R\W |R\W |

|Начальное|0 |0 |0 |0 |0 |0 |0 |0 |

|значение | | | | | | | | |

| |7 |6 |5 |4 |3 |2 |1 |0 |

|14h(34h) | | | | | | | | |

| |- |- |DDD5 | | | | |DDD0 |

| |R |R |R\W |R\W |R\W |R\W |R\W |R\W |

|Начальное|0 |0 |0 |0 |0 |0 |0 |0 |

|значение | | | | | | | | |

| |7 |6 |5 |4 |3 |2 |1 |0 |

|13h(33h) | | | | | | | | |

| |- |- |PIND5 | | | | |PIND0 |

| |R |R |R\W |R\W |R\W |R\W |R\W |R\W |

|Начальное|0 |0 |Z |Z |Z |Z |Z |Z |

|значение | | | | | | | | |

PIND не является регистром, по этому адресу осуществляется доступ к

физическим значениям каждого из выводов порта D. При чтении PORTD, читаются

данные из регистра-защелки, при чтении PIND читаются логические значения

присутствующие на выводах порта.

ПОРТ D, КАК ПОРТ ВВОДА/ВЫВОДА ОБЩЕГО НАЗНАЧЕНИЯ

Бит DDDn регистра DDRD выбирает направление передачи данных. Если бит

установлен (1), вывод сконфигурирован как выход. Если бит сброшен (0) -

вывод сконфигурирован как вход. Если PORTDn установлен и вывод

сконфигурирован как вход, включается КМОП подтягивающий резистор. Для

отключения резистора, PORTDn должен быть сброшен (0) или вывод должен быть

сконфигурирован как выход.

Таблица 25. Влияние DDDn на выводы порта D

|DDDn |PORTDn|In\Ou|Подтягивающие |Описание |

| | |t |резисторы | |

|0 |0 |Вход |Нет |Третье состояние |

|0 |1 |Вход |Да |PDn источник тока Iil, если извне |

| | | | |соединен с землей |

|1 |0 |Выход|Нет |Выход установлен в 0 |

|1 |1 |Выход|Нет |Выход установлен в 1 |

Альтернативные функции порта D

AIN1 - Порт D, бит7 - инвертирующий вход аналогового компаратора. Если

вывод сконфигурирован как вход (DDD7=0) и отключен внутренний подтягивающий

резистор, этот вывод может работать как инвертирующий вход аналогового

компаратора. В экономичном режиме триггер Шмитта отключен от цифрового

входа. Это позволяет удерживать на входе напряжение близкое к Vcc/2 без

заметного увеличения потребления.

AIN0 - Порт D, бит6 - неинвертирующий вход аналогового компаратора. Если

вывод сконфигурирован как вход (DDD6=0) и отключен внутренний подтягивающий

резистор, этот вывод может работать как инвертирующий вход аналогового

компаратора. В экономичном режиме триггер Шмитта отключен от цифрового

входа. Это позволяет удерживать на входе напряжение близкое к Vcc/2 без

заметного увеличения потребления.

T1 - Порт D, бит 5 - тактовый вход таймера/счетчика 1. Подробнее см.

описание таймера.

T0 - Порт D, бит 4 - тактовый вход таймера/счетчика 0. Подробнее см.

описание таймера.

INT1 - Порт D, бит 3 - вход внешних прерываний 1. Подробнее см. описание

прерываний.

INT0 - Порт D, бит 2 - вход внешних прерываний 0. Подробнее см. описание

прерываний.

TXD - Порт D, бит 1 - выход передатчика UART. Если разрешена работа

передатчика UART, независимо от состояния DDRD1 этот вывод сконфигурирован

как выход.

RXD - Порт D, бит 0 - выход приемника UART. Если разрешена работа приемника

UART, независимо от состояния DDRD0 этот вывод сконфигурирован как выход.

Когда UART использует вывод для приема данных, единица в PORTD0 подключает

встроенный подтягивающий резистор.

ПРОГРАММИРОВАНИЕ ПАМЯТИ

Программирование битов блокировки памяти

Микроконтроллер имеет два бита блокировки, которые могут быть оставлены

незапрограммированными (1) или программироваться (0), при этом достигаются

свойства приведенные в таблице 20.

Таблица 26. Режимы защиты и биты блокировки

|Биты |Тип защиты |

|блокировки | |

|Режи|LB1|LB2|описание |

|м | | | |

|1 |1 |1 |защита не установлена |

|2 |0 |1 |дальнейшее программирование флэш памяти и EEPROM |

| | | |запрещено |

|3 |0 |0 |как режим 2, но запрещено и чтение |

Примечание: биты блокировки стираются только при полном стирании памяти

Биты конфигурации (Fuse bits)

В AT90S2333/4433 предусмотрены шесть бит конфигурации - SPIEN, BODLEVEL,

BODEN, и CKSEL[2:0].

Когда запрограммирован бит SPIEN (0) разрешен режим

последовательного программирования. По умолчанию бит запрограммирован

(0). В режиме последовательного программирования этот бит недоступен.

BODLEVEL. Задает уровень срабатывания схемы сброса по пропаданию питания.

Если бит незапрограммирован (1), этот уровень - 2.7В, для

запрограммированного бита - 4В. По умолчанию бит незапрограммирован.

BODEN. Когда этот бит запрограммирован (0), разрешен сброс по пропаданию

питания. По умолчанию бит незапрограммирован.

CKSEL[2:0]. В таблице 4 приведены значения задержки при сбросе на которые

влияют эти биты. По умолчанию биты установлены в 010 - 64mS+16K CK.

Код устройства

Все микроконтроллеры фирмы Atmel имеют 3-байтовый сигнатурный код, по

которому идентифицируется устройство. Этот код может быть прочитан в

параллельном и последовательном режимах. Эти три байта размещены в

отдельном адресном пространстве и для AT90S4433 имеют следующие значения:

1. $000: $1E - код производителя - Atmel

2. $001: $92 - 4 кБ флэш памяти

3. $002: $01 - при $01=$92 - м/сх AT90S4433 для AT90S2333:

1. $000: $1E - код производителя - Atmel

2. $001: $91 - 2 кБ флэш памяти

3. $002: $05 - при $01=$92 - м/сх AT90S2333

Программирование флэш памяти и EEPROM

AT90S2333/4433 имеют 2кБ или 4кБ перепрограммируемой флэш памяти программ и

256 байт энергонезависимой памяти данных.

При поставке флэш память и память данных стерты (содержат FFh) и готовы к

программированию. Микросхемы поддерживают высоковольтный (12В) параллельный

режим программирования и низковольтный режим последовательного

программирования. Напряжение +12В используется только для разрешения

программирования, этот вывод почти не потребляет тока. Последовательный

режим программирования предусмотрен для загрузки программы и данных в

системе пользователя (внутрисистемное программирование). В обоих режимах

программирования память программ и данных программируется байт за байтом.

Для программирования EEPROM предусмотрен цикл автоматического стирания при

программировании в последовательном режиме.

Параллельное программирование.

Ниже рассмотрено параллельное программирование флэш памяти программ,

энергонезависимой памяти данных, битов блокировки и конфигурации. Некоторые

выводы процессоров ниже называются именами, отражающими функциональное

назначение сигналов при параллельном программировании. Выводы не

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

Таблица 27. Имена выводов

|Имя сигнала |Имя |Вх/Вых|Функция |

|при |вывод| | |

|программирован|а | | |

|. | | | |

|RDY/BSY |PD1 |Вых |0: мкросхема занята |

| | | |программированием |

| | | |1: мкросхема готова к приему |

| | | |команды |

|OE |PD2 |Вх |Разрешение выходов (активный |

| | | |0) |

|WR |PD3 |Вх |Импульс записи (активный 0) |

|BS |PD4 |Вх |Выбор байта |

|XA0 |PD5 |Вх |Действие XTAL бит 0 |

|XA1 |PD6 |Вх |Действие XTAL бит 1 |

Биты XA0 и XA1 определяют действие происходящее по положительному импульсу

XTAL1. Установки битов приведены в следующей таблице:

Таблица 28. Установка XA1 и XA0

|XA|XA|Действие при подаче импульса XTAL1 |

|1 |0 | |

|0 |0 |Загрузка адреса памяти программ или данных |

| | |(старший/младший байт задается выводом BS |

|0 |1 |Загрузка данных (старший/младший байт для флэш памяти |

| | |задается выводом BS) |

|1 |0 |Загрузка команды |

|1 |1 |Не работает, холостой ход |

По импульсу WR или OE загружается команда определяющая действие по вводу

или выводу. В байте команды каждому биту присвоена функция, как показано в

таблице 29.

Таблица 29. Биты конфигурации командного байта

|Бит|Значение при установке |

|7 |Стирание кристалла |

|6 |Запись битов конфигурации, расположенных в следующих позициях байта данных: |

| |D5-SPIEN, D4-BODLEVEL, D3-BODEN, D2-D0-CKSEL (0 для программирования, 1 для |

| |стирания) |

|5 |Запись битов блокировки, расположенных в следующих позициях байта данных: D2|

| |- LB2, D1 - LB1 |

| |(для программирования устанавливать 0) |

|4 |Запись памяти программ или данных (определяется битом 0) |

|3 |Чтение сигнатуры |

|2 |Чтение битов блокировки и конфигурации, расположенных в следующих позициях |

| |байта данных: D5-SPIEN, D4-BODLEVEL, D3-BODEN, D2-D0 -CKSEL (для BS=1) или |

| |D2-LB2, D1-LB1 (для BS=0) |

|1 |Чтение памяти программ или данных (определяется битом 0) |

|0 | доступ к памяти программ, 1 к памяти данных |

ВХОД В РЕЖИМ ПРОГРАММИРОВАНИЯ

Следующий алгоритм переводит устройство в режим параллельного

программирования:

1. Подать напряжение 4.5...5.5В на выводы питания.

2. Установить RESET и BS в 0 и выдержать не меньше 100 нС.

3. Подать 12В на RESET и выждать не менее 100 нС перед изменением

BS. Любая активность на выводе BS в течение этого времени приведет к тому,

что микросхема не включится в режим программирования.

СТИРАНИЕ КРИСТАЛЛА

При стирании кристалла стираются память программ и данных, а также биты

блокировки. Биты блокировки не сбрасываются до полного стирания памяти

программ и данных. Биты конфигурации не изменяются. (Стирание кристалла

производится перед его программированием).

Загрузка команды "стереть кристалл"

1. Установить XA1,XA0 в '10'. Это разрешает загрузку команды.

2. Установить BS в 0

3. Установить PC(1..0) PB(5..0) в '1000 0000'. Это команда стирания

кристалла.

4. Подать положительный импульс на XTAL1. При этом загружается

команда и начинается стирание памяти программ и данных. После импульса

XTAL1, подать отрицательный импульс на WR, чтобы разрешить стирание битов

блокировки по окончанию цикла стирания. Подождать около 10 мС до окончания

цикла стирания. Стирание кристалла не генерирует сигнала RDY/BSY.

ПРОГРАММИРОВАНИЕ ФЛЭШ ПАМЯТИ

Загрузить команду "программирование флэш памяти"

1. Установить XA1,XA0 в '10'. Это разрешает загрузку команды.

2. Установить BS в 0

3. Установить PC(1..0) PB(5..0) в '0001 0000'. Это команда

программирования флэш памяти

4. Подать положительный импульс на XTAL1. При этом загружается команда.

Загрузить младший байт адреса

1. Установить XA1,XA0 в '00'. Это разрешает загрузку адреса.

2. Установить BS в 0. Это выбирает младший байт адреса.

3. Установить на PC(1..0) PB(5..0) младший байт адреса.

4. Подать положительный импульс на XTAL1. При этом загружается младший байт

адреса.

Загрузить старший байт адреса

1. Установить XA1,XA0 в '00'. Это разрешает загрузку адреса.

2. Установить BS в 1. Это выбирает старший байт адреса.

3. Установить на PC(1..0) PB(5..0) старший байт адреса. ($00..$01)

4. Подать положительный импульс на XTAL1. При этом загружается старший байт

адреса.

Загрузить байт данных

1. Установить XA1,XA0 в '01'. Это разрешает загрузку данных.

2. Установить на PC(1..0) PB(5..0) младший байт данных.

3. Подать положительный импульс на XTAL1. При этом загружается младший байт

данных.

Запись младшего байта данных.

1. Установить BS в '0'. Это выбирает младший байт данных

2. Подать на WR отрицательный импульс. Это инициирует программирование

байта. RDY/BSY переходит в низкое состояние.

3. Перед программированием следующего байта подождать, пока RDY/BSY

перейдет в высокое состояние.

Загрузить байт данных

1. Установить XA1,XA0 в '01'. Это разрешает загрузку данных.

2. Установить на PC(1..0) PB(5..0) старший байт данных.

3. Подать положительный импульс на XTAL1. При этом загружается старший байт

данных.

Запись старшего байта данных.

1. Установить BS в '1'. Это выбирает старший байт данных

2. Подать на WR отрицательный импульс. Это инициирует программирование

байта. RDY/BSY переходит в низкое состояние.

3. Перед программированием следующего байта подождать, пока RDY/BSY

перейдет в высокое состояние.

Загруженные адрес и данные сохраняются в устройстве после программирования,

при этом процесс программирования упрощается.

* Команду программирования флэш памяти необходимо подать только перед

программированием первого байта

* Старший байт адреса можно менять только перед программированием

следующей страницы памяти программ (256 слов).

ПРОГРАММИРОВАНИЕ ПАМЯТИ ДАННЫХ

Алгоритм программирования памяти данных следующий (обратитесь к

программированию памяти программ за описанием загрузки команды, адреса и

данных):

1. Загрузить команду '0001 0001'.

2. Загрузить младший адрес памяти данных (00h - 7Fh/FFh).

3. Загрузить младший байт данных

4. Подать отрицательный импульс на WR и подождать перевода RDY/BSY в 1.

Загрузка команды необходима только перед программированием первого байта.

ЧТЕНИЕ ПАМЯТИ ПРОГРАММ

Алгоритм чтения флэш памяти следующий (обратитесь к программированию памяти

программ за описанием загрузки команды, адреса и данных):

1. Загрузить команду '0000 0010'

2. Загрузить младший байт адреса ($00 - $FF)

3. Загрузить старший байт адреса ($00 - $03/$07)

4. Установить OE в '0', BS в '0'. Теперь на выводах PC(1..0) PB(5..0) можно

прочитать байт данных.

5. Установить BS в '1'. Теперь на выводах PB можно прочитать старший байт

данных.

6. Установить OE в '1'.

Загрузка команды необходима только перед чтением первого байта.

ЧТЕНИЕ ПАМЯТИ ДАННЫХ

Алгоритм чтения памяти данных следующий (обратитесь к программированию

памяти программ за описанием загрузки команды, адреса и данных):

1. Загрузить команду '0000 0011'

2. Загрузить младший байт адреса (00h - 7Fh)

3. Установить OE в '0', BS в '0'. Теперь на выводах PC(1..0) PB(5..0) можно

прочитать байт данных.

4. Установить OE в '1'.

Загрузка команды необходима только перед чтением первого байта.

ПРОГРАММИРОВАНИЕ БИТОВ КОНФИГУРАЦИИ

Алгоритм программирования битов конфигурации следующий (обратитесь к

программированию памяти программ за описанием загрузки команды, адреса и

данных):

1. Загрузить команду '0100 0000'

2. Загрузить данные

Бит5=0 - программировать бит SPIEN, Бит5=1 - стереть бит SPIEN

Бит4=0 - программировать бит BODLEVEL,

Бит4=1 - стереть бит BODLEVEL

Бит3=0 - программировать бит BODEN,

Бит3=1 - стереть бит BODEN

Биты 2-0 =0 - программировать биты CKSEL,

Биты 2-0 =1 - стереть биты CKSEL

3. Подать на WR отрицательный импульс и ждать перехода RDY/BSY в единицу.

ПРОГРАММИРОВАНИЕ БИТОВ БЛОКИРОВКИ

Алгоритм программирования битов блокировки следующий (обратитесь к

программированию памяти программ за описанием загрузки команды, адреса и

данных):

1. Загрузить команду '0010 0000'

2. Загрузить данные

Бит2=0 - программировать бит LB2

Бит1=0 - программировать бит LB1

3. Подать на WR отрицательный импульс и ждать перехода RDY/BSY в единицу.

Биты блокировки стираются только при стирании всей микросхемы.

ЧТЕНИЕ БИТОВ КОНФИГУРАЦИИ И БЛОКИРОВКИ

Алгоритм чтения битов блокировки и конфигурации следующий (обратитесь к

программированию памяти программ за описанием загрузки команды, адреса и

данных):

1. Загрузить команду '0000 0100'

2. Установить OE в '0', BS в '0'. Теперь на выводах PC(1..0) PB(5..0) можно

прочитать биты конфигурации.

Бит5 - SPIEN - '0' запрограммирован

Бит4 - BODLEVEL - '0' запрограммирован

Бит3 - BODEN - '0' запрограммирован

Биты 2-0 - CKSEL - '0' запрограммированы

3. Установить OE в '0', BS в '1'. Теперь на выводах PC(1..0) PB(5..0) можно

прочитать биты блокировки.

Бит2 - LB2 - '0' запрограммирован

Бит1 - LB1 - '0' запрограммирован

3. Установить OE в '1'.

ЧТЕНИЕ БАЙТОВ СИГНАТУРЫ

Алгоритм чтения байтов сигнатуры следующий (обратитесь к программированию

памяти программ за описанием загрузки команды, адреса и данных):

1. Загрузить команду 0000 1000

2. Загрузить младший байт адреса ($00 - $02), установить OE и BS в "0".

После этого выбранный байт сигнатуры можно прочитать на выводах PC(1..0)

PB(5..0).

3. Установить OE в "1".

Команду необходимо подавать только перед чтением первого байта.

Таблица 31. Характеристики параллельного программирования

T=21..27 ±C, Vcc=4.5-5.5V

| |Параметр |Min |Typ |Max| |

|tDVXH |Задерж.между установ. данных и |67 | | |nS|

| |сигн.упр. и высоким уровнем XTAL1 | | | | |

|tXHXL |Ширина импульса XTAL |67 | | |nS|

|tXLDH |Удержание данных и сигналов |67 | | |nS|

| |управления | | | | |

| |После установки XTAL1 = 1 | | | | |

|tBVVL |Удержание BS после установки |0 |67 | | |nS|

| |WR | | | | | |

|tWLWH |Ширина импульса WR |67 | | |nS|

|tWHRL |Задержка между |1 и |0 |) | |20 | |nS|

| |WR |RDY/BSY |( | | | | | |

|tXLOL |Задержка между |0 и |0 |67 | | |nS|

| |XL |OE | | | | | |

|tOLDV |Задержка между |0 и установкой | |20 | |nS|

| |XL |данных | | | | |

|tWLRH |Задержка между |0 и |1 |) |0.5 |0.7 |0.9|mS|

| |WR |RDY/BSY |( | | | | | |

Примечание: если tWHRL удерживается дольше, чем tWLRH импульс на RDY/BSY не

появится.

ПОСЛЕДОВАТЕЛЬНАЯ ЗАГРУЗКА

Как память программ, так и память данных могут быть запрограммированы с

использованием последовательной шины SPI, при этом вывод RESET должен быть

подключен к земле. Последовательный интерфейс работает с выводами SCK, MOSI

(вход) и MISO (выход). После подачи низкого уровня на RESET перед

программированием/стиранием необходимо исполнить команду разрешения

программирования. При программировании памяти данных, во внутренний

алгоритм программирования встроен цикл стирания (только при

последовательном программировании), поэтому нет необходимости в выполнении

команды стирания памяти. Команда стирания микросхемы переводит все ячейки

памяти программ и данных в состояние FFh. Флэш память программ и

энергонезависимая память данных имеют отдельное адресное пространство: 000h

- 3FFh/7FFh для памяти программ и 000h - 07Fh/0FFh для памяти данных. При

программировании необходимо подавать внешнюю тактовую частоту на вывод

XTAL1 или подключить внешний тактовый генератор к выводам XTAL1 и XTAL2.

Минимальные длительности низкого и высокого уровня сигнала SCK определены

следующим образом:

Низкий: > 2 периодов XTAL1

Высокий: > 2 периодов XTAL1

ПОДТВЕРЖДЕНИЕ ДАННЫХ

До завершения программировании нового байта, при чтении из памяти будет

читаться значение FFh. После того как микросхема будет готова для записи

следующего байта, при чтении можно прочитать записанное значение. Это

используется для определения момента, когда можно записывать следующий

байт. Этот способ не будет работать для байта FFh, поэтому для записи этого

числа перед программированием следующего байта придется выждать по крайней

мере 4mS. Поскольку после стирания ячейки памяти устанавливаются в FFh, при

программировании ячейки, содержащие FFh можно пропускать. Это не применимо

при перезаписи EEPROM без стирания памяти программ. В этом случае

подтверждение не работает для данных FFh, для этого значения перед

программированием следующего байта необходимо выждать 4mS.

АЛГОРИТМ ПОСЛЕДОВАТЕЛЬНОГО ПРОГРАММИРОВАНИЯ

Для программирования и проверки AT90S2333/4433 в режиме последовательного

программирования рекомендуется следующая последовательность действий (см.

формат четырех байтовой команды в табл.32):

1. Последовательность включения питания:

Подать напряжение питания между VCC и GND, при этом RESET и SCK должны быть

установлены в '0'. Если кварцевый резонатор не подключен к выводам XTAL1 и

XTAL2, подайте частоту на вывод XTAL1.(Если программатор не гарантирует

установки SCK в '0' при подаче питания, после того как на SCK будет

установлен '0', на RESET необходимо подать положительный импульс, и

удерживать его по крайней мере два периода тактовой частоты после

установки вывода SCK в "0".

2. Подождать 20 mS и разрешить последовательное программирование послав

команду разрешения на вывод MOSI/PB3.

3. При посылке команды разрешения программирования, второй байт

последовательности (53h) будет возвращен при посылке третьего байта. В

любом случае, должны быть посланы все четыре байта команды. Если число 53h

не получено обратно, подайте положительный импульс на SCK и повторите

команду разрешения программирования. Если после 32 попыток не будет

получено число 53h, микросхема неисправна.

4. После подачи команды стирания (всегда при программировании памяти

программ), необходимо подождать 10 mS, выдать положительный импульс на

RESET и продолжить с шага 2.

5. Память программ и память данных программируются по одному байту выдачей

адреса и данных в команде записи. Перед записью новых данных в EEPROM

ячейки памяти перед записью новых данных автоматически стираются. Чтобы

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

подтверждение данных. При записи предварительно стертой микросхемы

записывать ячейки содержащие FFh не обязательно.

6. Любую ячейку памяти можно проверить используя команду чтения, которая

выдает содержимое указанной ячейки на последовательный вывод MISO/PB4.

7. По окончанию программирования вывод RESET может быть установлен в '1'

для возобновления нормальной работы схемы.

8. Последовательность выключения питания (если необходимо) Установить XTAL1

в '0' (если не используется кварцевый резонатор)

Установить RESET в '1'.

Отключить питание

При записи последовательных данных в процессор данные читаются по

нарастающему фронту сигнала CLK. При чтении данных из процессора данные

читаются по спадающему фронту сигнала CLK.

Таблица 32. Команды последовательного программирования

|Команда |Формат команды |Действие |

| |Байт 1 |Байт 2 |Байт 3 |Байт 4 | |

|Разрешение |1010 |0101 |xxxx |xxxx |Разрешен.послед. |

|рограммир. |1100 |0011 |xxxx |xxxx |программирования после установки|

| | | | | |RESET в '0' |

|Стирание |1010 |100x |xxxx |xxxx |Стирание памяти прогр. и данных |

|микросх. |1100 |xxxx |xxxx |xxxx | |

|Чтение памяти |0010 |0000 |bbbb |oooo |Читать старший или младший байт |

|прогр. |H000 |aaaa |bbbb |oooo |o по адресу ab |

|Запись памяти |0100 |0000 |bbbb |iiii |Запись старш. или младш. байта i|

|прогр. |H000 |aaaa |bbbb |iiii |в память прогр по адресу ab |

|Чтение памяти |1010 |0000 |bbbb |oooo |Читать данные o по адресу ab |

|данных |0000 |000a |bbbb |oooo | |

|Запись памяти |1100 |0000 |bbbb |iiii |Запись данных i по адресу ab |

|данных |0000 |000a |bbbb |iiii | |

|Чтение битов |0101 |xxxx |xxxx |xxxx |Биты 2 и 1 равны 0 – блокировка |

|блокир. |1000 |xxxx |xxxx |x21x |1 - нет блокир. |

|Запись битов |1010 |111x |xxxx |xxxx |Запись битов бло кировки. |

|блокир. |1100 |x21x |xxxx |xxxx |Установить 1,2=0 для блокировки |

| | | | | |памяти |

|Читать код |0011 |xxxx |xxxx |oooo |Читать код устройства o с адреса|

|устройства |0000 |xxxx |xxbb |oooo |b |

|Запись |1010 |11_1765|xxxx |xxxx |Запись битов-перемычек. |

|битов-перемыч |1100 |43 |xxxx |xxxx |Установить 3,4,5,6,7 в "0" чтобы|

| | | | | |запрограммировать |

|Чтение |1010 |xxxx |xxxx |xx87 |Чтение битов-перемычек. |

|битов-перемыч |0000 |xxxx |xxxx |6543 |0 – запрограммир 1 - стерт |

a - старшие биты адреса; b - младшие биты адреса; o - выход данных

H = '0'-младший байт, '1'-старший байт; i - вход данных;

x - не использ-ся; 1 - 1-й бит блокировки; 2 - 2-й бит блокировки;

3 - CKSEL0; 4 - CKSEL1; 5 - CKSEL2; 6 - BODEN; 7 - BODLEVEL;

8 - SPIEN;

Максимально допустимые параметры

|Рабочая температура |

|................................. -40±С - |

|+105±С |

|Температура хранения |

|................................ -65±С - |

|+150±С |

|Напряжение на любом выводе кроме RESET |

|.............. -1.0V - +7.0V |

|Максимальное рабочее напряжение |

|..................... 6.6V |

|Постоянный ток через вывод порта |

|.................... 40.0 mA |

|Постоянный ток между VCC и GND |

|.......................140.0 mA |

ПРИМЕЧАНИЕ: выход параметров за пределы указанные в таблице может привести

к нарушению работоспособности микросхемы. Это предельные значения

параметров, рабочие параметры микросхемы приведены ниже. Удержание

предельных значений на выводах м/сх в течение длительного времени может

привести к потере работоспособности м/сх.

ХАРАКТЕРИСТИКИ ПО ПОСТОЯННОМУ ТОКУ

Ta = -40...+85±C, Vcc=2.7...6.0V (если не указано иначе)

Мин./Тип./Макс.

Входное напряжение '0' - -0.5/_/0.3Vcc V

Входное напряжение '1'(кроме XTAL1 и RESET) - 0.7Vcc/_/Vcc+0.5 V

на XTAL1 и RESET - 0.7Vcc/_/Vcc+0.5 V Выходное напряжение '0'(Порты B,C,D)

Il=20mA, Vcc=5V - _/_/0.5 V

Il=10mA, Vcc=3V - _/_/0.5 V Выходное напряжение '1'(Порты B,C,D) I0h=10mA,

Vcc=5V - Vcc-0.5/_/_ V

I0h=5mA, Vcc=2.7V - Vcc-0.5/_/_ V Подтягивающий резистор сброса - 100/_/500

кОм

Подтягивающий резистор вывода порта 10/50/100 кОм

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

Активный режим, 3V, 4MHz - _/3.0/_ mA

холостой ход (idle mode), 3V, 4MHz - _/750/_ uA

пониженное потребление WDT включен, 3V - _/10/_ uA

WDT выключен, 3V - _/_/1 uA

Напряжение смещения аналогового компаратора Vcc=5V - _/_/20 mV

Входной ток утечки аналогового компаратора - 1/5/10 nA

Время срабатывания аналогового компаратора Vcc=2.7V - _/750/_ nS

Vcc=4.0V - _/500/_ nS

ПРИМЕЧАНИЯ:

1. В рабочем состоянии ток через выводы должен ограничиваться следующими

условиями:

- Максимальный ток через вывод - 20 mA

- Максимальный ток через все выводы - 80mA

При превышении выходного тока выше указанных пределов, напряжение на выходе

может отличаться от приведенного выше. Поглощение выводами тока больше

приведенного не гарантируется.

2. Минимальное напряжение для режима пониженного потребления - 2V

ПАРАМЕТРЫ ВНЕШНЕГО ТАКТОВОГО СИГНАЛА

|Параметр |Vcc=2.7...6.0 V|Vcc=4.0...6.0 |Ед|

| | |V |. |

| |min |max |min |max | |

|Частота |0 |4 |0 |8 |MH|

| | | | | |z |

|Период |250 | |125 | |nS|

|Длительность '1' |115 | |58.3 | |nS|

|Длительность '0' |115 | |58.3 | |nS|

|Длительность | |10 | |4.15 |nS|

|фронта | | | | | |

Список регистров.

|36h (56h) | |ЗАРЕЗЕРВИРОВАН |

|31h (51h) | |ЗАРЕЗЕРВИРОВАН |

|30h (50h) | |ЗАРЕЗЕРВИРОВАН |

|2Сh (4Сh) |TCNT1L |Таймер/счетчик1 младший байт |

|2Bh (4Bh) |OCR1AH |Таймер/счетчик1 регистр сравнения старший байт |

|2Ah (4Ah) |OCR1AL |Таймер/счетчик1 регистр сравнения младший байт |

|- | |ЗАРЕЗЕРВИРОВАН |

|27h (47h) |ICR1H |Таймер/счетчик1 регистр захвата старший байт |

|26h (46h) |ICR1L |Таймер/счетчик1 регистр захвата младший байт |

|- | |ЗАРЕЗЕРВИРОВАН |

|1Fh (3Fh) | |ЗАРЕЗЕРВИРОВАН |

|1Eh (3Eh) |EEAR |Регистр адреса энергонезависимой памяти |

|1Dh (3Dh) |EEDR |Регистр данных энергонезависимой памяти |

|- |- |ЗАРЕЗЕРВИРОВАН |

|00h (20h) |- |ЗАРЕЗЕРВИРОВАН |

Примечание: Для совместимости с другими устройствами, зарезервированные

биты при записи необходимо устанавливать в "0". Данные в зарезервированные

ячейки памяти записывать нельзя.

Набор команд

|Мнемоник|Операнд|Описание |Действие |Флаги |Цкл|

|а |ы | | | | |

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

|ADD |Rd, Rr |Сложить два регистра |Rd

| | | | |,H | |

|ADC |Rd, Rr |Сложить с переносом |Rd

| | | | |,H | |

|ADIW |Rdl,K |Сложить слово с константой |Rdh,l

| | | | |,S | |

|SUB |Rd, Rr |Вычесть два регистра |Rd

|SUBI |Rd, K |Вычесть константу |Rd

|SBIW |Rdl,K |Вычесть слово с константой |Rdh,l

|SBC |Rd, Rr |Вычесть с переносом |Rd

|SBCI |Rd, K |Вычесть с переносом |Rd

|AND |Rd, Rr |Логическое И |Rd

|ANDI |Rd, K |Логическое И |Rd

|OR |Rd, Rr |Логическое ИЛИ |Rd

|ORI |Rd, K |Логическое ИЛИ |Rd

|EOR |Rd, Rr |Исключающее ИЛИ |Rd

|COM |Rd |Дополнение до 1 |Rd<$FF - Rd |Z,C,N,V|1 |

|NEG |Rd |Дополнение до 2 |Rd<$00 - Rd |Z,C,N,V|1 |

| | | | |,H | |

|SBR |Rd,K |Установ. бита в регистре |Rd

|CBR |Rd,K |Сброс. бита в регистре |Rd

|INC |Rd |Увеличить на 1 |Rd

|DEC |Rd |Уменьшить на 1 |Rd

|TST |Rd |Проверить на 0 или 1 |Rd

|CLR |Rd |Очистить регистр |Rd

|SER |Rd |Установить регистр |Rd<$FF |None |1 |

|КОМАНДЫ ВЕТВЛЕНИЯ |

|RJMP |k |Относительный переход |PC

|LJMP | |Переход по адресу (Z) |PC

|RCALL |k |Относительный вызов |PC

| | |подпрогрограммы | | | |

|ICALL | |Вызов подпр по адресу (Z) |PC

|RET | |Выход из подпрограммы |PC

|RETI | |Выход из прерывания |PC

|CPSE |Rd,Rr |Сравнить , пропуск если Rd=Rr |if(Rd=Rr) PC

| | | |или 3 | | |

|CP |Rd,Rr |Сравнить |Rd-Rr |Z,N,V,C|1 |

| | | | |,H | |

|CPC |Rd,Rr |Сравнить с переносом |Rd-Rr-C |Z,N,V,C|1 |

| | | | |,H | |

|CPI |Rd,K |Сравнить с константой |Rd-K | | |

|SBRC |Rr,b |Пропуск если бит в регистре |if(Rr(b)=0) |None |1/2|

| | |сброшен | | | |

|SBRS |Rr,b |Пропуск если бит в регистре |if(Rr(b)=1) |None |1/2|

| | |установлен | | | |

|SBIC |P, b |Пропуск если бит в регистре |if(P(b)=0) |None |1/2|

| | |I\O сброшен | | | |

|SBIS |P, b |Пропуск если бит в регистре |if(P(b)=1) |None |1/2|

| | |I\O установлен | | | |

|BRBS |s, k |Переход если установл флаг s |if(SREG(s)=1) |None |1/2|

|BRBC |s, k |Переход если сброшен флаг s |if(SREG(s)=0) |None |1/2|

|BREQ |k |Переход если равно Z=1 |if(Z=1) |None |1/2|

|BRNE |k |Переход если неравно if(Z=0)|if(Z=0) |None |1/2|

|BRCS |k |Переход если установл перенос |if(C=1) |None |1/2|

|BRCC |k |Переход если сброшен перенос |if(C=0) |None |1/2|

|BRSH |k |Переход если равно или больше |if(C=0) |None |1/2|

|BRLO |k |Переход если меньше |if(C=1) PC

|BRMI |k |Переход если минус |if(N=1) PC

|BRPL |k |Переход если плюс |if(N=0) PC

|BRGE |k |Переход если больше или |if(N XOR V=0) |None |1/2|

| | |равно,со знаком |PC

|BRLT |k |Переход если меньше нуля, со |if(N XOR V=1) |None |1/2|

| | |знаком |PC

|BRHS |k |Переход если установл флаг H |if (H=1) PC

|BRHC |k |Переход если сброшен флаг H |if (H=0) PC

|BRTS |k |Переход если установл флаг T |if (H=1) PC

|BRTC |k |Переход если сброшен флаг T |if (H=0) PC

|BRVS |k |Переход если установл флаг V |if (H=1) PC

|BRVC |k |Переход если сброшен флаг V |if (H=0) PC

|BRIE |k |Переход если разрешены |if(I=1) PC

| | |прерывания | | | |

|BRID |k |Переход если запрещены |if(I=1) PC

| | |прерывания | | | |

|КОМАНДЫ ПЕРЕСЫЛКИ |

|MOV |Rd,Rr |Пересылка между рег. |Rd

|LDI |Rd,K |Загрузить константу |Rd

|LD |Rd,X |Загрузить регистр |Rd<(X) |None |2 |

| | |непосредственно | | | |

|LD |Rd,X+ |Загрузить регистр непосредст. |Rd<(X),X

| | |c постинкрем | | | |

|LD |Rd,-X |Загрузить регистр непоср. с |X

| | |предв.декрем | | | |

|LD |Rd,Y |Загрузить регистр |Rd<(Y) |None |2 |

| | |непосредственно | | | |

|LD |Rd,Y+ |Загрузить регистр непоср. c |Rd<(Y),Y

| | |пост инкрем | | | |

|LD |Rd,-Y |Загрузить регистр непоср. с |Y

| | |предв.декрем | | | |

|LDD |Rd,Y+q |Загрузить регистр непоср. со |Rd<(Y+q) |None |2 |

| | |смещением | | | |

|LD |Rd,Z |Загрузить регистр |Rd<(Z) |None |2 |

| | |непосредственно | | | |

|LD |Rd,Z+ |Загрузить регистр непоср. c |Rd<(Z),Z

| | |пост инкрем | | | |

|LD |Rd,-Z |Загрузить регистр непоср. с |Z

| | |предв.декрем | | | |

|LDD |Rd,Z+q |Загрузить регистр непоср. со |Rd<(Z+q) |None |2 |

| | |смещением | | | |

|LDS |Rd,k |Загрузить из ОЗУ |Rd<(k) |None |3 |

|ST |X,Rr |Записать регистр |(X)

| | |непосредственно | | | |

|ST |-X,Rr |Записать регистр непоср.c |X

| | |пред.декрем. | | | |

|ST |Y,Rr |Записать регистр |(Y)

| | |непосредственно | | | |

|ST |Y+,Rr |Записать регистр непоср.c пост|(X)

| | |инкр | | | |

|ST |-Y,Rr |Записать регистр непоср.c |Y

| | |пред.декрем | | | |

|STD |Y+q,Rr |Запис.рег.непоср.сосмещением | (Y+q)

|ST |Z,Rr |Записать регистр |(Y)

| | |непосредственно | | | |

|ST |Z+,Rr |Записать регистр непоср.c пост|(Y)

| | |инкр | | | |

|ST |-Z,Rr |Записать регистр непоср.c |Z

| | |пред.декрем | | | |

|STD |Y+q,Rr |Запис.рег.непоср.сосмещением |(Y+q)

|STS |k,Rr |Записать в ОЗУ |(k)

|LPM | |Загр.из памяти программ |R0<(Z) |None |3 |

|IN |Rd, P |Ввод из порта |Rd

|OUT |P, Rr |Вывод в порт |P

|PUSH |Rr |Записать в стек |STACK

|POP |Rr |Прочитать из стека |Rr

|КОМАНДЫ РАБОТЫ С БИТАМИ |

|SBI |P,b |Установить бит в регистре |I/O(P,b)<1 |None |2 |

| | |ввода/вывода | | | |

|CBI |P,b |Сбросить бит в регистре |I/O(P,b)<0 |None |2 |

| | |ввода/вывода | | | |

|LSL |Rd |Логический сдвиг влево |Rd(n+1)

| | | |Rd(0)<0 | | |

|LSR |Rd |Логичский сдвиг вправо |Rd(n)

| | | |Rd(7)<0 | | |

|ROL |Rd |сдвиг влево через C |Rd(0)

| | | |, C

|ROR |Rd |сдвиг вправо через C |Rd(7)

| | | |, C

|ASR |Rd |Арифметический сдвиг вправо |Rd(n)

|SWAP |Rd |Обмен тетрад |Rd(3-0)

| | | |Rd(7-4)

|BSET |s |Установить флаг |SREG(s)<1 |SREG(s)|1 |

|BCLR |s |Сбросить флаг |SREG(s)<0 |SREG(s)|1 |

|BST |Rr,b |Запомнить бит в T |T

|BLD |Rd, b |Прочитать бит из T |Rd(b)

|SEC | |Установить перенос |C<1 |C |1 |

|CLC | |Сбросить перенос |C<0 |C |1 |

|SEN | |Установить флаг N |N<1 |N |1 |

|CLN | |Сбросить флаг N |N<0 |N |1 |

|SEZ | |Установить флаг Z |Z<1 |Z |1 |

|CLZ | |Сбросить флаг Z |Z<0 |Z |1 |

|SEI | |Разрешить прерывания |I<1 |I |1 |

|CLI | |Запретить прерывания |I<0 |I |1 |

|SES | |Установить флаг S |S<1 |S |1 |

|CLS | |Сбросить флаг S |S<0 |S |1 |

|SEV | |Установить флаг V |V<1 |V |1 |

|CLV | |Сбросить флаг V |V<0 |V |1 |

|SET | |Установить флаг T |T<1 |T |1 |

|CLT | |Сбросить флаг T |T<0 |T |1 |

|SEH | |Установить флаг H |H<1 |H |1 |

|CLH | |Сбросить флаг H |H<0 |H |1 |

|NOP | |Нет операции | |None |1 |

|SLEEP | |Останов | |None |3 |

|WDR | |Сброс сторожевого таймера | |None |1 |

Подготовил Матвеев Дмитрий

2003

Страницы: 1, 2, 3, 4


© 2010 Современные рефераты