ATtiny13
优先级。 RESET具有最高的优先级,第二个为INT0 - 外部中断请求
0.
当发生中断时,全局中断使能位I被清零,所有的中断都显示
体健。用户软件可以写1来我位使能中断嵌套。所有已启用
然后中断都可以中断当前的中断服务程序。在I位自动设置时,
执行 - 从中断返回指令 - RETI 。
基本上有两种类型的中断。第一种类型是由用于设置事件触发
中断标志。对于这些中断,程序计数器跳转到实际的中断向量
器,以执行中断处理程序,同时硬件将清除相应的
中断标志。中断标志也可以通过写1到标志位位置清零(多个)
被清除。如果在相应的中断使能位是发生中断条件
清除中断标志位被置一直保持到中断执行,或者该标志
通过软件清零。同样,如果出现一个或多个中断的条件,而全局中断
使能位清零时,相应的中断标志位被置一直保持到
全局中断使能位被置位,然后会根据优先顺序来执行。
第二种类型的中断的触发只要中断条件是否存在。这些
中断不需要中断标志。如果中断状态前消失
中断使能,中断不会被触发。
当AVR退出中断,它总是回到主程序并执行一个
之前的任何挂起的中断多指令早餐。
请注意,状态进入中断服务程序时,注册时不会自动存储,也不
从中断程序返回时恢复。这必须通过软件来处理。
当使用CLI指令来禁止中断时,中断禁止立即生效。
没有中断将CLI指令后执行,即使它同时出现的
CLI指令。下面的示例演示如何可以用来避免在中断
定时EEPROM写过程..
汇编代码例程
in
R16 , SREG
CLI
SBI
EECR , EEMPE
SBI
EECR , EEPE
OUT
SREG , R16
;恢复SREG值( I位)
;保存SREG
;启动EEPROM写
;禁止在定时中断程序
C代码示例
CHAR
cSREG ;
cSREG = SREG ;
/ *保存SREG值* /
/*
在时间顺序禁止中断* /
__disable_interrupt ();
EECR | = ( 1<<EEMPE ) ;
/ *启动EEPROM写* /
EECR | = ( 1<<EEPE ) ;
SREG = cSREG ;
/ *恢复SREG值( I位) * /
13
2535I–AVR–05/08