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

📄 1240.asm

📁 使用七段方式(软件法)的开环控制三相异步电动机SVPWM控制.
💻 ASM
📖 第 1 页 / 共 2 页
字号:
    .include"240x.h"         ;寄存器地址 
 .global  _c_int0
;*****************-以下定义变******************
 
 .BSS  F_OMEGA ,1  ;.SET     0200H          ;频率调节比--角频率转换率,Q5格式
 .BSS OMEGA,1     ;.SET     0202H          ;调制波角频率Q5格式
 .BSS TEMP,1      ;.SET     0204H             ;临时变量
 .BSS SET_F,1     ;.SET     0206H           ;频率调节比,Q15格式(0-1,对应0-50HZ)
 .BSS SET_V,1     ;.SET     0208H       ;参考电压,Q14格式
 .BSS MAX_V,1     ;.SET     020AH             ;参考电压最大幅值1/sqrt2,Q14格式
 .BSS T_SAMPLE,1  ;.SET     020CH          ;采样周期,Q24格式
 .BSS SS,1   ;.SET,1        020EH                ;sin符号,Q0格式
 .BSS SC,1  ;.SET,1        0210H               ;cos符号,Q0格式
 .BSS SIN_END,1    ;.SET     0213H           ;sin表结束地址
 .BSS SIN_ENTRY,1  ;.SET     0215H        ;sin表入口地址
 .BSS SIN_INDX,1 ;.SET     0217H          ;sin表索引,Q0格式
 .BSS THETA_H,1  ;.SET     0219H           ;参考电压相位角高字,Q12格式
 .BSS THETA_I,1  ;.SET     021BH           ;相位角查表索引,Q9格式
 .BSS THETA_L,1  ;.SET     021DH           ;参考电压相位角低字,Q12格式
 .BSS THETA_M,1  ;.SET     021FH           ;相位角查表值(0-90),Q12格式
 .BSS THETA_R ,1 ;.SET     0221H           ;相位角圆整值,Q12格式
 .BSS SIN_THETA,1  ;.SET     0223H         ;sinθ值,Q14格式
 .BSS COS_THETA,1  ;.SET     0225H         ;cosθ值,Q14格式
 .BSS UA,1       ;.SET     0227H                ;参考电压D轴分量UA,Q13格式
 .BSS UB,1      ;.SET     0229H         ;参考电压Q轴分量UB,Q13格式
 .BSS THETA_S,1  ;.SET     022BH           ;θ扇区数转换系数,Q15格式
 .BSS SECTOR,1   ;.SET     022DH            ;参考电压所在扇区数
 .BSS THETA_90,1 ;.SET     022FH          ;90度,Q12格式
 .BSS THETA_180,1   ;.SET     0231H         ;180度,Q12格式
 .BSS THETA_270,1   ;.SET     0233H        ;270度,Q12格式
 .BSS THETA_360 ,1  ;.SET     0235H         ;360度,Q12格式
 .BSS DEC_MS,24      ;.SET     0237H         ;6个逆阵,Q14格式24个数据
 .BSS T1_PERIODS,1  ;.SET     0277H        ;定时器1周期值,Q5格式
 .BSS CMP_1,1       ;.SET     0279H            ;第一基本矢量,Q0格式
 .BSS CMP_2,1       ;.SET     027BH      ;第二基本矢量,Q0格式
 .BSS CMP_0,1       ;.SET     027DH      ;0基本矢量/2,Q0格式
 .BSS FIRST_TOG,1   ;.SET     027FH      ;存放第1次比较匹配的比较寄存器的地址
 .BSS SEC_TOG,1     ;.SET     0281H           ;存放第2次比较匹配的比较寄存器的地址 
 .BSS THI_TOG,1     ;.SET     0283H      ;存放第1次比较匹配的比较寄存器的地址
 ;0300H--037FH 
;-------------CONTEXT定义保护现场的数据区---------------------------
;ST0  .SET  0
;ST1  .SET  1
;ST0_SAVE  .SET    0200H   
    ;状态寄存器ST0
;ST1_SAVE  .SET    0201H
;ACCH     .SET    0202H
;ACCL     .SET    0203H
;AR0_SAVE .SET    0204H
;P_HI     .SET    0205H
;P_LO     .SET    0206H
;T_SAVE   .SET    0207H    
ST0_SAVE  .USECT".EXTCONT",1     
ST1_SAVE  .USECT".EXTCONT",1         ;状态寄存器ST1
ACCH     .USECT".EXTCONT",1
ACCL     .USECT".EXTCONT",1
AR0_SAVE .USECT".EXTCONT",1
P_HI     .USECT".EXTCONT",1
P_LO     .USECT".EXTCONT",1
T_SAVE   .USECT".EXTCONT",1  
;-------------------------定义主向量段-----------------------------
   .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
          LDP     #0H
          SETC  INTM                 ;禁止中断
          CLRC  CNF                  ;B0为数据区
          
          CLRC 	SXM
          CLRC 	OVM
          LDP   #224      
          SPLK  #0000001000000101B,SCSR1   ;CLKIN10MHZ,CLKOUT20MHZ
          SPLK	#0E8H,WDCR          ;不用看门狗
          LDP   #225
          LACL  MCRA
          OR    #0FC0H               ;设置PWM1-PWM6脚
          SACL  MCRA   
