收藏 分享(赏)

单片机的中断.ppt

上传人:dwy79026 文档编号:8054731 上传时间:2019-06-06 格式:PPT 页数:39 大小:763KB
下载 相关 举报
单片机的中断.ppt_第1页
第1页 / 共39页
单片机的中断.ppt_第2页
第2页 / 共39页
单片机的中断.ppt_第3页
第3页 / 共39页
单片机的中断.ppt_第4页
第4页 / 共39页
单片机的中断.ppt_第5页
第5页 / 共39页
点击查看更多>>
资源描述

1、8051 单片机的中断,1、什么是中断 2、单片机中断构成:中断源及其优先级别;中断(服务或处理)函数。 3、单片机中断的控制设置 4、使用编程例,在程序的执行过程中,由于某种外界的原因,必须终止当前执行的程序,而去执行相应的处理程序,待处理结束后,再回来继续执行被终止的程序。这个过程叫中断。,1、中断的概念,执行主程序,主程序,继续执行主程序,断点,中断请求,中断响应,执行中断处理程序,中断返回,日常生活的中断现象举例,某人正在看报,电话铃响了,去接电话,继续接电话,继续看报,跑向厨房,关煤气、灌开水,水开了,计算机的中断应用举例,引脚P3.2(12脚)的电平/脉冲变化外部中断0,INT0

2、引脚P3.3 (12脚)的电平/脉冲变化外部中断1,INT1 定时/计数器0产生溢出定时器0中断,T0 定时/计数器1产生溢出定时器1中断,T1 串口一帧数据发送/接收完成串口中断,TI/RI,2.1、80C51具有五个中断源:,谁会向单片机的CPU发出中断信号?,2.2、五个中断源可以引导五个中断服务程序,中断服务程序的入口地址向(矢)量地址(ROM地址单元) 。,优先级高低,2.3、C51中断服务(处理)函数,它的形式为:, void 函数名 (void) interrupt n using m 函数体语句 ,interrupt表示该函数是一个中断服务函数,整数n表示该中断服务函数对应哪一

3、个中断源,单片机的CPU接到中断信号后会怎么办? CPU每接到一次中断信号就会执行一次中断函数,using m 指定该中断服务程序要使用的工作寄存器组号,m为03。 若缺省using项,则编译系统默认为是当前工作寄存器组。, void 函数名 (void) interrupt n using m 函数体语句 ,例如:不指定寄存器组,默认使用第0组,#include #define uchar unsigned char uchar time; uchar period=250; uchar high=50; /-定时器0中断处理程序- void timer0 (void) interrupt

4、1 using 1 TH0= -8333/256; /重载计数初值TL0= -8333%256;if (+time= =high) P1=0; /高电平时间到变低else if (time= =period) /周期时间到变高 time=0;P1=1; /-主函数- main ( ) TMOD=0x01; /定时器0方式1TH0= -8333/256; /预置计数初值TL0= -8333%256;EA=1; ET0=1; TR0=1; do while (1); ,例如:指定寄存器组1。,中断函数的内容是我们自己写的,即让CPU接到中到信号后要CPU做什么。 如要它点亮P1.0脚接到LED,中

5、断函数可写成: Void led1() interrupt 0 P1=oxfe; ,3、中断的控制设置-有关的功能寄存器,与中断有关的特殊功能寄存器有四个:,TCON-定时控制寄存器, IE-中断允许控制寄存器, IP-中断优先级控制寄存器, SCON-及串行口控制寄存器。,1定时控制寄存器TCON,中断请求标志,触发方式选择,0 低电平1 下降沿,注意:电平触发时,在中断返回前应撤除中断源。,2串行口控制寄存器SCON,串行中断 请求标志,3中断允许控制寄存器IE,4中断优先级控制寄存器(IP),0 禁止 1允许,0 低级别 1高级别,实现两级控制 注意:复位时,禁止所有中断,每一中断源可编

6、程为高优先级或低优先级中断,以实现二级嵌套。默认的优先次序为:INT0、C/T0、INT1、C/T1、串行口中断(依次从高到低),注意:响应中断后,CPU并不清零中断标志位,必须软件清零。,中断请求标志,1,高级,低级,内 部 查 询,内 部 查 询,入口地址,入口地址,中断允许控制,中断优先级,EA,中断源,中断系统结构图,例如:不指定寄存器组,默认使用第0组,#include #define uchar unsigned char uchar time; uchar period=250; uchar high=50; /-定时器0中断处理程序- void timer0 (void) in

