|

/*********************************************************************************************
函数名:外部中断INT初始化函数
调 用:INT_init();
参 数:无
返回值:无
结 果:启动外部中断INT1、INT0中断,设置中断方式
备 注:
/**********************************************************************************************/
void INT_init (void){
EA = 1; //中断总开关
EX1 = 1; //允许外部中断1中断
EX0 = 1; //允许外部中断0中断
IT1 = 1; //1:下沿触发 0:低电平触发
IT0 = 1; //1:下沿触发 0:低电平触发
}
/**********************************************************************************************/
/*********************************************************************************************
函数名:外部中断INT1中断处理程序
调 用:[外部引脚INT1中断处理]
参 数:无
返回值:无
结 果:用户处理外部中断信号
备 注:
/**********************************************************************************************/
void INT_1 (void) interrupt 2 using 2{ //切换寄存器组到2
//用户函数内容
}
/**********************************************************************************************/
/*********************************************************************************************
函数名:外部中断INT0中断处理程序
调 用:[外部引脚INT0中断处理]
参 数:无
返回值:无
结 果:用户处理外部中断信号
备 注:
/**********************************************************************************************/
void INT_0 (void) interrupt 0 using 2{ //切换寄存器组到2
//用户函数内容
}
/**********************************************************************************************
/*********************************************************************************************
程序名: 外部中断程序实例
硬件支持: STC12C2052AD 外部12MHZ晶振
接口说明:
修改日志:
NO.1-
/*********************************************************************************************
说明:
两个按键分别控制LED灯的开关。
INT0接口的按键按下时开灯。
INT1接口的按键按下时关灯。
/*********************************************************************************************/
#include <REG51.h> //51头文件
sbit LED = P1 ^ 0; //定义LED灯
//注:外部中断固定与P3.2和P3.3复用,无需定义这两个接口。
/*********************************************************************************************
函数名:外部中断INT初始化函数
调 用:INT_init();
参 数:无
返回值:无
结 果:启动外部中断INT1、INT0中断,设置中断方式
备 注:
/**********************************************************************************************/
void INT_init (void){
EA = 1; //中断总开关
EX1 = 1; //允许外部中断1中断
EX0 = 1; //允许外部中断0中断
IT1 = 1; //1:下沿触发 0:低电平触发
IT0 = 1; //1:下沿触发 0:低电平触发
}
/**********************************************************************************************/
/*********************************************************************************************
函数名:外部中断INT1中断处理程序
调 用:[外部引脚INT1中断处理]
参 数:无
返回值:无
结 果:用户处理外部中断信号
备 注:
/**********************************************************************************************/
void INT_1 (void) interrupt 2 using 2{ //切换寄存器组到2
LED = 1; //关灯
}
/**********************************************************************************************/
/*********************************************************************************************
函数名:外部中断INT0中断处理程序
调 用:[外部引脚INT0中断处理]
参 数:无
返回值:无
结 果:用户处理外部中断信号
备 注:
/**********************************************************************************************/
void INT_0 (void) interrupt 0 using 2{ //切换寄存器组到2
LED = 0; //开灯
}
/**********************************************************************************************/
/*********************************************************************************************/
void main(void){
INT_init(); //外部中断初始化
while(1){
//其他程序
}
}
/*********************************************************************************************/
1. MCS-51通用外部中断有2种触发方式,分别是下降沿触发和低电平触发。
# 下降沿触发:电平从高电平状态突然降低(即电压跌落)的过程中触发中断。
# 低电平触发:电平处在低电平时触发中断,具体的电平值因电路不同而有差异。
# 低电平触发与下降沿触发的区别是下降沿触发是一有跌落马上触发,而低电平触发是跌落到低电平的阀值时(一般为0.8V)才触发。
2. 当进入外部中断处理程序时,系统会关闭其他中断触发,在中断处理程序中外部中断接口只能做I/O接口使用,不可嵌套中断。
可将其模板下载到本地硬盘,在编写新程序的时候复制、粘贴到工程当中,然后根据情况写入具体内容。
|
|
相关帖子
- • 这是定义的问题吗,用的c语言,怎么都改不对
- • adc_dma进行采集时打印数据为0,不开dma数据能够正常显示,想问一下是什么原因
- • 单片机不使用外部中断,如何LED显示程序?
- • 做了个替BF7612CM的测试
- • Keil程序求助,这些报错怎么解决,小白一个,刚接触单片机
- • 求用at89c51单片机测LM331 V/F转化后的频率 我的没有显示
- • MCU模拟SPI通信,能发送数据,接收不到数据
- • 菜鸟求助 这个问题怎么解决,已经在oledfont.h定义了 还是报错
- • STM32单片机向ESP8266发送指令,设置延时1秒上传一次数据,延时不准确
- • 单片机矩阵按键 原理图+源代码
- • 通过手机蓝牙APP发出控制指令,控制3个以上LED灯亮灭和蜂鸣器报警和关闭,怎么做 求指导
- • 关于用51单片机驱动AD9851的原理及其编程思路?
- • 单片机用点阵LED实现静态字符显示实验程序
- • 关于单片机矩阵键盘多位数的输入程序问题
- • CCS10.2编译器貌似不支持部分GNU的__attribute__
- • STC15单片机+DS3231+DS18B20+DHT11+OLED12864+ESP8266_01S组成网络时间 有待改善
- • 基于单片机的自行车里程表程序 大写N到底是什么性质的变量 在哪里声明
- • proteus仿真时[SPICE] Too many iterations without converge...怎么处理?求指点
- • 可以用单片机制作320*96大规模的点阵吗?
- • 有人能帮我解释下这个单片机公交车自动报站红外模块的原理吗?
|
|
|
|
|