51单片机外部中断问题请教!

单片机型号是STC12C5A60S2,

现在我在软件上设置P3.3(准双向口 置1 )口为外部低电平中断. 当我将P3.3口悬空时软件运行正常 而当我直接用一根杜邦线一头插上P3.3口一头悬空 这时单片机就会进入中断 而且是不稳定的断断序序进入退出!
我本打算将IO通过导线与GND相连.

初步怀疑是IO口弱上拉能力太弱导致接上导线(这时导线是否就像一支待充电的电瓶)的一瞬间被拉低此时IO成为输入口泄掉电流后IO又恢复高电平给导线充电 这样反复循环导致的

如果我上面的怀疑成立那请问下 是将IO置为强上拉然后通过限流电阻串连接地 还是有其它什么好办法求指导!!

void counter(void) interrupt 0
{
EX0=0;
te:
if(P3_2==1)
{ delay1ms(20);
if(P3_2==1)
{
EX0=1;
return;
}
delay1ms(20);
}
goto te;

}
上面说错了是P3.2口

估计是干扰造成的,一般设置成为下降沿触发比较好,若设置为电平触发需保证中断响应后,中断信号应及时搞撤消,防止一次操作,多次进入中断
具体你的中断程序,不知有什么意义,我看逻辑也有点乱,低电平触发后,关中断,若低电平已撤消,高电平来到,则延时20ms后开中断退出,  若高电平显现后又在20ms内消失,则再延时20ms后,进入反复检测的死循环中, 若低电平未撤消,则也进入反复检测的死循环中,其作用大概就是低电平程序停止,直到出现可靠的高电平后恢复运行,倒不如直接检测低电平,低电平进入中断,然后反复检测是否还是低电平,若一直是低电平,就执行延时,偶尔出现的干扰高电平会被过滤掉,若真正出现高电平,则自动退出 这样程序更简单更容易控制
void counter(void) interrupt 0
{
while(P3_2==0)
 {
   delay1ms(20);//延时长则抗高电平干扰能力强
 }

程序抗低电平干扰能力比较弱,但根据你的意图:要可靠的高电平主程序才恢复运行
那么,换名话说,偶尔出现的低电平也会也会使主程序暂时中断,然后自动恢复,也应该是合理的了追问

嗯 中断逻辑就是这样的 当低电平出现时就一直死循环判断是否有可靠的高电平 如果有了 就退出中断

追答

若想防止低电平干扰,是接上拉电阻
 防止高电平干扰, 是接下拉电阻
 高输入阻抗端子极易受干扰

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-03-09
1.51外部中断0函数执行时,又来了个外部中断0信号,那这个中断函数是继续执行还是重新执行? 答:不会执行。只有更高级别的中断出现时,才会停止执行当前中断程序,转而执行新中断。对于同一级或低一级的中断申请...

C语言中,51单片机怎么将进入外部中断服务程序,
51单片机的外部中断主要分为两种触发方式。首先,我们有外部中断0(IT0,TCON.0),这是一个中断触发方式控制位。当IT0值设置为0时,意味着中断是电平触发方式;而当其值设为1时,则表示中断为边沿触发方式,其中下降沿有效。在进行51单片机的外部中断初始化时,我们首先需要开启中断源。对于外部中断0...

51单片机外部中断是哪几个管脚?
五个中断有指定的IO口,一般51单片机是P3.2是INT0,P3.3是INT1,P3.4是T0,P3.5是T1,INT0和INT1是外部中断,T0和T1是定时器,ES是串行口中断允许位,ET1是定时器1中断允许位,EX1是外部中断允许位,ET0和EX0类似。要产生中断,必须先配置好并使能中断线。根据需要的边沿检测设置两个触发...

51单片机之中断系统,外部中断
中断分为4个步骤:中断请求→中断相应→中断处理→中断返回(先做更重要的事) 1、数据的输入\/输出传送方式 外部中断要看对应引脚外部的电平状态。 例如:外部中断0(INT0)对应的引脚是P32, 当出现 低电平 ,即P32引脚连接的地方是 低电平 ,进入相应的中断函数; 当出现 下降沿 ,即P...

51单片机外部中断
一。外部中断0下降沿方式。如果在中断过程中,又继续来了几个下降沿,那么这些中断是被忽略了还是排队等待执行?答案:会被忽略,只有在中断返回时,硬件才会清除中断标志,此时之后有下降沿来临才会被触发申请中断。二。外部中断0低电平方式。如果在中断过程中,一直都是低电平,那么这些中断是被忽略了还是...

51单片机中断的触发方式问题
低电平触发和下降沿触发。低电平触发:当检测到外部引脚为低电平触发中断的为低电平触发。下降沿触发:当检测到外部引脚由高电平变以低电平的瞬间时触发中断的为下降沿触发。注意:选择低电平触发中断后,要撤去低电平信号,否则单片机不断检测引脚为低电平就会不断发生中断。而下降沿则不会。

51单片机外部中断0的问题
可以设置),比如下降沿触发、低电平触发.如果是下降沿触发,长按只能执行一次,因为只有一次下降沿嘛。而低电平触发的话,其实还是跟你中断服务程序的内容有关,一般是可以跳出中断,执行多次中断的;除非你在中断服务程序里面特意让它检测按键,直到按键释放才执行完,这样肯定就要松手才能跳出来了。

51单片机外部中断的触发方式
51单片机的外部中断有两种触发方式可选:电平触发和边沿触发。选择电平触发时,单片机在每个机器周期检查中断源口线,检测到低电平,即置位中断请求标志,向CPU请求中断。选择边沿触发方式时,单片机在上一个机器周期检测到中断源口线为高电平,下一个机器周期检测到低电平,即置位中断标志,请求中断。这个...

51单片机外部中断疑问
才会进入中断函数。总的来说,就是不会一直在中断里,就算是低电平触发,这次中断完成后,也要至少再执行一条才会进入中断,也就是你的问题,在这个很短的时间内单片机又可以执行其他语句。一个类似的问题,你可以看看 http:\/\/zhidao.baidu.com\/question\/475259582?&oldq=1 ...

51单片机 ,,外部中断后,中断函数没有运行 #include <reg52.h> #includ...
外部中断,是需要用开关来触发的。--- 你的延时函数,写的有毛病。编译,根本不过去。改好后,程序就正常了,可以进入中断。include <reg52.h> include <intrins.h> \/\/启用 循环左移(_crol_),循环右移(_cror_)函数 define uint unsigned int define uchar unsigned char sbit d1=P1^0; ...

51单片机的中断是什么意思?
51单片机的IT0位是控制外部中断0的触发方式的。外部中断0触发方式控制位,1表示边沿触发,0表示电平触发。如果IT0设置为0,则外部中断0引脚被拉至低电平即可引发外部中断。如果IT0设置为1,则外部中断0引脚需要检测到下降沿才能引发外部中断。EX0是外部中断0的使能控制位,如果EX0设置为0,则外部中断0...

相似回答