SVPWM算法的DSP源码已通过硬件验证

源代码在线查看: delayus.asm

软件大小: 1142 K
上传用户: a22aa11a
关键词: SVPWM DSP 算法 源码
下载地址: 免注册下载 普通下载 VIP

相关代码

				
				**********************************************************************
				* File: DelayUs.asm                                                  *
				* Devices: TMS320F2808, TMS320F2806, TMS320F2801                     *
				* Author: David M. Alter, Texas Instruments Inc.                     *
				* History:                                                           *
				*   11/13/05 - added save/restore of ST1 to preserve EALLOW setting  *
				*              (D. Alter)                                            *
				*   05/02/05 - added watchdog servicing in outer loop (D. Alter)     *
				*   02/11/05 - original (D. Alter)                                   *
				**********************************************************************
				
				WDKEY	.set	0x7025
				
				**********************************************************************
				* Function: DelayUs()                                                *
				* Description: Implements a time delay.                              *
				* DSP: TMS320F2808, TMS320F2806, TMS320F2801                         *
				* Last Modified: 05/02/05                                            *
				* Include files: none                                                *
				* Function Prototype: void DelayUs(unsigned int)                     *
				* Useage: DelayUs(Usec);                                             *
				* Input Parameters: unsigned int Usec = time delay in microseconds   *
				* Return Value: none                                                 *
				* Notes:                                                             *
				*   1) The execution time of this routine is based upon a 100 MHz    *
				*      CPUCLK.  It also assumes that the function executes out of    *
				*      internal RAM.  If executing out of internal flash, the        *
				*      execution speed will be slightly slower.  However, the inner  *
				*      loop of this function is essentially invariant to the memory  *
				*      it is running in.  Therefore, even when running in flash      *
				*      memory, the basic loop time will be only slightly longer than *
				*      1 us.                                                         *
				*                                                                    *
				*   2) The outer loop of this function is interruptible (i.e., every *
				*      1 us).  The user should disable interrupts before calling the *
				*      function if they need an exact delay time, as opposed to a    *
				*      minimum delay time.                                           *
				*                                                                    *
				**********************************************************************
				       .def _DelayUs
				       .text
				
				_DelayUs:
				        MOVB AH, #0                   ;Zero AH
				        PUSH ST1                      ;Save ST1 to preserve EALLOW setting
				
				DelayUs1:                             ;Outer loop
				
				;Service the watchdog in case it is active
				        EALLOW
				        MOVZ DP, #(WDKEY>>6)
				        MOV @WDKEY, #0x0055
				        MOV @WDKEY, #0x00AA
				        EDIS
				
				;Proceed with the inner loop
				        RPT #88                       ;Inner loop
				     || NOP
				
				        SUBB ACC,#1                   ;Decrement outer loop counter
				        BF DelayUs1, GT               ;Branch for outer loop
				
				;Finish up
				        POP ST1                       ;Restore ST1
				        LRETR                         ;Return
				
				;end of function DelayUs() ******************************************
				
				
				;end of file DelayUs.asm
				       .end
							

相关资源