定时器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条回答
joinking
1楼-- · 2019-07-17 12:00
 精彩回答 2  元偷偷看……
魏东
2楼-- · 2019-07-17 17:11
joinking 发表于 2015-3-5 16:01
优先级不是什么大问题,主要是你在中断服务函数里面处理数据,一般不会再中断里面处理数据的,建议你在中 ...

中断函数里的东西不是很多。应该不会影响太大吧?
joinking
3楼-- · 2019-07-17 21:57
本帖最后由 joinking 于 2015-3-5 17:03 编辑
魏东 发表于 2015-3-5 16:52
中断函数里的东西不是很多。应该不会影响太大吧?

32个数据处理,一句执行时间你给它5us的话在外部中断那里就用了至少160us,具体肯定比这个时间大,当出现外部中断还没处理完又来一个外部中断,你的红外发射解码就出问题了。如果你要看到底用了多长时间,你新建一个工程仿真一下,测试一下这个外部中断处理函数到底用了多长时间,
魏东
4楼-- · 2019-07-18 00:04
joinking 发表于 2015-3-5 16:58
32个数据处理,一句执行时间你给它5us的话在外部中断那里就用了至少160us,具体肯定比这个时间大,当出现 ...

弄明白了 ,t1应该就是        TMOD |= 0X10;优先级问题加上PT1=1;就好使了
红外遥控是因为有一条语句为我误删了,所以错了。
现在一切正常。
的确学单片机的非常的细心啊 ,要不一个小失误可能就会纠结很久。
非常感谢了。本人菜鸟一个,希望大神以后多多指点啊
joinking
5楼-- · 2019-07-18 01:45
魏东 发表于 2015-3-5 15:55
按你说的改了  ,可是t1变慢了 大概一分钟变成一分十几秒 了。
后来我发现是优先级问题 t1的优先级比t0和 ...

你把你改过的定时器1那里发给我看一下
joinking
6楼-- · 2019-07-18 06:09
 精彩回答 2  元偷偷看……

一周热门 更多>