;-----------------------------变量初始化程序-----------------------------------
             LDP   #6                 ;指向B1
          SPLK  #347H,T_SAMPLE               ;采样周期=50us*2(24个)=839s约为347H,Q24格式
        
          SPLK  #16000,T1_PERIODS            ;T1周期指的Q5格式,500*32
          SPLK  #11585,MAX_V                 ;最大的参考电压幅值(1/SQRT2),Q14格式
          SPLK  #16384,SET_F                     ;SET_F=0(16384对应为25HZ)
          SPLK  #10053,F_OMEGA               ;频率调节比--角频率转换率,Q5格式,当SET)_F=1时对应最大的角频率
                                             ; 2*3.14159*50rad/sHz*2(5个)=10053
          ;MAR   AR0
          ;LAR   AR0,#F_OMEGA                ;传送常用角度和逆阵数据
          ;LACC  #ANGLES_
          ;TBLR  *
                               

          SPLK  #0,THETA_L                   ;θ低字,Q12格式
          SPLK  #0,THETA_H                   ;θ高字,Q12格式
          LAR   AR0,#THETA_90                ;传送常用角度和逆阵数据
          LAR   AR1,#(28-1)                  ;28个
          LACC  #ANGLES_                     ;指向源
          MAR  AR0
INIT_TBL
          
          TBLR  *+,AR1                       ;下一个  
          ADD   #01H                           ;下一个地址
          BANZ  INIT_TBL,AR0                 ;AR0=0结束
          SPLK  #29335,THETA_I               ;相角查表索引,180/3.1415926,Q9格式
          SPLK  #31291,THETA_S               ;θ+扇区数转换系数,(6/2π),Q15格式
          SPLK  #SIN_ENTRY_,SIN_ENTRY        ;sin表起始地址
          SPLK  #(SIN_ENTRY_+90),SIN_END     ;sin表结束地址

;----------------------------中断初始化程序--------------------------------
          LDP   #0
          SPLK  #0000000000000010B,IMR               ;开INT2中断
          SPLK  #0FFFFH,IFR                    ;清除所有的系统中断标志
          LDP   #232           
          SPLK  #0FFFFH,EVAIFRA               ;清除所有的事件管理器A中断标志
          SPLK  #0FH,EVAIFRB
          SPLK  #0FH,EVAIFRC
          SPLK  #0200H,EVAIMRA               ;开T1下溢中断
          SPLK  #0,EVAIMRB                   ;屏蔽所有中断标志
          SPLK  #0,EVAIMRC                   ;屏蔽所有中断标志  
 ;----------------------------初始化事件管理器A程序----------------------------
        SPLK  #500,T1PR                    ;T1周期值50us/(50ns*2)=500
          SPLK  #50,CMPR1                   ;占空比初值为0%
          SPLK  #50,CMPR2
          SPLK  #60,CMPR3
          SPLK  #0H,GPTCONA        ;0,0,0,00,00,00,0,00,00,00禁止 比较输出,禁止定时器1启动
                                     ;模数转换,禁止定时器1比较输出
          SPLK  #0000011001100110B,ACTRA     ;引脚135高有效,246低有效
          SPLK  #0114H, DBTCONA               ;死区时间4*8*TPERIOD=1*32*50ns=1.6us
          SPLK  #1010011000000000B,COMCONA   ;允许比较,不用硬件空间矢量
          SPLK		#0,T1CNT
          SPLK  #0000100001000010B,T1CON     ;连续增减计数方式,预分频为1
          CLRC  INTM                         ;开总中断

;--------------------------主循环程序(SET_F)由外部引入-------------------------------------------------------
MAIN_LOOP
          LDP   #6
          LT    SET_F                         ;将频率调节比Q15格式转换成角频率 
          MPY   F_OMEGA                       ;Q15*Q5
          PAC   
          SACH  OMEGA,1                       ;保存角频率,Q5格式
          LACC  OMEGA
          LT    SET_F                         ;将频率调节比Q15格式转换成参考电压
          MPY   MAX_V                         ;Q15*Q14
          PAC
          SACH  SET_V,1                       ;保存参考电压幅值,Q14格式
          B     MAIN_LOOP                     ;循环
;---------------------------假中断处理---------------------------------------------------------------------------
PHANTOM
      ; LDP   #0
          ;SPLK  #0000000000000010B,IMR  
       ;LDP   #224      
       ;SPLK	#05555H,WDKEY        ;不用看门狗
        ;SPLK	#0AAAAH,WDKEY        ;不用看门狗
        ;LDP   #232   
        ;SPLK	#0FFFFh,EVAIFRA	              ;清事件管理器中断标记
        ;LDP	#0
         ;SPLK	#0FFFFH,IFR	;清一级中断标记
         ;LST	#1,ST1_SAVE	;恢复状态寄存器
	     ;LST	#0,ST0_SAVE
	        	;
	CLRC INTM					;复位看门狗
		RET
          
;---------------------------T1下溢中断处理程序--------------------------------------------------------------------
_C_INT2  
          LDP   #0
          SPLK  #0000000000000010B,IMR  
          SETC  INTM
          MAR  AR0
       
          
          SST   #0,ST0_SAVE 
          ;LST   #0,ST0_SAVE                  ;保存现场ST0

⌨️ 快捷键说明

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