51单片机之中断系统(外部中断、定时器中断、串口中断)

中断系统是单片机的核心功能之一,通过中断可以实现按键检测(外部中断)、定时任务(定时器中断)、串口通信(串口中断)等工作,完成对外部事件或内部事件的快速响应。

本文以AT89C51为例,对单片机的中断系统做介绍:


一、中断源与中断优先级:

1.1 AT89C51共有5个中断源:

外部中断 0 (INT0),定时器 0 (TF0),外部中断 1 (INT1),定时器 1 (TF1),串口中断 (RI/TI)。

1.2 中断优先级规则:

        同级中断:按默认优先级顺序响应(INT0 > TF0 > INT1 > TF1 > 串口)。

        不同级中断:高优先级可打断低优先级中断(中断嵌套)。

二、中断相关寄存器:

2.1 TCON(Timer Control Register,地址 0x88)

  • 控制外部中断触发方式和中断标志。

  • 关键位(8位):

        IT0(TCON.0):设置 INT0 触发方式(0=低电平触发,1=下降沿触发)。

        IE0(TCON.1):INT0 中断标志(硬件置位,需软件清零)。

        IT1(TCON.2):设置 INT1 触发方式(0=低电平触发,1=下降沿触发)。

        IE1(TCON.3):INT1 中断标志。

        TR0(TCON.4):对定时器0初始值的设定。

        TF0(TCON.5):定时器 0 溢出标志。

        TR1(TCON.6):对定时器1初始值的设定。

        TF1(TCON.7):定时器 1 溢出标志。

2.2 IE(Interrupt Enable,地址 0xA8)

  • 中断使能控制寄存器。

  • 关键位(8位):

        EX0(IE.0):INT0 中断使能。

        ET0(IE.1):定时器 0 中断使能。

        EX1(IE.2):INT1 中断使能。

        ET1(IE.3):定时器 1 中断使能。

        ES(IE.4):串口中断使能。

        EA(IE.7):总中断开关(1=允许中断,0=禁止所有中断)。

2.3 IP(Interrupt Priority,地址 0xB8)

  • 设置中断优先级(0=低优先级,1=高优先级)。

  • 关键位:PX0、PT0、PX1、PT1、PS。

三、中断的处理流程:

1.中断触发:

当某个中断源满足条件触发(如引脚电平变化、定时器计数溢出等),硬件自动置位对应的中断标志位(如 IE0、TF0 等)。

2.中断响应条件:

  • 总中断允许(EA=1)。

  • 中断源对应的中断使能位(如 EX0)为 1。

  • 无更高优先级中断正在执行。

3.跳转到中断服务程序(ISR):

        CPU 将程序计数器(PC)指向对应的中断向量地址,执行 ISR。

4.清除中断标志:

  • 定时器中断(TF0/TF1):硬件自动清除标志。

  • 外部中断(IE0/IE1):需软件清零。

  • 串口中断(RI/TI):需软件清零。

四、中断服务程序函数:

1.中断向量表存储了每个中断源对应的中断服务程序的入口地址。当某个中断发生时,CPU会根据中断号查找相应的中断向量,跳转到对应的中断服务程序执行‌。

2.using n 是用来选择工作寄存器组。Interrupt n 中的n指的是中断号。using n一般可以不写。

五、外部中断:

接下来以外部中断0为例,写外部中断0配置(采用下降沿触发):

#include<reg51.h>

void main()
{
 EA = 1; //开启总中断开关
 EX0 = 1; //开启INT0中断开关
 IT0 = 0; //INT0采用下降沿触发中断
 while(1); //主循环

}

void INT0_ISR() interrupt 0
{

 P1 = 0X00; //写用户需要的功能代码,这里例如将P1口引脚全部置低电平
 IE = 0; //清除中断标志

}

首先配置中断的初始化函数,打开中断。然后再配置中断的主体函数。

六、定时器中断:

后面讲

七、串口中断:

后面讲

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值