萬用電路板

个人兴趣爱好交流空间

« 音乐分享:北京欢迎你单片机温度检测课程设计和步进电机课程设计下载 »

单片机汇编延时程序分析

        计算机反复执行一段程序以达到延时的目的称为软件延时,单片机程序中经常需要短时间的延时,但是相当一部分人对延时程序很模糊,对延时程序的算法不够了解,在这里我以12MHz晶振和两个经典延时子程序为例,详细分析单片机汇编延时程序。

何为时钟周期、机器周期、和指令周期?
时钟周期:也就是振荡周期,以12MHz的时钟脉冲为例,那时钟周期就为(1/12000000)s=(1/12)us;
机器周期:1个机器周期=6个状态周期=12个时钟周期=1us;
指令周期:CPU执行一条指令所需要的时间称为指令周期,指令周期是以机器周期为单位的,不同的指令所需的机器周期不一定相同,可参考51单片机指令速查表

        由上可得:CPU执行一条单周期指令,需要1us;执行一条双周期指令需要2us。

        下面是具体的延时子程序分析:

0.1s延时子程序(12MHz晶振):
           MOV  R7,#200   ;单周期指令(1us)
D1:     MOV  R6,#250   ;单周期指令(1us)
           DJNZ R6,$      ;双周期指令(2us)//该指令自身执行R6次
           DJNZ R7,D1     ;双周期指令(2us)//D1执行R7次
           RET            ;双周期指令(2us)

T=1+(1+2*R6+2)*R7+2
   =100603us
   ≈0.1s

0.5s延时子程序(12MHz晶振):
           MOV  R7,#5     ;单周期指令(1us)
D1:     MOV  R6,#200   ;单周期指令(1us)
D2:     MOV  R5,#250   ;单周期指令(1us
           DJNZ R5,$      ;双周期指令(2us)//该指令自身执行R5次
           DJNZ R6,D2     ;双周期指令(2us)//D2执行R6次
           DJNZ R7,D1     ;双周期指令(2us)//D1执行R7次
           RET            ;双周期指令(2us)

T=1+[1+(1+2*R5+2)*R6+2]*R7+2
   =503018us
   ≈0.5s 

原创文章如转载,请注明:转载自萬用電路板 [ http://www.jiangx.net/ ]

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

有用链接

最近发表

热文排行

最新评论及回复

图标汇集

  • 留言板
  • 订阅本站的 ATOM 1.0 新闻聚合
  • 订阅本站的 RSS 2.0 新闻聚合

Powered By Z-Blog 1.8

Copyright 2008 JiangX.net 萬用電路板 All Rights Reserved.
鄂ICP备08003060号 [login]