为何这个程序仿真器上运行成功,但烧到89S52上就没效果。先谢了!

2019-03-24 19:22发布

功能是两个定时器,T0控制P10,T1控制P17,分别亮灭。下面的程序在仿真器上看到效果,但烧到AT89S52上就根本不亮。

sbit p1 = P1 ^ 0; sbit p2 = P1 ^ 7;

void action_0();
void action_1();

unsigned long round0 = 5000, round1 = 900;

char code urcllr[3] _at_ 0x003b;
void main()
{
        TMOD |= 2;
        TL0 = TH0 = TF0 = 0;
        TR0 = ET0 = 1;
        
        TMOD |= 32;
        TL1 = TH1 = TF1 = 0;
        TR1 = ET1 = 1;
        
        EA = 1;
        
        while(1) ;
}

void action_0() interrupt 1
{
        if(--round0 == 0)
        {
                round0 = 5000;
                p1 = ~p1;
        }
}

void action_1() interrupt 3
{
        if(--round1 == 0)
        {
                round1 = 900;
                p2 = ~p2;
        }
}
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。