历史上的今天
返回首页

历史上的今天

今天是:2024年12月13日(星期五)

正在发生

2018年12月13日 | 51实现定时器定时调整

2018-12-13 来源:eefocus

随着学习的深入对51的认识也越来越深,尤其对中断的重要性更是深深体会!如果你是和我一样的初学者,请一定要学好中断!


今天来分享一下有关定时器定时补偿的冷知识。


不知道你是否做过这样的实验,就是当你用定时器来定时1ms来实现数码管的自动加1。随着时间的推移,会发现和真正的时间略有偏差。于是就引出了接下来所要讲的。


到底这些值差在哪里呢?主要在三个方面:


进入中断前要进行压栈,即是进行数据保护,这里要耗费几个机器周期 


进出中断这个过程也要耗费一定的机器周期 


进入中断后的重新赋值也要耗费一定的机器周期


所以累计误差就这么慢慢增加了。


如何补偿呢?


其实思路很简单就是进入debug,看两次中断相差的时间间隔和我们真正的定时相差多少,然后在赋初值的时候进行一个调整即可。


下面来分享一个自己的调试过程。 


(以12M晶振为例)


先上自己的调试代码:


#include


unsigned char T0RH;

unsigned char T0RL;


void ConfigTimer0(unsigned int ms)

{

    unsigned long tmp;


    tmp = 12000000/12;//以12M晶振为例子

    tmp = (tmp*ms)/1000;

    tmp = 65536 - tmp;

    //tmp = tmp + 6;//这里是后面进行的初值补偿

    T0RH = (unsigned char)(tmp >> 8);

    T0RL = (unsigned char)tmp;

    TMOD &= 0xF0;

    TMOD |= 0x01;

    TH0 = T0RH;

    TL0 = T0RL;

    ET0 = 1;

    TR0 = 1;

}


void main()

{   

    ConfigTimer0(1);

    EA = 1;

    while(1);   

}


void InterruptTimer0() interrupt 1

{

    TH0 = T0RH;

    TL0 = T0RL;

}


① 设置软件调试的晶振值 


一


②进入debug 


定位两次中断的时间,算出时间间隔 



1
2


注意:程序定时的是1ms但是实际上却是1.006ms多出来了6us! 


即压栈、进出中断、中断的赋值这些过程耗费了6个机器周期 


我们知道12M晶振来说,一个机器周期就是1us,所以当赋初值的时候多上6个机器周期就可以了


③把注释去掉后的 


1
2



怎么样?是不是恰好是1ms? 


哇哈哈~~~~


其实这样在实际应用中也并不是精确的定时,因为我们知道一切都是相对的,没有什么是绝对的,没有什么会是永垂不朽的!所以这样定时虽然已经相当精确了,但也只能说相对!!!别忘了还有很多因素,比如气压,温度,……均会有所影响硬件!

推荐阅读

史海拾趣

Fascomp公司的发展小趣事

随着公司规模的扩大,Fascomp开始关注更广阔的市场。公司针对智能手机市场推出了一款低功耗、高性能的处理器,迅速在市场上获得了成功。同时,公司还不断推出新的产品线,如平板电脑专用芯片、物联网设备等,以满足不同客户的需求。这些创新举措使Fascomp在激烈的市场竞争中脱颖而出。

Applied Engineering Products (AEP)公司的发展小趣事

随着公司规模的扩大和产品种类的增多,AEP公司意识到质量管理的重要性。公司引进了一套先进的质量管理体系,从原材料采购、生产过程到产品出厂,每一个环节都进行严格的质量控制。同时,公司还加强了对员工的培训和管理,确保每一名员工都能严格按照质量标准进行操作。这一举措大大提高了AEP公司的产品质量和客户满意度,为公司的长期发展奠定了坚实基础。

ABI Electronics公司的发展小趣事

随着业务的不断发展和产品的不断升级,ABI Electronics公司的品牌影响力也逐渐提升。其产品在市场上获得了良好的口碑和声誉,成为了电子行业内的知名品牌。同时,ABI还积极参与行业内的交流和合作,为行业的发展做出了积极的贡献,进一步提升了其在行业内的地位和影响力。

这五个故事展示了ABI Electronics公司在电子行业里的发展历程,从电路板测试技术的突破,到集成电路测试技术的创新,再到全球市场布局和合作伙伴关系的建立,以及研发实力的持续增强和品牌影响力的提升,都体现了ABI Electronics公司不断进取、不断创新的精神。

