微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 用51内部定时器来产生秒信号,求帮助

用51内部定时器来产生秒信号,求帮助

时间:10-02 整理:3721RD 点击:

问题附在注释里面,请指点一下,看看这个18是怎么算的吧!
/********定时器T0中断函数**********/
void t0(void) interrupt 1  
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;//这样的定时数据,是不是正好是50000*1微秒=50毫秒?
aa++;
if(aa==18)//这里的意思是中断18次,需要1秒的时间(晶振12MHz),我怎么感觉应该是中断20次用时1秒?
  {
    aa=0;
    miao++;
    if(miao==60)
    {
      miao=0;
      fen++;
       if(fen==60)
        {
           fen=0;
           shi++;
          if(shi==24)
             shi=0;
        }
    }
  }

单片机定时器


要看整体  和计算一下 其它指令的占用时间   
18 也好 20也好  只在是在 要求范围内的精度就是对的

  从数来年 是只有 18*50ms

认为他使用晶振的频率是11.0592MHz,那么18次中断需要时间是976562.5us(这是理想状态,不算进入中断发生到定时器从新赋初始值这段时间,如果要算上这段时间,也许需要5~7us左右)

说的对啊 这个程序我也编过 你用多少都是有误差的 这个程序搞懂了你可以用时钟芯片来实现

我用20*50ms的算法,果然出问题了,20*50ms*60秒/分钟*330(分钟)本应等于330分钟=5.5小时,结果却测得超过6个小时。
6/5.5=1.09;20/18=1.11;
看来实际上用18*50ms比较准确的。

过路的,顺便学习了!

我觉得要精确时间还是汇编的好,特别准确!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top