我在写一个室温调控的程序同时用到了定时器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 |= 0x20;//定时器T1初始化
- TH1=0x06;
- TL1=0x06;
- EA=1;
- TMOD |= 0x02;
- TH0=0x00; //定时器T0初始化
- TL0=0x00;
- ET0=1;
- TR0=1;
- 。。。。。。。。。
- void dsq_t1() interrupt 3
- {
- us_250++;
- if(us_250==4000)
- {
- us_250=0;
- miao++;
- if(miao==60)
- {
- miao=0;
- fen++;
- }
- }
- }
复制代码主要是你的定时器1的工作方式你以为是你写的TMOD = 0X20工作方式2,其实在下面定时0那里TMOD=0x02你就把定时器1的工作方式改变了,TMOD第5位和第6位的值变成了0,定时器1的工作方式就被你改变为工作方式0,13位定时器了
一周热门 更多>