Efficient Power Conversion公司的发展小趣事

在追求自身发展的同时,EPC公司也积极寻求与行业内其他企业的合作。通过与全球知名的汽车制造商、通信设备制造商以及消费电子企业建立合作关系,EPC公司将其氮化镓技术广泛应用于各个领域,推动了整个电子行业的发展。同时,EPC公司也积极参与行业标准的制定和推广工作,为行业的健康发展做出了积极贡献。

FRIWO公司的发展小趣事

作为全球化的技术型企业,FRIWO在全球范围内设立了研发、生产和营销部门,以满足不同市场的需求。FRIWO的电源解决方案业务部(FPS)专注于为客户量身订做电源解决方案,其客户群遍布医疗科技、IT通讯、家用电器、移动工具以及工业应用等多个领域。为了更好地服务本地客户,FRIWO在不同地区设立了分支机构,确保能够快速响应客户需求并提供专业的技术支持和服务。这种全球化布局与本地化服务的策略,使得FRIWO在激烈的市场竞争中保持了强劲的竞争力。

Deutronic Elektronik GmbH公司的发展小趣事

随着技术的不断进步和市场的扩大,Deutronic Elektronik GmbH开始寻求技术突破和业务拓展。公司加大了研发投入,推出了一系列具有创新性的电源供应器、电子模块和测试检查系统。这些产品不仅满足了客户的多样化需求,还为公司带来了显著的经济效益。同时,公司也积极拓展海外市场,逐步建立了全球销售和服务网络。

问答坊 | AI 解惑

ARM的指令手册(中文)

分享一下 不知道有需要的没…

查看全部问答>

电子元件模特秀剧场版

应wangjiafu1985要求,将所有上传了:) 爱因迪生:首先让我采访下这位长的像炮管似的重量级的兄弟。请问先生是叫什么电阻? 选手(瓮声瓮气):我是波纹电阻。 爱因迪生:还有这位呢?外面都是铝壳。 选手:所以偶叫铝壳电阻。 爱因迪生 ...…

查看全部问答>

如何实现WINCE 启动画面(开机logo)? (PXA300+ Monahans L )

如题CPU 是PXA300 BSP Monahans L 现在没有启动画面,要实现启动画面,下载内核时的提示画面,都是静态的不需要动画.或者只显示一些提示语类似\"OS image downloading...\". 虽然看到很多人在网上问这个问题了,但有些地方还不清楚,所以再问一下. 有 ...…

查看全部问答>

如何获取串口线中DCD线上的中断

如题,要获取DCD线上的电平变化的中断…

查看全部问答>

求助:能否删除用户模式,使得一个ARM处理器能正常应用,分析适用场合与优缺点

求助:     能否删除用户模式,使得一个ARM处理器能正常应用,分析适用场合与优缺点,,请高手指点一二。。。。。。    谢谢 …

查看全部问答>

我装了VXWORKS FOR PENTIUM但是使用VxSim时报错,帮忙看看!!!

我装了VXWORKS FOR PENTIUM但是使用VxSim时报错,帮忙看看!!! 系统WINXP,CPU ATHLON XP-M 1.6G 运行VxSim,起先CPU占用率100%,几秒钟后报 --------------------------- Tornado --------------------------- error : image specified ca ...…

查看全部问答>

单片机小精灵1.3完美破解版

看了这么久的论坛,也下了不少大家常用的软件,推荐一款自己一直使用的不错软件,不知道大家用过没,貌似别人没发过吧。集合了许多常用功能:精确延时、定时/计数器、串口波特率等常用的代码生成,也可查询许多常用的寄存器…

查看全部问答>

需要一本电子版 EDA技术与verilog HDL

电子版 EDA技术与verilog HDL,不知哪位大侠有发给我一份,万分感谢。…

查看全部问答>

跪求大神解析

小弟看资料写的USART1的程序,想与上位机通信,但是无法接受数据……求大神教育 /* Includes ------------------------------------------------------------------*/ #include \"stm32f10x.h\" #include \"platform_config.h\" GPIO_InitTypeD ...…

查看全部问答>

关于在WIN7下的codewarrior

装的8.2的版本,兼容性解决,能打开,但是关闭的时候总是不能正常关闭cw,哪位大神遇到过这种情况不…

查看全部问答>