标题: 单片机定时100ms中断10次就是1S的初始程序怎么写 [打印本页]

作者: hhh275    时间: 2014-11-28 22:26
标题: 单片机定时100ms中断10次就是1S的初始程序怎么写
我需要显示的是1S
void timer0_init(void)  
{
TMOD=0X01;
TH0=0x9e;   //定时50ms,  x*12/6M=0.05 x=25000 ; T0=Y  X+Y=65536; Y=40536;  
TL0=0x58;      
}

void time0_int(void) interrupt 1
{
TR0=0;
EA=0;
TF0=0;
TMOD=0X01;
TH0=0x9e;
TL0=0x58;  //定时50  ms
cnt++;
if(sec==20)
  {sec++;
  }
  else
  {sec=0;
   cnt=0;
  }
EA=1;
TR0=1;
}
我显示的是cnt,结果显示出来的2位数,个位不是以秒显示,这是为什么 ,谢谢

作者: admin    时间: 2014-11-28 23:04
void timer0_init(void)  这个初始化应该没问题吧
作者: admin    时间: 2014-11-28 23:09
20次*每次50=1000毫秒
作者: hhh275    时间: 2014-11-29 21:19
admin 发表于 2014-11-28 23:09
20次*每次50=1000毫秒

cnt++;
if(sec==20)
  {sec++;
  }
  else
  {sec=0;
   cnt=0;
  }
EA=1;
TR0=1;
}
这样写法对吗
作者: jxz950214    时间: 2014-11-29 23:22
void timer0_init()
作者: skyhanfeng    时间: 2014-12-2 17:00
void InitTimer0()
{
    TMOD = 0x01;//定时50 毫秒
    TH0 = 0x3C;
    TL0 = 0x0B0;
    EA = 1;
    ET0 = 1;
    TR0 = 1;
}


void Timer0Interrupt() interrupt 1
{
    TH0 = 0x3C;
    TL0 = 0x0B0;
   
    sec++;
    if(sec==20)
    {
            sec = 0;//定时1S,cnt加1
            cnt++;
    }
}

作者: xiao_yp2014    时间: 2014-12-3 08:36
* 如何知道1秒钟需要多少个定时中断?
* 这个需要编写一段小程序测试,得到测试的结果后再按比例修正。
* 步骤:
* 第一步:在程序代码上先写入1秒钟大概需要200个定时中断。
* 第二步:基于以上1秒钟的基准,编写一个60秒的简单测试程序(如果编写超过
* 60秒的时间,这个精度还会更高)。比如,编写一个用蜂鸣器的声音来识别计时的
* 起始和终止的测试程序。
* 第三步:把程序烧录进单片机后,上电开始测试,手上同步打开手机里的秒表。
*         如果单片机仅仅跑了27秒。
* 第四步:那么最终得出1秒钟需要的定时中断次数是:const_time_1s=(200*60)/27=444
*/




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1