51单片机c程序求助,程序会在main()函数里循环执行,这是怎么回事?当main函数执行结束后,程序就结束?

#include "reg51.h"
sbit flag=TCON^5;
void main()
{
P1=0xff;
TMOD=0x01;
TH0=0x15;
TL0=0xA0;//定时器初始化,定时初始值为553
IE=0x82;
TR0=1;

}
void timer0() interrupt 1
{P1=~P1;
TH0=0x15;
TL0=0xA0;
}

第1个回答  2009-09-22
keil做了下仿真,虽然你的主函数结束了,但是你的计时器仍然在工作,单步下去,总会进入中断函数。但是在protues下你的定时器初值要设置合理,也就是在主函数结束前溢出,中断就能发生。然后一直会有定时中断.挺神奇的 还是烧在板上做吧本回答被提问者采纳
第2个回答  2009-09-22
在main()函数中,应该有个while(1); ,

否则,会连续执行到下面的 void timer0() interrupt 1 里面去。

在void timer0() interrupt 1 中的中断返回,就不知道返回到什么地方去了。
第3个回答  2009-09-22
1.你的程序不会循环执行,因为没有while(1)楼上说的很清楚!
2.定时时间为553,整个程序执行时间不到定时器中断时间就停止。所以定时器不能循环执行!
第4个回答  2009-09-22
在TR0=1;后面加上while(1); 就好了
相似回答