51单片机中断应用与编程方法

发布者:zdf1966最新更新时间:2021-05-26 来源: eefocus关键字:51单片机  中断应用  编程方法 手机看文章 扫描二维码
随时随地手机看文章

中断的概念


中断示意图见图1,以下做3点说明。

1、CPU 在处理某一事件A 时,发生了另一事件B 请求CPU 迅速去处理(中断发生);

2、CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务);

3、待 CPU 将事件B 处理完毕后,再回到原来事件A 被中断的地方继续处理事件A(中断返回),这一过程称为中断 。


图1 中断示意图


图1 中断示意图


引起CPU中断的根源,称为中断源。中断源向CPU提出的中断请求。CPU暂时中断原来的事务A,转去处理事件B。对事件B处理完毕后,再回到原来被中断的地方(即断点),称为中断返回。实现上述中断功能的部件称为中断系统(中断机构),51单片机中断结构见图2。


图2 中断结构


图2 中断结构


TCON的中断标志:


TCON的中断标志


IT0(TCON.0),外部中断0触发方式控制位。

当IT0=0时,为电平触发方式。

当IT0=1时,为边沿触发方式(下降沿有效)。

IE0(TCON.1),外部中断0中断请求标志位。

IT1(TCON.2),外部中断1触发方式控制位。

IE1(TCON.3),外部中断1中断请求标志位。

TF0(TCON.5),定时/计数器T0溢出中断请求标志位。

TF1(TCON.7),定时/计数器T1溢出中断请求标志位。


SCON中断标志:


SCON中断标志


RI(SCON.0),串行口接收中断标志位。当允许串行口接收数据时,每接收完一个串行帧,由硬件置位RI。同样,RI必须由软件清除。

TI(SCON.1),串行口发送中断标志位。当CPU将一个发送数据写入串行口发送缓冲器时,就启动了发送过程。每发送完一个串行帧,由硬件置位TI。CPU响应中断时,不能自动清除TI,TI必须由软件清除。


中断允许控制:IE


中断允许控制IE


EX0(IE.0),外部中断0允许位;

ET0(IE.1),定时/计数器T0中断允许位;

EX1(IE.2),外部中断0允许位;

ET1(IE.3),定时/计数器T1中断允许位;

ES(IE.4),串行口中断允许位;

EA (IE.7), CPU中断允许(总允许)位。


中断优先级控制:IP


中断优先级控制IP


PX0(IP.0),外部中断0优先级设定位;

PT0(IP.1),定时/计数器T0优先级设定位;

PX1(IP.2),外部中断0优先级设定位;

PT1(IP.3),定时/计数器T1优先级设定位;

PS (IP.4),串行口优先级设定位;

PT2 (IP.5) ,定时/计数器T2优先级设定位。


而80C52单片机有四个中断优先级,即可实现四级中断服务嵌套。每个中断源的中断优先级由中断优先级寄存器IP 和IPH中的相应位的状态来规定的 。


中断优先级控制:IPH


中断优先级控制IPH


PX0(IPH.0),外部中断0优先级设定位;

PT0(IPH.1),定时/计数器T0优先级设定位;

PX1(IPH.2),外部中断0优先级设定位;

PT1(IPH.3),定时/计数器T1优先级设定位;

PS (IPH.4),串行口优先级设定位;

PT2 (IPH.5) ,定时/计数器T2优先级设定位。


各中断源响应优先级及中断程序入口表


各中断源响应优先级及中断程序入口表


80C51单片机的中断优先级有三条原则:

1、CPU同时接收到几个中断时,首先响应优先级别最高的中断请求。

2、正在进行的中断过程不能被新的同级或低优先级的中断请求所中断。

3、正在进行的低优先级中断服务,能被高优先级中断请求所中断。


中断系统初始化:

1、开相应中断源的中断;(IE)

2、设定中断优先级;(IP)

3、若为外部中断,设定外部中断的触发方式。


这里,我们通过我们的实例程序来学习:

/************************************


* 名称 : Outside_Init()

* 功能 : 外部中断0 的初始化

* 输入 : 无


* 制作:www.schuitron.com


***************************************/

void Outside_Init(void)

{

EX0 = 1; //开外部中断0

IT0 = 1; //负边沿触发

EA = 1; //开总中断

}

/***********************************

* 名称 : Outside_Int()

* 功能 : 外部中断0 的中断处理

* 输入 : 无

* 输出 : 无

*********************************/

void Outside_Int(void) interrupt 0

{

EX0 = 0; //关中断

Delay(3); //延时30ms,去掉这行会出现按一下中断几次的情况

if(KEY == 0) //对按键进行抗干扰处理

{

Count++;

}

Delay(30); //延时300毫秒进行下次检测

EX0 = 1; //开中断

}


关键字:51单片机  中断应用  编程方法 引用地址:51单片机中断应用与编程方法

上一篇:基于AT89LV51控制的DBPL编码信号的信号源系统
下一篇:51单片机串口通信介绍

小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved