- 1、本文档共45页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第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地址单元) 。;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中断服务程序是一种特殊的函数,它的说明形式为:;using m 指定该中断服务程序要使用的工作寄存器组号,m为0~3。
若缺省using项,则编译系统默认为是当前工作寄存器组。;在不查询按键时,如何得知按键有动作动作?;①增加一个或非门,利用按键压下时的电平产生INT0中断请求信号;②改用P2口输出键值送LED数码管显示。;#includereg51.h
char led_mod[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x58,0x5e,0x79,0x71}; //led字模
char key_buf[] = {0x11,0x21,0x41,0x81,0x12,0x22,0x42,0x82,
0x14,0x24,0x44,0x84,0x18,0x28,0x48,0x88}; //扫描码
bit key_flag=0;//定义按键动作标志
//----------------------延时函数
文档评论(0)