89C51单片机中的中断系统

发布者:码字奇才最新更新时间:2022-06-07 来源: eefocus关键字:89C51  单片机  中断系统 手机看文章 扫描二维码
随时随地手机看文章

对于在单片机中的学习,中断系统是一难点,如果中断系统没有理解透彻,51单片机的学习就算是失败的。


首先,举例说明下什么是中断。


eg.当你在家正在吃着爆米花,看着电视,突然门铃响了,这时你不得不停止吃爆米花看电视,起身去开门,这个过程就是中断。


中断概念:

CPU在处理某一事件A时,发生了另一件事件B请求CPU马上去处理(中断发生)

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

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


中断系统的概念:

引起CPU中断的根源,叫中断源 。 是中断源向CPU提出的中断请求。 CPU暂时中断原来的事务A,转去处理事件B。对事件B处理完毕后,再回到原来被中断的地方(被中断的地方叫 断点,“断点”不是一个实际存在的,只是一个人为提出的概念 ), 这一过程称为中断返回。实现以上中断功能的部件称为 中断系统。

在这里插入图片描述

中断技术解决了 快速主机与慢速I/O设备之间的数据传送 问题

中断系统优点: 1. 分时操作 CPU可以分时为多个I/O设备服务,提高了计算机的利用率

2.实时响应 CPU能够及时处理应用系统的随机事件,系统的实时性增强

3.可靠性高 CPU具有处理设备故障及掉电等突发性事件能力,从而使系统可靠性提高

eg. 89C51/52 的中断系统有5个中断源,2个优先级,可以实现二级中断嵌套

中断允许控制

CPU对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器IE控制

EX0(IE.0):外部中断0允许控制位

EX1(IE.2):外部中断1允许控制位

ET0(IE.1):定时/计数器T0允许控制位

ET1(IE.3):定时/计数器T1允许控制位

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

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

中断请求标志 TCON

在这里插入图片描述

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

当IT0=0,则是电平触发方式,分为低电平和高电平

当IT0=1,则是边沿触发方式,那么此时为下降沿有效控制

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

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

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

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

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

TR0(TCON.4):串行口R0中断请求标志位

TR1(TCON.6):串行口R1中断请求标志位


当同一优先级中的中断申请不止一个的时候,就有中断优先权排队的问题,同一优先级的中断优先权排队,是由中断系统硬件确定的自然优先级形成

外部中断0(IE0) > 定时/计数器0(TF0) > 外部中断1(IE1) > 定时/计数器1(TF1) > 串行口(RI/TI)

中断源

在这里插入图片描述

中断优先级三条原则:


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


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


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

为实现2,3原则,中断系统内部设有两个用户不能寻址的优先级状态触发器 ,其中一个触发器置为 1 ,表示正在响应高优先级的中断, 它会阻断后来所有的中断请求;另外一个同样置为 1 ,表示正在响应低优先级中断,它会阻断后来所有的低优先级的中断请求


中断响应的条件:


中断源有中断请求


中断源的中断允许位是 1


CPU开启中断(EA=1)

只有3条同时满足时,CPU才有可能会响应中断

对于如上的概念,需经常阅读和理解,对于程序员来说,并不需要熟知硬件中的各种电路图,对于程序员来使用中断,只需要记住:

1 想使用的中断是哪个,选择相应的中断号;

2 触发条件是什么,低电平触发 or 下降沿触发 ;

3 中断之后做什么


下面是不同中断的代码

外部中断0:


#include "reg51.h"

typedef unsigned char u8;

typedef unsigned int u16;

sbit k3=P3^2;

sbit led=P2^0;


void delay(u16 i)

{

  while(i--);

}

void zhongduan()

{

   IT0=1;

   EX0=1;

   EA=1;

 }

void Int0() interrupt 0

{

   delay(1000);

   if(k3==0);

   {

      led=~led;

  }

}

void main()

