如何计算延时函数时间?

2020-02-09 09:38发布

外部4M晶振
void delay()
{
  unsigned int k;
  for(k=0;k<6000;k++);
}
是多长时间?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
JQ_Lin
2020-02-10 01:53
; ....................................................................................................
; ★1ms基准延时,倍增调用。                                 (041024建立)(090901更新)(100926更新)

dly_1ms:                    ; 单次调用入口,倍数置1,包括调用和返回 1ms + 1us。
        movlw    .1
dlyx1ms:                    ; 倍增调用入口,倍数已在W,包括调用和返回 1ms x DELAY_T。
        movwf    DELAY_T
        goto     to_5us
loop1ms:                    ; 每个循环 1ms。
        nop
        nop
        nop
        nop
        nop
        nop
to_5us:
        movlw    d'198'
        movwf    TEMP1
loop990:
        nop
        nop
        decfsz   TEMP1,1
        goto     loop990
        decfsz   DELAY_T,1
        goto     loop1ms
        return

; loop_1ms循环                           [8 +(2+1+2)x198 -1 +3]                = 1000us
; dly_1ms 单次调用入口          -6 +2+4 +[8 +(2+1+2)x198 -1 +3]x DELAY_T -1 +2 = 1000us x DELAY_T + 1us
; dlyx1ms 倍增调用入口          -6 +2+3 +[8 +(2+1+2)x198 -1 +3]x DELAY_T -1 +2 = 1000us x DELAY_T

一周热门 更多>