Ревич, Ю.В. Программирование микроконтроллеров AVR: от Arduino к ассемблеру
132 Часть 11. Программирование микроконтроллеров АVR на ассемблере rjmp USART_UDRE ; UDR Empty Handler rjmp USART_TXC ; USART тх Complete Handler rjmp ADC ; ADC Conversion Complete Handler rjmp EE_RDY ; EEPROM Ready Handler rjmp ANA_COMP ; Analog Comparator Handler rjmp TWS I ; Two-wire Serial Interface Handler rjmp SPM_RDY ; Store Program Memory Ready Handler ; ======================================== Но постойте : мы что, обязаны использовать все прерывания? Конечно, нет. Для не используемых прерываний в контроллерах с памятью программ менее 1 6 кбайт команду r j mp <метка> следует заменить на reti - выход из прерывания (retum interrupt). На самом деле можно бьmо бы указать и команду nop - пустую опера цию (см. описание команд далее) . Но мы будем ставить именно reti, т. к. тогда нам не будет важно, что какое-либо прерывание оказалось случайно инициализирова но, - оно все равно не станет выполняться, а писать и отлаживать программы так удобнее . Я в своих программах просто дополняю стандартные строки командой reti и точкой с запятой, чтобы закомментировать команду r jmp (листинг 6 . 5) . . include "m8de f . inc" . de f temp = rl б ; рабочая переменная rjmp RESET ; Reset Handler reti ; rj mp EXT_INTO ; IRQO Handler reti ; rjmp EXT_INTl ; IRQl Handler Теперь заготовка начала программы готова: при необходимости в дальнейшем ис пользовать какое-то прерывание, мы удаляем из соответствующей строки фрагмент reti ; , а затем где-то в программе ставим нужную метку и пишем обработчик, за канчивающийся командой reti (листинг 6 . 6) . rjmp RESET ; Reset Handler rjmp EXT_INTO ; IRQO Handler EXT_INTO : ; процедура обработки прерывания INTO <код обработчика> reti ; окончание процедуры обработки прерывания INTO Чаще используется более корректный универсальный способ оформления таблицы векторов прерываний. Его особенно целесообразно применять дЛЯ старших Mega,
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==