Регистр состояния - SREG
Регистр состояния расположен по адресу $3F ($5F) пространства ввода/вывода и определен следующим образом:
Бит 7 6 5 4 3 2 1 0
┌───┬───┬───┬───┬───┬───┬───┬───┐
$3F ($5F) │ I │ T │ H │ S │ V │ N │ Z │ C │ SREG
└───┴───┴───┴───┴───┴───┴───┴───┘
Чт./зап.(R/W) 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-разрядный регистр с адресом $3D ($5D) хранит указатель стека процессора AT90S2313. 8-ми разрядов достаточно, для адресации ОЗУ в пределах $60-$DF.
Бит 7 6 5 4 3 2 1 0
┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
$3D ($5D) │ SP7 │ SP6 │ SP5 │ SP4 │ SP3 │ SP2 │ SP1 │ SP0 │SPL
└──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┘
Чт./зап. 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).
Дата добавления: 2016-12-27; просмотров: 1944;