.def _DSP28x_usDelay
.sect "ramfuncs"
.global __DSP28x_usDelay
_DSP28x_usDelay:
SUB ACC,#1
BF _DSP28x_usDelay,GEQ ;; Loop if ACC >= 0
LRETR
.def _DSP28x_usDelay 定义一个名字是“_DSP28x_usDelay ”的函数
.sect "ramfuncs" 设置这个函数所存放的段
.global __DSP28x_usDelay 表明此函数可以为外部函数等所调用
_DSP28x_usDelay: 函数名,函数实体的开始
SUB ACC,#1 ;计数器减一,以完成延时功能
BF _DSP28x_usDelay,GEQ ;; Loop if ACC >= 0(如果ACC减到小于零了就停止)
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