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

📄 main.asm

📁 此源代码为TI的DSP2407芯片上编写的汇编控制程序。基于SPWM理论实现三相交流异步电机控制。
💻 ASM
📖 第 1 页 / 共 2 页
字号:
        BCND    WXM7,LT
        SPLK	#2000,TEMP1          ;2倍周期值
WXM7
;       LACC    #2000
;       SUB     TEMP1
        LACC    TEMP1                ;(ton1A+ton2A)/2存入CMPR1
        ROR
        LDP		#CMPR1>>7
        SACL    CMPR1
;===============CMPR2=======================
        LDP		#TEMP2               ;计算脉宽ton1B
        LACC    TEMP2
        ADD     TEMP5                ;ton2B
        SFR                          ;累加器右移1位
        SACL    TEMP2                ;检测是否小于正脉宽0.5us
        SUB     PMIN                 ;最小正脉宽(脉冲个数)Q0格式0.5us/25ns=20
        BCND    WXM8,GT
        SPLK	#0,TEMP2             ;是则删除窄脉冲
        B       WXM9
WXM8  
        LACC    TEMP2                ;检测是否大于最大负脉宽0.5us
        SUB     PMAX                 ;最大负脉宽(脉冲个数)Q0格式49.5us/25ns=1980
        BCND    WXM9,LT       
        SPLK	#2000,TEMP2          ;2倍周期值
WXM9
;        LACC    #2000
;        SUB     TEMP2
        LACC    TEMP2
        ROR                          ;(ton1B+ton2B)/2存入CMPR2
        SACL    TEMP2
;===============CMPR3===========================
        LDP		#TEMP3               ;计算脉宽ton1C
        LACC    TEMP3
        ADD     TEMP6                ;ton2C
        SFR                          ;累加器右移1位
        SACL    TEMP3                ;检测是否小于正脉宽0.5us
        SUB     PMIN                 ;最小正脉宽(脉冲个数)Q0格式0.5us/25ns=20
        BCND    WXM10,GT
        SPLK	#0,TEMP3             ;是则删除窄脉冲
        B       WXM11
WXM10  
        LACC    TEMP3                ;检测是否大于最大负脉宽0.5us
        SUB     PMAX                 ;最大负脉宽(脉冲个数)Q0格式49.5us/25ns=1980
        BCND    WXM11,LT
        SPLK	#2000,TEMP3          ;2倍周期值
WXM11
;       LACC    #2000
;       SUB     TEMP3
        LACC    TEMP3
        ROR                          ;(ton1C+ton2C)/2存入CMPR3
        SACL    TEMP3
        
        LDP     #D_FLAG              ;D_FLAG=0发送55,D_FLAG=1发送AA
        LACC    D_FLAG
        BZ      Z_ZHUAN              ;D_FLAG=0,跳正转
        LACC    TEMP2                ;否则D_FLAG=1,反转
        LDP		#CMPR3>>7
        SACL    CMPR3                ;反转,将TEMP2放CMPR3,TEMP3放CMPR2中即可
        LDP     #TEMP3
        LACC    TEMP3
        LDP     #CMPR3>>7
        SACL    CMPR2
        B       T_END                ;跳中断恢复,恢复现场
Z_ZHUAN
        LACC    TEMP2
        LDP		#CMPR3>>7            ;正转,将TEMP2放CMPR2,TEMP3放CMPR3中.
        SACL    CMPR2
        LDP     #TEMP3
        LACC    TEMP3
        LDP     #CMPR3>>7
        SACL    CMPR3
;===============CMPR3  END====================
;===============中断恢复=====================
T_END
        LDP		#P_LO
        LT      P_LO
        MPY     #1
        LPH     P_HI
        LT      T_SAVE
        LACC    ACCH,16
        ADDS    ACCL
        LDP		#ST1>>7
        LST     #ST1,ST1_SAVE
        LST     #ST0,ST0_SAVE
        CLRC    INTM
        RET
;===============中断返回======================
CUL:    
		LDP		#ADCTRL2>>7
		SPLK	#04000H,ADCTRL2
		SPLK	#02000H,ADCTRL2
		NOP
		NOP
CUL1
		CLRC    SXM
		BIT     ADCTRL2,BIT12
		BCND    CUL1,TC 
		LDP     #RESULT0>>7
		LACC    RESULT0,10
		ADD		RESULT1,10
		ADD		RESULT2,10
		ADD		RESULT3,10
		ADD		RESULT4,10
		ADD		RESULT5,10
		ADD		RESULT6,10
		ADD		RESULT7,10
		RPT		#2
		SFR                           ;/8
		LDP		#TEMP_AD
        SACH    TEMP_AD
        LACC    TEMP_AD
        SUB		#30H                  ;>30启动,<30置0
        BCND    QIDONG,GT
        LDP		#ACTRA>>7
        SPLK    #0H,ACTRA
        RET
QIDONG
        LDP		#ACTRA>>7
        SPLK    #0666H,ACTRA          ;启动后,引脚PWM1,3,5高有效,PWM2,4,6低有效          
        LDP		#TEMP_AD
        LACC    TEMP_AD               ;取A/D转换值
        SUB		#3D0H
        BCND    SPEED_MAX,LT
        SPLK	#3D0H,TEMP_AD         ;最大为3D0H
SPEED_MAX
        LACC    TEMP_AD
        SUB     #30                   ;依次-30 作为调制波频率
        SACL	F_MODU                ;调制波频率,Q4格式 	
        RET                           ;改变调制正弦波的频率,就可以改变输出电源的频率
                                      ;从而改变电动机的转速

