1.中断的概念
通俗的讲,中断就是cup正在工作的时候,突然外部来了某一请求,要求cpu转去处理请求的事件,当事情做完之后cup再回来继续它的工作。这一过程称为中断 。
单片机中断响应可以分为以下几个步骤:
1、停止主程序运行。当前指令执行完后立即终止现行程序的运行;
2、保护断点。把程序计数器PC 的当前值压入堆栈,保存终止的地址(即断点地址),以便从中断服务程序返回时能继续执行该程序;
3、寻找中断入口;
4、执行中断处理程序;
5、中断返回。执行完中断处理程序后,就从中断处返回到主程序,继续往下执行。
流程图如下:
中断技术不仅解决了快速主机与慢速I/O设备的数据传送问题,而且还具有如下优点:
分时操作:CPU可以分时为多个I/O设备服务,提高了计算机的利用率;
实时响应:CPU能够及时处理应用系统的随机事件,系统的实时性大大增强;
可靠性高:CPU具有处理设备故障及掉电等突发性事件能力,从而使系统可靠性提高。
2.51单片机中断详解
上图是80C51单片机中断系统的结构,从图中可以看到80C51的中断系统有5个中断源(补充:8052有 6个) ,分别是: 外部中断0/1(P3.2,P3.3),内部中断(定时计数器中断)0/1(P3.4,P3.5),串口中断(这一节先不讨论)
先介绍几个和中断相关的寄存器:
TCON
TF1:定时器T1溢出标志,可由程序查询和清零,TF1也是中断请求源,当CPU响应T1中断时由硬件清零。
TF0:定时器T0溢出标志,可由程序查询和清零,TF0也是中断请求源,当CPU响应T0中断时由硬件清零。
TR1:T1充许计数控制位,为1时充许T1计数(定时)。
TR0:T0充许计数控制位,为1时充许T0计数(定时)。
IE1:外部中断1请示源(INT1,P3.3)标志。IE1=1,外部中断1正在向CPU请求中断,当CPU响应该中断时由硬件清“0”。
IT1:外部中断源1触发方式控制位。为1设置为底电平触发,为0设置为下降沿触发。
IE0:外部中断0请示源(INT0,P3.2)标志。IE0=1,外部中断1正在向CPU请求中断,当CPU响应该中断时由硬件清“0”。
IT0:外部中断源0触发方式控制位。为1设置为底电平触发,为0设置为下降沿触发。
高四位是控制内部中断(定时计数器)的,底四位是控制外部中断的,从中断结构图可以知道,外部中断有两种触发方式,IT0或者IT1为外部中断源触发方式控制位,此位为1设置为电平触发,为0设置为下降沿触发。TF0,TF1,IE0,IE1这四个位都是中断标志位,不需要设置的。
中断允许寄存器IE:
顾名思义,中断允许寄存器就是控制中断是否打开,注意EA总中断,使用任何中断这个位都要置一,当EA=0时,所有中断都将关闭。
中断优先级寄存器:
80C51单片机有两个中断优先级,即可实现二级中断服务嵌套。51单片机中自然的优先级为:
从中断系统结构图中可以看到,中断优先级分为两级,每一级都是按照自然优先级排列,这样说应该可以理解吧。IP这个寄存器默认值为xx000000b,所有的中断都处在同一级,它就按照自然优先级进行响应。假设我们想人为的把串口的优先级设置为最高,那我们就可以在IP寄存器的PS位写一,这样,串口就被设置为更高一级,它的优先级是最高的。
这样,和单片机外部中断的几个寄存器都讲完了,定时器和串口的中断会分开阐述的。这里重点理解外部中断。
3.中断服务程序
上面讲中断过程中我们知道,那5个过程都是由计算机自动完成的,与我们无关,我们的工作只是在这5 个入口地址处存放有中断处理的程序,那么怎么具体写中断服务程序呢?
格式:
void function(void) interrupt x using y
x=0 是外部中断0;
x=1 是定时器中断0;
x=2 是外部中断1;
x=3 是定时器中断1;
x=4 是串行口中断;
y只能取以下值,一般我们是不用后面的using的
y=0 是第0组寄存器;
y=1 是第1组寄存器;
y=2 是第2组寄存器;
y=3 是第3组寄存器;
4.实例:外部中断
protues环境下硬件搭建
实现一个外部中断的步骤:
1.设置外部中断源触发方式控制位,为1设置为电平触发。
2.开总中断
3.开外部中断0
#include sbit led=P1^0; sbit s=P3^2; void main() { IT0=1; //1.设置外部中断源触发方式控制位,为1设置为电平触发。 EA=1; //2.开总中断 EX0=1; //3.开外部中断0 while(1) { } } void exterfunction(void) interrupt 0 using 1 { led=~led; }
上一篇:学习笔记之-51单片机定时计数器
下一篇:学习笔记之-51单片机IO口详解
推荐阅读最新更新时间:2024-11-12 22:45
设计资源 培训 开发板 精华推荐
- 具有 25 uA 反向泄漏电流的 LT1956IFE-5 双源电源的典型应用电路
- 使用 Analog Devices 的 ADF4360-8BCP 的参考设计
- MAX9814ETD
- LTC3110EUF 3.6V 自主备份和充电应用的典型应用电路
- 【单片机】数码管控制电路设计
- 具有遥控装置电容感应的无线遥控
- 用于开/关控制应用的 AM2G-2424SH30Z 24V 2 瓦 DC-DC 转换器的典型应用
- 使用 ON Semiconductor 的 NCP400 的参考设计
- ADM00434,用于 MCP19035 300 kHz 同步降压控制器的评估板
- USB无线网卡-RTL8188ETV wifi模块(多底板合集)