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

[复制链接]
4335|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
 楼主| bingshuixichen 发表于 2013-8-22 16:40 | 显示全部楼层
解决了
lwr960 发表于 2014-6-14 22:12 | 显示全部楼层
这个问题怎么解决的?我也在用T0和T1同时作为定时器中断用,T0作为1s定时中断,T1作为2s定时中断。 结果是T0中断是为1s,但T1中断切大约在9秒左右了。不知道什么原因?
用内部16.6M  2分频作为时钟源的。
lwr960 发表于 2014-6-14 22:22 | 显示全部楼层
哦,我检查了下,是我自己的赋初值赋错了,晕
ningling_21 发表于 2014-6-15 08:39 | 显示全部楼层
两个中断怎么都是给TH1,TL1 赋值呢...
原野之狼 发表于 2014-6-15 09:22 | 显示全部楼层
通过自己的努力解决了问题,赞一个~
mangoshue 发表于 2014-6-15 10:12 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

27

帖子

1

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