51单片机外部中断使用问题,急求!马上给分!

我看很多程序都是主程序进入while(1),就死在while(1)里了,然后等待外中断。那么现在的问题是我想让它进入外中断完事后,跳过while(1),执行下边的程序,该怎么办?
while里边用break吗?不知道好使不好使,还有标志位我看是硬件自动清零,查询标志应该不能用吧,那该怎么办呢?
还有其它思路也可以说,我看能不能解决问题,关键是快。
刚学习,如果有说错的地方,欢迎指正。

结束while(1)语句最好的方法就是使用break来跳出死循环,关键就是选择合适的flag(标志位),如果说中断标志位是硬件自动清零的话,那么楼主不妨在中断服务子程序中自己加入一个标志位:如果用汇编语言的话,PSW中的F0位就可以很好的使用;如果用C的话,就可以随便定义一个位变量,如bit a=0;。也就是说,楼主需要在程序中定义一个位变量a,在中断服务子程序中将a置1,退出中断后查询a是否为1,例如:if(a) {a=0;break;}这样就跳出了while语句了。

比方说,如果楼主想写一个等待按键按下中断的程序,就可以用while(!a);而不用while(1)语句了。
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-08-21
while里边用break是可以的,在中断程序中设一个标志位,决定break是否起作用就可以了

关于单片机外部中断的疑问(51)
第一,我的外部中断0设定为跳变沿触发,如果来了一次下降沿,在处理中断函数的过程中,又来了一次下降沿,这时怎么办?--处理函数,不宜过长,中断频率,不宜过高。--尽量避免这种现象出现。是同样一个中断。这个问题源于一个关于红外遥控的程序,他的意思就是用一次中断来收集共33位数据,可是33...

51单片机外部中断疑问
若是一直让程序在外部中断0中,大家也许会想到用低电平触发方式,但也只是想罢了,是不可能实现的。因为当单片机检查到中断标志位置位后,就会进入中断函数,但中断函数语句执行完后,便会退出中断,并清除中断标志位,回到原来的地方继续执行。我们也许会想,如果中断标志位一直置位,那么程序退出中断后,...

51单片机外部中断问题
如果是下降沿触发(it0=1)就只会执行一次中断程序。电平触发(it0=1)的话每次执行完中断里面的程序(只要不关闭中断)就又跳进中断里去了,不断的循环执行。循环的频率跟晶振有关,晶振的频率直接关系到单片机执行指令的速度。频率越高速度也就越快。

关于51单片机的外部中断使用方法
单片机的P2.5,P2.6,P2.7口分别接三位动态数码管的位选端,P0口接动态数码管的段选端。然后,P1.0口接一个电阻串联一个LED灯然后接地,电阻取200~470欧之间就行,是一个限流电阻。中断用的是外部中断0,要触发中断的时候,就用一根杜邦线一端接地,一端接到单片机的P3.2口就行,这样,...

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

52单片机的外部中断和定时器中断同时的问题
一. timer2中断处理时,你不能处理太多事,占用太长时间,尽量短,否则将出问题。二. 单独试验一下timer2,里面作最简单的处理,比如让某个灯翻转,便于观察是否正常,你的中断时间较短,需要用示波器观察才行。三. 单独试验一下外部中断,是否有效。四. 上面没问题了,再往下进行,把外部中断优先级...

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

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

51单片机,我的外部中断执行后为什么回不了原来的主程序,主程序用定时...
由于外部中断改变了P1的值,使循环P1=_crol_(P1,1);的初值改变,中断后P1=0xff,流水灯循环效果没有了。考虑增加1全局变量k,让k循环,再赋值给p1 include<reg51.h> include<intrins.h> define uchar unsigned char uchar j,k; \/\/增加k保护P1状态 void Delay(){ unsigned char a,b,c;for...

请问51单片机 外部中断后不能继续执行原来的程序,可能是什么原因...
有几种可能:1、你的外部中断是电平触发,当你中断执行完毕后,电平还是没有变,就等于又中断了,建议你改为边沿触发 2、你在进入中断后,没有保存现场,内存的数据乱了,结果中断完成后就回不去了 3、中断程序有问题,这要对照具体的程序才知道 ...

相似回答