Цитата:
|
..., я читал вроде внимательно, но про ресет не говорилось.
Это, насколько я понимаю, только для этого таймера?
Для тамера1 и 0 такого не видать.
Или это стандартно для всех прерываний, которые не имеют обработчика?
|
______________________________________
Смотрим даташит на AT90S8535
www.atmel.com/.../DOC1041.PDF
выясняем какие у него есть прерывания.
Если будем использовать CodeVisionAVR то смотрим файл
...:cvavrevalinc90S8535.H
выясняем как эти прерывания обозваны в этом компиляторе
(в других компиляторах скорее всего имена будут немного другие)
// Interrupt vectors definitions
#define EXT_INT0 2
#define EXT_INT1 3
#define TIM2_COMP 4
#define TIM2_OVF 5
#define TIM1_CAPT 6
#define TIM1_COMPA 7
#define TIM1_COMPB 8
#define TIM1_OVF 9
#define TIM0_OVF 10
#define SPI_STC 11
#define UART_RXC 12
#define UART_DRE 13
#define UART_TXC 14
#define ADC_INT 15
#define EE_RDY 16
#define ANA_COMP 17
Пишем код, запускаем Project-Make, если не заругалось на ошибки то,
открываем файл *.asm, который автоматически был создан при
компиляции и смотрим, что получилось.
Сначала идут описание макросов, а затем начинается программа:
.CSEG
.ORG 0
.INCLUDE "bcdmodule.vec"
.INCLUDE "bcdmodule.inc"
__RESET:
...
Открываем файл "bcdmodule.vec" и видим, что будет при каждом из прерываний.
Еще удобней посмотреть, это в файле *.lst (bcdmodule.lst).
Хорошо видно, что для прерываний для которых нет обработчика
происходит переход на адрес 0x00, то есть __RESET
Часто, в программах написаных на ассемблере, используют RETI,
но, по моему, переход на ресет лучше.
_____________
Александр
2006 11 11