?? 1240.asm
字號:
.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 + -