请教C51定时中断问题

2019-03-24 19:03发布

初学单片机,部分程序如下:
void timer0() interrupt 1
{
TMOD=0x01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
EA=1;
ET0=1;
TR0=1;
tt1++;
if(tt1==20)
{
  LIGHT=~ LIGHT;
  tt1=0;
}
}

void main()
{
TMOD=0x01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
  Measure();   //测量
  Key();    //按键
  ADout();     //模数转换输出
}
}

存在问题:
1.采用定时中断来控制灯的闪烁,程序实现功能应该是上电后,灯即以1s周期闪烁,但此程序烧写后,上电要延时一段时间才实现闪烁,请教高手,是什么原因?
2.另外,请教,若要实现多个任务独立运行,互不影响,且要保证循环扫描,即都要在while循环中, 程序如何实现,采用定时中断可以解决吗?如何解决?

其中存在子函数中有延时函数,因此顺序执行收到较大影响,初学,还请各位大侠不吝赐教! 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。