单片机89C51精确延时
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机89C51精确延时
高手从菜鸟忽略作起之(六)一,晶振与周期:
89C51晶振频率约为12MHZ。
在此基础上,计论几个与单片机相关的周期概念:时钟周期,状态周期,机器周期,指令周期。
晶振12MHZ,表示1US振动12次,此基础上计算各周期长度。
时钟周期(W sz):Wsz=1/12=0.083us
状态周期(W zt) Wzt=2*Wsz=0.167us
机器周期(W jq): Wjq=6*Wzt=1us
指令周期(W zl): W zl=n*Wjq(n=1,2,4)
二,指令周期
汇编指令有单周期指令,双周期指令,四周期指令。
指令时长分别是1US,2US,4US.指令的周期可以查询绘编指令获得,用下面方法进行记忆。
1.四周期指令:MUL,DIV
2.双周期指令:与SP,PC相关(见汇编指令周期表)
3.单周期指令:其他(见汇编指令周期表)
三,单片机时间换算单位
1.1秒(S)=1000毫秒(ms)
2.1毫秒(ms)=1000微秒(us)
3.1微秒(us)=1000纳秒(ns)
单片机指令周期是以微秒(US)为基本单位。
四,单片机延时方式
1.计时器延时方式:用C/T0,C/T1进行延时。
2.指令消耗延时方式:
本篇单片机精确延时主要用第2种方式。
五,纳秒(ns)级延时:
由于单片机指令同期是以微秒(US)为基本单位,因此,纳秒级延时,全部不用写延时。
六,微秒(US)级延时:
1.单级循环模式:delay_us_1
最小值:1+2+2+0+2+1+2+2=12(US),运行此模式最少需12US,因此12US以下,只能在代码中用指定数目的NOP来精确延时。
最大值:256*2+12-2=522(US),256最大循环次数,2是指令周期,12是模式耗时,-2是模式耗时中计1个时钟周期。
延时范围:值域F(X)[12,522],变量取值范围[0,255].
函数关系:Y=F(x):y=2x+12,由输入参数得出延时时间。
反函数:Y=F(x):y=1/2x-6:由延时时间,计算输入参数。
例延时500US,x=500,y=244,即输入244时,精确延时500US.
2.双级循环模式:delay_us_2
最小值:固定值(红色部分)=15us,外循环值(绿及中间)=5US,故最小值为20US.
最大值:固定值(红色部分)=15us,单个内循环256*2=512,外循下的内循环256*512=131072,外循环赋值与转移256*(1+2)=768,最大值为:15+131072+768=131855
延时范围:[20,131855],变量X[0,255],Y[0,255]
函数关系:Z=F(X,Y),Z=15+(Y+1)*[(X+1)*2+3]
双级循环模式延时查询表:可用EXCEL设计公式。
3.其他级循环模式:
可按上述方法,进行分析,从而达到自己所需的精确延时。
计时器延时,不在本章讨论之列。