min 发表于 2012-8-18 18:09:37

[求助]求教各位高手两个延时程序的算法

有两个延时程序不是很懂,望各位高手指教下,最好能给出每一步的具体算法过程:

第一个:
JSQ      EQU          20H
             MOVLW   100
             MOVWF   JSQ
LOOP   DECFSZ   JSQ, 1
             GOTO      LOOP
             RETURN

第二个:
    JSQ    EQU   20H
    JSQ1   EQU   21H
            MOVLW   100
            MOVWF    JSQ
   LOOPMOVLW    16
            MOVWF   JSQ1
   LOOP1   DECFSZ   JSQ1,1
               GOTO   LOOP1
                DECFSZ    JSQ,1
               GOTO   LOOP
            RETURN
各位高手麻烦下了,谢了,记得给出具体计算方法哦~~

star 发表于 2012-8-20 09:58:55

应该是这样的

JSQ      EQU          20H

             MOVLW   100

             MOVWF   JSQ

LOOP   DECFSZ   JSQ, 1

             GOTO      LOOP

             RETURN





先假设你的机器周期为 1US

movlw 是 1个机器周期

decfsz 是 1-2个机器周期

goto是 2个机器周期



时间为 1+2 +(1+2)*99 +2 =302 US





第二个:

    JSQ    EQU   20H

    JSQ1   EQU   21H

            MOVLW   100

            MOVWF    JSQ

   LOOPMOVLW    16

            MOVWF   JSQ1

   LOOP1   DECFSZ   JSQ1,1

               GOTO   LOOP1

                DECFSZ    JSQ,1

               GOTO   LOOP

            RETURN



同样的道理

先计算 LOOP1的时间



((1+2)*15+3+3)*99+3+1 = 5052

页: [1]
查看完整版本: [求助]求教各位高手两个延时程序的算法