📄 dsp281x_usdelay.asm
字号:
;//###########################################################################;//;// FILE: DSP281x_usDelay.asm;//;// TITLE: Simple delay function;//;// DESCRIPTION:;// ;// This is a simple delay function that can be used to insert a specified;// delay into code. ;// ;// This function is only accurate if executed from internal zero-waitstate;// SARAM. If it is executed from waitstate memory then the delay will be;// longer then specified. ;// ;// To use this function:;//;// 1 - update the CPU clock speed in the DSP281x_Examples.h;// file. For example:;// #define CPU_CLOCK_SPEED 6.6667L // for a 150MHz CPU clock speed;//;// 2 - Call this function by using the DELAY_US(A) macro;// that is defined in the DSP28_Device.h file. This macro;// will convert the number of microseconds specified;// into a loop count for use with this function. ;// This count will be based on the CPU frequency you specify.;//;// 3 - For the most accurate delay ;// - Execute this function in 0 waitstate RAM. ;// - Disable interrupts before calling the function;// If you do not disable interrupts, then think of;// this as an "at least" delay function as the actual;// delay may be longer. ;//;// The C assembly call from the DELAY_US(time) macro will;// look as follows: ;//;// extern void Delay(long LoopCount); ;//;// MOV AL,#LowLoopCount;// MOV AH,#HighLoopCount;// LCR _Delay;//;// Or as follows (if count is less then 16-bits):;//;// MOV ACC,#LoopCount;// LCR _Delay;//;//;//###########################################################################;//;// Ver | dd mmm yyyy | Who | Description of changes;// =====|=============|======|===============================================;// 1.00| 11 Sep 2003 | L.H. | No changes since v.58;//########################################################################### .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;==================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -