ATmega168 典型的复位和中断设置如下:
地址···代码 ···代码说明
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 xxx
、、、、 、、、、 、、、、
当熔丝位 BOOTRST被编程,Boot 区为 2K 字节,且寄存器 MCUCR 的 IVSEL 在使能任 何中断之前被置位时, ATmega168 典型的复位和中断设置如下:
地址··· 符号··· 代码··· 说明
0x0000 RESET: ldi r16,high(RAMEND) ; 主程序
0x0001 out SPH,r16 ; 设置堆栈指针为 RAM的顶部
0x0002 ldi r16,low(RAMEND)
0x0003 out SPL,r16
0x0004 sei ; 使能中断
0x0005 xxx
;
.org 0xC02
0x1C02 jmp EXT_INT0 ; IRQ0处理
0x1C04 jmp EXT_INT1 ; IRQ1处理
... ... ... ;
0x1C32 jmp SPM_RDY ; SPM 就绪处理
当熔丝位 BOOTRST 未编程, Boot 区为 2K 字节, ATmega168 典型的复位和中断设置 如下:
地址··· 符号··· 代码 ···说明
.org 0x0002
0x0002 jmp EXT_INT0 ; IRQ0处理
0x0004 jmp EXT_INT1 ; IRQ1处理
... ... ... ;
0x0032 jmp SPM_RDY ; SPM 就绪处理
;
.org 0x1C00
0x1C00 RESET: ldi r16,high(RAMEND) ; 主程序
0x1C01 out SPH,r16 ; 设置堆栈指针为 RAM的顶部
0x1C02 ldi r16,low(RAMEND)
0x1C03 out SPL,r16
0x1C04 sei ; 使能中断
0x1C05 xxx
ATmega168 当熔丝位BOOTRST被编程,Boot区为2K 字节,且寄存器MCUCR的IVSEL 在使能任何中断之前被置位时, ATmega168 典型的复位和中断设置如下:
地址···符号···代码···说明
;
.org 0x1C00
0x1C00 jmp RESET ; 复位处理
0x1C02 jmp EXT_INT0 ; IRQ0处理
0x1C04 jmp EXT_INT1 ; IRQ1处理
... ... ... ;
0x1C32 jmp SPM_RDY ; SPM 就绪处理
;
0x1C33 RESET: ldi r16,high(RAMEND) ; 主程序
0x1C34 out SPH,r16 ; 设置堆栈指针为 RAM的顶部
0x1C35 ldi r16,low(RAMEND)
0x1C36 out SPL,r16
0x1C37 sei ; 使能中断
0x1C38 xxx
ATmega168 典型的复位和中断设置如下:
地址···代码 ···代码说明
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 xxx
、、、、 、、、、 、、、、
当熔丝位 BOOTRST被编程,Boot 区为 2K 字节,且寄存器 MCUCR 的 IVSEL 在使能任 何中断之前被置位时, ATmega168 典型的复位和中断设置如下:
地址··· 符号··· 代码··· 说明
0x0000 RESET: ldi r16,high(RAMEND) ; 主程序
0x0001 out SPH,r16 ; 设置堆栈指针为 RAM的顶部
0x0002 ldi r16,low(RAMEND)
0x0003 out SPL,r16
0x0004 sei ; 使能中断
0x0005 xxx
;
.org 0xC02
0x1C02 jmp EXT_INT0 ; IRQ0处理
0x1C04 jmp EXT_INT1 ; IRQ1处理
... ... ... ;
0x1C32 jmp SPM_RDY ; SPM 就绪处理
当熔丝位 BOOTRST 未编程, Boot 区为 2K 字节, ATmega168 典型的复位和中断设置 如下:
地址··· 符号··· 代码 ···说明
.org 0x0002
0x0002 jmp EXT_INT0 ; IRQ0处理
0x0004 jmp EXT_INT1 ; IRQ1处理
... ... ... ;
0x0032 jmp SPM_RDY ; SPM 就绪处理
;
.org 0x1C00
0x1C00 RESET: ldi r16,high(RAMEND) ; 主程序
0x1C01 out SPH,r16 ; 设置堆栈指针为 RAM的顶部
0x1C02 ldi r16,low(RAMEND)
0x1C03 out SPL,r16
0x1C04 sei ; 使能中断
0x1C05 xxx
ATmega168 当熔丝位BOOTRST被编程,Boot区为2K 字节,且寄存器MCUCR的IVSEL 在使能任何中断之前被置位时, ATmega168 典型的复位和中断设置如下:
地址···符号···代码···说明
;
.org 0x1C00
0x1C00 jmp RESET ; 复位处理
0x1C02 jmp EXT_INT0 ; IRQ0处理
0x1C04 jmp EXT_INT1 ; IRQ1处理
... ... ... ;
0x1C32 jmp SPM_RDY ; SPM 就绪处理
;
0x1C33 RESET: ldi r16,high(RAMEND) ; 主程序
0x1C34 out SPH,r16 ; 设置堆栈指针为 RAM的顶部
0x1C35 ldi r16,low(RAMEND)
0x1C36 out SPL,r16
0x1C37 sei ; 使能中断
0x1C38 xxx
举报