首页 | 供应信息 | 采购信息 | PDF资料 | 技术资料 | 行业资讯 | 产品展示 | 人才市场 进入会员区
   技术文章分类:单片机/DSP 嵌入式系统 测试仪表 电源技术 接口电路 存储器 传感与控制 通信网络 无线通信 模拟技术 显示与光电 EDA/PLD 汽车电子 消费电子 电子综合
   电子综合工具:PDF资料大全 电子缩略语 IC型号替换 IC厂家 电子电路图 技术参数 设计应用 解决方案
技术资料 行业资讯 PDF资料 IC价格 IC替换 缩略语 IC供应 IC采购
  您所在的位置: IC37首页 > 技术问答 > 单片机 > 定时器精确定时

  定时器精确定时 

用51的TIMER来精确定时,能不能消除定时器溢出到中断函数处的误差呀。因为在执行不同指令的时候响应的时间肯定不一样,难道这部分误差只能忍了吗?


作者:westsfw  2008-1-25 14:33:00

  回复1  使用自动重装定时器就可以了167615

使用自动重装定时器就可以了
作者:dai_weis  2008-1-25 15:20:00

  回复2  中断太频繁了吧167616

中断太频繁了吧


作者:westsfw  2008-1-25 17:21:00

  回复3  能消除167617

你既然都想到了就一定能消除


作者:5880527  2008-1-25 17:58:00

  回复4  可以消除167618

你可以进行汇编级的调试。把重装的时间也算进去。

我曾用定时器做过时钟。

精度做到了每天小于1秒。我们用的晶振一般都是20ppm,不是太准。做时钟是差点,但一般情况还是够用。


作者:救火车  2008-1-25 18:18:00

  回复5  可以消除167619

可以消除
作者:ayb_ice  2008-1-25 20:28:00

  回复6  把指令执行的时间算进去 可以消除的167620

把指令执行的时间算进去 可以消除的
作者:liuf  2008-1-25 22:02:00

  回复7  还有误差167621

回各位兄弟,我着做过才这么问的。发现每次进入中断的时候计数器计过的数不一样,差一个机器周期吧,也就是说这个误差肯定不能除去了。我已经做到MS级了每24小时哈哈。


作者:westsfw  2008-1-26 19:28:00

  回复8  谁说的不能除去了167622

那误差不会是差一个机器周期,不过还是可以除去的,使每次进中断的效果都同一时刻,虽然我从没做过时钟之类的东西


作者:5880527  2008-1-26 19:49:00

  回复9  这个问题讨论得太多了,这个误差绝对能消除,167623

你不能消除的话只能说你太笨了


作者:xwj  2008-1-26 19:50:00

  回复10  干吗要那么准,167624

又不是做时钟,

做时钟直接用个rtc更好,


作者:后学  2008-1-26 20:53:00

  回复11  10楼的同志呀167625

我承认我不聪明,我要能解决的话不来这儿丢人了。您老人家这么牛看着这么简单来解决一下呀,别站着说话不腰疼哈哈


作者:westsfw  2008-1-26 21:26:00

  回复12  呵呵,楼主受不了拍,看看下面帖子167626

呵呵,楼主受不了拍,看看下面帖子
作者:sz_kd  2008-1-26 21:34:00

  回复13  可以啊167627

可以啊
作者:gyt  2008-1-27 13:29:00

  回复14  回13楼167628

没办法呀,天和自卑哈哈,拍一下感觉打击不小呀;不过还是谢谢那位兄弟,不是十楼的砖头俺还不知道人有多大胆地有多大产呢,哈哈;用51已经把每次进入中断时定时器低位跑过的数的差值修正了。

下面开始考虑下义隆上怎么搞定了:4M晶振,振荡周期先分频再给计数器,看怎么设法消除分频计数器上的1个差值了。谢谢各位了~


作者:westsfw  2008-1-28 10:48:00

  回复15  *们用的晶振一般都是20ppm,不是太准?167629

