[STC单片机] 单片机定时1分钟

[复制链接]
1951|10
 楼主| 明眸 发表于 2015-12-16 15:41 | 显示全部楼层 |阅读模式
我明明设置的1分钟定时后,小灯亮,可实际只有14秒就亮了

void InterruptTimer0() interrupt 1
{
        TH0 = 0xFC;         //50ms
        TL0 = 0x67;
        countt0++;
        if(countt0==20)        //1s
        {
                secondt0++;
                if(secondt0==60)           //1分钟
                {
                        led1=0;
                //        secondt0=0;
                        //PCON=0x02;//进入掉电模式
                }       
        }
}
ningling_21 发表于 2015-12-16 15:47 | 显示全部楼层
一个定时器就能定时1秒吗

你是怎么算的呢
 楼主| 明眸 发表于 2015-12-16 15:50 | 显示全部楼层
ningling_21 发表于 2015-12-16 15:47
一个定时器就能定时1秒吗

你是怎么算的呢

定时器是50ms的,设置20次,就是1s
 楼主| 明眸 发表于 2015-12-16 15:53 | 显示全部楼层
是我搞错了,50ms应该是4C00
qq4988 发表于 2015-12-18 16:27 | 显示全部楼层
肯定是定时器初值不对,你想着是50MS,可实际上没有50MS
murex 发表于 2015-12-25 10:42 | 显示全部楼层
countt0没有清零过啊,计数肯定不对的,应该在countt0 == 20后清零一下
lrhsx33 发表于 2015-12-25 14:13 | 显示全部楼层
请看上楼,同时你的基准也有问题 14S基准也许不是50ms而是0.91ms
JY-DX-JY 发表于 2015-12-25 15:21 | 显示全部楼层
楼主去哪啦?计数器到了20要清零。
twtyxj 发表于 2015-12-25 15:38 | 显示全部楼层
定时器的初始化呢?
cov0xt 发表于 2015-12-25 19:20 | 显示全部楼层
除了计数器和秒数用完要清零外,在设计上应该这么写比较好:

if(计数器>=20)

if(秒数>=60)

用以防止,外一越过了20或者60,不执行的情况

gaoxueyan 发表于 2015-12-28 12:05 | 显示全部楼层
countt0++;在哪清零
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

138

帖子

5

粉丝
快速回复 在线客服 返回列表 返回顶部