C51单片机————中断系统
51单片机中断系统
CPU和外设之间的速度差异太大,CPU跑的太快了,外设追不上,机器的内部也可能出现突发事件。那怎么办?所以引入中断技术呀。
那什么是中断哇?
CPU和外设并行工作,有突发事件或者外设要给CPU请安的时候,外设就发一个信号给CPU,CPU就去见见外设见面完了CPU又回来干自己的事情。这个过程就是中断!
中断源?
中断申请的来源(就是说是哪一个外设发起了中断)中断优先级
万一有几个外设来找CPU,我们怎么办喃?那我们就给他门排个顺序,CPU先见排在前面的。这个顺序就是他的优先级。
那顺序咋个定喃? 那你要事先安排好咯!
中断源
C51一共有5个中断源(C52有6个)
中断源 | 名称 | 引脚 | 入口地址 |
---|---|---|---|
INT0 | 外部中断0 | P3.2 | 0003h |
INT1 | 外部中断1 | P3.3 | 0013h |
T0 | 0号定时器中断 | P3.4 | 000bh |
T1 | 1号定时器中断 | P3.5 | 001bh |
TI/RI | 串行口中断 | P3.1 TXD | 0023h |
中断控制有关寄存器
中断我们需要考虑几个方面
- 中断打开没
- 怎么触发中断
- 中断的启停
- 多个中断触发后如何响应
IE 中断的允许与禁止(地址A8h)
EA | ET2 | ES | ET1 | EX1 | ET0 | EX0 | |
---|---|---|---|---|---|---|---|
中断总开关 | 暂时不用 | T2 | 串行口TXD | T1 | int1 | T0 | int0 |
1开0关 | 暂时不用 | 1开0关 | 1开0关 | 1开0关 | 1开0关 | 1开0关 | 1开0关 |
TCON 中断的请求与外部中断的选择(地址88h)![这
TF1 | TR1 | TF0 | TR0 | IE1 | IT1 | IE0 | IT0 |
---|---|---|---|---|---|---|---|
T1中断请求 | T1工作启停 | T0中断请求 | T0工作启停 | int1中断请求 | int1中断触发方式 | int0中断请求 | int0中断触发方式 |
1请求0无请求 | 1启动0停止 | 1请求0无请求 | 1启动0停止 | 1请求0无请求 | 1下降沿0低电平 | 1请求0无请求 | 1下降沿0低电平 |
IP 中断的优先管理(地址88h)
– | – | PT2 | PS | PT1 | PX1 | PT0 | PX0 |
---|---|---|---|---|---|---|---|
– | – | T2 | 串行口 | T1 | int1 | T0 | int0 |
– | – | 1高0低 | 1高0低 | 1高0低 | 1高0低 | 1高0低 | 1高0低 |
中断过程
C51中断(和8086的区别):
- 不会自动保护标志寄存器PSW
- 不会自动保护现场
- 不会自动关中断
- 不会自动发送中断响应信号
什么时候不会响应中断呢?
- 当前指令没有结束
- 响应了同级或者高级中断
- 操作IE、IP中断控制寄存器
- 执行RETI(从中断服务程序返回、回复中断优先级状态触发器)指令
中断的撤除
- 对于T0、T1的溢出中断:CPU响应后,会硬件清除中断请求标志TF0、TF1(自动撤除)
- 对于边沿触发的int0、int1中断,自动撤除
- 低电平触发的int0、int1中断,需要在响应之后撤除中断请求
- 串行口和T2中断,没用硬件清除中断标志TI、RI、TF2和EXF2(不会自动撤除),需要软件清除!
C语言和汇编的中断
C语言中断函数定义
返回值 函数名(【参数】)[模式][再入]interrupt n[using m]
n | 0 | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|---|
中断源编号 | int0 | T0 | int1 | T1 | 串行口 | T2 |
返回值:返回值
参数:形参 函数的输入
m : 选择工作的寄存器组
再入(reentrant): C51中普通函数不可递归调用,只有再入函数可以递归
#include<reg51.h>
unsigned char i=0;
int0() interrupt 2//中断函数
{i++;//计算中断次数
}
main()//主函数
{EA=1;//中断总开关EX1=1//外部中断1 允许中断IT1=1;//下降沿有效
}
ORG 0000H
AJMP MAIN
ORG 0013H ;中断子程序入口
AJMP COUNTING ;中断函数名
ORG 0030H
MAIN: SETB EA ;中断总开关SETB EX1 ;外部中断1 允许中断SETB IT1 ;下降沿有效
HERE:AJMP HERE
COUNTING:INC A ;a++RETI
END
C51单片机————中断系统相关推荐
- 中断系统的简单了解以及C51(STC89C52)单片机中断系统的详解
目录 一.中断系统简介 二.C51单片机的中断 1.外部中断 2.定时器/计数器中断 三.总结 一.中断系统简介 中断系统是为使CPU具有对外界紧急事件的实时处理能力而设置的. 当中央处理机CPU正在 ...
- 单片机中断系统(51为例)
单片机中断系统概述: 中断是指单片机的CPU在执行程序过程中,外部有一些事件变化,如数据采集结束,电平变化,定时器/计数器溢出等,要求CPU立即处理,这时CPU暂时停止当前的执行程序,转去处理中断请求 ...
- 基于STC89C51单片机中断系统操作
MCS-51 单片机中断系统 CPU正在处理某件事情时,外部发生另一件事情,请求CPU处理后CPU暂时停止工作后,转入处理发生的事情,结束后返回原任务.这一程序称为中断. Created with R ...
- 51单片机中断系统实验
51单片机中断系统实验 一.实验内容 INT0端接单次脉冲发生器.按一次脉冲产生一次中断,CPU使P1.0状态发生一次反转,P1.0接LED灯,以查看信号反转. 根据实验内容编写一个程序,并在实验系统 ...
- C51单片机——中断与定时器
中断是大多数CPU最精彩的部分之一,下面我们通过讲解和编程练习学习中断和定时器相关概念 目录 1.1.什么是中断 1.2.中断的种类 1.3中断的相关概念 1.4. 51单片机可用中断及相关引脚 1. ...
- 51单片机 | 中断系统概念及结构
-------------------------------------------- 中断的过程: 对于单片机来讲,中断是指CPU在处理某一时间A时,发生了另一事件B请求CPU立刻去处理(中断发生 ...
- 单片机c语言中断意义,51单片机中断系统的重要性
描述 在接下来的教程中,将会介绍定时器.串口通信等外设的基本使用,而这些外设的使用都要涉及中断,而且中断是单片机或嵌入式开发中一个相当重要的概念.不能掌握中断系统,就无法灵活应用这些外设. 1.什么是 ...
- 单片机中断系统应用实例(两组实验+Proteus仿真+C源程序)
中断系统应用实例 1.实验说明 2.实验一 2.1.实验效果 2.2.Proteus仿真图 2.3.源程序 3.实验二 3.1.实验效果 3.2.Proteus仿真图 3.3.源程序 1.实验说明 实 ...
- 蓝桥杯单片机——中断系统(7)
一.原理分析 1.什么是中断? CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生):CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务):待CPU将事件B处理完毕后, ...
最新文章
- 第三天:Vue的组件化
- top在html5里什么意思,html中的scrolltop是什么意思
- STC8G1K单片机软件执行时间物理测量
- CSS笔记(十)position属性与定位
- 动态规划之——又见拦截导弹(nyoj814)
- abv asp是静态网页吗_2019年seo动态网页优化“指南针”
- springboot点击运行没反应,什么都不显示的解决方式
- java教学楼的属性_java设计一个父类建筑物building,由它派生出教学楼类classroom,然后采用一些数据进行测试....
- 神经网络中的 Dropout 以及变体方法
- Softmax和softmax loss的理解
- 凌阳单片机c语言延时函数,凌阳单片机C语言(网站整理).doc
- 基于Springboot的物业管理系统_代码
- 计算机制图基本知识6,机械制图及计算机绘图教案.doc
- 我为什么找不到同事的计算机,局域网找不到其他电脑,其它同事的电脑能找出我...
- Swift Archiving序列化
- 爬虫项目七:Python对唯品会商品数据、评论数据的爬取
- Tensorboard无法显示图像
- 96Boards MIPI CSI Camera Mezzanine V2.1
- C. Edgy Trees---(思维题+并查集的运用)---Codeforces Round #548 (Div. 2)
- Python数据分析实战之物流行业数据分析