性无码一区二区三区在线观看,少妇被爽到高潮在线观看,午夜精品一区二区三区,无码中文字幕人妻在线一区二区三区,无码精品国产一区二区三区免费

  • 回復(fù)
  • 收藏
  • 點(diǎn)贊
  • 分享
  • 發(fā)新帖
  • 論壇首頁
  • TI論壇
  • 發(fā)“用TMS320LF2407實(shí)現(xiàn)三相SPWM波形發(fā)生器”的源程序,順便求助!!

發(fā)“用TMS320LF2407實(shí)現(xiàn)三相SPWM波形發(fā)生器”的源程序,順便求助!!

一直沒有調(diào)試出結(jié)果,希望高手能不吝賜教!!

源碼如下:


FCL .usect   ".data0",1 ;保存載波頻率浮點(diǎn)數(shù)的低位
FCH .usect   ".data0",1 ;保存載波頻率浮點(diǎn)數(shù)的高位
FRL .usect   ".data0",1 ;保存信號頻率浮點(diǎn)數(shù)的低位
FRH .usect   ".data0",1 ;保存信號頻率浮點(diǎn)數(shù)的高位
AL .usect   ".data0",1 ;保存調(diào)諧度浮點(diǎn)數(shù)低位
AH .usect   ".data0",1 ;保存調(diào)諧度浮點(diǎn)數(shù)高位
N           .usect   ".data0",1    ;保存一個周期要輸出的PWM脈沖個數(shù)
NL .usect   ".data0",1 ;保存一個周期要輸出的PWM脈沖個數(shù)浮點(diǎn)數(shù)低位
NH .usect   ".data0",1 ;保存一個周期要輸出的PWM脈沖個數(shù)浮點(diǎn)數(shù)低位
I .usect   ".data0",1 ;保存當(dāng)前輸出的是第幾個脈沖
T3PR_TEMPL   .usect ".data0",1 ;保存定時器3周期寄存器值的浮點(diǎn)數(shù)低位  
T3PR_TEMPH .usect ".data0",1 ;保存定時器3周期寄存器值的浮點(diǎn)數(shù)高位  
DATIOL      .usect ".data0",1 ;保存占空比浮點(diǎn)數(shù)低位
DATIOH       .usect ".data0",1 ;保存占空比浮點(diǎn)數(shù)低位
DFLAG .usect   ".data0",1 ;送出一個脈沖的標(biāo)志寄存器
.include   "F2407REGS.H" ;引用頭部文件

.ref F$$ITOF,F$$DIV,F$$MUL,F$$FTOI,F$$ADD,F$$LTOF,F$$SUB
.ref    _sin
.def       _c_int0
;(1)建立中斷向量表
.sect ".vectors" ;定義主向量段
RSVECT B    _c_int0 ;PM 0 Reset Vector 1
INT1    B    PHANTOM ;PM 2 Int level 1 4
INT2    B    GISR2 ;PM 4 Int level 2 5
INT3    B    PHANTOM ;PM 6 Int level 3 6
INT4    B    PHANTOM ;PM 8 Int level 4 7
INT5    B    PHANTOM ;PM A Int level 5 8
INT6    B    PHANTOM ;PM C Int level 6 9
RESERVED   B    PHANTOM ;PM E (Analysis Int) 10
SW_INT8   B    PHANTOM ;PM 10   User S/W int —
SW_INT9   B    PHANTOM
SW_INT10   B    PHANTOM
SW_INT11   B    PHANTOM
SW_INT12   B    PHANTOM
SW_INT13   B    PHANTOM
SW_INT14   B    PHANTOM
SW_INT15   B    PHANTOM
SW_INT16   B    PHANTOM
SW_INT17   B    PHANTOM
SW_INT18   B    PHANTOM
SW_INT19   B    PHANTOM
SW_INT20   B    PHANTOM
SW_INT21   B    PHANTOM
SW_INT22   B    PHANTOM
SW_INT23   B    PHANTOM
SW_INT24   B    PHANTOM
SW_INT25   B    PHANTOM
SW_INT26   B    PHANTOM
SW_INT27   B    PHANTOM
SW_INT28   B    PHANTOM
SW_INT29   B    PHANTOM
SW_INT30   B    PHANTOM  
SW_INT31   B    PHANTOM ;PM 3E   User S/W int —
;中斷子向量入口定義pvecs
.sect ".pvecs" ;定義子向量段
PVECTORS B PHANTOM ;Reserved pvector addr offset-0000h
B PHANTOM ;Reserved pvector addr offset-0001h
  
  
B PHANTOM ;Reserved pvector addr offset-002Eh
B T3GP_ISR ;Reserved pvector addr offset-002Fh  T3PINT中斷
B PHANTOM ;Reserved pvector addr offset-0030h
  
  
B PHANTOM ;Reserved pvector addr offset-0041h
;(2)主程序
.text

