单片机中断系统.ppt

上传人:b****1 文档编号:1721468 上传时间:2022-10-23 格式:PPT 页数:41 大小:1.01MB
下载 相关 举报
单片机中断系统.ppt_第1页
第1页 / 共41页
单片机中断系统.ppt_第2页
第2页 / 共41页
单片机中断系统.ppt_第3页
第3页 / 共41页
单片机中断系统.ppt_第4页
第4页 / 共41页
单片机中断系统.ppt_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

单片机中断系统.ppt

《单片机中断系统.ppt》由会员分享,可在线阅读,更多相关《单片机中断系统.ppt(41页珍藏版)》请在冰豆网上搜索。

单片机中断系统.ppt

第5章单片机的中断系统,5.1中断的概念5.2中断控制系统5.3中断处理过程5.4中断的编程及应用,5.1中断的概念5.2中断控制系统5.3中断处理过程5.4中断的编程及应用,5.1中断的概念,某人正在看报,电话铃响了,去接电话,继续接电话,继续看报,跑向厨房,关煤气、灌开水,水开了,日常生活的中断现象举例,计算机的中断应用举例,要求:

若有按键压下,使LED的状态反转。

实例1单片机开关状态检测,#include#includesbitp1_0=P10;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#includesbitp1_0=P10;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#includesbitp1_0=P10;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;/开外部中断1while

(1);,中断是指在突发事件到来时先中止当前正在进行的工作,转而去处理突发事件。

待处理完成后,再返回到原先被中止的工作处,继续进行随后的工作。

中断与子程序调用的区别:

一般子程序的返回断点是已知的中断子程序的返回断点是随机的,中断源、中断请求、中断服务等概念:

引起突发事件的来源称为中断源中断源要求服务的请求称为中断请求对中断请求提供的服务称为中断服务中断管理系统处理事件的过程称为中断响应过程,中断,1、可实现分时操作(CPU与多个外设并行工作),2、可实现实时处理(被控对象信息随机变化),3、可进行故障处理(及时处理突发事件),中断的意义:

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/RI,80C51具有五个中断源:

5.2.1中断系统的结构,五个中断源可以引导五个中断服务程序,中断服务程序的入口地址向(矢)量地址(ROM地址单元)。

中断服务程序的入口地址,5.1中断的概念5.2中断控制系统5.2.1中断系统的结构5.2.2中断管理寄存器5.3中断处理过程5.4中断的编程及应用,5.2中断控制系统,共有四个中断管理寄存器TCON、SCON、IE、IP,5.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),IT1和IT0:

INT1和INT0的触发方式选择位0电平,1脉冲,边沿触发在脉冲结束后,中断请求信号即可自行消失但电平触发信号却不会立即自行消失引起继续中断请求建议减量采用边沿触发方式,

(1)定时器控制寄存器(TCON),TCON复位值00H,默认状态为:

无中断请求+电平触发,TI:

串口发送中断标志位,一帧内部数据被送入发送缓冲器后由硬件自动置1发送中断请求中断响应后,标志位需要用软件方式撤销,RI:

串口接收中断标志位,一帧外部数据被送入接收缓冲器后由硬件自动置1接收中断请求中断响应后,标志位需要用软件方式撤销,

(2)串口控制寄存器(SCON),EA:

中断总允许位,1开放全部中断,0禁止全部中断ES:

串口中断允许位,1允许,0禁止ET1和ET0:

定时器中断允许位,1允许,0禁止EX1和EX0:

外部中断允许位,1允许,0禁止,(3)中断允许寄存器(IE),中断源、中断入口、标志位、使能位,PS:

串口优先级设定位,1高优先级,0低优先级PT1和PT0:

T1和T0的优先级设定位,1高优先级,0低优先级PX1和PX0:

INT1和INT0的优先级设定位,1高优先级,0低优先级,自然优先顺序,逐渐,(4)中断优先级寄存器(IP),中断源、中断入口、标志位、使能位、优先级设置位,1)高级中断请求可以打断正在执行的低级中断;2)同级或低级中断请求不能打断正在执行的中断;3)同级中断源同时提出请求时按自然优先级响应:

INT0T0INT1T1TI/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,即没有被屏蔽无同级或者更高级中断正在被服务,5.3.1中断响应条件,中断响应的基本条件如下:

注意:

下列任何一种情况存在时,中断响应都会阻止而无法得到响应:

(1)CPU正在执行一个同级或高优先级的中断服务程序;

(2)正在执行的是一条指令还没有执行完;(3)当前正的执行的指令是RETI或访问IE或IP的指令。

机器周期的S6期间,CPU对中断标志位采样阻断同级或低级中断将程序断点存入栈区中断矢量地址装入PC,转入对应的入口地址中断响应时间为38个机器周期,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)interruptnusingm函数体语句,interrupt表示该函数是一个中断服务函数,整数n表示该中断服务函数对应哪一个中断源,5.4.1中断程序设计举例,usingm指定该中断服务程序要使用的工作寄存器组号,m为03。

若缺省using项,则编译系统默认为是当前工作寄存器组。

C51中断服务程序是一种特殊的函数,它的说明形式为:

void函数名(void)interruptnusingm函数体语句,在不查询按键时,如何得知按键有动作动作?

如何保证能快速响应按键操作,又不过多占用CPU时间?

中断扫描法只有在键盘有键按下时,才执行键盘扫描程序。

如无键按下,CPU可不考虑键盘的存在。

查询扫描法需要花费很多CPU机时,在CPU任务繁重的情况下往往无法实现。

实例2中断扫描法行列式键盘,增加一个与门,利用按键压下时的电平产生INT1中断请求信号;改用P0口(中断接P3.3)。

改进硬件电路:

#includecharled_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_modk;/有外部中断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,高四位全为1voidkey_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语言程序(续),实例2的C语言程序(续),while(scancode!

=0xff)/有键被按下P0=scancode;/扫描码为11110111,即开始扫描P0.3所在的行keycode=P0;/读出数据,看是否是该行上某列键盘被按下if(keycode,运行效果图,两个外部中断同时存在,其中INT0用于计数统计,INT1用于蜂鸣器,主程序刷新计数显示,实例,ORG0000HSJMPMAINORG0003H;INT0中断矢量SJMPEXT0ORG0

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 材料科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1