6363|5

285

帖子

3721

TA的资源

五彩晶圆(中级)

楼主
 

各种延时程序集合(汇编) [复制链接]

在网上看到的不错的整理,与大家分享下~~

转自51单片机学习网论坛 xiaorunyi


现将把我所遇到的各种比较准确的延时程序贴出来,供大家参考.
也欢迎各位同学把自己遇到的比较好的程序模块,以这种方式贴出来,供大家在以后编程时作参考!
(最好清楚的注解)

[ 本帖最后由 gina 于 2009-6-1 14:59 编辑 ]
此帖出自单片机论坛
点赞 关注
 

回复
举报

285

帖子

3721

TA的资源

五彩晶圆(中级)

沙发
 
;延时5秒左右
DELAY5S:PUSH   04H                 
        PUSH   05H            
        PUSH   06H                 
        MOV    R4,#50              
DELAY5S_0:MOV  R5,#200                              
DELAY5S_1:MOV  R6,#245                              
        DJNZ   R6,$                          
        DJNZ   R5,DELAY5S_1
        DJNZ   R4,DELAY5S_0                          
        POP    06H                  
        POP    05H                  
        POP    04H                  
        RET                                          

;513微秒延时程序
DELAY:  MOV     R2,#0FEH
DELAY1: DJNZ    R2,DELAY1
RET
;10毫秒延时程序
DL10MS: MOV     R3,#14H
DL10MS1:LCALL   DELAY
        DJNZ    R3,DL10MS1
        RET
;0.1s延时程序12mhz
DELAY: MOV R6,#250
DL1: MOV R7,#200
DL2: DJNZ R6,DL2
DJNZ R7,DL1
RET
;延时1046549微秒(12mhz)
;具体的计算公式是:
;((((r7*2+1)+2)*r6+1)+2)*r5+1+4 = ((r7*2+3)*r6+3)
*r5+5
DEL : MOV  R5,#08H
DEL1: MOV  R6,#0FFH
DEL2: MOV  R7,#0FFH
        DJNZ  R7,$
        DJNZ  R6,DEL2
        DJNZ  R5,DEL1
        RET
;1秒延时子程序是以12MHz晶振
Delay1S:mov  r1,#50
del0:  mov r2,#91
del1:   mov r3,#100  
        djnz r3,$  
        djnz r2,del1  
        djnz r1,del0
   Ret
;1秒延时子程序是以12MHz晶振为例算指令周期耗时
KK: MOV    R5,#10    ;1指令周期1
K1: MOV    R6,#0FFH    ;1指令周期10
K2: MOV    R7,#80H    ;1指令周期256*10=2560
K3: NOP         ;1指令周期
128*256*10=327680
DJNZ    R7,K3    ;2指令周期
2*128*256*10=655360
DJNZ    R6,K2    ;2指令周期
2*256*10=5120
DJNZ    R5,K1    ;2指令周期2*10=20
RET      
;2指令周期21+10+2560+327680+655360+5120+20+2=990753
;约等于1秒1秒=1000000微秒

[ 本帖最后由 gina 于 2009-6-1 14:55 编辑 ]
此帖出自单片机论坛
 
 

回复

285

帖子

3721

TA的资源

五彩晶圆(中级)

板凳
 
;这个算下来也只有0.998抄
T_0:  MOV   R7,#10;
D1:  MOV   R6,#200;
D2:  MOV   R5,#248;
  DJNZ   R5,$
  DJNZ   R6,D2;
  DJNZ   R7,D1;
  RET
;这样算下来应该是1.000011秒
T_0:  MOV   R7,#10;
D1:  MOV   R6,#200;
D2:  NOP
  MOV   R5,#248;
  DJNZ   R5,$
  DJNZ   R6,D2;
  DJNZ   R7,D1;
  RET
DELAY_2S:   ;10MS(11.0592mhz)
MOV R3,#200
JMP DELAY10MS
DELAY_100MS:    ;100MS(11.0592mhz)
MOV R3,#10
JMP DELAY10MS
DELAY_10MS:
MOV R3,#1
DELAY10MS:    ;去抖动10MS
(11.0592mhz)
MOV R4,#20
DELAY10MSA:
MOV R5,#247
DJNZ R5,$
DJNZ R4,DELAY10MSA
DJNZ R3,DELAY10MS
RET
  
DELAY_500MS:                    ;500500MS
MOV R2,#208
JMP DELAY_MS
DELAY_175MS:   ;175MS
MOV R2,#73
JMP DELAY_MS
delaY_120MS:   ;120MS
MOV R2,#50
JMP DELAY_MS
delay_60ms:   ;60ms
MOV R2,#25
JMP DELAY_MS
delay_30ms:   ;30ms
MOV R2,#12
JMP DELAY_MS
DELAY_5MS:   ;5MS
MOV R2,#2
;===================================
DELAY_MS:
CALL DELAY2400
DJNZ R2,DELAY_MS
RET
;===================================
DELAY2400:   ;10x244+4=2447
/1.024=2390
MOV  R0,#244  ;1
DELAY24001:
MUL AB  ;4
MUL AB  ;4
DJNZ R0,DELAY24001 ;2
RET
DELAY: ;延时子程序(1秒)
MOV R0,#0AH
DELAY1: MOV R1,#00H
DELAY2: MOV R2,#0B2H
DJNZ R2,$
DJNZ R1,DELAY2
DJNZ R0,DELAY1
RET

MOV R2,#10 ;延时1秒
LCALL DELAY
MOV R2,#50 ;延时5秒
LCALL DELAY
DELAY: ;延时子程序
PUSH R2
PUSH R1
PUSH R0
DELAY1: MOV R1,#00H
DELAY2: MOV R0,#0B2H
DJNZ R0,$
DJNZ R1,DELAY2 ;延时 100 mS
DJNZ R2,DELAY1
POP R0
POP R1
POP R2
RET
此帖出自单片机论坛
 
 
 

回复

285

帖子

3721

TA的资源

五彩晶圆(中级)

4
 
(转贴)精确廷时计算公式:
延时时间=[(2*第一层循环+3)*第二层循环+3]*第三层循环+5
此帖出自单片机论坛
 
 
 

回复

285

帖子

3721

TA的资源

五彩晶圆(中级)

5
 
下面是QQ群中的关于延时的计算方法:
1:DEL:   MOV   R7,   #200
           DEL1:   MOV   R6,   #123
                        NOP
           DEL2:   DJNZ   R6,   DEL2
                        DJNZ   R7,   DEL1
                        RET
是50.001ms 算法是:
0.001ms+200*0.001ms+200*0.001ms+200*123*0.002ms+200*0.002ms
;(123*2+4)*200+1
2: DEL: MOV R7, #200
DEL1: MOV R6, #123
DEL2:NOP
      DJNZ R6,DEL2
      DJNZ R7,DEL1
RET

是74.401ms 算法是:
0.001ms+200*0.001ms+200*0.001ms*123+200*123*0.002ms+200*0.002ms
;((1+2)*123+3)*200+1
此帖出自单片机论坛
 
 
 

回复

285

帖子

3721

TA的资源

五彩晶圆(中级)

6
 
再发个:
D500MS:
PUSH PSW
SETB RS0
MOV R7,#200
D51: MOV R6,#250
D52: NOP
NOP
NOP
NOP
DJNZ R6,D52
DJNZ R7,D51
POP PSW
RET
此帖出自单片机论坛
 
 
 

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

查找数据手册?

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
快速回复 返回顶部 返回列表