AVR микроконтроллер AT90S2333 фирмы Atmel — страница 8

  • Просмотров 20694
  • Скачиваний 395
  • Размер файла 122
    Кб

индицирует нулевой ре­зультат различных арифметических и логических операций. Более подробно об этом можно прочитать в описании системы команд. Бит 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 Ножка