7795|13

8

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

怎么计算计数循环时间 [复制链接]

我是个刚在自学单片机的小菜

一开始就遇到了难题

请大哥大姐们指点下,小弟在此先谢过大家了

 

是这样的

我不明白这定时是怎么计算出来的

例如下面的程序

是怎么计算的呢?

晶振是12M的话

 

 

{inti,j;

for(i=0;i<100;i++)

    for(j=0;j<50;j++)

}

 

此帖出自51单片机论坛

最新回复

可以设个断点,软仿一下!  详情 回复 发表于 2012-1-8 12:43
点赞 关注
 

回复
举报

31

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
你可以先单步调试一下for(i=0;i<50:1++),看一下需要多长时间,然后再乘for(j=0;j<100;j++)中的100或者其他数就行了。
比如for(i=0;i<50:1++)需要0.5ms的话,你想要1秒即0.5ms*2000=1s,那就可以这样写
for(j=0;j<2000;j++)
for(i=0;i<50:1++);在单步调试前先把频率设置成12MHZ,就OK了,我也刚学,交流交流
此帖出自51单片机论坛
 
 
 

回复

315

帖子

0

TA的资源

五彩晶圆(初级)

板凳
 

根据仿真来判断时间

此帖出自51单片机论坛
 
 
 

回复

4008

帖子

0

TA的资源

版主

4
 
如果标准51可以通过计算汇编语句的执行时间精确几个微妙延时,不过现在的51都是单周期指令了
此帖出自51单片机论坛
 
 
 

回复

535

帖子

0

TA的资源

五彩晶圆(初级)

5
 

回复 楼主 she137249 的帖子

最精确的是通过从汇编的指令调试乘以是什么类型的指令计算
通过仿真也是好方法
此帖出自51单片机论坛
 
 
 

回复

4008

帖子

0

TA的资源

版主

6
 
这样做有个不好的地方,就是中断的影响
此帖出自51单片机论坛
 
 
 

回复

194

帖子

0

TA的资源

一粒金砂(高级)

7
 
开始计算那个地方把IO置高,完成的那个地方置低,用示波器测量
此帖出自51单片机论坛
 
 
 

回复

8

帖子

0

TA的资源

一粒金砂(中级)

8
 

回复 沙发 张丽山 的帖子

非常感谢你的分享,然后我想问除了用调试的方法
用什么机器周期或是晶振之类的概念怎么去理解或是计算这时间
谢谢
此帖出自51单片机论坛
 
 
 

回复

8

帖子

0

TA的资源

一粒金砂(中级)

9
 

回复 5楼 小小白 的帖子

中断延时的话就是计数脉冲=1/12晶振是吧

 

谢谢

也按照你们上面的方法仿真软件仿真过是正确的

那我想问除了用调试的方法用什么机器周期或是晶振之类的概念怎么去理解或是计算这时间

 

就是说这for()语句执行一次要多久?

 

我不怎么会用Keil仿真

 

谢谢

[ 本帖最后由 she137249 于 2011-12-25 20:28 编辑 ]
此帖出自51单片机论坛
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(中级)

10
 
飘过……
此帖出自51单片机论坛
 
 
 

回复

535

帖子

0

TA的资源

五彩晶圆(初级)

11
 
1、时钟周期     时钟周期T又称为状态周期,是时序中最小的时间单位。具体计算就是1/fosc。也就是说如果晶振为1MHz,那么时钟周期就为1us;6MHz的话,就是1/6us。

2、机器周期

    机器周期定义为实现特定功能所需的时间,或完成某一规定操作所需的时间,通常由若干时钟周期构成。具体计算为:时钟周期 X cycles。如果单片机是12周期的话,那么机器周期就是T×12。假设晶振频率为12M,单片机为12周期的话,那么机器周期就是1us。

3、指令周期

    置零周期是时序中的最大时间单位,定义为执行一条指令所需的时间。通常,包含一个机器周期的指令成为单周期指令,比如CLR,MOV等等。包含两个机器周期的指令称为双周期指令。另外还有4周期指令,比如乘法和除法指令。

4、例如:

   标准8051单片机为12时钟周期,即一个机器周期为标准的12个系统时钟周期(时钟周期 X 12)。

   PHILIPS单片机为6时钟周期。

   AVR单片机为单时钟周期。

忘记说了51单片机会对晶振产生的进行十二分平所以执行单周期指令要1Us。。。
此帖出自51单片机论坛
 
 
 

回复

50

帖子

0

TA的资源

一粒金砂(中级)

12
 
好像是,如果你用的是KEIL,你运行后里面有反汇编,通过那个可以大概算出来
貌似在哪里看到过。
此帖出自51单片机论坛
 
 
 

回复

116

帖子

0

TA的资源

一粒金砂(高级)

13
 
若没有中断的干扰,设置keil的晶振为你所用的晶振,然后DEBUG设置断点到进这个函数名前时,记下当前时间,设置断点到大括弧下一行,运行,记下时间,时间之差就是延时时间。注意不要将断点设在函数名前和右括弧内部,涉及到进入时寻址该函数和结束时的出栈时间
此帖出自51单片机论坛
 
 
 

回复

202

帖子

0

TA的资源

一粒金砂(中级)

14
 
可以设个断点,软仿一下!
此帖出自51单片机论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表