80C51单片机定时误差的研究

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.引言
传统农业生产中要大量使用农药,由于人们健康意识的提高,对粮食、蔬菜的品质要求越来越高,其中之一是对农产品中农药残留要求越来越高。

因此,需要对农业生产中的施药进行控制,即采用精准施药技术,而定时是其中的关键技术之一。

在以前的精准施药系统中,用Visual C++中SetTimer()函数定时其精度为55ms,GetTickCount()函数定时精度为1ms[1],但是由于占用了系统宝贵的资源,而且当需要更高的中断频率时这种方法就显得无能为力了[2]。

目前的方法缺乏通用性。

另外,对设置参数后产生的误差也没有准确分析。

通过分析,用80C51单片机可以减小误差,实现定时精度的提高,从而减少施药量。

不仅节约了生产成本,也可降低农产品中农药残留,提高农产品品质。

另外,也减少了因农药滥用而造成的环境污染的风险。

80C51单片机的控制系统中,有两种方法实现定时:软件延时,即让CPU循环执行一段时间,以实现软件延时;硬件定时,即利用80C51系列单片机硬件集成的两个16位定时器/计数器实现定时。

我们针对这两种方法进行分析研究,通过修改程序和设置参数实现了定时精度的提高。

2.软件延时误差的原因与修正
软件延时原理:80C51的CPU每执行一条指令需要若干个指令周期,运用软件编程,让机器循环执行一段程序,而得到一个固定时间。

若使用12MHz晶振,设一个机器周期为T。

则T=1μs。

50ms(等于50000T)延时程序为:
MOV R7,#100;(1T)
DL2:MOV R6,#250;(1T)
DL1:DJNZ R6,DL1;(2T)
DJNZ R7,DL2;(2T)
RET;(2T)
此程序准确延时时间为:[(500+1+2)×100+1+2]T=50.303ms,误差为303μs,产生误差的原因是只考虑到指令DL1:DJNZ R6,DL1的循环时间(刚好为50ms),没考虑其它语句的执行时间。

因此,将上面程序修改如下:
MOV R7,#100;(1T)
DL2:MOV R6,#248NOP;(2T)
DL1:DJNZ R6,DL1;(2T)
DJNZ R7,DL2;(2T)
RET;(2T)
此程序的延时时间为:[(248×2+2+2)×100+1+2]T=50003T= 50.003ms。

此时误差为3μs,比修改前提高了101倍,且占用存储器资源一样,为R6和R7,而程序并没有复杂。

3.硬件定时误差的原因与修正
硬件定时就是利用80C51单片机片内两个16位定时器/计数器,即定时器T0和定时器T1实现定时。

定时器/计数器的核心是一个加1数,则为定时功能。

定时功能和计数功能的设定和控制都是通过软件实现的。

设置为定时工作方式时,每个机器周期使定时器的数值加1,直至计满溢出。

然后中断CPU的当前操作,执行相应的中断服务程序。

3.1.CPU正在执行指令时的误差[3]
中断响应的一个前提是当前指令执行完毕。

若定时器溢出中断时,CPU正在执行某条指令,那么它将不能及时响应该中断,而是在执行完该指令后才能响应。

此时误差的大小与CPU正在执行的指令有关。

在单级中断系统中,80C51单片机的最短中断响应时间为3个机器周期,最长为8个机器周期。

其中中断请求标志位查询占1个机器周期,而这个机器周期又恰好是执行指令的最后一个机器周期,在这个机器周期结束后,中断即被响应,产生LCALL指令,而执行这条长调用指令需要2个机器周期,这样中断响应过程共用时3个机器周期。

如果正在执行的指令为RETI或者是访问IE、IP的指令,最多需要2个机器周期完成正在处理的指令,还需要完成下一条指令最多需四个机器周期(MUL或DIV指令),再加上执行长调用指令LCALL所需的2个机器周期,此时最大时间误差为8个机器周期。

3.2.CPU正在执行中断服务程序时的误差[4]
定时器溢出中断信号时,若CPU正在执行同级或高优先级中断服务程序,则它仍需继续执行这些程序,不能及时响应定时器的溢出中断请求,其延迟时间由中断转移指令周期T1、中断服务程序执行时间T2、中断返回指令的指令周期T3及中断返回原断点后执行下一条指令周期T4(最长为四个机器周期,如乘法指令)组成。

