Бит 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
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34