ATmega88 中断向量

以下资料参考马潮老师的中文手册,由微雪电子整理并发布,转载请注明出处:www.waveshare.net,否则追究相应责任!

本节描述 ATmega88 的中断处理。更一般的 AVR 中断处理请参见 P11” 复位与中断处理 ” 。


(点击图片放大)

Notes: 1. 熔丝位BOOTRST被编程时,MCU复位后程序跳转到Boot Loader。请参见 P241”Boot Loader 支持RWW自编程,ATmega88 与 ATmega168” 2. 当寄存器MCUCR的IVSEL置位时,中断向量转移到Boot区的起始地址。此时各个中断 向量的实际地址为表中地址与Boot 区起始地址之和。

Table29 给出了不同的BOOTRST IVSEL设置条件下的复位和中断向量的位置。如果程序 没有使用中断,中断向量就没有意义。用户可以在此直接写程序。同样,如果复位向量位 于应用区,而其他中断向量位于 Boot 区,则复位向量之后可以直接写程序。反过来亦是 如此。

ATmega88复位和中断向量的确定

ATmega88 典型的复位和中断设置如下:
地址···代码 ···代码说明
0x000 rjmp RESET ; 复位处理
0x001 rjmp EXT_INT0 ; IRQ0处理
0x002 rjmp EXT_INT1 ; IRQ1处理
0x003 rjmp PCINT0 ; PCINT0处理
0x004 rjmp PCINT1 ; PCINT1处理
0x005 rjmp PCINT2 ; PCINT2处理
0x006 rjmp WDT ;看门狗定时器处理
0x007 rjmp TIM2_COMPA ; 定时器 2 比较 A处理
0x008 rjmp TIM2_COMPB ; 定时器 2比较 B处理
0x009 rjmp TIM2_OVF ; 定时器 2溢出处理
0x00A rjmp TIM1_CAPT ; 定时器 1捕获处理
0x00B rjmp rjmp TIM1_COMPA ; 定时器 1比较 A处理
0x00C rjmp TIM1_COMPB ; 定时器 1比较 B处理
0x00D rjmp TIM1_OVF ; 定时器 1溢出处理
0x00E rjmp TIM0_COMPA ; 定时器 0比较 A处理
0x00F rjmp TIM0_COMPB ; 定时器 0比较 B处理
0x010 rjmp TIM0_OVF ; 定时器 0溢出处理
0x011 rjmp SPI_STC ; SPI 传输结束处理
0x012 rjmp rjmp USART_RXC ; USART, RX结束处理
0x013 rjmp USART_UDRE ; USART, UDR空处理
0x014 rjmp USART_TXC ; USART, TX Complete 处理
0x015 rjmp ADC ; ADC转换结束处理
0x016 rjmp EE_RDY ; EEPROM就绪处理
0x017 rjmp ANA_COMP ; 模拟比较器处理
0x018 rjmp TWI ; 两线串行接口处理
0x019 rjmp SPM_RDY ; SPM 就绪处理

0x01A RESET: ldi r16, high(RAMEND); 主程序
0x01B out SPH,r16 ; 设置堆栈指针为 RAM的顶部
0x01C ldi r16, low(RAMEND)
0x01D out SPL,r16
0x01E sei ; 使能中断
0x01F <instr> xxx
、、、、 、、、、 、、、、

当熔丝位 BOOTRST 未编程, Boot 区为 2K 字节,且寄存器 MCUCR 的 IVSEL 在使能 任何中断之前得到置位时, ATmega88 典型的复位和中断设置如下:
地址 标号 代码 说明
0x000 RESET: ldi r16,high(RAMEND) ; 主程序
0x001 out SPH,r16 ; 设置堆栈指针为 RAM的顶部
0x002 ldi r16,low(RAMEND)
0x003 out SPL,r16
0x004 sei ; 使能中断
0x005 xxx
;
.org 0xC01
0xC01 rjmp EXT_INT0 ; IRQ0处理
0xC02 rjmp EXT_INT1 ; IRQ1处理
... ... ... ;

0xC19 rjmp SPM_RDY ; SPM 就绪处理
当熔丝位 BOOTRST被编程,且 Boot 区为 2K 字节时,ATmega88 典型的复位和中断设 置如下:
地址 标号代码 解释
.org 0x001
0x001 rjmp EXT_INT0 ; IRQ0处理
0x002 rjmp EXT_INT1 ; IRQ1处理
... ... ... ;

0x019 rjmp SPM_RDY ; SPM 就绪处理
;
.org 0xC00
0xC00 RESET: ldi r16,high(RAMEND) ; 主程序
0xC01 out SPH,r16 ; 设置堆栈指针为 RAM的顶部
0xC02 ldi r16,low(RAMEND)
0xC03 out SPL,r16
0xC04 sei ; 使能中断
0xC05 xxx

 相关AVR资料说明

可作为如下AVR的参考资料: ATtiny13 ATtiny24 ATtiny44 ATtiny84 ATtiny2313 ATtiny26 ATmega48 ATmega88 ATmega168 ATmega8 ATmega16 ATmega32 ATmega64 ATmega128 ATmega162 ATmega169 ATmega169P ATmega8515 ATmega8535

 相关AVR型号资料

ATtiny13 ATtiny24 ATtiny44 ATtiny84 ATtiny26 ATtiny2313
ATmega48 ATmega88 ATmega168 ATmega8 ATmega16 ATmega32
ATmega64 ATmega128 ATmega162 ATmega169 ATmega8515 ATmega8535

ATmega88 中断向量

——