杜洋工作室 DoYoung Studio
- MCS-51系列单片机C语言编程外部中断程序模板
- 适用于MCS-51内核的单片机产品(以STC系列单片机为例)
- 以STC12C2052AD单片机8个LED灯和2个按键实验电路为例
- 使用Keil C51 编译器软件(以Keil uVision2为例)
/********************************************************************************************* 函数名:外部中断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 //用户函数内容 } /**********************************************************************************************/
- 程序模块
/********************************************************************************************* 程序名: 外部中断程序实例 编写人: 杜洋 编写时间: 2009年9月24日 硬件支持: STC12C2052AD 外部12MHZ晶振 接口说明: 修改日志: NO.1- /********************************************************************************************* 说明: 两个按键分别控制LED灯的开关。 INT0接口的按键按下时开灯。 INT1接口的按键按下时关灯。 /*********************************************************************************************/ #include
//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接口使用,不可嵌套中断。 可将其模板下载到本地硬盘,在编写新程序的时候复制、粘贴到工程当中,然后根据情况写入具体内容。
- 使用说明
- SFR数据表
下载 Download
-
实验电路原理图下载 SCH
链接 Links
-
STC系列单片机数据手册
更多 More
-
杜洋工作室首页
-
论坛服务
-
联系方式