微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 单片机中断问题30例

单片机中断问题30例

时间:05-07 来源:互联网 点击:

AD转换结束(转换结束后DONE位会被置位)。但如果你的单片机还有其他工作,那就没必要在等待它上面花费时间。可以开AD操作后,继续执行其他程序。而转换结束后,AD中断可以暂时断开现有炒作,而把AD数据读进来。这就是AD中断的作用。

2251单片机的五个中断分别在什么时候(什么情况)执行里面的程序!

答:

外部中断0 :P3.2口有低电平(IT0=0)/ 下降沿(IT0=1)。

外部中断1 :P3.3口有低电平(IT1=0)/ 下降沿(IT1=1)。

定时器0中断:当定时器0计数到FFFF溢出时

定时器1中断:当定时器1计数到FFFF溢出时

串口中断:串口接收到一帧。或发送完一帧数据都会产生中断。

你网上找一下TCON和SCON。什么条件让中断标志位的值改变。 那么就会进入中断服务程序去。

23、51单片机,如果中断函数比较长,执行到一半又触发了这个中断,程序会停止从头执行,还是执行结束后响应中

答:

51单片机中,中断分高低两个优先级,高优先级的中断能打断低优先级的中断。

但同级中断是不能打断同级中断的!无论该中断函数有多长,在执行到一半这个中断又发生了,还是要等到该中断函数执行完毕,并再执行了一条主程序指令后才会再次进入该中断。

不过,若楼主恰好在这个低优先级中断服务程序中修改了该中断为高优先级,那么如果该中断函数比较长,执行到一半又触发了这个中断,则该中断函数就会被重新从头开始执行(中断嵌套)。这是因为除串口中断以外的其他中断,在 CPU 响应该中断,程序转入该中断函数前就已经将该中断的中断标志清零了。

另外,51的串口中断比较特别,因为需要软件清除串口中断标志,所以只要在未清串口中断标志前,是不会发生上述这样的中断嵌套的。

24、求51单片机程序,两个计数器,主要是中断函数的函数名以及初始化设置

答:

void into_into() interrupt 1 定时器0中断入口函数

{

。。。。中断服务程序。。。。

TH0=0;//

TL0=0;// 重新给T0赐值

}

void into_into() interrupt 3 定时器1中断入口函数

{

。。。。中断服务程序。。。。

TH1=0;//

TL1=0;// 重新给T1赐值

}

void to_to()

{

TMOD=0x11; //顶时器T0和T1工作方式1

TH0=0;//

TL0=0;// T0赐初值

TH1=0;//

TL1=0// T1赐初值

TR0=1;// 开始记数

ET0=1;// 允许T0中断

TR1=1;// 开始记数

ET1=1;// 允许T1中断

EA=1; // 打开总中断

}

void main()

{

INIT_T0(); //定时器中断初始化

while(1)

{

...........

}

25、请教一个单片机中断的问题:比如来了一个脉冲,开始中断,但中断里的程序执行到一半时,又来了一个脉冲,请问这时中断里的程序是从头开始呢还是继续呢?

我的意思是程序就一个中断A,来了一个脉冲,A执行,A执行到一半时,又来了一个脉冲,通知A执行。这时A是从头执行还是先不理会呢?

答:

需要具体情况具体分析,因为不同的单片机在中断机制上有细微的差别,需要查他的资料。

一般来说,一个中断源请求中断,对CPU来说,是一次性的做了一个“中断挂号”。假如当时因条件不满足(例如CPU正在“关中断”,即没有打开“中断允许”),而没有响应中断,则挂号信息还在,这样,将来一旦打开了中断允许,仍然会响应,只是晚了一点而已。

而中断响应以后,必须有办法把这个“中断挂号”消除掉。有的CPU的功能是:只要响应了这个中断,挂号就自动消除了。也有的CPU不能自动清除挂号,必须在中断服务程序中编入“清除中断挂号”的操作,否则,一旦打开了中断允许,它又会重复发生中断。

现在的大多数单片机里,中断控制器和CPU是在同一个芯片中,它可以做到自动消除中断挂号。而过去许多种CPU,所配用的中断控制器是另外一个芯片,自然就无法自动消除了。

也有的CPU中有另外一种“不挂号”的中断请求。它必须由外界(发出中断请求的那个设备)来保持一直不停申请,等到响应中断的时候,再设法(例如,在中断服务程序中发出一个输出信号)通知那个设备撤销申请。

大多数的CPU中,一旦响应中断进入了服务程序,就把“中断允许”关掉了。故此时如果又有下一个中断请求来了,不能立即响应,只能挂一个号,等以后“开中断”时才能再响应。如果程序员希望能够“嵌套中断”(即在一次中断服务程序的执行中途又进入了另一个中断服务程序),就需要在服务程序内编入“开中断”的操作。

“嵌套中断”原则上允许“自己嵌套自己”,也就是说,一次中断服务程序的执行中途又被打断并进入了和自己一样的中断服务程序,并从头到尾执行一遍,结束后返回到先前打断的那一点,并继续执行后半截服务程序。这种情况会产生什么效果,是需要程序员自己考虑的。

也有的CPU具有“优先次序”机制,可以在某一级的中断服务程序里禁

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top