版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章单片机的中断系统5.1中断的概念5.2中断控制系统5.3中断处理过程5.4中断的编程及应用5.1中断的概念5.2中断控制系统5.3中断处理过程5.4中断的编程及应用5.1中断的概念某人正在看报电话铃响了去接电话继续接电话继续看报跑向厨房关煤气、灌开水水开了日常生活的中断现象举例正在执行显示程序有人按键处理键盘扫描继续处理键盘扫描继续执行显示程序处理定时器动作“看门狗”喂狗看门狗时间到计算机的中断应用举例要求:若有按键压下,使LED的状态反转。实例1单片机开关状态检测#include<reg51.h>#include<intrins.h>sbitp1_0=P1^0;voiddelay(void)//延时程序{inta=5000;while(a--)_nop_();}voidINT0_srv(void)interrupt0using1//外部中断0处理程序{delay();if(INT0==0){p1_0=!p1_0;while(INT0==0);}}voidmain(){p1_0=0;
EA=1; EX0=1;
while(1);}1、主程序(死循环)中并没有调用int0_srv()函数,它是如何自动执行的?2、主程序中那几个变量赋值语句的作用是什么?3、这种程序结构的意义是什么?问题:#include<reg51.h>#include<intrins.h>sbitp1_0=P1^0;voiddelay(void)//延时程序{inta=5000;while(a--)_nop_();}voidINT0_srv(void)interrupt0using1//外部中断0处理程序{delay();if(INT0==0){p1_0=!p1_0;while(INT0==0);}}voidmain(){p1_0=0;
EA=1; EX0=1;
while(1);}1、int0_srv()是一个中断服务程序,是系统在感受到某种特定信息后自动启动的;2、那几个变量赋值语句是针对中断系统的管理命令;3、可使系统实现多任务操作功能。解答:#include<reg51.h>#include<intrins.h>sbitp1_0=P1^0;voiddelay(void)//延时程序{inta=5000;while(a--)_nop_();}voidINT0_srv(void)interrupt0using1//外部中断0处理程序{delay();if(INT0==0){p1_0=!p1_0;while(INT0==0);}}voidmain(){p1_0=0;
EA=1; //开CPU中断EX0=1; //开外部中断1
while(1);}中断是指在突发事件到来时先中止当前正在进行的工作,转而去处理突发事件。待处理完成后,再返回到原先被中止的工作处,继续进行随后的工作。中断与子程序调用的区别:一般子程序的返回断点是已知的中断子程序的返回断点是随机的中断源、中断请求、中断服务等概念:引起突发事件的来源称为中断源中断源要求服务的请求称为中断请求对中断请求提供的服务称为中断服务中断管理系统处理事件的过程称为中断响应过程中断1、可实现分时操作(CPU与多个外设并行工作)温度压力断电MCU2、可实现实时处理(被控对象信息随机变化)外设1外设2外设nMCU3、可进行故障处理(及时处理突发事件)中断的意义:5.1中断的概念5.2中断控制系统5.2.1中断系统的结构5.2.2中断管理寄存器5.3中断处理过程5.4中断的编程及应用5.2中断控制系统引脚P3.2的电平/脉冲变化——外部中断0,INT0引脚P3.3的电平/脉冲变化——外部中断1,INT1定时/计数器0产生溢出——定时器0中断,T0定时/计数器1产生溢出——定时器1中断,T1串口一帧数据发送/接收完成——串口中断,TI/RI80C51具有五个中断源:5.2.1中断系统的结构五个中断源可以引导五个中断服务程序,中断服务程序的入口地址——向(矢)量地址(ROM地址单元)。中断服务程序的入口地址中断源中断服务程序入口地址外部中断0(/INT0)定时器0溢出(T0)外部中断1(/INT1)定时器1溢出(T1)串行口中断(RI/TI)0003H000BH0013H001BH0023H5.1中断的概念5.2中断控制系统
5.2.1中断系统的结构
5.2.2中断管理寄存器5.3中断处理过程5.4中断的编程及应用5.2中断控制系统共有四个中断管理寄存器——TCON、SCON、IE、IP5.2.2中断管理寄存器IT0:外部中断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的启停控制位和中断请求标志位(1)定时器控制寄存器(TCON)IT0IE0IT1IE1TR0TF0TR1TF18FH8EH8DH8CH8BH8AH89H88HTCON88H76543210IT1和IT0:INT1和INT0的触发方式选择位0→电平,1→脉冲低电平有效负边沿有效边沿触发在脉冲结束后,中断请求信号即可自行消失但电平触发信号却不会立即自行消失→引起继续中断请求建议减量采用边沿触发方式(1)定时器控制寄存器(TCON)IT0IE0IT1IE1TR0TF0TR1TF18FH8EH8DH8CH8BH8AH89H88HTCON88H76543210TCON复位值00H,默认状态为:无中断请求+电平触发TI:串口发送中断标志位,一帧内部数据被送入发送缓冲器后由硬件自动置1→发送中断请求中断响应后,标志位需要用软件方式撤销RI:串口接收中断标志位,一帧外部数据被送入接收缓冲器后由硬件自动置1→接收中断请求中断响应后,标志位需要用软件方式撤销(2)串口控制寄存器(SCON)RITIRB8TB8RENSM2SM1SM09FH9EH9DH9CH9BH9AH99H98HSCON98H76543210EA:中断总允许位,1→开放全部中断,0→禁止全部中断ES:串口中断允许位,1→允许,0→禁止ET1和ET0:定时器中断允许位,1→允许,0→禁止EX1和EX0:外部中断允许位,1→允许,0→禁止(3)中断允许寄存器(IE)EX0ET0EX1ET1ES--EAAFHAEHADHACHABHAAHA9HA8HIEA8H76543210中断源、中断入口、标志位、使能位中断源中断服务程序入口地址标志位中断允许位(使能位)外部中断0(/INT0)定时器0溢出(T0)外部中断1(/INT1)定时器1溢出(T1)串行口中断(RI/TI)0003H000BH0013H001BH0023HIE0TF0IE1TF1TI/RIEX0ET0EX1ET1ESEX0ET0EX1ET1ES--EAAFHAEHADHACHABHAAHA9HA8HIEA8H76543210RITIRB8TB8RENSM2SM1SM09FH9EH9DH9CH9BH9AH99H98HSCON98H76543210IT0IE0IT1IE1TR0TF0TR1TF18FH8EH8DH8CH8BH8AH89H88HTCON88H76543210PS:串口优先级设定位,1→高优先级,0→低优先级PT1和PT0:T1和T0的优先级设定位,1→高优先级,0→低优先级PX1和PX0:INT1和INT0的优先级设定位,1→高优先级,0→低优先级自然优先顺序,逐渐↓(4)中断优先级寄存器(IP)PX0PT0PX1PT1PS---BFHBEHBDHBCHBBHBAHB9HB8HIPB8H76543210中断源、中断入口、标志位、使能位、优先级设置位PX0PT0PX1PT1PS---BFHBEHBDHBCHBBHBAHB9HB8HIPB8HEX0ET0EX1ET1ES--EAAFHAEHADHACHABHAAHA9HA8HIEA8HRITIRB8TB8RENSM2SM1SM09FH9EH9DH9CH9BH9AH99H98HSCON98HIT0IE0IT1IE1TR0TF0TR1TF18FH8EH8DH8CH8BH8AH89H88HTCON88HEX0ET0EX1ET1ES中断允许位(使能位)IE0TF0IE1TF1TI/RI0003H000BH0013H001BH0023H中断服务程序入口地址PX0PT0PX1PT1PS外部中断0(/INT0)定时器0溢出(T0)外部中断1(/INT1)定时器1溢出(T1)串行口中断(RI/TI)中断优先级设置中断源标志位1)高级中断请求可以打断正在执行的低级中断;2)同级或低级中断请求不能打断正在执行的中断;3)同级中断源同时提出请求时按自然优先级响应:INT0→T0→INT1→T1→TI/RI4)单片机复位时,IP各位都被置0,所有中断源为低级中断优先级原则:中断系统的结构小结5.1中断的概念5.2中断控制系统5.3中断处理过程5.3.1中断响应条件5.3.2中断响应过程 5.3.3中断的撤消5.4中断的编程及应用5.3中断处理过程有中断请求(标志位置1)中断总允许位EA=1,即CPU要开中断中断源允许位为1,即没有被屏蔽无同级或者更高级中断正在被服务中断响应条件中断响应的基本条件如下:注意:下列任何一种情况存在时,中断响应都会阻止而无法得到响应:(1)CPU正在执行一个同级或高优先级的中断服务程序;(2)正在执行的是一条指令还没有执行完;(3)当前正的执行的指令是RETI或访问IE或IP的指令。机器周期的S6期间,CPU对中断标志位采样阻断同级或低级中断将程序断点存入栈区中断矢量地址装入PC,转入对应的入口地址中断响应时间为3~8个机器周期5.3.2中断响应过程CPU在中断响应完成后完成如下操作(1)硬件清除中断标志(串行中断除外)。(2)执行一条硬件子程序,保护断点,并转向中断服务程序入口。(3)中断服务,即为相应的中断源服务。(4)结束中断服务时,通过执行RETI指令恢复断点,返回主程序。中断响应后,中断请求标志位和中断请求信号应及时清除,否则就意味着中断请求仍然存在。5.3.3中断的撤消关中断(防止高级中断对现场保护的干扰)保护现场(将PSW,Rn,A等内容压入堆栈)开中断(允许高级中断请求)中断服务(处理中断事件)关中断(防止高级中断对现场恢复的干扰)恢复现场(将PSW,Rn,A等内容弹出堆栈)开中断(允许高级中断请求)中断返回(断点弹出→”优先级激活“触发器复位)可视需要缺省可视需要缺省中断服务程序执行流程5.4中断的编程及应用5.1中断的概念5.2中断控制系统5.3中断处理过程5.4中断的编程及应用5.4.1中断程序设计举例5.4.2扩展外部中断源C51中断服务程序是一种特殊的函数,它的说明形式为:[void]
函数名([void])interruptn
[usingm]
{函数体语句
}interrupt表示该函数是一个中断服务函数整数n表示该中断服务函数对应哪一个中断源5.4.1中断程序设计举例EX0ET0EX1ET1ES中断允许位(使能位)IE0TF0IE1TF1TI/RI0003H000BH0013H001BH0023H中断服务程序入口地址PX0PT0PX1PT1PS外部中断0(/INT0)定时器0溢出(T0)外部中断1(/INT1)定时器1溢出(T0)串行口中断(RI/TI)中断优先级设置中断源标志位中断编号01234usingm指定该中断服务程序要使用的工作寄存器组号,m为0~3。若缺省using项,则编译系统默认为是当前工作寄存器组。C51中断服务程序是一种特殊的函数,它的说明形式为:[void]
函数名([void])interruptn
[usingm]
{函数体语句
}在不查询按键时,如何得知按键有动作动作?如何保证能快速响应按键操作,又不过多占用CPU时间?中断扫描法——只有在键盘有键按下时,才执行键盘扫描程序。如无键按下,CPU可不考虑键盘的存在。查询扫描法需要花费很多CPU机时,在CPU任务繁重的情况下往往无法实现。实例2中断扫描法行列式键盘①增加一个与门,利用按键压下时的电平产生INT1中断请求信号;②改用P0口(中断接P3.3)。改进硬件电路:#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,0x21,0x41,0x81,0x12,0x22,0x42,0x82,0x14,0x24,0x44,0x84,0x18,0x28,0x48,0x88};//键值#defineuintunsignedint#defineucharunsignedcharvoidinit();//初始化函数voidkey_scan();//键盘扫描函数bitint1_flag; //外部中断1标志变量charkey=0,k=0;//键值,显示下标voidmain(){P2=0x00; //关显示P0=0xf0; //为扫描键盘做准备init(); //初始化while(1){ //无限循环if(int1_flag)P2=led_mod[k];//有外部中断1,则将键盘扫描结果送显示}int1_flag=0; //外部中断1标志变量复位}实例2的C语言程序voidinit(){//初始化程序IE=0xff;//允许所有中断
IP=0x04;//外中断1为高中断优先级TCON=0x05;//外部中断0和外部中断1圴设置为负跳变触发int1_flag=0;//外部中断1标志复位
P0=0xf0;//P0端开始初始化为低四位全为0,高四位全为1}voidkey_scan()interrupt2//外部中断1服务程序{uintt;chari;ucharkeycode,scancode,flag=0xff;//键码,扫描码,标志int1_flag=1;//外部中断1标志置位t=5000; while(t--);//延时,避免干拢信号if(INT1==1)return;//按非中断不做处理EX1=0;//中断有效,先关键盘中断scancode=0xf7;//设扫描码
实例2的C语言程序(续)IT0IE0IT1IE1TR0TF0TR1TF18FH8EH8DH8CH8BH8AH89H88HTCON88H实例2的C语言程序(续)while(scancode!=0xff){//有键被按下P0=scancode;//扫描码为11110111,即开始扫描P0.3所在的行keycode=P0;//读出数据,看是否是该行上某列键盘被按下if((keycode&0xf0)!=0xf0)break;//如果被按下的键在该行中,则退出scancode=(keycode>>1)|0xf0;
//否刚继续扫描P0.2所在的行,以此循环直到扫描到被按下的键}keycod
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国木浆水刺纸市场调查研究报告
- 2025年中国农业GIS成图与处理软件系统市场调查研究报告
- 2025年中国京式月饼市场调查研究报告
- 2025年中国4D影院仿真设备市场调查研究报告
- 2025至2030年中国童拖鞋数据监测研究报告
- 2025至2030年中国协议转换器数据监测研究报告
- 二零二五年度教育机构消毒设施安装与维护合同2篇
- 2025版物业管理合同法律制度与社区物业管理市场拓展3篇
- 二零二五年度绿色能源项目借款合同汇编与环境效益3篇
- 二零二五版双方自愿离婚手续办理及法律咨询合同2篇
- GB/T 16895.3-2024低压电气装置第5-54部分:电气设备的选择和安装接地配置和保护导体
- 安徽省合肥市2025年高三第一次教学质量检测地理试题(含答案)
- 计划合同部部长述职报告范文
- 统编版八年级下册语文第三单元名著导读《经典常谈》阅读指导 学案(含练习题及答案)
- 风光储储能项目PCS舱、电池舱吊装方案
- 人教版高一地理必修一期末试卷
- GJB9001C质量管理体系要求-培训专题培训课件
- 二手车车主寄售协议书范文范本
- 窗帘采购投标方案(技术方案)
- 基于学习任务群的小学语文单元整体教学设计策略的探究
- 人教版高中物理必修一同步课时作业(全册)
评论
0/150
提交评论