历史上的今天
今天是:2025年03月28日(星期五)
2020年03月28日 | 单片机小白学习之路(十二)---中断系统的理解
2020-03-28 来源:eefocus
目标:中断系统的理解
1.中断简介

中断
中断:cpu在正常执行程序的过程中,计算机内部或外部发生了另一件事请求cpu迅速去处理,cpu暂停停止当前程序的运行,而转去处理所发生的事件,处理完就返回原来暂停的地方,继续执行原来的任务
随着计算机技术的应用,人们发现中断技术不仅解决了快速主机与慢速I/O设备的数据传送问题,而且还具有如下优点:
①分时操作。CPU可以分时为多个I/O设备服务,提高了计算机的利用率;
②实时响应。CPU能够及时处理应用系统的随机事件,系统的实时性大大增强;
③可靠性高。CPU具有处理设备故障及掉电等突发性事件能力,从而使系统可靠性提高。
2.中断系统结构

系统构造
①INT0(P3.2),当CPU检测到P3.2引脚上出现有效的中断信号时,中断标志IE0(TCON.1)置1,向CPU申请中断。可由IT0(TCON.0)选择其为低电平有效(置0)还是下降沿有效(置1)。
②INT1(P3.3),当CPU检测到P3.3引脚上出现有效的中断信号时,中断标志IE1(TCON.3)置1,向CPU申请中断。可由IT1(TCON.2)选择其为低电平有效(置0)还是下降沿有效(置1)。
③T0(P3.4),它的中断请求标志是TF0--(TCON.5 ),T0发生溢出时,置位TF0为1,并向CPU申请中断。
④T1(P3.5),它的中断请求标志位是TF1--(TCON.7),T1发生溢出时,置位TF1为1,并向CPU申请中断。
⑤RI(SCON.0)或TI(SCON.1),串行口中断请求标志。
当串行口接收完送完一帧串行数据置位RI,向CPU申请中断。
当串行口发送完一帧串行数据时置位TI,向CPU申请中断。
3.中断寄存器
(一)定时器控制寄存器TCON

定时器控制寄存器TCON
IT0:外部中断0触发方式控制位。当IT0=0时,为电平触发方式。当IT0=1时,为边沿触发方式(下降沿有效)。
IE0:外部中断0中断请求标志位。
IT1:外部中断1触发方式控制位。
IE1:外部中断1中断请求标志位。
TF0:定时/计数器T0溢出中断请求标志位。
TF1:定时/计数器T1溢出中断请求标志位。
TR0: T0运行控制位。TR0置1时,T0开始工作;TR0置0时,T0停止
工作。
TR1:T1运行控制位。TR1置1时,T1开始工作;TR1置0时,T1停止
工作。
(2)中断允许寄存器IE

IE
EX0:外部中断0允许位;
ET0:定时/计数器T0中断允许位;
EX1:外部中断0允许位;
ET1:定时/计数器T1中断允许位;
ES: 串行口中断允许位;
EA :CPU中断允许(总允许)位。(总开关)
IE相当于一个开关的角色
(3)中断优先级寄存器IP

IP
PT2:定时器/计数器2中断优先级控制位(仅8052);1:高优先级,
0:低优先级
PS:串行口优先级控制位;1:高优先级,0:低优先级
PT0/PT1:定时器/计数器0/1中断优先级控制位;1:高优先级,0:
低优先级
PX0/PX1:外部中断管0/1中断优先级控制位;1:高优先级,0:低优
先级
4.中断优先级
我们会遇到多个中断同时请求的情况,这时候就需要看自然优先级了

自然优先级
中断执行原则:
①CPU同时接收到几个中断时,首先响应优先级别最高的中断请求。
②正在进行的中断过程不能被新的同级或低优先级的中断请求所中
断。
③正在进行的低优先级中断服务,能被高优先级中断请求所中断。
5.中断的使用
(1)中断响应条件
①中断源要有中断请求
②中断源的中断允许位为1
③打开总中断(即EA=1)
例如:外部中断0(INT0)产生中断
#include "reg52.h"
void main()
{
EA=1;//打开总中断开关
EX0=1;//开外部中断0
IT0=0;//设置外部中断的触发方式
while(1)
{
}
}
//中断服务函数
void int0() interrupt 0 //0是中断号,具体看是什么中段
{
...do anything that you want

中断号
史海拾趣
|
怎么用GPRS模块发送文本文件到智能手机?(由于是采集的数据太多,用短信好像很烦哦)彩信协议可不可以直接发送这个txt文件呢?(AT命令好像只有图片的)请教各位具体at命令,或者是其他方法?… 查看全部问答> |
|
#include\"reg52.h\" sbit scl=P3^7; sbit sda=P3^6; #define unch unsigned char //延时 void delay() { unch j; for(j=0;j… 查看全部问答> |
|
本公司因业务需要,急需招聘软件开发工程师,熟悉嵌入式C语言、串口开发、LCD及键盘应用,待遇从优。有意者请将简历发送至liuyh0105@126.com刘月红收。有IC卡、条形码行业工作经验者优先。电话:010-51265035、68219720、68219760… 查看全部问答> |
|
Error[e16]: Segment INTVEC (size: 0x20 align: 0x1) is too long for segment definition. At least 0x12 more bytes needed. The pro××em occurred while processing the segment placement command "-Z(CONST)INTVEC=FFE0-FFFF", w ...… 查看全部问答> |
|
太阳能光伏系统原理介绍太阳能光伏发电系统是利用光伏组件半导体材料的“光伏效应”将太阳光辐射能直接转换为电能的一种新型发电系统。 太阳能光伏发电的能量来源于取之不尽,用之不竭的太阳能,且在太阳能光伏发电的过程中,不会给 ...… 查看全部问答> |
|
这个看很多程序都做了这个判断。看看网上是怎么做的。 代码片断功能简介: 介绍几种VC避免应用程序运行多次的方法。 方法一 在InitInstance函数里面使用: 以下是代码片段: CString mutexName=\"oneInstanceMutexNew\"; &nb ...… 查看全部问答> |




