1996 微芯 技术 公司 ds30412c-页 21
PIC17C4X
5.0 中断
这 pic17c4x 设备 有 11 来源 的 中断:
• 外部 中断 从 这 ra0/int 管脚
• 改变 在 rb7:rb0 管脚
• tmr0 overflow
• tmr1 overflow
• tmr2 overflow
• tmr3 overflow
• 通用同步/异步串行接收/发送器 transmit 缓存区 empty
• 通用同步/异步串行接收/发送器 receive 缓存区 全部
• Capture1
• Capture2
• t0cki 边缘 occurred
那里 是 四 寄存器 使用 在 这 控制 和 状态
的 中断. 这些 是:
• CPUSTA
• INTSTA
• PIE
• PIR
这 cpusta 寄存器 包含 这 glintd 位. 这个 是
这 global 中断 使不能运转 位. 当 这个 位 是 设置, 所有
中断 是 无能. 这个 位 是 部分 的 这 控制
核心 符合实际 和 是 描述 在 这 记忆 orga-
nization 部分.
当 一个 中断 是 responded 至, 这 glintd 位 是
automatically 设置 至 使不能运转 任何 更远 中断, 这
返回 地址 是 pushed 面向 这 堆栈 和 这 pc 是
承载 和 这 中断 vector 地址. 那里 是 四
中断 vectors. 各自 vector 地址 是 为 一个 specific
中断 源 (除了 这 附带的 中断 这个
有 这 一样 vector 地址). 这些 来源 是:
• 外部 中断 从 这 ra0/int 管脚
• tmr0 overflow
• t0cki 边缘 occurred
• 任何 附带的 中断
当 程序 执行 vectors 至 一个 的 这些 inter-
rupt vector 地址 (除了 为 这 附带的 inter-
rupt 地址), 这 中断 flag 位 是 automatically
cleared. vectoring 至 这 附带的 中断 vector
地址 做 不 automatically clear 这 源 的 这
中断. 在 这 附带的 中断 维护 routine, 这
源(s) 的 这 中断 能 是 决定 用 测试
这 中断 flag 位. 这 中断 flag 位(s) 必须 是
cleared 在 软件 在之前 re-enabling 中断 至
避免 infinite 中断 requests.
所有 的 这 单独的 中断 flag 位 将 是 设置 关于-
较少 的 这 状态 的 它们的 相应的 掩饰 位 或者 这
glintd 位.
为 外部 中断 events, 那里 将 是 一个 中断
latency. 为 二 循环 说明, 这 latency 可以 是
一个 操作指南 循环 变长.
这 “return 从 interrupt” 操作指南,
RETFIE
, 能 是
使用 至 mark 这 终止 的 这 中断 维护 routine.
当 这个 操作指南 是 executed, 这 堆栈 是
“poped”, 和 这 glintd 位 是 cleared (至 re-使能
中断).
图示 5-1: 中断 逻辑
TMR1IF
TMR1IE
TMR2IF
TMR2IE
TMR3IF
TMR3IE
CA1IF
CA1IE
CA2IF
CA2IE
TXIF
TXIE
RCIF
RCIE
RBIF
RBIE
T0IF
T0IE
INTF
INTE
T0CKIF
T0CKIE
GLINTD
PEIE
wake-向上 (如果 在 睡眠 模式)
或者 terminate 长 写
中断 至 cpu
PEIF
这个 文档 是 创建 和 FrameMaker404