📄 c7_4_1.asm
字号:
.title "spwm_generate.asm"
.include "lf2407_regs.h"
.include "spwm_generate_vec.asm"
.ref F$$ITOF,F$$DIV,F$$MUL,F$$FTOI,F$$ADD,F$$LTOF,F$$SUB
.ref _sin
.def _cy_begin
.data
Input_Temp .word 00h
Output_Temp .word 00h
ST0_CON1 .word 00h
ST1_CON1 .word 00h
STACK .usect "STACKS",100h
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 SYSINIT
CALL PWM_INIT
LDP #5
SPLK #2710H,FCL
SPLK #0,FCH
SPLK #032H,FRL
SPLK #0,FRH
SPLK #3E8H,AL
SPLK #0,AH
SPLK #0,I
SPLK #1,DFLAG
CALL JISUAN
LOOP:
LDP #5
BIT DFLAG,BIT0
BCND LOOP,NTC
LACL DFLAG
AND #0FFFEH
SACL DFLAG
CALL DATIO
B LOOP
;(3)系统初始化程序
SYSINIT:
SETC INTM
CLRC CNF
LDP #0
SPLK #02h,IMR
SPLK #0FFFFh,IFR
LDP #DP_PF1
SPLK #0E8h,WDCR
LDP #00E0H
SPLK #81FEH,SCSR1
RET
;(4)EVB模块的PWM初始化程序
PWM_INIT:
LDP #DP_PF2
LACL MCRA
OR #07EH
SACL MCRC
LACL MCRC
OR #600h
SACL MCRC
LDP #DP_EVB
SPLK #0FFFFh,EVBIFRA
SPLK #0555h,ACTRB
SPLK #00h,DBTCONB
SPLK #1fh,CMPR4
SPLK #2Fh,CMPR5
SPLK #3fh,CMPR6
SPLK #0960h,T3PR
LDP #5
SPLK #0960h,T3PR_TEMPL
SPLK #0,T3PR_TEMPH
LDP #DP_EVB
SPLK #0A600h,COMCONB
SPLK 0,T3CNT
SPLK #41h,GPTCONB
SPLK #080h,EVBIMRA
SPLK #0000101101001110b,T3CON
CLRC INTM
RET
JISUAN: LDP #5
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
DATIO:
LDP #5
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 *+
LACL T3PR_TEMPH
SACL *+
CALL F$$MUL
MAR *-
ZALH *-
ADDS *
LRLK AR1,STACK
SETC SXM
SACL *+
SACH *+
CALL F$$FTOI,AR1
CLRC SXM
SACL DATIOL
LDP #5
LACC I
SUB N
BCND NSPWM,GEQ
LACC I
ADD #1
SACL I
B RRET
NSPWM: SPLK #0,I
RRET: RET
GISR2:
SST #0,ST0_CON1
SST #1,ST1_CON1
LDP #0E0h
LACC PIVR,1
ADD #PVECTORS
BACC
T3GP_ISR:
LDP #5
LACC DFLAG
OR #1
SACL DFLAG
LACL DATIOL
LDP #DP_EVB
SACL CMPR4
ADD #32H
SACL CMPR5
ADD #32H
SACL CMPR6
LDP #0
LST #1,ST1_CON1
LST #0,ST0_CON1
LDP #DP_EVB
SPLK #0FFFFH,EVBIFRA
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 + -