单片机2个定时器同时工作,为什么只能播放1个循环?

2019-07-15 16:40发布

uchar a[]={252,252,252,252,253,253};
uchar b[]={68,68,173,68,52,10};
uchar n[]={1,1,2,2,2,4};
sbit  BEEP=P3^6;
void main()
{
    TMOD=0x21;
    EA=1;
    ET0=1;
    ET1=1;
    TR1=1;
    TR0=1;
    i=0;
    t=0;
    TH0=a[i];
    TL0=b[i];
    TH1=0x06;
    TL1=0x06;
    while(1)
    {
    }
}
void t0(void) interrupt 1 using 0
{
        BEEP=~BEEP;
        TH0=a[i];
        TL0=b[i];
}
void t1(void) interrupt 3 using 0
{
    t++;
    if(t==1000)
    {
        t=0;
        n[i]--;
        if(n[i]==0)
        {
            TR0=0;
            i++;
            if(i==6)
            {
                i=0;
            }
            TR0=1;
        }
        TH1=0x06;
        TL1=0x06;
    }
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
自学单片机
1楼-- · 2019-07-15 22:34
执行完这条语句
if(i==6)
{
  i=0;
}后,i 的值一直是0,之前有句i++,没作用,循环不了。
自学单片机
2楼-- · 2019-07-16 03:34
 精彩回答 2  元偷偷看……
何时的丁丁
3楼-- · 2019-07-16 06:05
while(1)
    {
    }
不会报错吗?

一周热门 更多>