×
单片机 > 单片机程序设计 > 详情

ATmega 16 单片机的中断系统的相关寄存器(八)

发布时间:2020-08-24 发布时间:
|
复位和中断向量

向量号   程序地址   中断源                       中断定义
    1        0x000    RESET                      外部引脚电平引发的,上电的,掉电检测的,看门狗,及JTAG AVR复位
    2        0x002     INT0                          外部中断请求0中断
    3        0x004     INT1                          外部中断请求1中断
    4        0x006   TIMER2                       COMP定时器/计数器2比较匹配中断
    5        0x008   TIMER2                       OVF定时器/计数器2溢出中断
    6        0x00A   TIMER1                       CAPT定时器/计数器1事件捕捉中断
    7        0x00C   TIMER1                       COMPA定时器/计数器1比较匹配A中断
    8        0x00E   TIMER1                       COMPB定时器/计数器1比较匹配B中断
    9        0x010   TIMER1                       OVF定时器/计数器1溢出中断
   10       0x012   TIMER0                       OVF定时器/计数器0溢出中断
   11       0x014    SPI_STC                     SPI串行传输结束中断
   12       0x016   USART_RXC               USART接收结束中断
   13       0x018   USART_UDRE             USART数据寄存器空
   14       0x01A   USART_TXC               USART发送结束中断
   15       0x01C      ADC                         ADC转换结束中断
   16       0x01E    EE_RDY                     EEPROM就绪中断
   17       0x020   ANA_COMP                 模拟比较器中断
   18       0x022    TWI                             两线串行接口中断
   19       0x024    INT2                            外部中断请求2中断
   20       0x026    TIMER0_COMP           定时器/计数器0比较匹配中断
   21       $028    SPM_RDY                  保存程序存储器内容就绪

复位和中断向量位置的确定
BOOTRST     IVSEL      复位地址                           中断向量起始地址
       1                0           0x0000                                         0x0002
       1                1           0x0000                             Boot区复位地址+0x0002
       0                0        Boot Reset Address                      0x0002
       0                1        Boot Reset Address              Boot区复位地址+0x0002

1.MCUCR——MCU控制寄存器

            SM2     SE      SM1     SM0      ISC11      ISC10     ISC01     ISC00

位3,2——ISC11,ISC10:中断触发方式控制1 位1与位0
外部中断1由引脚INT1激发,如果SREG寄存器的I标志位和相应的中断屏蔽位置位的话。在检测边沿前MCU首先采样INT1引脚上的电平。如果选择了边沿触发方式或电平变化触发方式,那么持续时间大于一个时钟周期的脉冲将触发中断,过短的脉冲则不能保证触发中断。如果选择低电平触发方式,那么低电平必须保持到当前指令执行完成。

ISC11               ISC10                 说明
   0                      0                      INT1为低电平时产生中断请求
   0                      1                      INT1引脚上任意的逻辑电平变化都将引发中断
   1                      0                      INT1的下降沿产生异步中断请求
   1                      1                      INT1的上升沿产生异步中断请求

位1,0–ISC01,ISC00:中断0触发方式控制位 1与位0
外部中断0由引脚INT0激发,如果SREG寄存器的I标志位和相应的中断屏蔽位置位的话。在检测边沿前MCU首先采样INT0引脚上的电平。如果选择了边沿触发方式或电平变化触发方式,那么持续时间大于一个时钟周期的脉冲将触发中断,过短的脉冲则不能保证触发中断。如果选择低电平触发方式,那么低电平必须保持到当前指令执行完成。

ISC01          ISC00                  说明
    0                 0                     INT0为低电平时产生中断请求
    0                 1                     INT0引脚上任意的逻辑电平变化都将引发中断
    1                 0                     INT0的下降沿产生异步中断请求
    1                 1                     INT0的上升沿产生异步中断请求

2.MCUCSR——MCU控制与状态寄存器

            JTD     ISC2      –      JTRF      WDRF     BORF     EXTRF     PORF

位6——ISC2:中断2触发方式控制
异步外中断2由外部引脚INT2激活,如果SREG寄存器的I标志和GICR寄存器相应的中断屏蔽位置位的话。若ISC2写0,INT2的下降沿激活中断。若ISC2写1,INT2的上升沿激活中断。INT2的边沿触发方式是异步的。只要INT2引脚上产生宽度大于Table 36所示数据的脉冲就会引发中断。若选择了低电平中断,低电平必须保持到当前指令完成,
然后才会产生中断。而且只要将引脚拉低,就会引发中断请求。改变ISC2时有可能发生中断。因此建议首先在寄存器GICR里清除相应的中断使能位INT2,然后再改变ISC2。最后,不要忘记在重新使能中断之前通过对GIFR寄存器的相应中断标志位INTF2写'1’其清零。

3.GICR——通用中断控制寄存器

          INT1      INT0       INT2    –      –       –        IVSEL       IVCE

位7——INT1:使能外部中断请求1
当INT1为'1’,而且状态寄存器SREG的I标志置位,相应的外部引脚中断就使能了。MCU通用控制寄存器–MCUCR的中断敏感电平控制1位1/0(ISC11与ISC10)决定中断是由上升沿、下降沿,还是INT1电平触发的。只要使能,即使INT1引脚被配置为输出,只要引脚电平发生了相应的变化,中断将产生。
位6——INT0:使能外部中断请求0
当INT0为'1’,而且状态寄存器SREG的I标志置位,相应的外部引脚中断就使能了。MCU通用控制寄存器–MCUCR的中断敏感电平控制0位1/0(ISC01与ISC00)决定中断是由上升沿、下降沿,还是INT0电平触发的。只要使能,即使INT0引脚被配置为输出,只要引脚电平发生了相应的变化,中断将产生。

位 5——INT2:使能外部中断请求2
当INT2为'1’,而且状态寄存器SREG的I标志置位,相应的外部引脚中断就使能了。MCU通用控制寄存器–MCUCR的中断敏感电平控制2位1/0(ISC2与ISC2)决定中断是由上升沿、下降沿,还是INT2电平触发的。只要使能,即使INT2引脚被配置为输出,只要引脚电平发生了相应的变化,中断将产生。

4.GIFR——通用中断标志寄存器

              INTF1    INTF0     INTF2     –       –   –     –    –

位 7——INTF1:外部中断标志1
INT1引脚电平发生跳变时触发中断请求,并置位相应的中断标志INTF1。如果SREG的位I以及GICR寄存器相应的中断使能位INT1为”1”,MCU即跳转到相应的中断向量。进入中断服务程序之后该标志自动清零。此外,标志位也可以通过写入”1”来清零。
位6——INTF0:外部中断标志0
INT0引脚电平发生跳变时触发中断请求,并置位相应的中断标志INTF0。如果SREG的位I以及GICR寄存器相应的中断使能位INT0为”1”,MCU即跳转到相应的中断向量。进入中断服务程序之后该标志自动清零。此外,标志位也可以通过写入”1”来清零。
位 5——INTF2:外部中断标志2
INT2引脚电平发生跳变时触发中断请求,并置位相应的中断标志INTF2。如果SREG的位I以及GICR寄存器相应的中断使能位INT2为”1”,MCU即跳转到相应的中断向量。进入中断服务程序之后该标志自动清零。此外,标志位也可以通过写入”1”来清零。注意,当INT2中断禁用进入某些休眠模式时,该引脚的输入缓冲将禁用。这会导致INTF2标志设置信号的逻辑变化。




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
STM32中断向量表的位置.重定向