📄 box_car.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 + -