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

📄 spwm.asm

📁 dsp 2407的三相逆变器汇编源程序
💻 ASM
📖 第 1 页 / 共 2 页
字号:
              SACL    TEMP1             ;保存, Q14格式
              clrc  sxm                 ;
              LT       T_HALF           ;T_carr/2=1000,Q0格式
              MPYU     TEMP1
              PAC
              SACH    TEMP1,2           ;相当于右移14位,保存为Q0格式       
              
            LACC    #SIN_ENTRY          ;SIN表入口地址
              ADD     TEMP2             ;偏移量
              TBLR    TEMP2             ;保存第2个SIN值,Q14格式有符号数
              setc    sxm    
              LT       TEMP2
              MPY     M_                ;乘M,Q9格式
              PAC                       ;Q23格式
              SACH    TEMP2,7           ;相当于右移9位,Q14格式有符号数
              LACC    TEMP2
              ADD     #1,14             ;加+1
              SACL    TEMP2             ;保存, Q14格式
              clrc    sxm                             
              LT      T_HALF            ;T_carr/2=1000,Q0格式
              MPYU    TEMP2
              PAC
              SACH    TEMP2,2           ;相当于右移14位,保存为Q0格式
              
            LACC    #SIN_ENTRY          ;SIN表入口地址
              ADD     TEMP3             ;偏移量
              TBLR    TEMP3             ;保存第3个SIN值,Q14格式有符号数 
              setc    sxm     
              LT      TEMP3
              MPY     M_                ;乘M,Q9格式
              PAC                       ;Q23格式
              SACH    TEMP3,7           ;相当于右移9位,Q14格式有符号数
              LACC    TEMP3
              ADD     #1,14             ;加+1
              SACL    TEMP3             ;保存, Q14格式
              clrc    sxm 
              LT       T_HALF           ;T_carr/2=1000,Q0格式
              MPYU    TEMP3
              PAC
              SACH    TEMP3,2           ;相当于右移14位,保存为Q0格式
             
              LACC    K_
              ADD     #1                ;K+1
              SACL    K_
              SUB      N_             ;比较K是否小于N
              BCND   WXM3,LT            ;是则跳转
              SPLK    #0,K_             ;否则K=0
WXM3        LACC   TEMP1                ;
              SUB     PMIN              ;检测是否小于最小正脉宽3微秒
              BCND   WXM4,GT            ;不是继续
              SPLK    #0,TEMP1          ;是则删除窄脉冲
              B        WXM5
WXM4        LACC   TEMP1             ;检测是否小于最小负脉宽3微秒
              SUB   PMAX 
              BCND   WXM5,LT          ;不是继续
              SPLK   #2000,TEMP1       ;是则删除窄脉冲
WXM5        LACC   #2000              ;2倍周期值
              SUB     TEMP1            ;计算比较值1
              ROR                       ;除2
              LDP     #232               ;指向事件管理器A
              SACL   CMPR1            ;保存比较值1
              
              
              LDP     #5
              LACC   TEMP2      
              SUB     PMIN              ;检测是否小于最小正脉宽3微秒
              BCND   WXM6,GT          ;不是继续
              SPLK    #0,TEMP2          ;是则删除窄脉冲
              B        WXM7
WXM6        LACC   TEMP2             ;检测是否小于最小负脉宽3微秒
              SUB     PMAX 
              BCND   WXM7,LT          ;不是继续
              SPLK    #2000,TEMP2       ;是则删除窄脉冲
WXM7        LACC   #2000              ;2倍周期值
              SUB     TEMP2            ;计算比较值2
              ROR                       ;除2
              LDP     #232               ;指向事件管理器A
              SACL   CMPR2            ;保存比较值2
              
              
              LDP     #5
              LACC   TEMP3
              SUB     PMIN              ;检测是否小于最小正脉宽3微秒
              BCND   WXM8,GT         ;不是继续
              SPLK    #0,TEMP3          ;是则删除窄脉冲
              B        WXM9
WXM8      LACC   TEMP3             ;检测是否小于最小负脉宽3微秒
              SUB     PMAX 
              BCND   WXM9,LT          ;不是继续
              SPLK    #2000,TEMP3       ;是则删除窄脉冲
