定时器0和1会不会冲突了,定时器1的时间变得很快

2019-07-15 17:46发布

我在写一个室温调控的程序同时用到了定时器0和1。定时器1用的是工作方式1,定时器0用的是工作方式2,(初始化不启动定时器1,在程序后边在启动定时器1,         ET1=1;TR1=1;)。可是定时器1,溢出时间变快了 ,好像是        TMOD=0x10;        TMOD=0x02;冲突了?怎么回事啊?我把TMOD=0x10;删了,结果还是不变。
实在弄不明白了 请大神指教。
        EA=1;
        TMOD=0x10;//定时器T1初始化
        TH1=0x3c;
        TL1=0xb0;

        TMOD=0x02;
        TH0=0x00;        //定时器T0初始化
        TL0=0x00;
        ET0=1;
        TR0=1;
室温调控.zip 下载积分: 积分 -1 分
70.24 KB, 下载次数: 24, 下载积分: 积分 -1 分
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
魏东
1楼-- · 2019-07-18 12:09
joinking 发表于 2015-3-5 17:22
你把你改过的定时器1那里发给我看一下


        TMOD |= 0X10;//定时器T1初始化
        TH1=0X3c;
        TH1=0Xb0;
        ET1=1;
        PT1=1;

        TMOD |= 0x02;//定时器T0初始化
        TH0=0x00;       
        TL0=0x00;
        TR0=1;
        ET0=1;

       
        EX0=1;        //外部中断INT0初始化
        IT0=1;
        EA=1;
        while(1)
        {
                g=e+f;
                start_18b20();
                T=read_wendu();
                worke();
                tiaokong();
                hwtiaokong();
                jiuzheng();       

                for(i=0;i<20;i++)
                        display();

        }

}


void dsq_t1() interrupt 3
{
        TH1=0x3c;       
        TL1=0xb0;       
        ms_50++;
        if(ms_50==20)
        {
                ms_50=0;
                miao++;       
                if(miao==60)
                {
                        miao=0;
                        fen++;
                        led=~led;
                }
        }
}

void dsq_t0() interrupt 1
{
        hwtime++;//255
}

void int0() interrupt 0
{
        if(qidong==1)
        {
                if(hwtime>32)//检测到引导码
                {
                        bitnum=0;
                }
                hwdata[bitnum]=hwtime;
                hwtime=0;
                bitnum++;
                if(bitnum==33)
                {
                        bitnum=0;
                        hwjsok=1;
                }
        }
        else
        {
                qidong=1;
                hwtime=0;       
        }
        if(hwjsok)
        {
                hwchuli();
                hwjsok=0;
        }
        if(hwtqok)
        {
                hwtqok=0;
        }

}


一周热门 更多>