13
atmega16(l)
2466e–avr–10/02
当 使用 这 sei 操作指南 至 使能 中断, 这 操作指南 下列的 sei 将 是
executed 在之前 任何 pending 中断, 作 显示 在 这个 例子.
中断 回馈 时间
这 中断 执行 回馈 为 所有 这 使能 avr 中断 是 四 时钟 循环
最小. 之后 四 时钟 循环 这 程序 vector 地址 为 这 真实的 中断
处理 routine 是 executed. 在 这个 四 时钟 循环 时期, 这 程序 计数器 是
pushed 面向 这 堆栈. 这 vector 是 正常情况下 一个 jump 至 这 中断 routine, 和 这个
jump takes 三 时钟 循环. 如果 一个 中断 occurs 在 执行 的 一个 multi-循环
操作指南, 这个 操作指南是 完成 在之前 这 中断 是 served. 如果 一个 中断
occurs 当 这 mcu 是 在 睡眠 模式, 这 中断 执行 回馈 时间 是
增加 用 四 时钟 循环. 这个 增加 comes 在 增加 至 这 开始-向上 时间 从
这 选择 睡眠 模式.
一个 返回 从 一个 中断 处理 routine takes 四 时钟 循环. 在 这些 四
时钟 循环, 这 程序 计数器 (二 字节) 是 popped 后面的 从 这 堆栈, 这 堆栈
pointer 是 incremented 用 二, 和 这 i-位 在 sreg 是 设置.
组装 代号 例子
sei
; 设置 global 中断 使能
睡眠
; enter 睡眠, waiting 为 中断
; 便条: 将 enter 睡眠 在之前 任何 pending
; 中断(s)
c 代号 例子
_sei();
/* 设置 global 中断 使能 */
_睡眠();
/*
enter 睡眠, waiting 为 中断 */
/* 便条: 将 enter 睡眠 在之前 任何 pending 中断(s) */