135319 (721861), страница 3
Текст из файла (страница 3)
При использовании специальных команд IN, OUT, SBIS и SBIC, должны использоваться адреса $00..$3F. При доступе к регистру ввода/вывода как к ячейке ОЗУ, к его адресу необходимо добавить $20. В приведенной выше таблице адреса регистров в памяти данных приведены в скобках. Для совместимости с другими устройствами при доступе к зарезервированным битам в них должен записываться ноль, зарезервированные адреса в пространстве ввода/вывода не должны записываться
Регистр состояния – SREG 3Fh(5Fh)
Регистр состояния расположен по адресу 3Fh (5Fh) пространства ввода/вывода и определен следующим образом:
3Fh(5Fh) | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
I | T | H | S | V | N | Z | S | |
R\W | R\W | R\W | R\W | R\W | R\W | R\W | R\W | |
Начальное значение | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Бит 7 - I: Общее разрешение прерываний. Для разрешения прерываний этот бит должен быть установлен в единицу. Управление отдельными прерываниями производится регистрами маски прерываний - GIMSK и TIMSK. Если флаг сброшен (0), независимо от состояния GIMSK/TIMSK прерывания запрещены. Бит I очищается аппаратно после входа в прерывание и восстанавливается командой RETI, для разрешения обработки последующих прерываний.
Бит 6 - T: Хранение копируемого бита. Команды копирования битов BLD (Bit LoaD) и BST (Bit STore) используют этот бит как источник и приемник обрабатываемого бита. Бит из регистра регистрового файла может быть скопирован в T командой BST, бит T может быть скопирован в бит регистрового файла командой BLD.
Бит 5 - H: Флаг половинного переноса. Этот флаг индицирует перенос из младшей половины байта при некоторых арифметических операциях. Более подробно об этом можно прочитать в описании системы команд.
Бит 4 - S: бит знака, S = N XOR V. Бит S всегда равен исключающему ИЛИ между флагами N (отрицательный результат) и V (переполнение дополнения до двух). Более подробно об этом можно прочитать в описании системы команд.
Бит 3 - V: Флаг переполнения дополнения до двух. Этот флаг поддерживает арифметику с дополнением до двух. Более подробно об этом можно прочитать в описании системы команд.
Бит 2 - N: Флаг отрицательного результата. Этот флаг индицирует отрицательный результат различных арифметических и логических операций. Более подробно об этом можно прочитать в описании системы команд.
Бит 1 - Z: Флаг нулевого результата. Этот флаг индицирует нулевой результат различных арифметических и логических операций. Более подробно об этом можно прочитать в описании системы команд.
Бит 0 - C: Флаг переноса. Этот флаг индицирует перенос в арифметических и логических операциях. Более подробно об этом можно прочитать в описании системы команд.
Указатель стека SP
Этот 8-разрядный регистр с адресом 3Dh (5Dh) хранит указатель стека процессора. 8-ми разрядов достаточно, для адресации ОЗУ в пределах 60h -DFh.
3Dh(5Dh) | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
SP7 | SP6 | SP5 | SP4 | SP3 | SP2 | SP1 | SP0 | |
R\W | R\W | R\W | R\W | R\W | R\W | R\W | R\W | |
Начальное значение | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Указатель стека указывает на область памяти в которой расположен стек вызова подпрограмм и прерваний. Область стека в ОЗУ должна быть задана до того как произойдет любой вызов подпрограммы или будут разрешены прерывания. Указатель стека уменьшается на 1 при записи данных в стек командой PUSH и уменьшается на 2 при вызове подпрограммы командой CALL или обработке прерывания. Указатель стека увеличивается на 1 при выборе данных из стека командой POP и увеличивается на 2 при выполнении команд возврата из подпрограммы или обработчика прерывания (RET или RETI).
***Стек процессора работает с предварительным инкрементом и постдекрементом
Сброс и обработка прерываний.
В процессоре предусмотрены 13 источников прерываний. Эти прерывания и сброс имеют различные векторы в области памяти программ. Каждому из прерываний присвоен отдельный бит разрешающий данное прерывание при установке бита в 1, если бит I регистра состояния разрешает общее обслуживание прерываний.
Самые младшие адреса памяти программ определены как векторы сброса и прерываний. Полный список векторов прерываний приведен в таблице Этот список определяет и приоритет различных прерываний. Меньшие адреса соответствуют более высокому уровню приоритета. Самый высокий уровень у сброса, следующий приоритет у INT0 - внешнего запроса прерывания 0 и т.д. Ниже приведена типичная программа обработки сброса и векторов прерываний:
000h | rjmp RESET | Обработка сброса |
001h | rjmp EXT_INT0 | Обработка IRQ0 |
002h | rjmp EXT_INT1 | Обработка IRQ1 |
003h | rjmp TIM1_CAPT | Обработка захвата таймера 1 |
004h | rjmp TIM1_COMP | Обработка совпадения таймера 1 |
005h | rjmp TIM1_OVF | Обработка переполнения таймера 1 |
006h | rjmp TIM0_OVF | Обработка переполнения таймера 0 |
007h | rjmp SPI_STC | Обработка передачи по SPI |
008h | rjmp UART_RXC | Обработка приема байта |
009h | rjmp UART_DRE | Обработка освобождения UDR |
00Ah | rjmp UART_TXC | Обработка передачи байта |
00Bh | rjmp ADC | Обработка преобразования АЦП |
00Ch | rjmp EE_RDY | Обработка готовности EEPROM |
00Dh | rjmp ANA_COMP | Обработка аналогов. компаратора |
00Eh | Основная программа | Начало основной программы |
Сброс и векторы прерываний.
Номер вектора | Адрес | Источник | Описание прерывания |
1 | 000h | RESET | Ножка сброса, сторожевой таймер Brown-Out reset |
2 | 001h | INT0 | Внешнее прерывание 0 |
3 | 002h | INT1 | Внешнее прерывание 1 |
4 | 003h | TIMER1 CAPT | Захват таймера/счетчика 1 |
5 | 004h | TIMER1 COMP | Совпаден. таймера/счетчика 1 |
6 | 005h | TIMER1 OVF | Переполнение таймера/счетчика 1 |
7 | 006h | TIMER0 OVF | Переполнение таймера/счетчика 0 |
8 | 007h | SPI, STC | Передача по SPI завершена |
9 | 008h | UART RX | Последоват.порт прием закончен |
10 | 009h | UART UDRE | Посл.порт регистр данных пуст |
11 | 00Ah | UART TX | Посл.порт передача закончена |
12 | 00Bh | ADC | Преобразование АЦП завершено |
13 | 00Ch | RDY | EEPROM готово |
14 | 00Dh | COMP | Аналоговый компаратор |
ИСТОЧНИКИ СБРОСА
AT90S2333/4433 имеют четыре источника сброса.
* Сброс по включению питания. Процессор сбрасывается при подаче питания на выводы VCC и GND.
* Внешний сброс. Процессор сбрасывается при подаче низкого уровня на вывод RESET на время более двух периодов тактовой частоты.
* Сброс от сторожевого таймера. Процессор сбрасывается по окончанию времени отработки сторожевого таймера, если разрешена его работа.
* Brown-Out сброс сброс при падении Vcc ниже некоторого значения.
Во время сброса все регистры ввода/вывода устанавливаются в начальные значения, программа начинает выполняться с адреса $000, по этому адресу должна быть записана команда RJMP - относительный переход на программу обработки сброса. Если в программе не разрешаются прерывания и векторы прерываний не используются, в первых адресах памяти может быть записана программа.
Сброс по включению питания
Импульс сброса по включению питания генерируется внутренней схемой. Уровень срабатывания схемы - 2.2В. Сброс производится когда напряжение питания превысит уровень срабатывания. Схема сброса по включению питания не дает процессору запускаться до тех пор, пока напряжение не достигнет безопасного уровня. При достижении безопасного уровня напряжения включается счетчик задержки определяющий длительность сброса. Эта длительность задается битами-перемычками и может устанавливаться в одно из восьми значений приведенных в таблице 4.
Таблица 3. Хар актеристики сброса.(Vcc=5.0V)
Тип напряжения | Min | Typ | Max | ||
Vpower | Напряжение срабатывания сброса по включению питания | 1.7v | 2.2v | 2.7v | |
Vreset | Напряжение срабатывания сброса по выводу RESET | 0.6Vcc | |||
Vbodlevel | Напряжение срабатывания сброса по Brown-Out | BODLEVEL=1 | 2.6v | 2.7v | 2.8v |
Напряжение срабатывания сброса по Brown-Out | BODLEVEL=0 | 3.8v | 4.0v | 4.2v |
Таблица 4. Установка времени сброса
CKSEL [2:0] | Время запуска |
000 | 4mS + 6CK |
001 | 6CK |
010 | 64mS + 16K CK |
011 | 4mS + 16K CK |
100 | 16K CK |
101 | 64mS + 1K CK |
110 | 4mS + 1K CK |
111 | 1K CK |
ВНЕШНИЙ СБРОС
Внешний сброс обрабатывается по низкому уровню на выводе RESET. Вывод должен удерживаться в низком состоянии по крайней мере два периода тактовой частоты. После достижения напряжения Vrst запускается таймер задержки, через промежуток времени Tout процессор запускается.