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)
中断源

中断优先级三条原则:

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

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

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

    中断响应的条件

  4. 中断源有中断请求

  5. 中断源的中断允许位是 1

  6. 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);
}

定时器中断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单片机中的中断系统相关推荐

  1. 深入浅出地理解STM32中的中断系统——从原理到简单工程示例——保姆级教程

    深入浅出地理解STM32中的中断系统 一.什么是中断?什么是异常? 二.如何管理中断? 三.NVIC 1 NVIC 特点 2 中断优先级 (1) 优先级分组 3 中断向量表 4 中断服务函数 (1)中 ...

  2. STC89C52单片机定时器及中断系统的介绍以及代码示例

    目录 一,定时器介绍 二,STC89C52定时器资源 三,定时器框图 四,定时器工作模式 五,中断系统及其流程 六,STC89C52中断资源 七,定时器与中断系统 八,相关寄存器的认识与配置 首先是定 ...

  3. PIC单片机入门_中断系统详解

    1.中断的基本概念 当单片机正在执行程序时,出现了某些特殊状况,例如定时时间到.有键盘信号输入等,此时CPU须要暂时停止当前的程序,而转去执行处理这些事件的程序,待执行完这些特定的程序之后,再返回到原 ...

  4. 微控制器(单片机)的中断系统及应用

    文章目录 1. 什么是中断 1.1 中断的概念 1.2 中断源 1.2.1 中断源的种类 2. 中断寄存器 2.1 TCON寄存器 2.2 SCON寄存器 2.3 IE寄存器 2.4 IP寄存器 3. ...

  5. [蓝桥杯单片机]模块学习—中断系统

    前一段时间的文章已经跟各位一起刷了一部分的客观题了 接下来将会跟大家一起从官方提供的原理图和芯片手册出发 练习每个模块的程序编写 因为我学习采用的是模块化编程的思路,函数的定义分散在不同的文件中,所以 ...

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

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

  7. 中断系统的简单了解以及C51(STC89C52)单片机中断系统的详解

    目录 一.中断系统简介 二.C51单片机的中断 1.外部中断 2.定时器/计数器中断 三.总结 一.中断系统简介 中断系统是为使CPU具有对外界紧急事件的实时处理能力而设置的. 当中央处理机CPU正在 ...

  8. MCS-51的中断系统

    [说明]本文学习自<单片机原理及应用(张毅刚)> 目录 1 中断的概念 2 MCS-51中断系统的结构 3 中断请求源 4 中断控制 4.1  中断允许寄存器IE 4.2  中断优先级寄存 ...

  9. STM32学习笔记(三)丨中断系统丨EXTI外部中断(对射式红外传感器计次、旋转编码器计次)

    本篇文章包含的内容 一.中断系统 1.1 中断的定义 1.2 中断优先级 1.3 中断的嵌套 1.4 STM32中的中断系统 1.4.1 STM32的中断资源 1.4.2 嵌套中断向量控制器 NVIC ...

最新文章

  1. Codeforces Round #370 (Div. 2) A. Memory and Crow 水题
  2. InnoDB,5项实践
  3. 冒泡排序 选择排序 快速排序(C语言)
  4. Cartographer安装
  5. 深入推荐引擎相关算法 - 聚类
  6. ps清理缓存脚本_清理垃圾脚本,让你的电脑丝滑如新!
  7. 怎样实现关闭connection时自动关闭Statement和ResultSet
  8. 初始化资源管理器 winform
  9. json在html中怎么遍历list,怎么对Json对象进行遍历呢?
  10. python中函数的参数_Python小知识-Python中的函数参数(基础篇)
  11. Windows7,网络连接错误: 依赖服务或组无法启动
  12. VS2022找不到Microsoft.Expression.Interactions.dll
  13. Pytorch中RNN输出的h_n和output是什么
  14. 各浏览器的Hack写法
  15. 【2020年高被引学者】 韩家炜 伊利诺伊大学香槟分校
  16. Python识别中国工作日,节假日,调休日。—已更新2022年
  17. 可视化实验四:大数据可视化工具—ECharts(二)
  18. 快手、抖音等短视频营销模式
  19. python因子分析案例_因子分析及python实现(一)
  20. mybatis在关联映射中,引入外部xml文件中定义的对象

热门文章

  1. 在mysql中创建一个自定义函数来计算两个数的和_Mysql创建自定义函数
  2. 2019年09月11日星期三 恒指/美原油/美黄金 走势分析
  3. 研究生想发表会议的方法
  4. java decompiler插件_Java反編譯利器-Jad, Jode, Java Decompiler等及其IDE插件
  5. 吉林省高校计算机c语言考试成绩查询系统,吉林省高校计算机水平考试
  6. 基于数字频率合成技术的正弦波发生器设计
  7. zabbix————配置监控远程主机
  8. 基于LSTM的故障诊断
  9. python分形曲线代码_Python生成简单分形
  10. Java之前缀和算法