📄 spwm_generate.asm
字号:
.title "spwm_generate.asm"
.include "lf2407_regs.h"
.include "pwm_generate_vec.h"
.def _cy_begin
.ref F$$ITOF, F$$DIV,F$$MUL
.ref F$$FTOI, F$$ADD, F$$LTOF,F$$SUB
.ref _sin
.data
Input_Temp .word 00h
Output_Temp .word 00h
ST0_CON1 .word 00h
ST1_CON1 .word 00h
STACK .usect "STACKS",40h
FCL .usect "data_PRM",1
FCH .usect "data_PRM",1
FRL .usect "data_PRM",1
FRH .usect "data_PRM",1
AL .usect "data_PRM",1
AH .usect "data_PRM",1
N .usect "data_PRM",1
NL .usect "data_PRM",1
NH .usect "data_PRM",1
I .usect "data_PRM",1
T3PR_TEMPL .usect "data_PRM",1
T3PR_TEMPH .usect "data_PRM",1
DATIOL .usect "data_PRM",1
DATIOH .usect "data_PRM",1
DFLAG .usect "data_PRM",1
.text
_cy_begin:
NOP
CALL system_init
CALL spwm_init
LDP #0
SPLK #2710h,FCL
SPLK #0h,FCH
SPLK #032h,FRL
SPLK #0,FRH
SPLK #3E8h,AL
SPLK #0,AH
SPLK #0,I
SPLK #1,DFLAG
CALL Calculate_Const
cy_LOOP:
LDP #0
BIT DFLAG,BIT0
BCND cy_LOOP,NTC
LACL DFLAG
AND #0FFFEh
SACL DFLAG
CALL Calculate_Ratio
B cy_LOOP
system_init:
SETC INTM
CLRC OVM
CLRC SXM
CLRC CNF
LDP #DP_PF1
SPLK #081FEh,SCSR1
SPLK #0E8h,WDCR
LDP #0
SPLK #0002h,IMR
SPLK #0FFFFh,IFR
RET
spwm_init:
LDP #DP_PF2
LACL MCRC
OR #007Eh
SACL MCRC
LACL MCRC
OR #400h
SACL MCRC
LDP #DP_EVB
SPLK #0FFFFh,EVBIFRA
SPLK #0FFFFh,EVBIFRB
SPLK #0FFFFh,EVBIFRC
SPLK #0666h,ACTRB
SPLK #0000h,DBTCONB
SPLK #32,CMPR4
SPLK #48,CMPR5
SPLK #64,CMPR6
SPLK #2399,T3PR
LDP #0
SPLK #2399,T3PR_TEMPL
SPLK #0,T3PR_TEMPH
LDP #DP_EVB
SPLK #0A600h,COMCONB
SPLK #0,T3CNT
SPLK #0041h,GPTCONB
SPLK #0080h,EVBIMRA
SPLK #0000h,EVBIMRB
SPLK #0BEh,T3CON
CLRC INTM
RET
Calculate_Const:
LDP #0
LACL AL
LRLK AR1,STACK
SETC SXM
CALL F$$ITOF,AR1
CLRC SXM
MAR *-
LACC *-,16
ADDS *
SACL AL
SACH AH
LRLK AR1,STACK
SETC SXM
LACL #0
SACL *+
LACL #44FAh
SACL *+
LACL AL
SACL *+
LACL AH
SACL *+
CALL F$$DIV
MAR *-
LACC *-,16
ADDS *
SACL AL
SACH AH
LACL T3PR_TEMPL
LRLK AR1,STACK
SETC SXM
CALL F$$ITOF,AR1
CLRC SXM
MAR *-
LACC *-,16
ADDS *
SACL T3PR_TEMPL
SACH T3PR_TEMPH
LACL FCL
LRLK AR1,STACK
SETC SXM
CALL F$$LTOF,AR1
CLRC SXM
MAR *-
LACC *-,16
ADDS *
SACL FCL
SACH FCH
LACL FRL
LRLK AR1,STACK
SETC SXM
CALL F$$ITOF,AR1
CLRC SXM
MAR *-
LACC *-,16
ADDS *
SACL FRL
SACH FRH
LRLK AR1,STACK
LACL FRL
SACL *+
LACL FRH
SACL *+
LACL FCL
SACL *+
LACL FCH
SACL *+
CALL F$$DIV
MAR *-
LACC *-,16
ADDS *
SACL NL
SACH NH
LRLK AR1,STACK
SETC SXM
SACL *+
SACH *+
CALL F$$FTOI
SACL N
LRLK AR1,STACK
SACL *+
LACL NH
SACL *+
LACL #0F5C3h
SACL *+
LACL #40C8H
SACL *+
CALL F$$DIV
MAR *-
LACC *-,16
ADDS *
SACL NL
SACH NH
RET
Calculate_Ratio:
LDP #0
LACL I
LRLK AR1,STACK
SETC SXM
CALL F$$ITOF,AR1
CLRC SXM
MAR *-
LACC *-,16
ADDS *
LRLK AR1,STACK
SACL *+
SACH *+
LACL NL
SACL *+
LACL NH
SACL *+
CALL F$$MUL
MAR *-
ZALH *-
ADDS *
LRLK AR1,STACK
SACL *+
SACH *+
CALL _sin
LRLK AR1,STACK
SACL *+
SACH *+
LACL AL
SACL *+
LACL AH
SACL *+
CALL F$$MUL
MAR *-
ZALH *-
ADDS *
LRLK AR1,STACK
SACL *+
SACH *+
LACL #0
SACL *+
LACL #3F00h
SACL *+
CALL F$$ADD
MAR *-
ZALH *-
ADDS *
LRLK AR1,STACK
SACL *+
SACH *+
LACL T3PR_TEMPL
SACL *+
CALL F$$MUL
MAR *-
ZALH *-
ADDS *
LRLK AR1,STACK
SETC SXM
SACL *+
SACH *+
CALL F$$FTOI,AR1
CLRC SXM
SACL DATIOL
LDP #0
LACC I
SUB N
BCND NSPWM,GEQ
LACC I
ADD #1
SACL I
B cy_RET
NSPWM:SPLK #0,I
cy_RET:RET
GISR2: SST #0,ST0_CON1
SST #1,ST1_CON1
LDP #DP_PF1
LACC PIVR,1
ADD #PVECTORS
BACC
T3GP_ISR:LDP #0
LACC DFLAG
OR #1
SACL DFLAG
LACL DATIOL
LDP #DP_EVB
SACL CMPR4
ADD #50
SACL CMPR5
ADD #50
SACL CMPR6
LDP #0
LST #1,ST1_CON1
LST #0,ST0_CON1
LDP #DP_EVB
SPLK #0FFFFh,EVBIFRA
SPLK #0FFFFh,EVBIFRB
SPLK #0FFFFh,EVBIFRC
CLRC INTM
RET
PHANTOM:LDP #DP_PF1
SPLK #05555h,WDKEY
SPLK #0AAAAh,WDKEY
RET
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -