预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共45页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第5章单片机的中断系统5.1中断的概念 5.2中断控制系统 5.3中断处理过程 5.4中断的编程及应用1、主程序(死循环)中并没有调用INT0_srv()函数,它是如何自动执行的? 2、主程序中那几个变量赋值语句的作用是什么? 3、这种程序结构的意义是什么?1、INT0_srv()是一个中断服务程序,是系统在感受到某种特定信息后自动启动的; 2、那几个变量赋值语句是针对中断系统的管理命令; 3、可使系统实现多任务操作功能。中断是指在突发事件到来时先中止当前正在进行的工作,转而去处理突发事件。待处理完成后,再返回到原先被中止的工作处,继续进行随后的工作。1、可实现分时操作(CPU与多个外设并行工作)5.1中断的概念 5.2中断控制系统 5.2.1中断系统的结构 5.2.2中断管理寄存器 5.3中断处理过程 5.4中断的编程及应用引脚P3.2的电平/脉冲变化——外部中断0,INT0 引脚P3.3的电平/脉冲变化——外部中断1,INT1 定时/计数器0产生溢出——定时器0中断,T0 定时/计数器1产生溢出——定时器1中断,T1 串口一帧数据发送/接收完成——串口中断,TI/RI五个中断源可以引导五个中断服务程序,中断服务程序的入口地址——向(矢)量地址(ROM地址单元)。5.1中断的概念 5.2中断控制系统 5.2.1中断系统的结构 5.2.2中断管理寄存器 5.3中断处理过程 5.4中断的编程及应用共有四个中断管理寄存器——TCON、SCON、IE、IPIT0:外部中断0触发方式选择位 0:低电平触发1:负跳变触发 IE0:外部中断0中断请求标志 IT1、IE1类似IT0、IE0,分别是外部中断1触发方式选择位和外部中断1中断请求标志 TR0:定时/计数器0运行控制位0:停止1:运行 TR1:定时/计数器1运行控制位0:停止1:运行 TF0:定时/计数器0中断请求标志位 TF1:定时/计数器1中断请求标志位 TR1、TF1类似TR0、TF0,用作定时/计数器1的启停控制位和中断请求标志位IT1和IT0:INT1和INT0的触发方式选择位 0→电平,1→脉冲TI:串口发送中断标志位,一帧内部数据被送入发送缓冲器后由硬件自动置1→发送中断请求 中断响应后,标志位需要用软件方式撤销EA:中断总允许位,1→开放全部中断,0→禁止全部中断 ES:串口中断允许位,1→允许,0→禁止 ET1和ET0:定时器中断允许位,1→允许,0→禁止 EX1和EX0:外部中断允许位,1→允许,0→禁止中断源、中断入口、标志位、使能位PS:串口优先级设定位,1→高优先级,0→低优先级 PT1和PT0:T1和T0的优先级设定位,1→高优先级,0→低优先级 PX1和PX0:INT1和INT0的优先级设定位,1→高优先级,0→低优先级中断源、中断入口、标志位、使能位、优先级设置位1)高级中断请求可以打断正在执行的低级中断; 2)同级或低级中断请求不能打断正在执行的中断; 3)同级中断源同时提出请求时按自然优先级响应: INT0→T0→INT1→T1→TI/RI 4)单片机复位时,IP各位都被置0, 所有中断源为低级中断5.1中断的概念 5.2中断控制系统 5.3中断处理过程 5.3.1中断响应条件 5.3.2中断响应过程 5.3.3中断的撤消 5.4中断的编程及应用有中断请求(标志位置1) 中断总允许位EA=1,即CPU要开中断 中断源允许位为1,即没有被屏蔽 无同级或者更高级中断正在被服务机器周期的S6期间,CPU对中断标志位采样 阻断同级或低级中断 将程序断点存入栈区 中断矢量地址装入PC,转入对应的入口地址 中断响应时间为3~8个机器周期关中断(防止高级中断对现场保护的干扰) 保护现场(将PSW,Rn,A等内容压入堆栈) 开中断(允许高级中断请求) 中断服务(处理中断事件) 关中断(防止高级中断对现场恢复的干扰) 恢复现场(将PSW,Rn,A等内容弹出堆栈) 开中断(允许高级中断请求) 中断返回(断点弹出→”优先级激活“触发器复位)5.4中断的编程及应用C51中断服务程序是一种特殊的函数,它的说明形式为:usingm指定该中断服务程序要使用的工作寄存器组号,m为0~3。 若缺省using项,则编译系统默认为是当前工作寄存器组。在不查询按键时,如何得知按键有动作动作?①增加一个或非门,利用按键压下时的电平产生INT0中断请求信号;②改用P2口输出键值送LED数码管显示。#include<reg51.h> charled_mod[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x58,0x5e,0x79,0x71};//led字模 charkey_buf[]={0x11,0