7、terrupt 1 using 1 TH0= -8333/256; /重载计数初值TL0= -8333%256;if (+time= =high) P1=0; /高电平时间到变低else if (time= =period) /周期时间到变高 time=0;P1=1; /-主函数- main ( ) TMOD=0x01; /定时器0方式1TH0= -8333/256; /预置计数初值TL0= -8333%256;EA=1; ET0=1; TR0=1; do while (1); ,例如:指定寄存器组1。,中断的使用(编程): 1 接通中断信号通道( 开总中断EA=1; ,开中断源中断。如ET0

8、=1;。 3 中断做什么(写中断服务函数)。,4、中断使用(编程)例,/例:用外中断0的负跳变产生中断信号点亮LED #include void main(void)EA=1; /开放总中断EX0=1; /允许使用外中断IT0=1; /选择负跳变来触发外中断P1=0xff;while(1) ; /中断函数 void int0(void) interrupt 0 using 0 /外中断0的中断编号为0 P1=0xfe; /每产生一次中断请求,P1取反一次。,/例:用外中断0的负跳变产生中断信号轮流点亮8个LED #include unsigned char code ma=0xff,0x7f,

9、0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00; char n=-1; void main(void) EA=1; /开放总中断EX0=1; /允许使用外中断IT0=1; /选择负跳变来触发外中断 while(1) ; /中断函数 void int0(void) interrupt 0 using 0 /外中断0的中断编号为0 n+;P1=man; if(n=8)n=-1; ,/实例45:用定时器T0的中断控制1位LED闪烁 #include / 包含51单片机寄存器定义的头文件 sbit D1=P20; /将D1位定义为P2.0引脚 void main(void) EA

10、=1; /开总中断ET0=1; /定时器T0中断允许 TMOD=0x01; /使用定时器T0的模式2TH0=(65536-46083)/256; /定时器T0的高8位赋初值TL0=(65536-46083)%256; /定时器T0的高8位赋初值TR0=1; /启动定时器T0while(1)/无限循环等待中断信号; /*函数功能:定时器T0的中断服务程序*/ void Time0(void) interrupt 1 using 0 /“interrupt” 表示中断服务函数/其后的1为T0的中断编号;0表示使用第0组工作寄存器 D1=D1; /按位取反操作,将P2.0引脚输出电平取反TH0=(6

11、5536-46083)/256; /定时器T0的高8位重新赋初值TL0=(65536-46083)%256; /定时器T0的高8位重新赋初值,/实例46:用定时器T0的中断实现长时间定时 #include / 包含51单片机寄存器定义的头文件 sbit D1=P20; /将D1位定义为P2.0引脚 unsigned char Countor; /设置全局变量,储存定时器T0中断次数 void main(void) EA=1; /开总中断ET0=1; /定时器T0中断允许 TMOD=0x01; /使用定时器T0的模式2TH0=(65536-46083)/256; /定时器T0的高8位赋初值TL0

12、=(65536-46083)%256; /定时器T0的高8位赋初值TR0=1; /启动定时器T0Countor=0; /从0开始累计中断次数while(1);/无限循环等待中断信号 void Time0(void) interrupt 1 using 0 Countor+; /中断次数自加1if(Countor=20) /若累计满20次,即计时满1sD1=D1; /按位取反操作,将P2.0引脚输出电平取反Countor=0; /将Countor清0,重新从0开始计数TH0=(65536-46083)/256; /定时器T0的高8位重新赋初值TL0=(65536-46083)%256; /定时器

13、T0的高8位重新赋初值,模仿练习,/实例48:用计数器T1的中断控制蜂鸣器发出1KHz音频 #include / 包含51单片机寄存器定义的头文件 sbit sound=P37; /将sound位定义为P3.7引脚 void main(void) EA=1; /开总中断ET1=1; /定时器T1中断允许 TMOD=0x10; /TMOD=0001 000B,使用定时器T1的模式1TH1=(65536-921)/256; /定时器T1的高8位赋初值TL1=(65536-921)%256; /定时器T1的高8位赋初值TR1=1; /启动定时器T1while(1)/无限循环等待中断; void Ti

14、me1(void) interrupt 3 using 0sound=sound;TH1=(65536-921)/256; /定时器T1的高8位重新赋初值TL1=(65536-921)%256; /定时器T1的高8位重新赋初值,5个中断源,具有二个中断优先级,可实现二级中断服务程序的嵌套。每个中断源均可软件编程为高优先级或低优先级中断,允许或禁止向CPU请求中断。 有关的特殊功能寄存器(SFR)有: 中断允许寄存器IE 中断优先级控制寄存器IP 中断源寄存器(TCON、SCON中的有关位) 注:均可位寻址。,二、8051单片机的中断系统结构,8051单片机共有五个中断源,分别是外部中断、定时中

15、断和串行中断。 2个外部中断是: 外部中断0-INT0,由P3.2提供, 外部中断1INT1,由P3.3提供,,外部中断有两种触发方式,即低电平方式和负边沿方式。,定时器和串行口中断分别是: T0溢出中断; 由片内定时/计数器0提供 T1溢出中断; 由片内定时/计数器1提供 串行口中断RI/TI; 由片内串行口提供,中断源,中断方式,单片机的中断为向量中断,即一响应中断就转入固定入口地址执行中断服务程序。 具体如下:中断源 入口地址INT0 0003T0 000BHINT1 0013HT1 001BHRI/TI 0023H在这些单元中往往放一条跳转指令,跳到真正的中断服务程序,这是因为给每个中

16、断源安排的空间只有8个单元。,三、与中断有关的特殊功能寄存器,与中断有关的特殊功能寄存器有四个:,TCON-定时控制寄存器, IE-中断允许控制寄存器, IP-中断优先级控制寄存器, SCON-及串行口控制寄存器。,1定时控制寄存器TCON,中断请求标志,触发方式选择,0 低电平1 下降沿,注意:电平触发时,在中断返回前应撤除中断源。,2串行口控制寄存器SCON,串行中断 请求标志,3中断允许控制寄存器IE,4中断优先级控制寄存器(IP),0 禁止 1允许,0 低级别 1高级别,实现两级控制 注意:复位时,禁止所有中断,每一中断源可编程为高优先级或低优先级中断,以实现二级嵌套。默认的优先次序为

17、:INT0、C/T0、INT1、C/T1、串行口中断(依次从高到低),注意:响应中断后,CPU并不清零中断标志位,必须软件清零。,四、中断响应,响应条件-CPU要响应中断需满足下列条件: 无同级或高级中断正在服务; 当前指令周期结束,如果查询中断请求的机器 周期不是当前指令的最后一个周期,则不行; 若现行指令是RETI、RET或访问IE、IP指令,则需要执行到当前指令及下一条指令方可响应。,响应过程-单片机响应中断后,自动执行下列操作: 置位中断优先级有效触发器,即关闭同级和低级 中断: 调用入口地址,断点入栈,相当于LCALL指令; 进入中断服务程序。,响应时间-从查询中断请求标志位到转向中

18、断服务入口地址所需的机器周期数。 (1)最快响应时间 以外部中断的电平触发为最快。 从查询中断请求信号到中断服务程序需要三个机器周期:1个周期(查询)2个周期(长调用LCALL) (2)最长时间 若当前指令是RET、RETI和IP、IE指令,紧接着下一条是乘除指令发生,则最长为8个周期: 2个周期执行当前指令(其中含有1个周期查询)4个周期乘除指令2个周期长调用8个周期。,中断返回中断处理程序的最后一条指令是RETI,它使CPU结束中断处理程序的执行,返回到断点处,继续执行主程序。,中断系统初始化,开相应中断源的中断;(IE) 设定中断优先级;(IP) 若为外部中断,设定外部中断的触发方式。,

19、中断应用举例 外设每准备好一个数据后,发出选通信号,使D触发器输出1再经非门得0至INT0,向CPU发出中断请求,CPU 响应这个中断请求后,在中断处理程序中先撤除 中断请求信号, (通过发P3.0=0, 使INT0=1) 再由P1口输入 数据到单片机 内部。,程序清单:,ORG 0000H,START:LJMP MAINORG 0003HLJMP IINT0ORG 0030H ;主程序 MAIN: CLR IT0 ;低电平触发SETB EA ;开中断SETB EX0MOV DPTR,#1000H. ;其它处理ORG 0100H IINT0:PUSH PSW ;中断服务程序PUSH ACCCL

20、R P3.0 MOV A,P1MOVX DPTR,APOP ACCRETI,单片机的节电工作方式对于8051单片机来说,有待机方式和掉电保护方式两种低功耗方式。通过设置电源控制寄存器PCON的相关位可以确定当前的低功耗方式。PCON寄存器格式如下:,其中SMOD:波特率倍增位GF0,GF1:通用标志位PD:掉电方式位,PD1为掉电方式IDL:待机方式位,IDL1为待机方式,1. 待机方式将PCON寄存器的IDL位置“1”,单片机则进入待机方式。通常在待机方式下,单片机的中断仍然可以使用,这样可以通过中断触发方式退出待机模式。,2. 掉电保护方式将PCON寄存器的PD位置“1”,单片机则进入掉电保护方式。如果单片机检测到电源电压过低,此时除进行信息保护外,还需将PD位被置“1”,使单片机进入掉电保护方式。,

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报