我在写一个室温调控的程序同时用到了定时器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 分
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
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;
}
}
一周热门 更多>