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;
} 展开
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;
} 展开
展开全部
keil做了下仿真,虽然你的主函数结束了,但是你的计时器仍然在工作,单步下去,总会进入中断函数。但是在protues下你的定时器初值要设置合理,也就是在主函数结束前溢出,中断就能发生。然后一直会有定时中断.挺神奇的 还是烧在板上做吧
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在main()函数中,应该有个while(1); ,
否则,会连续执行到下面的 void timer0() interrupt 1 里面去。
在void timer0() interrupt 1 中的中断返回,就不知道返回到什么地方去了。
否则,会连续执行到下面的 void timer0() interrupt 1 里面去。
在void timer0() interrupt 1 中的中断返回,就不知道返回到什么地方去了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1.你的程序不会循环执行,因为没有while(1)楼上说的很清楚!
2.定时时间为553,整个程序执行时间不到定时器中断时间就停止。所以定时器不能循环执行!
2.定时时间为553,整个程序执行时间不到定时器中断时间就停止。所以定时器不能循环执行!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在TR0=1;后面加上while(1); 就好了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询