中断转移指令和中断返回指令的指令周期都为2个机器周期,中断服务程序的执行时间为执行该程序所含指令的指令周期的总和。

因此,最大时间误差为:T1+T2+ T3+T4=2+T2+2+4=T2+8;设晶振为12MHz,则最大时间误差为:T2+8(μs)。

因此,这种时间误差取决于正在执行的中断服务程序。

3.3硬件定时误差的修正:
通过上述分析可以确定,定时器产生溢出中断与CPU响应中断请求的时间误差具有不确定性[5],因此,这种误差很难用常规方法补偿。

但是针对中断响应与中断请求的时间误差,为使定时器溢出中断与CPU响应中断实现同步,可以对定时器的计数初值进行修改,从而补偿误差。

例:80C51时钟:晶振12MHz,设一个机器周期为T。

设定T0工作于方式1,为16位定时器。

定时50ms,则装入初值计算如下: N=65536-50000=15536,则
TH0=3CH TL0=B0H
当T0产生中断后,首先进入中断入口000BH,执行以下程序:
Enter Interrupt;(1~6T)
ORG000BH
LJMP INT;(2T)
INT:
PUSH ACC;(2T)
80C51单片机定时误差的研究
翟流顺余江王勇
(云南大学信息学院云南昆明650091)
【摘要】随着80C51在工业上的广泛应用,对定时精度的要求也越来越高。

但是由于指令周期考虑不全和硬件自身的原因易引起定时误差。

从软硬件方面分析了误差原因,并针对误差不确定性的特点从指令执行周期、计数器初值、计数器当前值、适时开关中断的角度出发给出了纠正方法。

【关键词】单片机;定时精度;误差;机器周期
Research on Time Error of80C51MCU
ZhaiLiushun YuJiang WangYong
(School of Information Science and Engineering,Yunnan University,Kunming650091,China)【Abstract】With its widespread use in industry,the demand for time accuracy of80C51is increasingly strict.Because instruction period is not completely considered and the hardware is not perfect,it is easy to cause error.For the error is indefinite,this paper analyses the reasons cause the error from software and hardware aspects,and provides correction methods from these aspects:instruction operation period,original counter digit,present counter digit and interruption on and off on time.
【Key words】SCMC;Time accuracy;Error;Machine period
科技信息2008年第35期
SCIENCE &TECHNOLOGY INFORMATION (上接第461页)在某三角形内部,称此三角形包含未知节点;最后,未知节点将包含自己的所有三角形的相交区域的质心作为自己的估计位置。

2.结论
在无线传感器网络中,要求尽量采用分布式的节点定位算法,即定位的计算过程分散在每个未知节点上而不是依赖于在某个中心节点进行集中计算。

质心法、DV-Hop 算法、Amorphous 算法和APIT 算法都属于分布式算法。

总的来说,不基于测距的定位机制属于粗精度的定位机制,然而粗精度定位对大多数无线传感器网络的应用已经足够,研究表明,当定位误差小于传感器节点无线通信半径的40%时,定位误差对路由性
能和目标追踪精确度的影响不会很大。

节点定位是无线传感器网络的一项关键技术,对于无线传感器网络的许多应用来说节点位置信息都是必须的基本信息;而且节点定位的一些算法也从一定程度上反映了无线传感器网络的特殊性。

目前已有的节点定位技术还仅仅是一些初步的研究成果,距离无线传感器网络的整体优化目标还有很多工作要做;相信随着研究开发的继续深入,还会有更多的高效算法出现,从而促进无线传感器网络进一步的普及应用。

[责任编辑:田瑞鑫]

PUSH PSW ;(2T)
MOV TH0,#3CH ;(2T)MOV TL0,#B0H ;(2T)POP PSW POP ACC RETI
由以上程序可以看出,当定时器T0从响应中断服务程序,到开始定时,产生了时间延迟。

进入中断时间为1~6T,一般情况下,到底取多少?80C51单片机共111条指令,其中单周期指令63条,双周期指令46条,四周期指令两条。

设一个机器周期为T 。

由统计学知识,可得每条指令平均用时为:63/111×1T+46/111×2T+2/111×4T=1.47T 。

