51单片机具有5个中断源,其中有两个外部中断,这次我们以下降沿触发Int0为例。
在B站跟个up主中断教程,
传送门 https://space.bilibili.com/483942191/video?tid=0&page=4&keyword=&order=pubdate
实验目的:用独立按键作为外部中断的触发信号,当按键按下发送来信号的时候,再执行中断函数(在函数内定义LED灯的亮灭)
如上图所示51单片机总共有5个中断源,本博文先展示第一种 INT0 中断
先看威廉希尔官方网站
图
按键 P3^2 可以触发中断源 INT0
设置寄存器,打开终端并选择中断的触发方式。
EA为整体中断允许位,首先要将EA置1,打开中断。
EX0为外部中断INT0,置1开启。
IT0寄存器:置0为低电平触发,置1为下降沿触发。
编写中断函数,int0的中断编号为0,这里使用中断控制led的点亮与熄灭。
中断函数格式一般为:
void 函数名称(void) interrupt 中断编号 【using 寄存器组编号】{
语句;
}
贴上代码:
中断函数的定义
#include"pbdata.h"
//外部中断初始化
void EX0_Init(void)
{
//设置触发方式 外部中断0
IT0=1; //设置下降沿触发TCON 硬件可自动清零触发信号
EX0=1; //IE
EA=1;
}
/**********************************************************
1、中断服务函数一定是一个没有返回值的函数
2、中断服务函数一定是个没有参数的函数
3、中断服务函数函数名后跟关键字 interrupt
4、interrupt n的取值从0~4 分别代表5个中断源 计算公式为 8*n +0003H
分别为 0 0003H INT0
1 000BH T0
2 0013H INT1
3 001BH T1
4 0023H ES
5、中断服务函数不能被主程序或其他程序调用
6、n 后面跟 using m (0-3)工作寄存器组
***********************************************************/
void EX0_ISR(void) interrupt 0
{
LED_1=~LED_1;
}
51单片机具有5个中断源,其中有两个外部中断,这次我们以下降沿触发Int0为例。
在B站跟个up主中断教程,
传送门 https://space.bilibili.com/483942191/video?tid=0&page=4&keyword=&order=pubdate
实验目的:用独立按键作为外部中断的触发信号,当按键按下发送来信号的时候,再执行中断函数(在函数内定义LED灯的亮灭)
如上图所示51单片机总共有5个中断源,本博文先展示第一种 INT0 中断
先看威廉希尔官方网站
图
按键 P3^2 可以触发中断源 INT0
设置寄存器,打开终端并选择中断的触发方式。
EA为整体中断允许位,首先要将EA置1,打开中断。
EX0为外部中断INT0,置1开启。
IT0寄存器:置0为低电平触发,置1为下降沿触发。
编写中断函数,int0的中断编号为0,这里使用中断控制led的点亮与熄灭。
中断函数格式一般为:
void 函数名称(void) interrupt 中断编号 【using 寄存器组编号】{
语句;
}
贴上代码:
中断函数的定义
#include"pbdata.h"
//外部中断初始化
void EX0_Init(void)
{
//设置触发方式 外部中断0
IT0=1; //设置下降沿触发TCON 硬件可自动清零触发信号
EX0=1; //IE
EA=1;
}
/**********************************************************
1、中断服务函数一定是一个没有返回值的函数
2、中断服务函数一定是个没有参数的函数
3、中断服务函数函数名后跟关键字 interrupt
4、interrupt n的取值从0~4 分别代表5个中断源 计算公式为 8*n +0003H
分别为 0 0003H INT0
1 000BH T0
2 0013H INT1
3 001BH T1
4 0023H ES
5、中断服务函数不能被主程序或其他程序调用
6、n 后面跟 using m (0-3)工作寄存器组
***********************************************************/
void EX0_ISR(void) interrupt 0
{
LED_1=~LED_1;
}
举报