📄 volt_freq.asm
字号:
;--------------------------------
;function name: void volt_freq(vhz_volt_struct *p, unsigned int freq);
;typedef struct
; { unsigned int slope; Q12, slope between voltage and frequence
; int uout; Q12, return of function
; }vhz_volt_struct;
.def _volt_freq
.global _volt_freq
freqmin .set 1111h ; minimum frequence, below which uout equate to umin, 20Hz
freqmax .set 3333h ; 60hz :电机额定频率(2^16*额定频率(60HZ)/200=3333h)maximum frequence, above which uout equate to umax,60Hz
;freqmax .set 2AAAh ; 50hz maximum frequence, above which uout equate to umax, 50Hz
;freqmax .set 3BBBh ; 70hz maximum frequence, above which uout equate to umax, 70Hz
;umin .set 492h ; 70hz freqmin*umax/freqmax=umin最小频率对应的输出电压 minimum uout
;umin .set 666h ; 50hz freqmin*umax/freqmax=umin最小频率对应的输出电压 minimum uout
umin .set 555h ; 60hz freqmin*umax/freqmax=umin最小频率对应的输出电压 minimum uout
umax .set 01000h ; maximum uout 额定电压的标么值
_volt_freq_frame .set 1 ; size of local frame
_volt_freq
POPD *+
SAR AR0,*+
SAR AR1,*
LAR AR0,#_volt_freq_frame
LAR AR0,*0+,AR0
LAR AR2,*,AR2 ;C compatible
;STACK:freq/ *p/address/AR0/AR1
;ARP:AR2, AR0:AR1, AR2:AR1
CLRC SXM
SBRK #3 ;AR2:*P
LAR AR3,*- ;ARP:AR2, AR0:AR1, AR2:freq, AR3:slope
LACC #freqmin ;freqmin-->ACC
SUBS *
BCND lowfreq,GEQ
LACC #freqmax ;freqmax-->ACC
SUBS *
BCND highfreq,LEQ
LT *,AR3
MPYU *+ ;frequence multiply slope
PAC
SACH *,4,AR1 ;ARP:AR1
;uout=slope*freq
B volt_freq_end
lowfreq
MAR *,AR3 ;ARP:AR3, AR3:slope
ADRK #1 ;AR3:uout
SPLK #umin,*,AR1 ;uout=umin
;ARP:AR1
B volt_freq_end
highfreq
MAR *,AR3 ;ARP:AR3, AR3:slope
ADRK #1 ;ARP:uout
SPLK #umax,*,AR1 ;uout=umax
volt_freq_end
SBRK #_volt_freq_frame+1
LAR AR0,*- ;C compatible
PSHD *
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -