TI中文支持网
TI专业的中文技术问题搜集分享网站

关于DSP2833x_usDelay.asm延时程序的问题

.def _DSP28x_usDelay
.sect "ramfuncs"

.global __DSP28x_usDelay
_DSP28x_usDelay:
SUB ACC,#1
BF _DSP28x_usDelay,GEQ ;; Loop if ACC >= 0
LRETR

;There is a 9/10 cycle overhead and each loop
;takes five cycles. The LoopCount is given by
;the following formula:
; DELAY_CPU_CYCLES = 9 + 5*LoopCount
; LoopCount = (DELAY_CPU_CYCLES – 9) / 5
; The macro DELAY_US(A) performs this calculation for you

在这个延迟程序中ACC的值是从C程序中传递的unsigned long cnt值。请问一下DELAY_CPU_CYCLES = 9 + 5*LoopCount这个公式是什么作用?CPU的周期=9+5*循环次数? unsigned long cnt这个值不是循环的次数? 不是很明白。麻烦解释一下谢谢!
;

JLDN:

回复 Martin Yu:

你好!麻烦了谢谢! 

请问 9是调用函数进入的时间指的是在C语言中调用DELAY_US(A)函数,然后转到宏定义进入汇编程序的时间? 

5是每个循环花费的时间这个指的是汇编程序循环一次要5是吗?

((long double) A * 1000.0L) / (long double)CPU_RATE) = DELAY_CPU_CYCLES是?

赞(0)
未经允许不得转载:TI中文支持网 » 关于DSP2833x_usDelay.asm延时程序的问题
分享到: 更多 (0)