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

📄 svpwmy.asm

📁 基于TMS320LF2407A变频器源程序
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;《三相交流异步电动机SVPWM开环调速控制程序(硬件法)》
     .include "240X.H"       ; 寄存器地址
;--------------------------------------以下定义变量-----------------------------------------------------------
.BSS TEMP,1                  ;临时变量
.BSS SET_F,1                 ;频率调节比,Q15格式(值为0-1,对应0-50Hz)
.BSS F_OMEGA,1               ;频率调节比-角频率转换率,Q5格式
.BSS OMEGA,1                 ;调制波角频率,Q5格式
.BSS SET_V,1                 ;参考电压,Q14格式
.BSS T_SAMPLE,1              ;采样周期,Q24格式
.BSS THETA_H,1               ;参考电压相位角高字,Q12格式
.BSS THETA_L,1               ;参考电压相位角低字,Q12格式
.BSS THETA_R,1               ;相位角的圆整值,Q12格式
.BSS THETA_M,1               ;相位查表值(0-90度),Q12格式
.BSS THETA_I,1               ;相角查表索引,Q9格式
.BSS SS,1                    ;SIN符号,Q0格式
.BSS SC,1                    ;COS符号,Q0格式
.BSS SIN_INDX,1              ;SIN表索引,Q0格式
.BSS SIN_ENTRY,1             ;SIN表入口地址
.BSS SIN_END,1               ;SIN表结束地址
.BSS SIN_THETA,1             ;SINθ值,Q14格式
.BSS COS_THETA,1             ;COSθ值,Q14格式
.BSS UA,1                    ;参考电压D轴分量UA,Q13格式
.BSS UB,1                    ;参考电压Q轴分量UB,Q13格式
.BSS THETA_S,1               ;θ-扇区数转换系数,Q15格式
.BSS SECTOR,1                ;参考电压所在的扇区数,Q0格式
.BSS THETA_90,1              ;90度,Q12格式
.BSS THETA_180,1             ;180度,Q12格式
.BSS THETA_270,1             ;270度,Q12格式
.BSS THETA_360,1             ;360度,Q12格式
.BSS DEC_MS,24               ;6个逆阵,Q14格式
.BSS T1_PERIODS,1            ;定时器1周期值,Q5格式
.BSS CMP_1,1                 ;第1基本矢量,Q0格式
.BSS CMP_2,1                 ;第2基本矢量,Q0格式
.BSS SVPAT,1                 ; ACTRA的空间矢量字
; -------------------------------------CONTEXT段,定义保护现场数据区---------------------------
ST0_SAVE  .USECT ".CONTEXT",1     ;状态寄存器ST0保存单元
ST1_SAVE  .USECT ".CONTEXT",1     ;状态寄存器ST1保存单元
ACCH      .USECT ".EXTCONT",1     ;ACC高字保存单元
ACCL      .USECT ".EXTCONT",1     ;ACC低字保存单元
AR0_SAVE  .USECT ".EXTCONT",1     ;AR0保存单元
P_HI      .USECT ".EXTCONT",1     ;P寄存器高字保存单元
P_LO      .USECT ".EXTCONT",1     ;P寄存器低字保存单元
T_SAVE    .USECT ".EXTCONT",1     ;T保存单元
;--------------------------------------定义主向量段------------------------------------------------------
          .sect  ".VECTORS" ;定义主向量段
RESET     B  _C_INT0        ;地址0000H,复位,优先级1
INT1      B  PHANTOM        ;地址0002H,INT1,优先级4
INT2      B  _C_INT2        ;地址0004H,INT2,优先级5
INT3      B  PHANTOM        ;地址0006H,INT3,优先级6
INT4      B  PHANTOM        ;地址0008H,INT4,优先级7
INT5      B  PHANTOM        ;地址000AH,INT5,优先级8
INT6      B  PHANTOM        ;地址000CH,INT6,优先级9 
RESERVED  B  PHANTOM	    ;地址000EH,测试,优先级10
SW_INT8   B  PHANTOM		;地址0010H,自定义软中断
SW_INT9   B  PHANTOM		;地址0012H,自定义软中断
SW_INT10  B  PHANTOM		;地址0014H,自定义软中断
SW_INT11  B  PHANTOM		;地址0016H,自定义软中断
SW_INT12  B  PHANTOM		;地址0018H,自定义软中断
SW_INT13  B  PHANTOM		;地址001AH,自定义软中断
SW_INT14  B  PHANTOM		;地址001CH,自定义软中断
SW_INT15  B  PHANTOM		;地址001EH,自定义软中断
SW_INT16  B  PHANTOM		;地址0020H,自定义软中断
TRAP	  B  PHANTOM	    ;地址0022H,TRAP矢量
NMI	  	  B  PHANTOM	    ;地址0024H,NMI,优先级3
EMU_TRAP  B  PHANTOM		;地址0026H,仿真Trap,优先级2
SW_INT20  B  PHANTOM		;地址0028H,自定义软中断
SW_INT21  B  PHANTOM		;地址002AH,自定义软中断
SW_INT22  B  PHANTOM		;地址002CH,自定义软中断
SW_INT23  B  PHANTOM		;地址002EH,自定义软中断
SW_INT24  B  PHANTOM		;地址0030H,自定义软中断
SW_INT25  B  PHANTOM		;地址0032H,自定义软中断
SW_INT26  B  PHANTOM		;地址0034H,自定义软中断
SW_INT27  B  PHANTOM		;地址0036H,自定义软中断
SW_INT28  B  PHANTOM		;地址0038H,自定义软中断
SW_INT29  B  PHANTOM		;地址003AH,自定义软中断
SW_INT30  B  PHANTOM		;地址003CH,自定义软中断
SW_INT31  B  PHANTOM		;地址003EH,自定义软中断
;--------------------------------------定义子向量段----------------------------------------------------------
     .sect  ".PVECS"            ;定义子向量段
PVECTORS	B	PHANTOM			;偏移地址0000H 
			B	PHANTOM  	    ;偏移地址0001H
			B	PHANTOM			;偏移地址0002H
			B	PHANTOM			;偏移地址0003H
			B	PHANTOM			;偏移地址0004H
			B	PHANTOM			;偏移地址0005H
			B	PHANTOM			;偏移地址0006H
			B	PHANTOM			;偏移地址0007H
			B	PHANTOM			;偏移地址0008H
			B	PHANTOM			;偏移地址0009H
			B	PHANTOM			;偏移地址000AH
			B	PHANTOM			;偏移地址000BH
			B	PHANTOM			;偏移地址000CH
			B	PHANTOM			;偏移地址000DH
			B	PHANTOM			;偏移地址000EH
			B	PHANTOM			;偏移地址000FH  
			B	PHANTOM			;偏移地址0010H
			B	PHANTOM			;偏移地址0011H
			B	PHANTOM			;偏移地址0012H
			B	PHANTOM			;偏移地址0013H
			B	PHANTOM			;偏移地址0014H
			B	PHANTOM			;偏移地址0015H
			B	PHANTOM			;偏移地址0016H
			B	PHANTOM			;偏移地址0017H 
			B	PHANTOM			;偏移地址0018H
			B	PHANTOM			;偏移地址0019H 
			B	PHANTOM			;偏移地址001AH
			B	PHANTOM			;偏移地址001BH
			B	PHANTOM			;偏移地址001CH
			B	PHANTOM			;偏移地址001DH
			B	PHANTOM			;偏移地址001EH
			B	PHANTOM			;偏移地址001FH
			B	PHANTOM			;偏移地址0020H
			B	PHANTOM			;偏移地址0021H 
			B	PHANTOM			;偏移地址0022H
			B	PHANTOM			;偏移地址0023H
			B	PHANTOM			;偏移地址0024H
			B	PHANTOM			;偏移地址0025H
			B	PHANTOM			;偏移地址0026H 
			B	PHANTOM			;偏移地址0027H 
			B	PHANTOM			;偏移地址0028H
			B	T1UF_ISR		;偏移地址0029H
			B	PHANTOM			;偏移地址002AH
			B	PHANTOM			;偏移地址002BH
			B	PHANTOM			;偏移地址002CH
			B	PHANTOM			;偏移地址002DH
			B	PHANTOM			;偏移地址002EH
			B	PHANTOM			;偏移地址002FH 
			B	PHANTOM			;偏移地址0030H
			B	PHANTOM			;偏移地址0031H
			B	PHANTOM			;偏移地址0032H
			B	PHANTOM			;偏移地址0033H
			B	PHANTOM			;偏移地址0034H
			B	PHANTOM			;偏移地址0035H
			B	PHANTOM			;偏移地址0036H
			B	PHANTOM			;偏移地址0037H
			B	PHANTOM			;偏移地址0038H
			B	PHANTOM			;偏移地址0039H
			B	PHANTOM			;偏移地址003AH
			B	PHANTOM			;偏移地址003BH
			B	PHANTOM			;偏移地址003CH
			B	PHANTOM			;偏移地址003DH
			B	PHANTOM			;偏移地址003EH
			B	PHANTOM			;偏移地址003FH
			B	PHANTOM			;偏移地址0040H
			B	PHANTOM			;偏移地址0041H
;--------------------------------------以下是主程序------------------------------------------------------
      .text
;--------------------------------------系统初始化程序--------------------------------------------------
_C_INT0:    
      SETC   INTM                     ; 禁止中断
      CLRC   CNF                      ;B0为数据存储区
      LDP    #224
      SPLK   #0000001000000100B,SCSR1 ;CLKIN 10M,CLKOUT 20M
      SPLK   #68H,WDCR                ;不用看门狗
      LDP    #225
      LACC  MCRA
      OR     #0FC0H                   ;设置PWM1-6引脚
      SACL   MCRA
;--------------------------------------中断初始化程序--------------------------------------------------
      LDP    #0  
      SPLK   #0FFH,IFR           ; 清所有系统中断标志
      SPLK   #00000010B,IMR      ; 开INT2中断
      LDP    #232         
      SPLK   #0FFFH,EVAIFRA      ; 清事件管理器A所有中断标志
      SPLK   #0FH,EVAIFRB 
      SPLK   #0FH,EVAIFRC 
      SPLK   #0200H,EVAIMRA      ; 开T1下溢中断
      SPLK   #0,EVAIMRB          ; 屏蔽所有中断
      SPLK   #0,EVAIMRC          ; 屏蔽所有中断
;--------------------------------------初始化事件管理器A程序--------------------------------------
      SPLK   #500,T1PR                   ; T1周期值=50 us/50ns/2=500
      SPLK   #500,CMPR1                  ; 占空比初值 0%
      SPLK   #500,CMPR2
      SPLK   #500,CMPR3
      SPLK   #0000011001100110B,ACTRA    ; 引脚PWM1,3,5高有效,2,4,6低有效
      SPLK   #01F4H,DBTCONA              ; 死区时间1*32*50ns=1.6us
      SPLK   #1001001000000000B,COMCONA  ;允许比较,使用硬件空间矢量
      SPLK   #0000100001000010B,T1CON    ;连续增减计数方式,预分频=1
      CLRC   INTM                         ; 开总中断
;--------------------------------------变量初始化程序--------------------------------------------------
      LDP    #6                          ; 指向B1
      SPLK   #0347H,T_SAMPLE             ;采样周期=50us *224=839秒=347H, Q24格式
      SPLK   #16000,T1_PERIODS           ;T1周期值的Q5格式,500*32
      SPLK   #11585,MAX_V                ; 最大参考电压幅值1/ ,Q14格式
      SPLK   #0,SET_F                    ; SET F=0
      SPLK   #10053,F_OMEGA              ;频率调节比-角频率转换率,Q5格式
                                         ;当SET_F=1时,对应最大角频率2π50Hz*25=10053
      SPLK   #0,THETA_L                  ;θ低字,Q12格式
      SPLK   #0,THETA_H                  ; θ高字,Q12格式
      LAR    AR0,#THETA_90               ; 传送常用角度和逆阵数据
      LAR    AR1,#(28-1)                 ; 28个
      LACC   #ANGLES_                    ; 指向源
      LARP   AR0 
INIT_TBL:   
      TBLR  *+,AR1                       ; 下一个
      ADD   #1                           ; 下一个地址
      BANZ  INIT_TBL,AR0                 ;AR1=0结束 
      SPLK   #29335,THETA_I              ; 相角查表索引,180/π,Q9格式
      SPLK   #31291,THETA_S              ; θ-扇区数转换系数,6/(2π),Q15格式
      SPLK   #SIN_ENTRY_,SIN_ENTRY        ;SIN表起始地址
      SPLK   #(SIN_ENTRY_+90),SIN_END     ;SIN表结束地址
;--------------------------------------主循环程序(SET_F由外部输入)---------------------------------
MAIN_LOOP:   
      LDP    #6
      LT     SET_F                 ; 将频率调节比(Q15格式)转换成角频率
      MPY    F_OMEGA               ; Q20
      PAC                          ; 积送ACC, Q4格式
      SACH   OMEGA,1               ; 保存角频率,Q5格式
      LACC   OMEGA 
      LT     SET_F                 ;将频率调节比(Q15格式)转换成参考电压
      MPY    MAX_V                 ; Q15*Q14=Q29
      PAC 
      SACH   SET_V,1               ; 保存参考电压幅值,Q14格式
      B      MAIN_LOOP             ; 循环
;--------------------------------------假中断处理----------------------------------------------------------
PHANTOM:  
      CLRC     INTM 
      RET
;--------------------------------------T1下溢中断处理子程序-----------------------------------------
_C_INT2:    
      SST   #ST0,ST0_SAVE          ; 保存现场ST0
      SST   #ST1,ST1_SAVE          ; 保存ST1

⌨️ 快捷键说明

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