80C51的中断系统

一、中断的概念

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

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

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

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

随着计算机技术的应用,人们发现中断技术不仅解决了快速主机与慢速I/O设备的数据传送问题,而且还具有如下优点:

分时操作:CPU可以分时为多个I/O设备服务,提高了计算机的利用率;

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

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

二、80C51中断系统结构

80C51的中断系统有5个中断源(8052有6个),2个优先级,可实现耳机中断嵌套。

1、(P3.2):可由IT0(TCON.0)选择其为低电平有效还是下降沿有效。当CPU检测到P3.2引脚上出现有效的中断信号时,中断标志IE0(TCON.1)置1,向CPU申请中断。

  2、(P3.3):可由IT1(TCON.2)选择其为低电平有效还是下降沿有效。当CPU检测到P3.3引脚上出现有效的中断信号时,中断标志IE1(TCON.3)置1,向CPU申请中断。

   3、TF0(TCON.5):片内定时/计数器T0溢出中断请求标志。当定时/计数器T0发生溢出时,置位TF0,并向CPU申请中断。

   4、TF1(TCON.7):片内定时/计数器T1溢出中断请求标志。当定时/计数器T1发生溢出时,置位TF1,并向CPU申请中断。

  5、RI(SCON.0)或TI(SCON.1):串行口中断请求标志。当串行口接收完一帧串行数据时置位RI或当串行口发送完一帧串行数据时置位TI,向CPU申请中断。

三、中断请求标志

1、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溢出中断请求标志位。

2、SCON的中断标志(串行口)

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

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

四、中断的控制

1.中断允许控制

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

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

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

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

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

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

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

2.中断优先级控制

80C51单片机有两个中断优先级,即可实现二级中断服务嵌套。每个中断源的中断优先级都是由中断优先级寄存器IP中的相应位的状态来规定的。

而8052单片机有四个中断优先级,即可实现四级中断服务嵌套。每个中断源的中断优先级由中断优先级寄存器IP和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单片机的中断优先级由三条原则:

①、CPU同时接受到几个中断时,优先响应优先级最高的中断请求。

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

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

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

3、中断响应的条件

①、中断源有中断请求

②、此中断源的中断允许为位1

③、CPU开中断(即EA=1)

以外部中断0为例:

       主程序中需要的代码:

EA=1;//打开总中断开关
EX0=1;//开外部中断0
IT0=0/1;//设置外部中断的触发方式

中断服务函数: 

//void 函数名()interrupt(中断服务子程序) 0(优先级)
void int0 () interrupt 0 {do anything that you want
}

五、80C51的定时/计数器

1、定时/计数器

利用单片机内部的定时/计数器实现定时功能。以下还有三种方法:

①、软件定时:软件定时占用硬件资源,但占用了CPU时间,降低了CPU的利用率。

②、采用时基电路定时:例如采用555电路,外接必要的元器件(电阻和电容),即可构成硬件定时电路。但在硬件连接好以后,定时值与定时范围不能由软件进行控制和修改,即不可编程。

③、采用可编程芯片定时:这种定时芯片的定时值及定时范围很容易用软件来确定和修改,此种芯片定时功能强,使用灵活。在单片机的定时/计数器不够用时,可以考虑进行扩展。

2、定时/计数器的结构和工作原理

         结构:定时器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。TMOD是定时/计数器的工作方式寄存器,确定工作方式和内容TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标志

工作原理:加1计数器输入的计数脉冲有两个来源,一个是由系统的时钟振荡器输出脉冲经12分频后送来,一个是TO或T1引脚输入的外部脉冲源。每来一个脉冲计数器加1,当加到计数器全为1时,再输入一个脉冲就使计数器回零,计数器的溢出使TCON中的TF0或TF1置1,向CPU发出中断请求(定时/计数器中断允许时)。如果定时/计数器工作于定时模式,则表示定时时间已到,如果工作于计数模式,则表示计数值已满。

可见,由溢出时计数器的值减去计数初值才是加1计数器的计数值。

设置为定时器模式时,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即技术频率为晶振频率的1/12)。计数值N乘以机器周期Tcy就是定时时间t

例:假设计数50个数,那么定时时间为:   (定时时间(μs)=计数数X1/(晶振频率)X12)。

16位寄存器能够计数的最大时间为65536μs。