_c_int0:  
     CALL SYSINIT ;調(diào)系統(tǒng)初始化子程序
CALL PWM_INIT ;調(diào)PWM初始化子程序
        LDP #5
SPLK #2710H,FCL ;載波頻率
SPLK #0,FCH
SPLK #032H,FRL ;信號頻率
SPLK #0,FRH
SPLK #3E8H,AL ;調(diào)諧度AL=A*1000
SPLK #0,AH
SPLK #0,I ;I=0
SPLK #1,DFLAG
        CALL     JISUAN
LOOP: LDP #5
BIT DFLAG,BIT0
BCND LOOP,NTC
LACL DFLAG
AND #0FFFEH
SACL DFLAG
CALL DATIO
B LOOP
;(3)系統(tǒng)初始化程序
SYSINIT:
SETC INTM
CLRC CNF
LDP #0
SPLK #02h,IMR ;使能第1級中斷2
SPLK #0FFFFh,IFR ;清第1級所有中斷標(biāo)志位
LDP #DP_PF1
SPLK #0E8h,WDCR ;禁止 WDT
LDP #00E0H
SPLK #81FEH,SCSR1     ;CLKIN=6M,CLKOUT=24 M
RET
;(4)EVB模塊的PWM初始化程序
PWM_INIT:
LDP #DP_PF2
LACL MCRA
OR #07EH ;IOPE1~IOPE6
SACL MCRC ;配置為特殊功能
LACL MCRC
OR #600h
SACL MCRC
LDP #DP_EVB
SPLK #0FFFFh,EVBIFRA ;清EVA的所有中斷標(biāo)志位
SPLK #0555h,ACTRB ;PWM6,4,2 為低,PWM5,3,1 為高
SPLK #00h,DBTCONB ;禁止死區(qū)控制
SPLK #1fh,CMPR4 ;給比較寄存器賦初值
SPLK #2Fh,CMPR5
SPLK #3fh,CMPR6
SPLK #0960h,T3PR ;給周期寄存器賦初值
LDP #5
SPLK #0960h,T3PR_TEMPL
SPLK #0,T3PR_TEMPH
LDP #DP_EVB
SPLK #0A600h,COMCONB ;禁止比較功能
SPLK 0,T3CNT
SPLK #41h,GPTCONB
SPLK #080h,EVBIMRA
SPLK #0000101101001110b,T3CON
CLRC INTM
RET
;(5)將一些整數(shù)轉(zhuǎn)換為浮點(diǎn)數(shù)子程序,得到計(jì)算占空比要用的常數(shù)
JISUAN:
LDP #5 ;調(diào)諧度由整形轉(zhuǎn)換為浮點(diǎn)
LACL AL
LRLK    AR1,STACK    ;設(shè)置 STACK指針
SETC SXM
CALL F$$ITOF,AR1 ;A=a×1000
CLRC SXM
MAR *-
LACC *-,16
ADDS *
SACL AL
SACH AH
LRLK AR1,STACK ;A/2000=0.5 a
SETC SXM
LACL #0
SACL *+
LACL #44FAH ;44FA 0000h =2000
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 ;定時器周期寄存器
;的值轉(zhuǎn)換為浮點(diǎn)數(shù)
CALL F$$ITOF,AR1
CLRC SXM
MAR *-
LACC *-,16
ADDS *
SACL T3PR_TEMPL
SACH T3PR_TEMPH
LACL FCL ;FC值轉(zhuǎn)換為浮點(diǎn)數(shù)
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    ;FR值轉(zhuǎn)換為浮點(diǎn)數(shù)
CALL F$$ITOF,AR1
CLRC SXM
MAR *-
LACC *-,16
ADDS *
SACL FRL
SACH FRH
LRLK    AR1,STACK ;N=FC/FR
LACL FRL
SACL *+
LACL FRH
SACL *+
LACL FCL
SACL *+
LACL FCH
SACL *+
CALL F$$DIV
MAR *-
LACC *-,16
ADDS *
SACL NL
SACH NH ;N的浮點(diǎn)數(shù)
LRLK    AR1,STACK
SETC SXM
SACL *+
SACH *+
CALL F$$FTOI
SACL N ;N的整數(shù)
LRLK AR1,STACK
SACL *+
LACL NH
SACL *+
LACL #0F5C3H ;40C8F5C3h=6.282=2×3.141
SACL *+
LACL #40C8H
SACL *+
CALL F$$DIV
MAR *-
LACC *-,16
ADDS *
SACL NL
SACH NH
RET
;(6)計(jì)算占空比子程序
DATIO:
LDP #5
LACL I   ;I由整形轉(zhuǎn)換為浮點(diǎn)數(shù)
LRLK    AR1,STACK
SETC SXM
CALL F$$ITOF,AR1
CLRC SXM
MAR *-
LACC *-,16
ADDS * ;結(jié)果保存在 ACC
LRLK AR1,STACK ;i*2*3.14/N
SACL *+
SACH *+
LACL NL
SACL *+
LACL NH
SACL *+
CALL F$$MUL
MAR *-
ZALH *-
ADDS *
LRLK    AR1,STACK ;sin(i*2*3.14/N)
SACL *+
SACH *+
CALL _sin ;結(jié)果在 ACC
LRLK    AR1,STACK ;0.5a*sin(i*2*3.14/N)
SACL *+
SACH *+
LACL AL
SACL *+
LACL AH
SACL *+
CALL F$$MUL
MAR *-
ZALH *-
ADDS * ;結(jié)果在 ACC
LRLK    AR1,STACK ;D=0.5+A*sin(i*2*3.14/N)
SACL *+
SACH *+
LACL #0
SACL *+
LACL #3F00H ;3F00 0000h =0.5
SACL    *+
CALL F$$ADD
MAR *-
ZALH *-
ADDS * ;結(jié)果在 ACC
LRLK AR1,STACK
SACL *+
SACH *+
LACL T3PR_TEMPL
SACL *+
LACL T3PR_TEMPH
SACL *+
CALL F$$MUL
MAR *-
ZALH *-
ADDS * ;結(jié)果在 ACC
LRLK    AR1,STACK ;CMPR的浮點(diǎn)數(shù)轉(zhuǎn)換為整數(shù)
SETC SXM
SACL *+
SACH *+
CALL F$$FTOI,AR1
CLRC SXM ;結(jié)果在 ACC
SACL DATIOL
LDP #5
LACC I
SUB N
BCND NSPWM,GEQ
LACC I
ADD #1
SACL I
B RRET
NSPWM: SPLK #0,I ;斷是否是下一個周期
RRET: RET    
PHANTOM: KICK_DOG ;復(fù)位WD計(jì)數(shù)器
RET
;(7)定時器3中斷程序
GISR2:
SST #0,ST0_CON1 ;保存狀態(tài)寄存器
SST #1,ST1_CON1
LDP #0E0h ;DP指針指向 PIVR 所在的數(shù)據(jù)區(qū)
LACC PIVR,1 ;讀 EVIVRB, 結(jié)果左移一位
ADD #PVECTORS ;加上偏移量
BACC
T3GP_ISR:
LDP #5
LACC DFLAG
OR #1 ;設(shè)置DFLAG.15=1
SACL DFLAG
LACL DATIOL
LDP #DP_EVB
SACL CMPR4 ;更新比較寄存器的值
ADD #32H
SACL CMPR5
ADD #32H
SACL CMPR6
LDP #0
LST #1,ST1_CON1
LST #0,ST0_CON1
LDP #DP_EVB
SPLK #0FFFFH,EVBIFRA
CLRC INTM
RET
END
全部回復(fù)(4)
正序查看
倒序查看
2008-11-27 16:36
今天我也調(diào)試了一下,
.ref F$$ITOF,F$$DIV,F$$MUL,F$$FTOI,F$$ADD,F$$LTOF,F$$SUB
不知道如何處理!
0
回復(fù)
zyt1985
LV.2
3
2009-04-02 14:42
我遇到的也是同樣的問題   不知道怎么解決  說是CCS編譯器自帶函數(shù)庫里的子程序  但是  怎么會出錯呢
0
回復(fù)
zlszcw
LV.3
4
2012-04-21 21:38
@zyt1985
我遇到的也是同樣的問題  不知道怎么解決  說是CCS編譯器自帶函數(shù)庫里的子程序  但是  怎么會出錯呢
LZ居然用匯編,真高!用C的話可能好看程序呢!希望能幫到你!
0
回復(fù)
zlszcw
LV.3
5
2014-04-05 17:32
@zlszcw
LZ居然用匯編,真高!用C的話可能好看程序呢!希望能幫到你!
是呀!整個c,或許能幫到你!
0
回復(fù)
發(fā)