第5章 PIC单片机中断系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第5章中断系统•本章主要内容:
•微机的输入
微机的输入//输出方式
•PIC18Fxx2
中断系统结构及中断控制PIC18Fxx2中断系统结构及中断控制•中断响应及处理过程
•外部中断扩展方法
•中断程序举例
读入状态信息
准备好?
启动外设设备延时NO
查询方式程序流程图
YES
(a)(b)所有数据传送完毕?
YES
NO
YES
所有数据传送完毕?NO 传送一个字节数据
传送一个字节数据
5.2 PIC18Fxx2中断系统结构及中断控制•程序查询方式因为CPU要花大量的时间等待慢速的外设准备好,因此CPU的利用率大大降低。
•是否有一种方式,外设准备好之后能够自动通知CPU,让CPU来处理?这样,外设在准备的时间段中,CPU可以
处理其他的事情。
而外设一旦有需求,CPU可及时响应它的需求。
•采用中断技术既能保证CPU的效率又能保证系统的实时性。
5.2.1中断的概念
•当CPU CPU正在处理某事件的正在处理某事件的
时候,外部发生的某一
事件请求事件请求CPU CPU迅速去处理,迅速去处理,
于是于是CPU CPU暂时中止当前的暂时中止当前的
工作,转去处理所发生
主程序中断服务程序的事件。
中断服务处理
完该事件后,再返回到
原来被中止的地方继续
原来的工作,这样的过
程称为中断。
•中断事件与调用事件的
区别?务程序继续执行主程序断点
中断流程图
5.2.2 中断技术实现的功能
2、实时处理
•当计算机用于实时控制时,需要
提供服务的请求是随当计算机用于实时控制时,需要CPU
CPU提供服务的请求是随
CPU就可以立即响应并加以处
就可以立即响应并加以处机发生的。
有了中断系统,
机发生的。
有了中断系统,CPU
理。
3、故障处理
•计算机在运行时往往会出现一些故障,如断电、存储器奇偶校验出错、运算溢出等。
•有了中断系统,当出现上述情况时,
可及时转去执行
CPU可及时转去执行有了中断系统,当出现上述情况时,CPU
故障处理程序,自行处理故障而不必停机。
5.2.3 PIC18Fxx2中断源
•产生中断的请求源称为中断源。
•PIC18Fxx2中断系统的18个中断源,其中重要的中断源包括:.外部引脚RB0/INT0、RB1/INT1 及RB2/INT2边沿触发中断.定时器(TMR0/TMR1/TMR2)计数溢出中断
. PORTB<7:4> 上的输入电平变化中断
. CCP模块事件捕捉/比较匹配中断;
.串行通信(同步或异步)接收发送中断;
. A/D转换结束中断;
. 8位并行从动口中断;
. 数据EEPROM/ 闪存写操作中断;
5.2.3 PIC18Fxx2中断源
. 总线冲突中断;
. 低压检测中断;
. 主控同步串行口中断
以上中断源,按照与单片机内核接合的紧密程度,可以分成:TMR
两类其中外部引脚的沿跳变、定时器的溢出和PORTB[7,4]电平变化这3个中断为内核资源中断,它们的中断控制和响应可以在一个特殊寄存器INTCON中实现;其他全部归属于外部资源中断。
又称外设中断(peripheral interrupt),除了INTCON寄存器,还需其他针对外设中断的控制寄存器辅助配合实现中断响应。
通常情况的中断源
•I/O外设(键盘、打印机、A/D转换器等)
•硬件故障(如电源断电)
•实时时钟(用在定时检测和控制的场合)
•为调试程序而设定的中断源(设置断点、单步运行)
5.2.4 中断的控制
PIC18FXX2 器件具有多个中断源(18个)及一个中断优先级功能,该功能可以给每个中断源分配高优先级中断或者低优先级中断。
高优先级中断向量位于000008h,低优先级中断向量位于000018h。
高优先级中断事件会覆盖掉任何正在执行的低优先级中断。
有10 个寄存器用于控制中断操作。
这些寄存器是:• RCON
• INTCON • INTCON2 • INTCON3
• PIR1 和PIR2(包含各外设中断的标志位)
• PIE1 和PIE2(包含各外设中断的使能位)
• IPR1 和IPR2(器包含各外设中断的优先级位)
每个中断源(INT0 除外)有3 个位来控制其操作。
这些位的功能是:
• 标志位,表明发生了中断事件
• 使能位,当该标志位置1 时,允许程序执行转移到中断向量地址
• 优先级位,用于选择高优先级还是低优先级
5.3 中断响应及处理过程
•中断处理过程可分为:
•中断响应
•中断处理
•中断返回N
K
K+1中断响应保护现场
为外设服务
恢复现场
N +m
返回中断处理
保护现场示例
5.4 中断逻辑
1、任何中断均能够将单片机从休眠状态唤醒
2、中断分为高优先级中断和低优先级中断
3、高优先级中断由GIEH/GIE位打开或关闭
4、低优先级中断由GIEH/GIE,GIEL/PEIE共同决定
5、发生高级中断时会立即终止低级中断
6、多个同一优先级中断同时发生时需软件中编写中断查询程序
5.5 中断示例
中断编程原则
1、不要什么事件都用中断来响应,大部分情形软件查询即
可满足要求。
2、中断服务程序尽量短,只做必须做的事情。
其他放到主
循环里做。
3、中断服务中尽量避免调用其他子程序,防止堆栈溢出,
4、不要在中断内做复杂运算。
INT0
外部中断触发实例
INT0外部中断触发实例
•利用RB0/INT0、RB1/INT1 及RB2/INT2 引脚的外部边沿触发中断;•INTCON2 寄存器中相应的INTEDGx位被置1,则为上升沿触发;如果该INTEDGx位清零,则为下降沿触发。
RBx//INTx引脚上出现一个有效边沿时,相应标志位INTxF被置1。
•当RBx
通过对相应的使能位INTxE清零,可以禁止该中断。
•在重新使能该中断前,必须在中断服务程序中先用软件将标志位INTxF 清零。
•INT1 和INT2 的中断优先级由中断优先级位INT1IP(INTCON3<6>)和INT2IP (INTCON3<7>)中的值决定。
INT0 始终是一个高优先级的中断源。
•注意INT中断使用RB端口,不同于PORTB 电平变化中断,两者是不同的中断
•8个发光二极管一直做流水显示,按下P1键后,将引发外部中断,进入中断后,将强制将流水从头开始
•RBIE=0; //RB口电平变化中断禁止•INTEDG0=0; //设置下降沿触发中断
•INT0IE=1; //使能外部中断
•GIE=1; //开放全局中断
开放全局中断。
•void interrupt init1(void)
{
if(INT0IF==1) //判断中断标志位
{
b=0x3f; //中断后,强行将流水动作从头开始}
INT0IF=0; //要手工清楚中断标志
}。