SCI_INT                               ;SCI中断处理
        
        LDP		#SCIRXBUF>>7
        LACC	SCIRXBUF
    	AND		#00FFh
    	SUB		#055H
		BNZ      Z_CON
		LDP		#D_FLAG
		SPLK 	#0,D_FLAG
		B       W_INT1
Z_CON
        LDP		#SCIRXBUF>>7
        LACC	SCIRXBUF
    	AND		#00FFh
    	SUB		#0AAH
    	BNZ     W_INT1
        LDP		#D_FLAG
		SPLK 	#1,D_FLAG
      
W_INT1
        CLRC    INTM
	    RET

CMP
        SETC    SXM
        LT      TEMP                  ;开始将角度转换成度(Q12格式)
        MPY     #917                  ;(180/PI)*16(Q4)=917
        PAC
        SACH    TEMP                  ;已经转换成角度(Q0格式)
 ;      SPLK	#45,TEMP
        LACC    #SIN_ENTRY            ;查sin表入口地址
        ADD     TEMP                  ;偏移量
        TBLR    TEMP                  ;得出查出的sin值(Q14格式有符号数)
        LT      TEMP
        MPY     M_                    ;乘M值(调制度M的范围0~0.9)这里调制度取0.85
        PAC                           ;乘M(Q9格式),结果得出Q23格式
        SACH    TEMP,7                ;相当于右移9位,Q14格式有符号数
        LACC    TEMP
        ADD     #1,14                 ;加1
        SACL    TEMP                  ;保存,Q14格式
        BCND    C_GT,GT               ;ACC大于0,跳转
        SPLK    #0,TEMP               ;否则,赋TEMP=0
C_GT

        CLRC    SXM
        LT      T_HALF                ;1000,设定载波周期Tc=4000,Tc/4=1000
        MPYU    TEMP                  ;两个无符号数相乘
        PAC
        SACH    TEMP,2                ;相当于右移14位,保存ton1为Q0格式
        RET

.DATA
SIN_ENTRY
        .WORD 0
        .WORD 286,572,857,1143,1428
        .WORD 1713,1997,2280,2563,2845
        .WORD 3126,3406,3686,3964,4240
        .WORD 4516,4790,5063,5334,5604
        .WORD 5872,6138,6402,6664,6924
        .WORD 7182,7438,7692,7943,8192
        .WORD 8438,8682,8923,9162,9397
        .WORD 9630,9860,10087,10311,10531
        .WORD 10749,10963,11174,11381,11585
        .WORD 11786,11982,12176,12365,12551
        .WORD 12733,12911,13085,13255,13421
        .WORD 13583,13741,13894,14044,14189
        .WORD 14330,14466,14598,14726,14849
        .WORD 14968,15082,15191,15296,15396
        .WORD 15491,15582,15668,15749,15826
        .WORD 15897,15964,16026,16083,16135
        .WORD 16182,16225,16262,16294,16322
        .WORD 16344,16362,16374,16382,16384     ;90
        
        .WORD 16382,16374,16362,16344,16322
        .WORD 16294,16262,16225,16182,16135
        .WORD 16083,16026,15964,15897,15826
        .WORD 15749,15668,15582,15491,15396
        .WORD 15296,15191,15082,14968,14849
        .WORD 14726,14598,14466,14330,14189
        .WORD 14044,13894,13741,13583,13421
        .WORD 13255,13085,12911,12733,12551
        .WORD 12365,12176,11982,11786,11585
        .WORD 11381,11174,10963,10749,10531
        .WORD 10311,10087,9860,9630,9397
        .WORD 9162,8923,8682,8438,8192
        .WORD 7943,7692,7438,7182,6924
        .WORD 6664,6402,6138,5872,5604
        .WORD 5334,5063,4790,4516,4240
        .WORD 3964,3686,3406,3126,2845
        .WORD 2563,2280,1997,1713,1428
        .WORD 1143,857,572,286,0                 ;180
               
        .WORD 65250,64964,64679,64393,64108
        .WORD 63822,63539,63256,62973,62691
        .WORD 62410,62130,61850,61572,61296
        .WORD 61020,60846,60483,60202,59932
        .WORD 59664,59398,59134,58872,58612
        .WORD 58354,58098,57844,57593,57344
        .WORD 57098,56854,56613,56374,56139
        .WORD 55906,55676,55449,55225,55005
        .WORD 54787,54573,54362,54155,53951
        .WORD 53750,53554,53360,43171,52985
        .WORD 52803,52625,52451,52281,52115
        .WORD 51953,51795,51642,51492,51347
        .WORD 51206,51070,50938,50810,50687
        .WORD 50568,50454,50345,50240,50140
        .WORD 50045,49954,49868,49787,49710
        .WORD 49639,49572,49510,49453,49401
        .WORD 49354,49311,49274,49242,49214
        .WORD 49192,49174,49162,49154,49152       ;270
        
        .WORD 49154,49162,49174,49192,49214
        .WORD 49242,49274,49311,49354,49401
        .WORD 49453,49510,49572,49639,49710
        .WORD 49787,49868,49954,50045,50140
        .WORD 50240,50345,50454,50568,50687
        .WORD 50810,50938,51070,51206,51347
        .WORD 51492,51642,51795,51953,52115
        .WORD 52281,52451,52625,52803,52985
        .WORD 53171,53360,53554,53750,53951
        .WORD 54155,54362,54573,54787,55005
        .WORD 55225,55449,55676,55906,56139
        .WORD 56374,56613,56854,57098,57344
        .WORD 57593,57844,58098,58354,58612
        .WORD 58872,59134,59398,59664,59932
        .WORD 60202,60473,60746,61020,61296
        .WORD 61572,61850,62130,62410,62691
        .WORD 62973,63256,63539,63823,64108
        .WORD 64393,64679,64964,65250,0          ;360

        .END                   

⌨️ 快捷键说明

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