微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 怎样计算软件延时时间?

怎样计算软件延时时间?

时间:10-02 整理:3721RD 点击:
C8051F021  晶振用 11.0592MHz
延时子程序  
DELAY  :  MOV  R7,#10H
DELAY1:  MOV  R6,#0FFH
                 DJNZ  R6,$
                 DJNZ  R7,DELAY1
                 RET
这个子程序延时大概多少?如果能告诉我方法,更感激不过了!

教你怎么算,假设晶振是12MHz,经单片机12分频后,是1MHz,即单片机运行一个机器周期的时间是1us.
执行 MOV  R7,A 指令,一次要1个机器周期,你让它循环几次,就乘以几倍
MOV  R6,#0FFH   这个也是每次1个机器周期
                 DJNZ  R6,$    每次2个机器周期
                 DJNZ  R7,DELAY1  每次2个机器周期
                 RET   每次2个机器周期
计算出总的机器周期,乘以1us,就是延时时间了.当然,你的是11.0592Mhz,别算错了.

楼上正解。哈哈

斑竹的对!也是以石英晶体为12MHz为例子,因此,1个机器周期为1微秒
机器周期 微秒
MOV R6,#20 2个机器周期  2
D1: MOV R7,#248 2个机器周期  2       2+2×248=498 20×
  DJNZ R7,$ 2个机器周期  2×248             498
DJNZ R6,D1 2个机器周期   2×20=40         10002
因此,上面的延时程序时间为10.002ms。
由以上可知,当R6=10、R7=248时,延时5ms,R6=20、R7=248时,延时10ms,以此为基本的计时单位。如本实验要求0.2秒=200ms,10ms×R5=200ms,则R5=20,      这样计算就OK啦!不知道对不呢!:lol!我才学单片机一个星期!:L!还要大家多点指教呢!

楼上正解顶

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

网站地图

Top