单片机 中断

2019-04-15 18:05发布

单片机 中断

一、简述    中断,即CPU在正常执行程序的过程中,遇到外部/内部的紧急事件需要处理,暂时中断(中止)当前程序的执行,而转去为事件服务,待服务完毕,再返回到暂停处(断点)继续执行原来的程序。

二、中断请求标志控制寄存器TCON
三、中断请求标志控制寄存器SCON
四、中断允许寄存器IE
五、中断函数中断函数定义的格式为:
函数类型 函数名 interrupt   n  using  m
其中:
    interrupt 后面的n 是中断号。
    关键字using 后的m 是所选择的寄存器组,取值范围是0~3。using m这部分通常可以省略,由编译器自动选择一个寄存组。举例:void int0rupt() interrupt 0 { beep=0;//开蜂鸣器 while(P3_2!=1);//当P3^2口一直是低电平时,就一直告警 beep=1;//关蜂鸣器 } void 是函数类型表示空类型
int0rupt是函数名
interrupt 0中的0表示该函数是为外部中断0服务的处理函数(当外部申请中断0服务时调用此函数)六、完整例子文件打包:链接: https://pan.baidu.com/s/1Zuo1-bGvJV5YJU1Kq1Xh9w 密码: 195s1、效果:当按键按下时,蜂鸣器就会响,不松开就一直响,松开关闭。    (主程序死循环,通过CPU中断可以暂时中断,先执行其他任务,然后再回来继续执行被中断的任务。例子中开启外部中断0,中断方式为下降沿触发,比如控制端口原来是高电平的,按下按钮使控制端口变为低电平,高电平到低电平有个下降过程,下降沿触发中断0,调用中断服务处理函数,蜂鸣器响。中断服务处理函数有个循环检测直到按钮释放才关闭蜂鸣器,退出中断服务处理函数,控制端口恢复为高电平。)
2、Keil文件结构
3、仿真电路
4、alarm.c文件#include #define uint unsigned int #define uchar unsigned char sbit P3_2=P3^2;//将P3^2定义为中断0控制口 sbit beep=P3^3;//将P3^3定义为蜂鸣器控制口 void main() { EA=1;//开许总中断 EX0=1;//开外部中断0 IT0=0;//中断触发方式为低电平触发 while(1) //主程序一直在死循环,外部中断可以暂时执行中断处理函数 {} } /**********************************************************/ //函数名:int0rupt() interrupt 0 //功能:外部中断0中断响应程序 //调用函数: //输入参数: //输出参数: //说明:当P3^2口为低电平时进入响应程序 /**********************************************************/ void int0rupt() interrupt 0//当P3^2键口为低电平时 { beep=0;//开蜂鸣器 while(P3_2!=1);//当P3^2口置高检测,就是按钮不释放蜂鸣器就一直响 beep=1;//关蜂鸣器 }

热门文章