打印

为什么定时器T0 T1 不能同时工作呢?

[复制链接]
3956|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
bingshuixichen|  楼主 | 2013-8-22 14:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位大侠,我在设置定时器T1时,就会影响T0工作,不知道是什么原因?各位大侠能不能帮忙看看?
/*LCD初始化*/
void lcd_init()
{
   LCD_PSB=1;
    write_cmd(0x30);
        delay_1ms(5);
        write_cmd(0x0c);
        delay_1ms(5);
        write_cmd(0x01);
        delay_1ms(5);
    TMOD=0x11;                                                        //定时器0,方式1
        TH1=(65536-50000)/256;
        TL1=(65536-50000)%256;
        EA=1;                                                                //开总中断
        ET1=1;                                                                //允许T0中断
        TR1=1;
                       
                                                                //定时器0,方式1
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        EA=1;                                                                //开总中断
        ET0=1;                                                                //允许T0中断
        TR0=1                                                        //开定时器
}
T1的设置只要写上,T0就不工作,去掉T0设置,T1也可以工作?为什么不能同时工作?

相关帖子

沙发
ayb_ice| | 2013-8-22 14:57 | 只看该作者
有没有对应的中断程序嘛

使用特权

评论回复
板凳
bingshuixichen|  楼主 | 2013-8-22 16:38 | 只看该作者
ayb_ice 发表于 2013-8-22 14:57
有没有对应的中断程序嘛

有啊
void timer0() interrupt 1
{
        TH1=(65536-50000)/256; //100us定时
        TL1=(65536-50000)%256;
        count++;
                if(count>=20)
        {
                count=0;
                sec++;
                if(sec>59)
                {
                        sec=0;
                        min++;
                        if(min>59)
                        {
                                min=0;
                                hou++;
                        /*        if(hou>23)
                                {
                                        hou=0;
                                }  */
                        }
                }
        }       
}
void timer1() interrupt 3
{
        TH1=(65536-50000)/256; //100us定时
        TL1=(65536-50000)%256;
        count++;
                if(count>=20)
        {
                count=0;
                sec1++;
                if(sec1>59)
                {
                        sec1=0;
                        min1++;
                        if(min1>59)
                        {
                                min1=0;
                                hou1++;
                        /*        if(hou>23)
                                {
                                        hou=0;
                                }  */
                        }
                }
        }       
}

使用特权

评论回复
地板
bingshuixichen|  楼主 | 2013-8-22 16:39 | 只看该作者
打错啦,定时器1是count1

使用特权

评论回复
5
bingshuixichen|  楼主 | 2013-8-22 16:40 | 只看该作者
解决了

使用特权

评论回复
6
lwr960| | 2014-6-14 22:12 | 只看该作者
这个问题怎么解决的?我也在用T0和T1同时作为定时器中断用,T0作为1s定时中断,T1作为2s定时中断。 结果是T0中断是为1s,但T1中断切大约在9秒左右了。不知道什么原因?
用内部16.6M  2分频作为时钟源的。

使用特权

评论回复
7
lwr960| | 2014-6-14 22:22 | 只看该作者
哦,我检查了下,是我自己的赋初值赋错了,晕

使用特权

评论回复
8
ningling_21| | 2014-6-15 08:39 | 只看该作者
两个中断怎么都是给TH1,TL1 赋值呢...

使用特权

评论回复
9
原野之狼| | 2014-6-15 09:22 | 只看该作者
通过自己的努力解决了问题,赞一个~

使用特权

评论回复
10
mangoshue| | 2014-6-15 10:12 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

27

帖子

1

粉丝