根据本文3.1,则进入中断平均时间为:63/111×1T+[43/111×1/2×(2+1)]T+[2/111×1/4×(4+3+2+1)]T+[3/111×1/2×[(2+1.47)+(1+1.47)]T=1.27T,当M 取1时平均误差最小。

因此,可以取M 为1,即修正值为11,这样最终平均误差约为:-0.27T 。

因此实际初值计算如下:N=65536-50000+11=15547。

即在程序中赋初值为:TH0=3CH,TL0=BBH 。

若定时器溢出发出中断请求时,CPU 正在执行同级或者更高优先级的中断服务程序,则它仍需继续执行这些程序,不能及时响应定时器的溢出中断请求。

而中断程序的执行时间无法得知,显然前面的误差修正方法均不能起到有效的作用,故可以在进入服务程序时关中断。

并且从前面的分析也可知,定时器到下一次装初值的前一刻其计数值应为各种累积误差值[5](分别保存在TH0,TL0中),因此利用此计数值来修正下一次计数初值,以达到提高精度的目的。

仍以上例为例,可编写如下程序:
Enter Interrupt ORG 000BH LJMP INT INT :
CLR EA ;禁止所有中断CLR TR0;停止定时器T0
MOV A,#LOW (65536-50000+7);期望数的低位字节,LOW 表示取该数的低8位
ADD A,TL0;进行修正MOV TL0,A ;重装低位字节
MOV A,#HIGH (65536-50000+7);对高位字节处理,HIGH 表示取该数的高8位
ADDC A ,TH0MOV TH0,A
SETB TR0;重启定时器SETB EA ;重开中断RETI
其中要注意:TH0和TL0赋初值时,考虑了正常中断响应所需时间及其它的累积误差,所以在括弧中的数值加7。

此时,考虑到误差以机器周期为单位,定时精度为1μs 。

4.结论通过修改程序,减小了定时误差,提高了定时精度。

运用统计学知识,从理论上分析了平均误差,从而设置合适的参数实现定时精度的提高,增强了此方法的通用性。

因此,在高精度定时方面有一定的应用价值。

【参考文献】
[1]冀荣华,祁力钧,傅泽田.基于Visual C++的精确定时技术与应用.[J].农机化研究,2007(5):191-193.
[2]朱若磊,黄石生,毛鹏军等.精确定时技术在高速焊跟踪系统中的应用.[J].电焊机,2003,33(5):32-35.
[3]高锋.单片微型计算机原理与接口技术.[M].北京:科学出版社,2003:137-158.[4]朱蓉,郑建华.基于MCS-51的单片机定时精确控制的研究[J].现代电子技术,2005,(17):32-34.
[5]聂毅.单片机定时器中断时间误差的分析及补偿[J].微计算机信息,2002,18(4):37-38.
作者简介:翟流顺,男,1984年生,云南大学信息学院在读硕士研究生,主要研究方向为嵌入式系统。

[责任编辑:田瑞鑫]

(上接第459页)把"之所以然"分析透彻、讲解清楚的理论高手;在实训教学中,教师又是一个操作动作规范、准确的技师。

(3)行为导向教学中要求教师具备多方面综合能力
行为导向教学中,教师是配角,而且角色不断发生变化。

教师是教学的组织者和引导者,同时又是知识的传授者,在整个教学过程中,教师还必须对学生进行细致全面的观察,做到因材施教,满足不同层次学生的要求。

行为导向教学要求师生互动交流,教师应是教学活动的引导者或主持人,他不仅要传授知识,还要更多地传授和培养学生的能力。

行为导向教学法作为一种新的先进的教学方法,其基本原理和特点适合职业教育的教学需要。

我们应当结合我国职业教育的实际情况,通过在实际教学中的应用、探索和完善,为最终能够创建一个具有
我国职业教育特色的现代教学模式做出自己的努力。

【参考文献】
[1]《职业资格证书(技术与实践)》,劳动和社会保障部培训就业司,海洋出版社,2006年10月第一版.
[2]《推广行为导向教学法创建现代教学新模式》,劳动和社会保障部职业技能鉴定中心研究员李怀康,《劳动和社会保障部培训就业司2006年7月高技能人才政策培训班材料》.
作者简介:孙建勋,男,河南电力工业学校讲师。

[责任编辑:田瑞鑫]
○科教前沿○●

420
2012-05-18########################2012-05-18########################2012-05-18
2012-05-18########################2012-05-18########################2012-05-18
file:///C|/Users/Administrator/Desktop/新建文本文档.txt
通信/电子电脑、 杂志、 会议、 劳动合同、 生活休闲、 考试、 股票 file:///C|/Users/Administrator/Desktop/新建文本文档.txt2012/7/5 12:11:23。

相关文档
最新文档