登录 免费注册 首页 | 行业黑名单 | 帮助
维库电子市场网
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统
驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe

为何在这里进入死循环?

作者:dmcz 栏目:单片机
为何在这里进入死循环?
START
      BSF  STATUS,RP0
      MOVLW  B'00000110'     ;B口设置
      TRIS  6
      MOVLW  B'11111111'     ;A口全输出
      TRIS  5
      BCF  STATUS,RP0
      MOVLW  B'00001000'
      MOVWF  6
      MOVLW  D'2'
      MOVWF  27H
LOOP
      CALL  DELAY
      MOVLW  B'00011001'
      MOVWF  6
      CALL  ADLOOP18
      BCF  PORTB,4
      NOP
      BCF  PORTB,0
      SUBWF  24H,1
      BTFSS  STATUS,0
      GOTO  LOOP
      DECFSZ  27H,1              ;这个循环还正常!(2次)
      GOTO  LOOP
      BCF  PORTB,3
      MOVLW  D'4'
      MOVWF  27H
LOOP1                    ;为何在这里进入死循环?
      CALL  DELAY        ; 本应循环四次的啊!?
      DECFSZ  27H,1      ;是不是与调用的延时
      GOTO  LOOP1        ;子程序DEALY有关?
      BSF  PORTB,6
      CALL  DELAY50
      BCF  PORTB,6
      MOVLW  D'4'
      MOVWF  27H
LOOP2
      CALL  DELAY
      DECFSZ  27H,1
      GOTO  LOOP2
      BSF  PORTB,5
      CALL  DELAY50
      BCF  PORTB,5
      NOP
      BSF  PORTB,3
      MOVLW  D'2'
      MOVWF  27H
DELAY
      CLRW
      CLRF  20H
      CLRF  21H
      CLRF  22H
      MOVLW  D'144'
      MOVWF  20H

D1
      MOVLW  D'100'
      MOVWF  21H

D2
      MOVLW  D'16'
      MOVWF  22H

D3
      DECFSZ  22,1
      GOTO  D3
      DECFSZ  21,1
      GOTO  D2
      NOP
      NOP
      NOP
      NOP
      NOP
      NOP
      NOP
      DECFSZ  20,1
      GOTO  D1
      RETURN
ADLOOP18
      BCF  INTCON,GIE
      BSF  PORTB,7
      CLRF  23H
      CLRF  24H
      BSF  STATUS,RP0
      MOVLW  B'00000001'
      MOVWF  ADCON1
      BCF  STATUS,RP0
      MOVLW  B'11001001'
      MOVWF  ADCON0
      CALL  DELAYCY
      BSF    ADCON0,2
WAIT2
      BTFSC  ADCON0,2
      GOTO   WAIT2
      NOP
      MOVF  ADRES,W
      MOVWF  24H
      BSF  STATUS,RP0
      MOVLW  B'00000001'
      MOVWF  ADCON1
      BCF  STATUS,RP0
      MOVLW  B'11010001'
      MOVWF  ADCON0       ;1脚A/D开
      CALL  DELAYCY
      BSF    ADCON0,2
WAIT3
      BTFSC  ADCON0,2
      GOTO   WAIT3
      NOP
      MOVF  ADRES,W
      BCF  PORTB,7
      RETURN
DELAYCY
        MOVLW  02H
        MOVWF  2A
SD1
        DECFSZ 2A,1
        GOTO   SD1
        RETURN

* - 本贴最后修改时间:2004-1-4 2:30:59 修改者:dmcz

2楼: >>参与讨论
dmcz
鸡毛加急!!
DELAY可能真的有问题!强行跳出那个死循环,在后来调用DELAY就不止是0.75秒了,可能是0.75年!咋的了?

3楼: >>参与讨论
Richey
watchdog???
 
4楼: >>参与讨论
wfl1979
看门狗指令放错位置了,要不再多加一两个clr wdt指令
 
参与讨论
昵称:
讨论内容:
 
 
相关帖子
求救!斑主你好,我用的是P16F872,它经常复位不正常,但程序偶尔也可以跑起来?
求救!
pic中对悬空的引脚进行AD变换,结果应该如何?
怎么了?这么小的程序都有错?是不是MPLAB的仿真软件有问题?
请教大家了,我真的没折了
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入


Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号