4373|10

71

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

51单片机的延时问题 [复制链接]

51单片机在延时,用c来写代码,
void delay(unsigned int i)
{
while(--i);//执行一次--i是多长时间?

}
所用单片机为AT89s51,晶振为12MHZ,用这个程序来延时,精度有多高啊,调用此函数delay(35530)延时的时间多少啊;

汇编延时一秒的程序
delay:MOV R7,#10  
D1:    MOV R6,#200
D2:    MOV R5,#248
       DJNZ R5,$
       DJNZ R6,D2
       DJNZ R7,D1
       RET
       END
所用单片机为AT89s51,晶振为12MHZ,一个指令周期为1us,时间的计算是怎样的,小弟对汇编不是很熟悉,

最新回复

keil上边调试的时候可以看看执行一次要多长时间  详情 回复 发表于 2010-1-27 19:16
点赞 关注

回复
举报

76

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
C语言的,自己测量一下就知道了,不好算

汇编的,可以数周期数,不过现在有时候会涉及到多种类型的核,还是测量一下可靠些.
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
楼主 有示波器吗?

自己想办法弄台示波器 进行精确测试下。

另外你可以通过示波器测试出1ms的延时程序,以后就调用它实现其他的延时。
 
 
 

回复

88

帖子

0

TA的资源

一粒金砂(初级)

4
 
汇编可以用指令周期 计算的
C是算不准的
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(高级)

5
 
要看这段c的汇编了,然后算周期了
这段代码有点问题哦!
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

6
 
?C0002:
; while(--i);//执行一次--i是多长时间?
                        ; SOURCE LINE # 10
        MOV          A,R7
        DEC          R7
        JNZ          ?C0005
        DEC          R6
?C0005:
        DEC          A
        ORL          A,R6
        JNZ          ?C0002
;
; }                         ; SOURCE LINE # 12
?C0004:
        RET         
; END OF _delay


大约8个周期吧··
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

7
 
经验告诉我们,这时候是示波器说了算!!

用你的延时程序写个方波的形成程序,之后看方波的周期
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

8
 
keil 上面不是有个计时器的啊 每条C语言的时间都有的 自己计算就可以了
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

9
 
仍以1秒延时为例
  DEL:MOV R7,#10 1指令周期1
  DEL1:MOV R6,#0FFH 1指令周期10
  DEL2:MOV R5,#80H 1指令周期255*10=2550
  KONG:NOP 1指令周期128*255*10=326400
  DJNZ R5,$ 2指令周期2*128*255*10=652800
  DJNZ R6,DEL2 2指令周期2*255*10=5110
  DJNZ R7,DEL1 2指令周期2*10=20
  RET 2
  延时时间=1+10+2550+326400+652800+5110+20+2 =986893?s约为1s
  整理得:延时时间=[(3*第一层循环+3)*第二层循环+3]*第三层循环+3 ⑩
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

10
 
c的软件延时不精确,不过可以软件算下,还是汇编的好!
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

11
 
keil上边调试的时候可以看看执行一次要多长时间
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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