历史上的今天
今天是:2025年07月12日(星期六)
2018年07月12日 | STC15单片机外部中断仅上升沿触发的方法
2018-07-12 来源:eefocus
STC15系列单片机的外部中断0(INT0)和外部中断1(INT1)的触发有两种方式,上升沿和下降沿均可触发方式和仅下降沿触发方式。在实际应用中,有时候需要上升沿触发。这时有两种方案可以解决。
1.将触发方式设置成仅下降沿触发。当外部电路产生一个上升沿时,通过硬件电路加一个三极管进行反向变成下降沿。
2.这种方法不需要改变硬件电路。将触发方式设置成上升沿和下降沿均可触发方式。外部中断产生一个上升沿时,进入中断服务函数,这时在中断服务函数里做进一步处理,检测当前INT0的电平状态。如果是高电平,则判断为上升沿。如果是低电平,则判断为是下降沿。
注意(很重要!): 进入中断服务函数后,一定要延时几个毫秒再去做电平检测。因为不管是上升沿还是下降沿,都不可能是在一个瞬间完成的,中间会经历一个从高(低)到低(高)的过程。
如果进入中断服务函数就立刻检测,可能当时电平还没有达到满足高或低电平的默认电压值或者处于高和低之间的临界电压状态,很可能出现误判的现象。这样做的目的是让跳变后的电平达到稳定状态再检测,说白了就是一个去抖动的过程。
下面把初始化和中断服务函数的代码贴出来:
void Initial_INT0(void)
{
INT0=0;
IT0=0; // 设置成上升沿和下降沿均触发
EX0=1; //使能INT0中断
EA=0;
}
void exint0() interrupt 0 //外部中断入口
{
delay_ms(50); //延时消抖
if(INT0==1) //如果检测到INT0=1,则判断为上升沿
{
led=0;
delay_ms(500);
led=1;
}
else
led=1;
}
在实际做东西的过程中遇到的一个小问题,希望对你有帮助。
上一篇:单片机控制外部中断输入
下一篇:51单片机中断和软件仿真
史海拾趣
|
1. 一般规则 1.1PCB板上预划分数字、模拟、DAA信号布线区域。 1.2 数字、模拟元器件及相应走线尽量分开并放置於各自的布线区域内。 1.3 高速数字信号走线尽量短。 1.4 敏感模拟信号走线尽量短。 1.5 合理分配电源和地。 1.6 DGND、AGND、实地 ...… 查看全部问答> |
|
我做的是win ce 智能设备开发的 数据同步功能已经可以实现了。 比如我现在手持机中有个A表 然后我上传A表到PC端的数据库中的A表去(这里覆盖掉原表了) 这个时候以前的表被覆盖后,我怎么能在这个覆盖的时候让A表覆盖后的值能插入到PC端的B ...… 查看全部问答> |
|
xilinx ISE 中原理图输入时,想将一个8位的线分别和8根1位的线连接,添加bus tap 怎么不行啊? xilinx ISE 中原理图输入时,想将一个8位的线分别和8根1位的线连接,添加bus tap 怎么不行啊? 拖拽到需要的地方,并且显示几个小方格表示可以连接时,单击鼠标后bus tap就不见了,奇怪!… 查看全部问答> |
|
发挥大家的力量,回答下面的题目.谢谢 一、ANSI C/C++方面的知识 一.1、简答题。下面的题目必须全部答对才给分(20分): 1、 如何在C中初始化一个字符数组。2、 如何在C中为一个数组分配空间。 3、 如何初始化一个指针数组。 4、 如何定义一个 ...… 查看全部问答> |




