《51单片机实战指南》课件_第5章51单片机中断系统.ppt

上传人(卖家):kld 文档编号:8170085 上传时间:2024-12-19 格式:PPT 页数:29 大小:1.10MB
下载 相关 举报
《51单片机实战指南》课件_第5章51单片机中断系统.ppt_第1页
第1页 / 共29页
《51单片机实战指南》课件_第5章51单片机中断系统.ppt_第2页
第2页 / 共29页
《51单片机实战指南》课件_第5章51单片机中断系统.ppt_第3页
第3页 / 共29页
《51单片机实战指南》课件_第5章51单片机中断系统.ppt_第4页
第4页 / 共29页
《51单片机实战指南》课件_第5章51单片机中断系统.ppt_第5页
第5页 / 共29页
点击查看更多>>
资源描述

1、第第5章章 51单片机中断系统单片机中断系统51单片机实战指南本章内容:中断系统结构与中断控制中断系统结构与中断控制1中断优先级与中断函数中断优先级与中断函数2外部中断源的外部中断源的C51编程编程35.1 中断系统结构与中断控制中断与中断嵌套图5-1 中断示意图5.1.1 中断系统结构8051单片机基本型有5个中断源:外部中断0()定时器T0/Timer 0外部中断1()定时器T1/Timer 1串口/UARTSTC89C52RC增加了3个中断源。定时器T2/Timer 2;外部中断2();外部中断3();INT0INT1INT2INT3表5-1 STC89C52RC中断源5.1.1 中断系

2、统结构5.1.1 中断系统结构图5-2 STC89C52RC中断系统结构1.中断允许寄存器IE作用:开放或屏蔽中断。复位状态:IE(000 0000B)寻址方式:字节寻址和位寻址5.1.2 中断控制寄存器2.定时/计数器0/1控制寄存器TCON作用:定时/计数器T0和T1及外部中断0和1控制。复位状态:TCON(0000 0000B)寻址方式:字节寻址和位寻址5.1.2 中断控制寄存器3.定时/计数器2控制寄存器T2CON作用:定时/计数器T2控制。复位状态:T2CON(0000 0000B)寻址方式:字节寻址和位寻址5.1.2 中断控制寄存器4.串口控制寄存器SCON作用:串行通信控制。复位

3、状态:SCON(0000 0000B)寻址方式:字节寻址和位寻址5.1.2 中断控制寄存器4.串口控制寄存器SCON作用:串行通信控制。复位状态:SCON(0000 0000B)寻址方式:字节寻址和位寻址5.1.2 中断控制寄存器5.2.1 中断优先级51基本型有2个中断优先级:高优先级和低优先级。STC89C52RC有4个中断优先级:3、2、1、0。可以实现两级的中断嵌套,中断嵌套的基本规则有2条。(1)低优先级的中断可被高优先级的中断打断,反之不行;(2)一个被响应的中断,不会被同级的中断打断。各中断源的中断优先级由IP(B8H)/XICON(C0H)和IPH(B7H)三个寄存器控制。后2

4、个暂不做介绍。5.2 中断优先级与中断函数5.2.1 中断优先级IP:中断优先级控制寄存器作用:设置各个中断的优先级。复位状态:IP(00 0000B)寻址方式:字节寻址和位寻址优先级相同时,哪一个中断请求会被CPU相应,取决于中断的自然优先级。表5-3中,如果各中断源的优先级相同,中断响应则按照自上向下,自然优先级由高到低,外部中断0的自然优先级最高,定时器T2的自然优先级最低,CPU会响应自然优先级高的中断。5.2.1 中断优先级表5-3 中断优先级设置 采用C语言编程时,中断号即可表示中断查询次序,中断号越小,自然优先级越高。各中断源的中断号参见表5-1。C语言中中断函数的格式如下。函数

5、类型 函数名 interrupt n using mvoid EXINT0(void)interrupt 0 /外部中断0中断函数。void Timer0(void)interrupt 1 /定时器0中断函数。void EXINT1(void)interrupt 2 /外部中断1中断函数。void Timer1(void)interrupt 3 /定时器1中断函数。void Uart0(void)interrupt 4 /串口中断函数。void Timer2(void)interrupt 5 /定时器2中断函数。5.2.2 中断函数的结构形式外部中断0、外部中断1都有2种触发方式,下降沿触发和

6、低电平触发。低电平触发时,相应引脚的低电平的持续时间至少为2个时钟周期;下降沿触发时,高电平和低电平都至少维持一个时钟周期。外部中断请求的标志位是位于TCON寄存器中的IE0(TCON.1)、IE1(TCON.3)。设置外部中断03的触发方式的标志位是位于TCON寄存器中的IT0(TCON.0)、IT1(TCON.02)。如ITx=0(x=0,1),则在(x=0,1)引脚检测到至少2个时钟周期的低电平后,相应的中断标志位IEx(x=0,1)被置“1”,向CPU申请中断;当ITx=1(x=0,1),则在(x=0,1)引脚检测到高电平至少持续1个时钟周期,随后的低电平也至少持续1个时钟周期后,相应

