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

МнемоникаОперандыОписаниеДействиеФлагиЦклАрифметические командыADDRd, RrСложить два регистраRd<Rd+RrZ,C,N,V,H1ADCRd, Rr Сложить с переносомRd<Rd+Rr+C Z,C,N,V,H1ADIWRdl,K Сложить слово с константойRdh,l<Rdh,l+K Z,C,N,V,S2SUBRd,

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

Методическое пособие

Радиоэлектроника

Другие методички по предмету

Радиоэлектроника

Сдать работу со 100% гаранией
тываемого бита. Бит из регистра регистрового файла может быть скопирован в 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)76543210SP7SP6SP5SP4SP3SP2SP1SP0R\WR\WR\WR\WR\WR\WR\WR\WНачальное значение00000000

Указатель стека указывает на область памяти в которой расположен стек вызова подпрограмм и прерваний. Область стека в ОЗУ должна быть задана до того как произойдет любой вызов подпрограммы или будут разрешены прерывания. Указатель стека уменьшается на 1 при записи данных в стек командой PUSH и уменьшается на 2 при вызове подпрограммы командой CALL или обработке прерывания. Указатель стека увеличивается на 1 при выборе данных из стека командой POP и увеличивается на 2 при выполнении команд возврата из подпрограммы или обработчика прерывания (RET или RETI).

 

***Стек процессора работает с предварительным инкрементом и постдекрементом

Сброс и обработка прерываний.

В процессоре предусмотрены 13 источников прерываний. Эти прерывания и сброс имеют различные векторы в области памяти программ. Каждому из прерываний присвоен отдельный бит разрешающий данное прерывание при установке бита в 1, если бит I регистра состояния разрешает общее обслуживание прерываний.

Самые младшие адреса памяти программ определены как векторы сброса и прерываний. Полный список векторов прерываний приведен в таблице Этот список определяет и приоритет различных прерываний. Меньшие адреса соответствуют более высокому уровню приоритета. Самый высокий уровень у сброса, следующий приоритет у INT0 - внешнего запроса прерывания 0 и т.д. Ниже приведена типичная программа обработки сброса и векторов прерываний:

 

 

 

000hrjmp RESETОбработка сброса001hrjmp EXT_INT0Обработка IRQ0002hrjmp EXT_INT1Обработка IRQ1003hrjmp TIM1_CAPTОбработка захвата таймера 1004hrjmp TIM1_COMPОбработка совпадения таймера 1005hrjmp TIM1_OVFОбработка переполнения таймера 1006hrjmp TIM0_OVFОбработка переполнения таймера 0007hrjmp SPI_STCОбработка передачи по SPI008hrjmp UART_RXCОбработка приема байта009hrjmp UART_DREОбработка освобождения UDR00Ahrjmp UART_TXCОбработка передачи байта00Bhrjmp ADCОбработка преобразования АЦП00Chrjmp EE_RDYОбработка готовности EEPROM00Dhrjmp ANA_COMPОбработка аналогов. компаратора00EhОсновная программаНачало основной программы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Сброс и векторы прерываний.

 

Номер вектораАдресИсточникОписание прерывания1000hRESETНожка сброса, сторожевой таймер Brown-Out reset2001hINT0Внешнее прерывание 03002hINT1Внешнее прерывание 14003hTIMER1 CAPTЗахват таймера/счетчика 15004hTIMER1 COMPСовпаден. таймера/счетчика 16005hTIMER1 OVFПереполнение таймера/счетчика 17006hTIMER0 OVFПереполнение таймера/счетчика 08007hSPI, STCПередача по SPI завершена9008hUART RXПоследоват.порт прием закончен10009hUART UDREПосл.порт регистр данных пуст1100AhUART TXПосл.порт передача закончена1200BhADCПреобразование АЦП завершено1300ChRDYEEPROM готово1400DhCOMPАналоговый компаратор

ИСТОЧНИКИ СБРОСА

AT90S2333/4433 имеют четыре источника сброса.

* Сброс по включению питания. Процессор сбрасывается при подаче питания на выводы VCC и GND.

* Внешний сброс. Процессор сбрасывается при подаче низкого уровня на вывод RESET на время более двух периодов тактовой частоты.

* Сброс от сторожевого таймера. Процессор сбрасывается по окончанию времени отработки сторожевого таймера, если разрешена его работа.

