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

📄 spwm_generate.asm

📁 实现SPWM波形控制电机变频
💻 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 + -