7、的中断标志位IEx(x=0,1)被置“1”,向CPU申请中断。当外部中断被响应后,外部中断请求标志位IE0、IE1会被硬件自动清零。5.3 外部中断源的C51编程外部中断的初始化主要包括触发方式的设置、中断允许和设置中断优先级等。例如,令外部中断0为下降沿触发,外部中断1为低电平触发,且外部中断1的优先级高于外部中断0,允许它们中断的初始化程序如下。void ExIntInit()/外部中断初始化函数IT0=1;/外部中断0下降沿触发IT1=0;/外部中断1低电平触发PX1=1;/外部中断1的优先级为高EA=1;/全局中断允许EX0=1;/允许外部中断0中断EX1=1;/允许外部中断1中断单片

8、机复位后,与中断有关的寄存器的值都为0 x00。5.3.1 外部中断源初始化【例5-1】利用以上初始化函数,完成以下功能:无外部中断时,LED0亮,外部中断0发生时,P0口所接的LED发光二极管在点亮和熄灭之间切换。5.3.2 编程示例【例5-1】利用以上初始化函数,完成以下功能:无外部中断时,LED0亮,外部中断0发生时,P0口所接的LED发光二极管在点亮和熄灭之间切换。5.3.2 编程示例图中,通过74HC138译码器控制三极管Q6的导通、74HC245驱动发光二极管,KEY0和KEY1模拟外部中断。当译码器输入端A2A1A0(P1.7P1.5)=000时,输出Y0即LEDS0为低电平,三

9、极管Q6导通;此时,如果单片机P0口输出低电平,即DB7DB0的74HC245都输出低电平,数码管发光。#include reg52.h sbit LSA =P15;/译码器输出选择sbit LSB =P16;sbit LSC =P17;void Delayms(unsigned int);/延时函数声明void ExIntInit(void);/外部中断0初始化函数声明5.3.2 编程示例/*主函数*/void main()ExIntInit();/外部中断初始化P1 =0 x00;/防止1602LCD对数码管或led有影响LSA=0;/选中LEDLSB=0;LSC=0;while(1)P0

10、=0 xfe;/点亮LED05.3.2 编程示例/*外部中断0的中断函数*/void EXINT0()interrupt 0/外部中断0的中断函数P0=0 xff;/LED灭Delayms(500);P0=0 x00;/LED亮Delayms(500);/*延时1ms函数,xms为延时的毫秒数*/void Delayms(unsigned int xms)unsigned int i,j;for(i=xms;i0;i-)for(j=110;j0;j-);5.3.2 编程示例/*外部中断0初始化*/void ExIntInit()IT0=0;/低电平触发方式EX0=1;/打开INT0的中断允许。

11、EA=1;/打开总中断本例用按键KEY0模拟外部中断,按键KEY0已经被(只能)接到单片机的P3.2引脚,该引脚只要满足设定的触发方式,会自动执行中断函数,而不是象普通的函数那样需要调用。外部中断对主程序的打断是发生在主程序的while(1)循环中。5.3.2 编程示例【例5-2】原理图同上例。无外部中断时,P0口接的LED闪烁;外部中断0发生时,LED从下向上移动;外部中断1发生时,LED从上向下移动。要求外部中断1可以打断外部中断0。#include#includesbit LSA=P15;/译码器输出选择sbit LSB=P16;sbit LSC=P17;void EXint_Init(

12、void);void Delayms(unsigned int);void Down2Up(int);/LED从下向上移动函数声明 void Up2Down(int);/LED从上向下移动函数声明5.3.2 编程示例/*主函数*/void main()EXint_Init();LSA=0;LSB=0;LSC=0;/译码器输出Y0=0,Q6导通while(1)/等待中断P0=0 xff;/LED灭Delayms(250);P0=0 x00;/LED亮Delayms(250);5.3.2 编程示例/*外部中断初始化函数*/void EXint_Init()IT0=0;/外部中断0低电平触发IT1=

13、0;/外部中断1低电平触发PX1=1;/外部中断1的优先级为高EA=1;/全局中断允许EX0=1;/允许外部中断0中断EX1=1;/允许外部中断0中断/*延时函数,xms为延时的ms数*/*同上例,此处省略*/5.3.2 编程示例/*外部中断0中断函数*/void EXINT0()interrupt 0 Down2Up(3);/外部中断1,从下向上3圈/*外部中断1中断函数*/void EXINT1()interrupt 2 Up2Down(3);/外部中断1,从上向下3圈5.3.2 编程示例/*从下向上移函数,执行x圈*/void Down2Up(int x)int i,j;unsigned

14、 char sel=0 xfe;/初始状态=1111 1110for(i=0;ix;i+)/i循环,执行x圈 for(j=0;j8;j+)P0=sel;Delayms(250);sel=_crol_(sel,1);/循环左移1位 5.3.2 编程示例/*从上向下移函数,执行x圈*/void Up2Down(int x)int i,j;unsigned char sel=0 x7f;/初始状态=0111 1111for(i=0;ix;i+)/i循环,执行x圈 for(j=0;j8;j+)P0=sel;Delayms(250);sel=_cror_(sel,1);/循环右移1位 5.3.2 编程示例

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

当前位置:首页 > 大学
版权提示 | 免责声明

1,本文(《51单片机实战指南》课件_第5章51单片机中断系统.ppt)为本站会员(kld)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|