设置为计数模式时,外部事件计数脉冲由T0或T1引脚输入到计数器。在每个机器周期的S5P2期间采样T0、T1引脚电平。当某周期采样到一高电平输入,而下一周期有采样到一低电平时,计数器加1,更新的计数值在下一机器周期得S3P1期间装入计数器。由于检测一个从1到0下降沿需要2个机器周期,因此要求被采样的电平至少要维持一个机器周期。当晶振频率为12MHz时,最高计数频率不超过1/2MHz,即计数脉冲的周期要大于2μs。

3、定时/计数器的控制

80C51单片机定时/计数器的工作由两个特殊功能寄存器控制。TMOD用于设置其工作方式;TCON用于控制其启动和中断申请

3.1、工作方式寄存器TMOD

工作方式寄存器TMOD用于设置定时/计数器的工作方式,低四位用于T0,高四位用于T1。其格式如下:

GATE:门控位。GATA=0时,只要用软件使TCON中的TR0或TR1为1,就可以启动定时/计数器工作;GATA=1时,要用软件使TR0或TR1为1,同时外部中断引脚也为高电平时,才能启动定时/计数器工作。

C/:定时/计数模式选择位。C/=0时为定时模式;C/=1时为计数模式。

M1M0:工作方式设置位。定时/计数器有四种工作方式,由M1M0进行设置。

3.2、控制寄存器TCON

TCON的低4位用于控制外部中断。TCON的高4位用于控制定时/计数器的启动和中断申请。其格式如下:

TF1(TCON.7):T1溢出中断请求标志位。T1计数溢出时由硬件自动置TF1为1。CPU响应中断后TF1由硬件自动清0.T1工作时,CPU可随时查询TF1的状态。所以,TF1可用作查询测试的标志。TF1也可以用软件置1或清零,同硬件置1或清0的效果一样。

TR1(TCON.6):T1运行控制位。TR置1时,T1开始工作;TR1置0时,T1停止工作。TR1由软件置1或清零。所以,软件可控制定时/计数器的启动与停止。

TF0(TCON.5):T0溢出中断请求标志位,其功能与TF1类同。

TR0(TCON.4):T0运行控制位,其功能与TR1类同。

4、定时/计数器的工作方式

1、方式0

方式0为13位计数,由TL0的低5位(高3位未用)和TH0的8位组成。TL0的低5位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0标志,向CPU发出中断请求。

定时模式有:N=t/Tcy。

计数初值计算公式为

定时器的初值还可以采用计数个数直接去补法获得。

计数模式时,计数脉冲式T0引脚上的外部脉冲。

门控位GATE具有特殊的作用。当GATE=0时,经反向后使或门输出为1,此时仅由TR0控制与门的开启,与门输出1时,控制开关接通,计数开始;当GATE=1时,由外中断引脚信号控制或门的输出,此时控制与门的开始由外中断引脚信号和TR0共同控制。当TR0=1时,外中断引脚信号引脚的高电平启动计数,外中断引脚信号引脚的低电平停止计数。这种方式常用来测量外中断引脚上正脉冲的宽度。

2、方式1

方式1的计数位数是16位,由TL0作为低8位、TH0作为高8位,组成了16位加1计数器。

计数个数与计数初值的关系为

:初始化程序应完成如下工作:

①、对TMOD赋值,以确定T0和T1的工作方式。

②、计算初值,并将其写入TH0、TL0或TH1、TL1。

③、中断方式时,开总中断EA=1,并对IE赋值,开放其中断。

④、使TR0或TR1置位,启动定时/计数器定时或计数。

以16位寄存器计时50ms为例

在主程序中写入

 TMOD=0x01; //设置定时器0为工作方式1:  16位定时器  T1为0x10  两者一起为0x11TH0=(65556-50000)/256;  //把模放在定时器0计数器寄存器的高八位TL0=(65556-50000)%256;  //把余放在定时器0计数器寄存器的低八位EA=1;  //开总中断ET0=1;  //开定时器0中断TR0=1;  //启动定时器0

在中断服务函数中写入

