📄 采样spwm程序.asm.bak
字号:
BCND WXM3 ,LEQ ;小于2π跳转
SACL TEMP5 ;否则保存
WXM3 LACC TEMP4
ADD #17157 ;加4π/3,Q12格式
SACL TEMP6 ;保存第6个角度值
SUB #25736 ;检测是否小于2π,Q12格式
BCND WXM4 ,LEQ ;小于2π跳转
SACL TEMP6 ;否则保存
WXM4 LT TEMP4 ;开始将第4个角度转换成度
MPY #917 ;乘转换系数,Q4格式
PAC
SACH TEMP4 ;保存第4个角度值,Q0格式
LACC #SIN_ENTRY ;SIN表入口地址
ADD TEMP4 ;偏移量
TBLR TEMP4 ;保存第4个SIN值,Q14格式有符号数
LT TEMP4
MPY M_ ;乘M,Q9格式
PAC ;Q23格式
SACH TEMP4,7 ;相当于右移9位,Q14格式有符号数
LACC TEMP4
ADD #1,14 ;加+1
SACL TEMP4 ;保存, Q14格式
LT T_HALF ;T_carr/2=1000,Q0格式
MPY TEMP4
PAC
SACH TEMP4,2 ;相当于右移14位,保存为Q0格式
LT TEMP5 ;开始将第5个角度转换成度
MPY #917
PAC
SACH TEMP5 ;保存第5个角度值,Q0格式
LACC #SIN_ENTRY ;SIN表入口地址
ADD TEMP5 ;偏移量
TBLR TEMP5 ;保存第5个SIN值,Q14格式有符号数
LT TEMP5
MPY M_ ;乘M,Q9格式
PAC ;Q23格式
SACH TEMP5,7 ;相当于右移9位,Q14格式有符号数
LACC TEMP5
ADD #1,14 ;加+1
SACL TEMP5 ;保存, Q14格式
LT T_HALF ;T_carr/2=1000,Q0格式
MPY TEMP5
PAC
SACH TEMP5,2 ;相当于右移14位,保存为Q0格式
LT TEMP6 ;开始将第6个角度转换成度
MPY #917
PAC
SACH TEMP6 ;保存第6个角度值,Q0格式
LACC #SIN_ENTRY ;SIN表入口地址
ADD TEMP6 ;偏移量
TBLR TEMP6 ;保存第6个SIN值,Q14格式有符号数
LT TEMP6
MPY M_ ;乘M,Q9格式
PAC ;Q23格式
SACH TEMP6,7 ;相当于右移9位,Q14格式有符号数
LACC TEMP6
ADD #1,14 ;加+1
SACL TEMP6 ;保存, Q14格式
LT T_HALF ;T_carr/2=1000,Q0格式
MPY TEMP6
PAC
SACH TEMP6,2 ;相当于右移14位,保存为Q0格式
LACC K_
ADD #1 ;K+1
SACL K_
SUB KMAX ;比较K是否小于2N
BCND WXM5,LT ;是则跳转
SPLK #0,K_ ;否则K=0
WXM5 LACC TEMP1
ADD TEMP4 ;计算脉宽
SACL TEMP1 ;暂存
SUB PMIN ;检测是否小于最小正脉宽3微秒
BCND WXM6,GT ;不是继续
SPLK #0,TEMP1 ;是则删除窄脉冲
B WXM7
WXM6 LACC TEMP1 ;检测是否小于最小负脉宽3微秒
SUB PMAX
BCND WXM7,LT ;不是继续
SPLK #2000,TEMP1 ;是则删除窄脉冲
WXM7 LACC #2000 ;2倍周期值
SUB TEMP1 ;计算比较值1
ROR ;除2
LDP #232 ;指向事件管理器A
SACL CMPR1 ;保存比较值1
LDP #5
LACC TEMP2
ADD TEMP5 ;计算脉宽
SACL TEMP2 ;暂存
SUB PMIN ;检测是否小于最小正脉宽3微秒
BCND WXM8,GT ;不是继续
SPLK #0,TEMP2 ;是则删除窄脉冲
B WXM9
WXM8 LACC TEMP2 ;检测是否小于最小负脉宽3微秒
SUB PMAX
BCND WXM9,LT ;不是继续
SPLK #2000,TEMP2 ;是则删除窄脉冲
WXM9 LACC #2000 ;2倍周期值
SUB TEMP2 ;计算比较值2
ROR ;除2
LDP #232 ;指向事件管理器A
SACL CMPR2 ;保存比较值2
LDP #5
LACC TEMP3
ADD TEMP6 ;计算脉宽
SACL TEMP3 ;暂存
SUB PMIN ;检测是否小于最小正脉宽3微秒
BCND WXM10,GT ;不是继续
SPLK #0,TEMP3 ;是则删除窄脉冲
B WXM11
WXM10 LACC TEMP3 ;检测是否小于最小负脉宽3微秒
SUB PMAX
BCND WXM11,LT ;不是继续
SPLK #2000,TEMP3 ;是则删除窄脉冲
WXM11 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 #ST1,ST1_SAVE ; 恢复ST1
LST #ST0,ST0_SAVE ; 恢复ST0
CLRC INTM ; 开中断
RET ; 返回
.DATA
;--------------------------------------数据段-------------------------------------------------------------
SIN_ENTRY .WORD 0 ;SIN值表,D1格式有符号数
.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 63823,63539,63256,62973,62691
.WORD 62410,62130,61850,61572,61296
.WORD 61020,60746,60473,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,53171,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 + -