求高手指点单片机定时器问题

2019-07-15 18:06发布

本人现在正在学习单片机,在学习定时器时遇到点问题,求高手指点。
下面是我写的一个程序,定时器0控制LED2每一秒闪一次,定时器1控制LED1前5秒灭,后10秒亮,预期效果应该是LED2闪第五次时LED1开始闪第一次,可为什么实验时LED2闪第三次LED1就开始闪了啊??求高手指点,多多感谢。。。
#include<reg52.h>
#define uint unsigned int
sbit led1=P1^3;
sbit led2=P1^7;
uint num=0,num1=0;
void main()
{
   TMOD=0x11;
   TH0=(65636-50000)/256;   
   TL0=(65636-50000)%256;
   TH1=(65536-50000)/256;
   TL1=(65536-50000)%256;
   EA=1;
   ET0=1;
   TR0=1;
   ET1=1;
   TR1=1;
   while(1);
}
void T0_time() interrupt 1
{
   TH0=(65636-50000)/256;   
   TL0=(65636-50000)%256;
   num++;
   if(num==20)
   { num=0;
   led2=~led2;
           }
}
void T1_time() interrupt 3
{
   TH1=(65636-50000)/256;   
   TL1=(65636-50000)%256;
    num1++;
        if(num1>300)
          num1=0;
        if(num1<100)
          led1=1;
        else
          led1=0;
                    
}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。