{

  zhongduan();

  while(1);

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

定时器中断0:


#include "reg51.h"

typedef   unsigned char u8;

typedef unsigned int u16;


sbit led=P2^0;


void time0()

{

  TMOD=0x01;

  TH0=0xfc;

  TL0=0x18;

  EA=1;

  TR0=1;

  ET0=1;

}

void time01() interrupt 1{

  static u16 i;

  TH0=0xfc;

  TL0=0x18;

  i++;

  if(i==1000){

   led=~led;

   i=0;

  }

}


void main()

{

  time0();

}

关键字:89C51  单片机  中断系统 引用地址:89C51单片机中的中断系统

上一篇:51单片机基础(1) -外部中断
下一篇:基于51的温度传感通过蓝牙HC06传送数据,搭载语音播报

推荐阅读最新更新时间:2024-11-02 11:09

2013英飞凌XMC1000全国巡回研讨会圆满落幕
2013年8月14日——近日,英飞凌科技股份公司(FSE: IFX / OTCQX: IFNNY)在全国六大城市成功举办了“2013英飞凌XMC1000全国巡回研讨会” 。 XMC1000是英飞凌基于ARM Cortex-M0内核的32位单片机家族,旨在用8位的价格挑战中低端的应用领域。XMC1000分为三个系列:XMC1100入门系列、XMC1200特色系列和XMC1300控制系列。XMC1000采用65nm嵌入式闪存技术、300mm晶圆,这项工艺为单片机的低价提供了可能。64MHz MATH协处理器使XMC1000缩短了和ARM Cortex-M3产品在运算能力方面的距离。针对传感器/执行器、LED控制、功率转换、低端
[单片机]
单片机在波特率变换器中的应用
在一些复杂的系统中,系统与分系统、分系统与设备等之间存在数据的传递问题,往往采用通信的方式来解决。由于分系统、没备等通信波特率的不同,特别是一些特殊波特率设备的存在,使得系统中设备间的相互通信不易实现。例如,在一个系统中,上位机接收某一设备的数据,如图1所示,设备l和设备2采用的是172.8 kbps的波特率,而上位机用VB编程,其通信波特率为115.2 kbps、128 kbps或256 kbps,等,这样设备之间就不能相互通信,给设计带来困难。为了解决上述问题,采用双单片机电路,设计了波特率变换器,将接收波特率为172.8 kbps的数据,转换成波特率为115.2 kbps的输出,从而使不同波特率设备之间的通信成为可能。
[单片机]
基于普通单片机的LIN协议实现方案
1 概述 LIN协议是新出现的一种新型低成本串行通信总线,其全称是Local Interconnect Network,即局部互联网络。它最开始出现于汽车行业,是为解决汽车智能化和网络化的发展要求和降低汽车制造成本的矛盾而提出来的一种串行总线协议,主要用于车门、车灯等需要简单控制但又要求智能控制的场合。它的主要特点是:采用单个主控制器/多从设备通信模式;基于普通UART/SCI接口硬件实现,协议简单;网络传输速率不高,最高可达20kb/s。由于LIN协议的突出特点是协议对硬件的依赖程度低,可以基于普通单片机的通用串口等硬件资源以软件方式实现,成本低廉,因此可广泛应用于汽车行业以外的其他领域,如智能家庭网络内部的数据传输、节点
[单片机]
单片机MCS-51系列指令快速记忆法(学习单片机编程的好资料)
随着微电子技术和超大规模集成电路技术的发展,单片微型计算机以其体积小、性价比高、功能强、可靠性高等独有的特点,在各个领域(如工业控制、家电产品、汽车电子、通信、智能仪器仪表)得到了广泛的应用。学习、使用单片机的人越来越多,而生产单片机的厂家很多,单片机种类繁杂,不知如何选择。据统计,八位单片机占全球单片机销量的65%。在八位单片机中,Intel公司的8051单片机内核已成为8位单片机事实上的标准。因此,对初学者而言,选择8051单片机来学习不失为明智的选择。 学习单片机,除了搞清单片机内部功能、存储空间分配及I/O接口外,还应掌握其指令系统。MCS-51共有111条指令,现介绍我们总结出的快速记忆MCS-51指令的方法,供大
[工业控制]
MCU待机电源管理推动低碳应用设计
  使用MCU对于电器产品有几大好处,以调理机为例,一,保护电机,电机类产品最怕长时间的空转,造成高温导致火灾的发生,若使用MCU可以以程序设定并控制发生空转时立即将电源断路,以此保护电机损坏,避免发生火灾。二,缓速启动马达:设定程序以PWM方式启动马达,避免突然高速运转,以延长马达使用寿命。三,避免不必要的能源损耗:传统式之调理机启动方式会耗损不必要的能源,使用PWM方式启动可以使能源用在适当的地方,避免白白浪费电力。   摇控器方案   MDTMCUSolution(MDT10P432)   MDT10P432规格   8BitMicro-Controller   OnchipROMsize:512word
[单片机]
<font color='red'>MCU</font>待机电源管理推动低碳应用设计
单片机设计A/D、D/A转换器
1、PIC16C62%26;#215;系列单片机的特点 PIC16C62%26;#215;系列为RISC精简指令、哈佛结构总线、18个引脚的单片机。具有低功耗、高性能、全静态、35条指令极易编程的特点。OTP 片种的性价比极高。除了具备一般单片机的特点外,PIC16C62%26;#215;系列内部集成了两个模拟比较器和一个4bit的可编程基准电压源(REF)。如果利用该单片机的这些特点,只需几个外围元件就具备A/D与D/A转换功能,且分辨率达到8bit~10bit。价格上的优势使其在工控行业、仪器仪表、家电产品的应用前景极为乐观。   本文以8bit分辨率论证A/D、D/A转换的实现方法,更高分辨率的方案完全相似,只是
[模拟电子]
超声波模块测距51程序_单片机超声波测距c语言
超声波检测原理 超声波测距的程序流程图 程序如下: //超声波模块程序 //超声波模块程序 //Trig = P2^0 //Echo = P3^2 #include #define uchar unsigned char #define uint unsigned int // void delay(uint z) { uint x,y; for(x=z;x 0;x--) for(y=110;y 0;y--); } // void delay_20us() { uchar a ; for(a=0;a } //**********************************************************
[单片机]
超声波模块测距51程序_<font color='red'>单片机</font>超声波测距c语言
51单片机 串口通信 中断
从一段程序开始 实现电脑向单片机发送一些数据,单片机返回Iget +数据 #include #define uchar unsigned char #define uint unsigned int unsigned char flag,a,i;//声明标志位 flag uchar code table = I get void init() { TMOD=0x20;//设置T1定时器工作方式为2 8位初值自动重装的8位定时器 这里设置了两个计数器的工作方式 TH1=0xfd; / /T1定时器装初值(高八位) 控制串口通信的波特率(由定时器1的溢出率控制) TL1=0xfd; //T1定时器装入初值(低八位)
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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