dsp281x_usdelay.asm

来自「由MATLAB生成的PWM的源代码」· 汇编 代码 · 共 73 行

ASM
73
字号
;//###########################################################################;//;// 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 + =
减小字号Ctrl + -
显示快捷键?