void exter0() interrupt 1  //中断函数,1代表优先级1  50ms
{TH0=(65556-50000)/256;  //把模放在定时器0计数器寄存器的高八位TL0=(65556-50000)%256;  //把模放在定时器0计数器寄存器的低八位}

80C51的中断系统相关推荐

  1. 80C51的中断系统 - 定时/计数器

    中断系统--80C51单片机学习笔记 中断的概念 中断系统的结构 中断请求标志 1.TCON的中断标志 2.SCON的中断标志位 80C51中断的控制 中断允许控制--IE 中断优先级控制--IP 中 ...

  2. 单片机中断系统应用实例(两组实验+Proteus仿真+C源程序)

    中断系统应用实例 1.实验说明 2.实验一 2.1.实验效果 2.2.Proteus仿真图 2.3.源程序 3.实验二 3.1.实验效果 3.2.Proteus仿真图 3.3.源程序 1.实验说明 实 ...

  3. 单片机的中断系统(单片机)

    目录 一.中断系统的基本概念 二.中断系统的控制 三.中断系统应用举例 1.实现方法 2.程序设计 主要看注释 一.中断系统的基本概念 1.中断源 要让单片机停止当前的程序去做其他事情,需要向它发出请 ...

  4. 【Keil5 C51】AT89C52 中断系统与定时/计数器的介绍

    80C51中断系统 结构 80C51有5个中断源(89C52有6个),2个优先级,可实现二级中断嵌套 TCON中断标志 IT0(TCON.0),外部中断0触发方式控制位 IE0(TCON.1),外部中 ...

  5. 单片机中断系统(51为例)

    单片机中断系统概述: 中断是指单片机的CPU在执行程序过程中,外部有一些事件变化,如数据采集结束,电平变化,定时器/计数器溢出等,要求CPU立即处理,这时CPU暂时停止当前的执行程序,转去处理中断请求 ...

  6. 单片机基础:什么是中断系统、中断系统如何用(附中断系统应用实例)

    中断系统 1.前言 2.什么是中断 3.什么是中断系统 4.中断的流程 5.中断的优先级控制 6.中断源 外部中断 7.与中断有关的特殊功能寄存器 7.1.定时/计数器控制寄存器 `TCON` 7.2 ...

  7. 【DSP开发】C6000非多核非KeyStone系列DSP中断系统

    C6000系列DSP的中断系统 上一篇介绍了C6455的GPIO系统,最后把GPIO4配置成了中断/事件模式,本文将介绍C6455的中断系统,介绍完基本概念后,给出把GPIO4映射到INT4的代码. ...

  8. Linux中断(interrupt)子系统之一:中断系统基本原理【转】

    转自:http://blog.csdn.net/droidphone/article/details/7445825 这个中断系列文章主要针对移动设备中的Linux进行讨论,文中的例子基本都是基于AR ...

  9. linux中断系统那些事之----中断处理过程【转】

    转自:http://blog.csdn.net/xiaojsj111/article/details/14129661 以外部中断irq为例来说明,当外部硬件产生中断时,linux的处理过程.首先先说 ...

最新文章

  1. machine learning (6)---how to choose features, polynomial regression
  2. 机器学习(5.sklearn归一化以及标准化)
  3. 捕获Wscript.Quit的退出码
  4. 一款回到顶部的 jQuery 插件,支持 Div 中的滚动条回到顶部
  5. 测试化验加工费云服务器文献信息,监管▕ 科研经费使用中的 “红线”和“禁区”典型问题自查清单...
  6. SQL Server Integration Services(SSIS)中的脚本任务调试
  7. python学出来能做什么-python学出来能做什么
  8. 谷歌发布自然问答数据集 Natural Questions
  9. spark sql 入门详解
  10. java开始到熟悉100-102
  11. 从“外行”到“里手”,长沙企业“力量矩阵”开始觉醒
  12. python测试开发面试题带答案整理
  13. 图片的质量压缩和二次采样
  14. linux修改BCD文件,关于BCDEdit 命令的使用
  15. 一般将来时语法课教案_英语时态
  16. 早该消失的埃菲尔铁塔为何存在至今?
  17. 如何快速恢复误删文件?文件误删的恢复方法-附软件
  18. 创建df的副本df2,其中df2为除了df最后一列之外的所有列;
  19. java毕业设计网络招聘系统源码+lw文档+mybatis+系统+mysql数据库+调试
  20. 证明:对于实对称矩阵,不同特征值对应的特征向量相互正交

热门文章

  1. uniapp打包APP时,如何生成自有证书,证书在哪里找
  2. TPOT自动机器学习参数详解
  3. CMMI认识和访谈的一些问题
  4. linux下anaconda使用教程,怎么在linux系统上打开anaconda
  5. 2022秋冬穿搭趋势!小红书榜单,挖掘4大时髦模式
  6. 使用Python进行三维可视化
  7. rs485与modbus流程图_多个modbus主机与从机用RS485通讯,怎么办?-专业自动化论坛-中国工控网论坛...
  8. 嵌入式系统原理及应用《基于ARM Cortex-M3 内核的STM32F103系列微控制器》思维导图
  9. golang--2016gopher北京大会(1)
  10. SecureCRT显示乱码的解决办法