INT0(P3.2)和INT1(P3.3)引脚输入这两个引脚是功能複用引脚,既可以作为普通V0口,也可作为外部中断输入引脚。下面以部中断0来讲述80C51单片机在每个机器周期的S5P2期间扫描外部中断输入引脚的电岼状态。当外部中断设置为下降沿触发时,若处理器在连续两个机器周期扫描到INT0引脚的电平先后为高电平和低电平时,就会设置中断标志位IE0为1,表示外部有中断申请,该中断申请信号会一直保持,直到该中断被响应,该标志由内部硬件自动清除当外部中断设置为电平触发方式时,在外部Φ断引脚INTo变为低电平时,IE0变为1,并一直保持为1,直到引脚INTo的输入变为高电平时,IE0位才清0。因此,选择低电平触发方式时,对INT0的电平持续时间有严格要求,必须保持INTo引脚为低电平,直到中断被响应才 能变高,而且在中断返回前必须变成高电平,以撤销中断请求若低电平时问太短,则可能导致中断不會被响应;若太长,在中断子程序执行完后仍为低电平,则IE0会一直保持为1,这时会导致一次中断请求,得到多次响应。 ——————
按键作为外部中斷的产生源按下按键,led状态反转
//IE0=0;请求标志位,无触发或响应中断后,硬件自动置0 while(1);//如果不写while(1)单片机在主程序中会不断循环执行,导致不断初始化
比较有意思的是中断函数中增加了消抖部分。
如果不加消抖可能想程序可能想多次执行这个中断。如果消抖在外面可能已经进入中断了,还没进行消抖
接线引脚图如图一、二、三。
* 外部中断1实验 * 实现现象:下载程序后按下K4按键可以对D1小灯状态取反 * 函數功能 : 延时函数,i=1时大约延时10us * 函数功能 : 设置外部中断1 IT1=1;//跳变沿出发方式(下降沿) * 函数功能 : 主函数 * 函数功能 : 外部中断0的中断函数