那要什么精度的?


作者:zhang123  2008-1-28 12:04:00

  回复16  只是较真儿~167630

俺就做来看看的,要求每次进入中断函数的某个指定(自已设的唯一的)位置时用的时间是1S,误差在10US之内就可以了,发这个帖子只是跟自己较下真儿,看看到底能不能做到没有误差,现在在KEIL里模拟已经看不到误差了。如果没问题就不扯这个了,除非还有做得不对的地方。中断程序如下:

void timer1(void) interrupt 3 using 1

{

unsigned int times;

TL1+= 25;

TH1= 252;

times++;

if(times>=500)

{

times=0;

}

}

用6M晶振,timer1方式1,每2MS中断一次,现在两次到times=0;语句的时间差是1S,拍吧~哈哈


作者:westsfw  2008-1-28 12:24:00

  回复17  re167631

uchar times;

if(times>=500)

你是不是

#define uchar unsigned int 呀?


作者:yixiupu0  2008-1-28 12:52:00

  回复18  sorry167632

搞错了,为了简单往上贴的时候弄错的,是unsigned int times


作者:westsfw  2008-1-28 15:34:00

  回复19  呵呵,不红不革命,不拍不成材...167633

不拍拍你你怎么会去动脑筋?

又怎么能解决问题呢?


作者:xwj  2008-1-28 15:42:00

  回复20  自动重载最简单167634

自动重载最简单
作者:一朝成名  2008-1-28 16:13:00


我要投稿 注册会员
客服咨询热线:0755-26000950 0755-26007355
 相关技术问答
·欢迎大家进行程序结构的讨论  2008-1-24
·大家了解NEC单片机吗?请..  2008-1-24
·一个700行代码完成的Jp..  2008-1-24
·请教一个电压比较器的问题!  2008-1-24
·想选个MCU做电表,朋友说..  2008-1-24
·2803发热??急  2008-1-24
·大家帮看看这个计数程序有什..  2008-1-24
·6位BCD码转十六进制  2008-1-24
·求购51或arm开发板  2008-1-24
·关于C和汇编的问题  2008-1-25
·请大家帮我看看这个电路实现..  2008-1-25
·TDA2030AV国外库存..  2008-1-25
·请教砍波原理  2008-1-25
·说说msp430的仿真指令  2008-1-25
·请各位推荐一块80c51开..  2008-1-26
·为何sin = 0;报错e..  2008-1-26
·“技术派”的力量——坚持看..  2008-1-26
·请教一个计数器的计数时间问题  2008-1-26
·请教数码管电路问题?  2008-1-26
·有没有人弄格雷码  2008-1-26
·请问eeprom和铁电的驱..  2008-1-26
·GAL16V8的问题,求救  2008-1-26
·麻烦大家帮忙推荐一款红外遥..  2008-1-26
·寻找一款合适的单片机  2008-1-27
·C8051F067大约多少..  2008-1-27
·探讨:如何实现用串行通讯,..  2008-1-27
 
 热门IC
SS14  1N4007  MIC5014BM  MAX709MCSA  LM3578AMX  X5043P  AD790JR  74HCT86D  LM1877M-9  A6615SED  TLP121  AD7769JP  IDT7130SA55J  MAX791ESE  MC14093BCP  GAL16V8D-7LJ  TC7S08F  MC33202DR2  DS75176BM  LM360N  IRFD120  TD62503F  DS14C89AN  SN75110AN  LM339DR2  AD820AN  EPF6016QC208-2  XCS30XL-4TQ144C  LT1585CM-3.3  INA117KU  SN74LVC08APWR  EPM7160SLC84-10  LXT983QC  MC3487P  HT6571  AD586JQ  HCPL-2531  AT89C51-24JC  MAX913ESA  AD818AN  CY7B923-JC  IR2130  AD561JD  HM628128BLFP-8  LP2985AIM5X-2.8  BSS123  SP4422ACN  LH0033CG  INA106KP  MAX761CPA