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

#include"reg51.h"sbitflag=TCON^5;voidmain(){P1=0xff;TMOD=0x01;TH0=0x15;TL0=0xA0;//定时器... #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;
}
展开
 我来答
wookongbun
2009-09-22 · TA获得超过209个赞
知道答主
回答量:146
采纳率:0%
帮助的人:108万
展开全部
keil做了下仿真,虽然你的主函数结束了,但是你的计时器仍然在工作,单步下去,总会进入中断函数。但是在protues下你的定时器初值要设置合理,也就是在主函数结束前溢出,中断就能发生。然后一直会有定时中断.挺神奇的 还是烧在板上做吧
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
做而论道
高能答主

2009-09-22 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.1亿
展开全部
在main()函数中,应该有个while(1); ,

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

在void timer0() interrupt 1 中的中断返回,就不知道返回到什么地方去了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
EutopiaのQi
2009-09-22
知道答主
回答量:26
采纳率:0%
帮助的人:0
展开全部
1.你的程序不会循环执行,因为没有while(1)楼上说的很清楚!
2.定时时间为553,整个程序执行时间不到定时器中断时间就停止。所以定时器不能循环执行!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
goodagui
2009-09-22 · TA获得超过102个赞
知道小有建树答主
回答量:136
采纳率:0%
帮助的人:116万
展开全部
在TR0=1;后面加上while(1); 就好了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式