WXM9       LACC   #2000              ;2倍周期值
              SUB     TEMP3            ;计算比较值3
              ROR                       ;除2
              LDP     #232               ;指向事件管理器A
              SACL   CMPR3             ;保存比较值3
              
              LDP     #5                 ;恢复现场
  LT      P_LO               ;恢复P
  MPY    #1  
  LPH     P_HI  
  LT      T_SAVE            ;恢复T
  LACC   ACCH,16 
  ADDS   ACCL              ;恢复ACC
  LDP     #0                 ;指向B2
  LST     #1,ST1_SAVE     ; 恢复ST1 #ST1,ST1_SAVE
  LST     #0,ST0_SAVE     ; 恢复ST0#ST0,ST0_SAVE
  CLRC   INTM              ; 开中断
  RET                        ; 返回 


;--------------------------------------延时子程序------------------------------------

delay_s  MAR *,AR1             ;2个指令周期
         lacc  delay       ;1个指令周期
loop     SUB   #1              ;LOOP内为5×66536个指令周期
         BCND loop,EQ          ;等于0则跳转   总计0.008317075s
         BANZ   delay_s        ;DELAY时间为 AR1*0.008317075S

         RET     
.DATA                      
;--------------------------------------数据段-------------------------------------------------------------
                  
SIN_ENTRY  .WORD 0                    ;       SIN值表,D1格式有符号数

  .WORD  257,514,771,1028,1285,1541,1797,2053,2308,2563,2816,3070,3322,3574,3824,4074,4323,4570,4817,5062 ;                         20.000000
 .WORD  5307,5549,5791,6031,6269,6506,6742,6975,7207,7438,7666,7893,8117,8340,8560,8778,8995,9209,9420,9630;                      40.000000
 .WORD  9837,10041,10243,10443,10640,10834,11026,11215,11401,11585,11765,11943,12118,12289,12458,12624,12786,12945,13102,13254;   60.000000
 .WORD  13404,13550,13693,13833,13969,14102,14231,14357,14479,14598,14713,14824,14932,15036,15136,15233,15326,15415,15500,15582;  80.000000
 .WORD  15659,15733,15803,15869,15931,15989,16043,16093,16140,16182,16220,16254,16285,16311,16333,16351,16365,16375,16381,16383;  100.000000
 .WORD  16381,16375,16365,16351,16333,16311,16285,16254,16220,16182,16140,16093,16043,15989,15931,15869,15803,15733,15659,15582;  120.000000
 .WORD  15500,15415,15326,15233,15136,15036,14932,14824,14713,14598,14479,14357,14231,14102,13969,13833,13693,13550,13404,13254;  140.000000
 .WORD  13102,12945,12786,12624,12458,12289,12118,11943,11765,11585,11401,11215,11026,10834,10640,10443,10243,10041,9837,9630;    160.000000
 .WORD  9420,9209,8995,8778,8560,8340,8117,7893,7666,7438,7207,6975,6742,6506,6269,6031,5791,5549,5307,5062;                      180.000000
 .WORD  4817,4570,4323,4074,3824,3574,3322,3070,2816,2563,2308,2053,1797,1541,1285,1028,771,514,257,0;                            200.000000
 .WORD  65279,65022,64765,64508,64251,63995,63739,63483,63228,62973,62720,62466,62214,61962,61712,61462,61213,60966,60719,60474;  220.000000
 .WORD  60229,59987,59745,59505,59267,59030,58794,58561,58329,58098,57870,57643,57419,57196,5676,56758,56541,56327,56116,55906;   240.000000
 .WORD  55699,55495,55293,55093,54896,54702,54510,54321,54135,53951,53771,53593,53418,53247,53078,52912,52750,52591,52434,52282;  260.000000
 .WORD  52132,51986,51843,51703,51567,51434,51305,51179,51057,50938,50823,50712,50604,50500,50400,50303,50210,50121,50036,49954;  280.000000
 .WORD  49877,49803,49733,49667,49605,49547,49493,49443,49396,49354,49316,49282,49251,49225,49203,49185,49171,49161,49155,49153;  300.000000
 .WORD  49155,49161,49171,49185,49203,49225,49251,49282,49316,49354,49396,49443,49493,49547,49605,49667,49733,49803,49877,49954;  320.000000
 .WORD  50036,50121,50210,50303,50400,50500,50604,50712,50823,50938,51057,51179,51305,51434,51567,51703,51843,51986,52132,52282;  340.000000
 .WORD  52434,52591,52750,52912,53078,53247,53418,53593,53771,53951,54135,54321,54510,54702,54896,55093,55293,55495,55699,55906;  360.000000
 .WORD  56116,56327,56541,56758,56976,57196,57419,57643,57870,58098,58329,58561,58794,59030,59267,59505,59745,59987,60229,60474;  380.000000
 .WORD  60719,60966,61213,61462,61712,61962,62214,62466,62720,62973,63228,63483,63739,63995,64251,64508,64765,65022,65279,0 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -