⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 box_car.asm

📁 TI公司24X系列DSP控制永磁同步电机PMSM
💻 ASM
字号:
;===========================================================================
; File Name:	box_car.asm
;
; Module Name: 	BC_CALC  	         
;
; Initialization Routine: BC_INIT
;
; Originator:	Digital Control Systems Group
;			Texas Instruments
;
; Description:	
;
;		|~~~~~~~~~~~~~~~~~|
;               |                 |
;  BC_IN o----> |   BC_CALC       |----->o  BC_OUT
;		|                 |
;		|_________________|
;
;
;=====================================================================================
; History:
;-------------------------------------------------------------------------------------
; 9-15-2000	Release	Rev 1.00
;===========================================================================
;(To use this Module, copy this section to main system file)
;		.ref	BC_INIT,BC_CALC		;function call
;		.ref	BC_IN,BC_OUT		;Inputs/Outputs
;===========================================================================
                .def	BC_CALC                 ;function call
                .def	BC_IN                   ;Inputs
                .def	BC_OUT                  ;Outputs
                .def    BC_PTR                  ;history
                .def    BC_INIT
       	       
;===========================================================================
		.include 	"x24x_app.h"  

	
BC_IN		.usect	"bc"	,1
BC_OUT		.usect	"bc"	,1
BC_PTR		.usect	"bc"	,1
bc_scaler 	.usect	"bc"	,1
GPR  		.usect	"bc"	,1

                       
        	;Local vars

BC_SIZE         .set    64
BC_SCALER       .set    4000h
BC_BUFFER       .usect "far_mem",BC_SIZE

;=================================================================================
BC_INIT:
;=================================================================================
  
 		LDP	#BC_BUFFER
                LAR     AR2,#BC_BUFFER          ; point AR2 to buffer
                LACC    #0                      ; zero
                MAR     *,AR2                   ; ARP=AR2
                RPT     #(BC_SIZE-1)            ; clear Buffer
                SACL    *+

                LACC    #0
                SACL    BC_PTR                  ; set up buffer ptr offset

                SPLK    #BC_SCALER,bc_scaler
    	                   

        	RET

;=================================================================================
BC_CALC:
;=================================================================================
 
		LDP	#GPR
                MAR     *,AR2                   ; ARP=AR2
                LACC    BC_PTR                  ; load offset
                ADD     #BC_BUFFER
                SACL    GPR
                LAR     AR2,GPR
                LACL    BC_IN                   ; get newest element
                SACL    *                       ; overwrite oldest element
                LACL    BC_PTR  
                ADD     #0001h                  ; incr pointer
                AND     #003fh
                SACL    BC_PTR                  ; store incremented ptr offset.
                LACL    #0
                LAR     AR2,#BC_BUFFER          ; point to buffer start.
                SETC    SXM
                RPT     #(BC_SIZE-1)                     
                ADD     *+                      ; compute sum
                SFR
                SFR
                SFR
                SFR
                SFR                             ; #of SFR's is log2(BC_SIZE)
                SACL    BC_OUT                  ; generate output.
		lt	BC_OUT  		;input speed command (in RPM)
                spm     1
                mpy	bc_scaler
                pac 	
                sach	BC_OUT


                MAR     *,AR1                   ; restore ARP                

 
                RET

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -