打印

关于STC12C5A60S2定时器的问题

[复制链接]
1781|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
bingshuixichen|  楼主 | 2013-8-14 10:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位大侠,帮忙看看什么原因,我用STC12C5A60S2定时,发现时间跳变间隔很长,本来是1秒钟跳变一次,现在感觉是4秒钟才变一次。可是我把定时器IF判断语句放到中断中,时间不在变化。程序如下:
void dis_time()
{
uchar d0,d1,d2,d3,d4,d5,d6,d7;
d0='t';
d1='=';
d2=fen/100;    //fen百位
d3=fen%100/10; //fen十位
d4=fen%100%10; //fen个位
d5=':';
d6=miao/10;
d7=miao%10;
delay_1ms(1);
  write_cmd(0x80+4);
write_dat('t');  
write_dat('=');
write_dat(d2+0x30);
write_dat(d3+0x30);
write_dat(d4+0x30);
write_dat(':');
write_dat(d6+0x30);
write_dat(d7+0x30);


}


void T0_1s(void)interrupt 1
{

          TH0=(65636-50000)/256;
        TL0=(65636-50000)%256;
       

}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

main()
{       

    TMOD=0x01;         //        设置定时器0为方式1
        TH0=(65636-50000)/256;
        TL0=(65636-50000)%256;
        EA=1; //开总中断
        ET0=1;        //开定时器0中断
        TR0=1;        //启动定时器0
              lcd_init();
        while(1);
        {
                 if(++count_T0==20)
           {
                 count_T0=0;
                  miao++;
                 if(miao==60)
                  { miao=0;
                    fen++;                       
                  }
           }

//         dis_temp(ReadTemperature());
//         ReadTemperature();       
         dis_time();
//         dis_dianya();
//         dis_dianliu();
//         dis_gonglv();
//     dis_yaqiang();
//         delay_1ms(500);
          
         



         }
}

改过后没有显示的程序,
void T0_1s(void)interrupt 1
{
         char count_T0=0;
          TH0=(65636-50000)/256;
        TL0=(65636-50000)%256;
         if(++count_T0==20)
           {
                 count_T0=0;
                  miao++;
                 if(miao==60)
                  { miao=0;
                    fen++;
                        if(fen==60)
                        { fen++;
                                 
                        }
                  }
           }

}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

main()
{       
// P1M0=0x03;         //         设置高阻
//        P1M1=0x00;
   // ADC_Init()
    char count_T0=0;
    TMOD=0x01;         //        设置定时器0为方式1
        TH0=(65636-50000)/256;
        TL0=(65636-50000)%256;
        EA=1; //开总中断
        ET0=1;        //开定时器0中断
        TR0=1;        //启动定时器0
     lcd_init();


        while(1)
        {
         /*  if(++count_T0==20)
           {
                 count_T0=0;
                  miao++;
                 if(miao==60)
                  { miao=0;
                    fen++;
                        if(fen==60)
                        { fen++;
                                 
                        }
                  }
           } */

//         dis_temp(ReadTemperature());
//         ReadTemperature();       
         dis_time();
//         dis_dianya();
//         dis_dianliu();
//         dis_gonglv();
//     dis_yaqiang();
//         delay_1ms(500);
          
         



相关帖子

沙发
coody| | 2013-8-14 10:20 | 只看该作者
你先确认定时器是否按你设计的时间中断。

使用特权

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

本版积分规则

7

主题

27

帖子

1

粉丝