* Brown-Out сброс сброс при падении Vcc ниже некоторого значения.

Во время сброса все регистры ввода/вывода устанавливаются в начальные значения, программа начинает выполняться с адреса $000, по этому адресу должна быть записана команда RJMP - относительный переход на программу обработки сброса. Если в программе не разрешаются прерывания и векторы прерываний не используются, в первых адресах памяти может быть записана программа.

 

 

Сброс по включению питания

Импульс сброса по включению питания генерируется внутренней схемой. Уровень срабатывания схемы - 2.2В. Сброс производится когда напряжение питания превысит уровень срабатывания. Схема сброса по включению питания не дает процессору запускаться до тех пор, пока напряжение не достигнет безопасного уровня. При достижении безопасного уровня напряжения включается счетчик задержки определяющий длительность сброса. Эта длительность задается битами-перемычками и может устанавливаться в одно из восьми значений приведенных в таблице 4.

 

 

 

 

 

Таблица 3. Хар актеристики сброса.(Vcc=5.0V)

 

Тип напряженияMinTypMaxVpowerНапряжение срабатывания сброса по включению питания1.7v2.2v2.7vVresetНапряжение срабатывания сброса по выводу RESET0.6VccVbodlevelНапряжение срабатывания сброса по Brown-OutBODLEVEL=12.6v2.7v2.8vНапряжение срабатывания сброса по Brown-OutBODLEVEL=03.8v4.0v4.2v

Таблица 4. Установка времени сброса

 

CKSEL [2:0]Время запуска0004mS + 6CK0016CK01064mS + 16K CK0114mS + 16K CK10016K CK10164mS + 1K CK1104mS + 1K CK1111K CK

ВНЕШНИЙ СБРОС

Внешний сброс обрабатывается по низкому уровню на выводе RESET. Вывод должен удерживаться в низком состоянии по крайней мере два периода тактовой частоты. После достижения напряжения Vrst запускается таймер задержки, через промежуток времени Tout процессор запускается.

 

BROWN-OUT

AT90S2333/4433 имеют встроенную схему отслеживания напряжения питания. Работа этой схемы разрешается и запрещается битом-перемычкой BODEN. Если бит BODEN запрограммирован, при уменьшении напряжения ниже заданного уровня срабатывает схема сброса. Время сброса задается как и для сброса по включению питания (табл.4). Уровень сброса устанавливается битом BODLEVEL на 2.7В если бит не запрограммирован или на 4В если

бит запрограммирован. Уровень срабатывания имеет гистерезис 50мВ.

Для того, чтобы произошел сброс падение напряжения до уровня срабатывания должно продержаться не менее 3мкС для уровня срабатывания 4В (7мкС для 2.7В).

 

СБРОС ПО СТОРОЖЕВОМУ ТАЙМЕРУ

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

 

РЕГИСТР СОСТОЯНИЯ ПРОЦЕССОРА - MCUSR

Этот регистр содержит информацию о том, что явилось причиной сброса процессора.

 

MCUSR

 

34h(54h)76543210----WDRFBORFEXTRFPORFRRRRRRR\WR\WНачальное значение00000000

Биты 7..4 - зарезервированы. В AT90S2333/4433 эти биты зарезервированы и всегда читаются как 0.

 

Бит 3 - WDRF - этот бит устанавливается при сбросе от сторожевого таймера. Бит обнуляется при сбросе по включению питания или записью нуля.

 

Бит 2 - BORF - этот бит устанавливается при сбросе от схемы слежения за напряжением питания. Бит обнуляется при сбросе по включению питания или записью нуля.

 

Бит 1 - EXTRF - этот бит устанавливается при внешнем сбросе Бит обнуляется при сбросе по включению питания или записью нуля.

 

Бит 0 - PORF - этот бит устанавливается при сбросе по включению питания, бит очищается записью нуля.

 

Чтобы определить источник сброса пользователь должен в самом начале программы прочитать регистр MCUSR и обнулить все биты. Источник сброса определяется проверкой соответствующих флагов сброса.

 

ОБРАБОТКА ПРЕРЫВАНИЙ

AT90S2333/4433 имеют два регистра маскирования прерываний GIMSK - общий регистр маски прерываний и TIMSK - регистр маски прерываний от таймеров/счетчиков.

Когда возникает прерыв

Похожие работы

<< < 1 2 3 4 5 6 7 > >>