延时的循环,怎么变成死循环!

[复制链接]
2733|4
 楼主| yangloong 发表于 2008-5-26 16:15 | 显示全部楼层 |阅读模式
    org 000h
main: 
      clr p1.0
    lcall delay
    setb p1.0
    lcall delay
    sjmp main

delay:mov r0,#20      ;延时1s子程序,使用参数r0,r7,r6.
delay0:mov r7,#100    
delay1:mov r6,#229      
      djnz  r6,$
      djnz r7,delay0
      djnz r0,delay1
      ret
     end

晶振是11.0592mhz,p1.0脚控制一个二极管亮灭。低电平时,二极管亮!
使用伟福e6000仿真,延时程序停留在
delay1:mov r6,#229      
      djnz  r6,$
这中间循环,出不来。这是怎么回事?
下载到单片机中去,二极管一直亮。
大家指点下,谢谢!
FOXFOX 发表于 2008-5-26 16:26 | 显示全部楼层

死的当然是死的

delay0:mov r7,#100    
delay1:mov r6,#229      
      djnz  r6,$
      djnz r7,delay0

R7 永远在99,100变化。
t.jm 发表于 2008-5-26 16:30 | 显示全部楼层

不死才怪.

delay:mov r0,#20      ;延时1s子程序,使用参数r0,r7,r6.
delay0:mov r7,#100    
delay1:mov r6,#229      
      djnz  r6,$
      djnz r7,delay0  -->djnz r7,delay1  
      djnz r0,delay1  -->djnz r0,delay0 
xinghan 发表于 2008-5-26 16:31 | 显示全部楼层

不能那么设

r7每次减了1跳到delay0,你又给它设成100了.

 楼主| yangloong 发表于 2008-5-26 19:04 | 显示全部楼层

谢谢了,没想到是这么小的问题

 向foxfox,t.jm,xinghan道声谢谢!
  这个程序是昨天写的,当时只是验证几个延时的程序,但烧录到单片机中去,这个灯一直在亮。以为是延时的时间太少,反复在计算指令周期。
  以后得更加细心,谢谢大家的指导!
  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

151

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部