?? i_get.asm
字號:
;=====================================================================
; File name : i_GET.asm
; Module Name : i_GET
; Initialization Routine: i_GET_INIT
; Description : 從電流傳感器采樣并轉換成兩相靜止坐標系(alfa,beta)下的值。
; 并且讀出速度給定值(轉換成7FFFH/mS格式)
;=====================================================================
.include "f2407.h"
.global i_GET,i_GET_INIT ;function call
.global PROTECT
.global IA0,IB0,IA1,IB1,IA2,IB2 ;output(Q12)
.global Omiga_ref ;output
.global TEMP,TEMP1
;=====================================================================
i_GET_INIT:
;=====================================================================
LDP #DP_PF2
SPLK #4000H,ADCTRL1 ;RESET ADC
SPLK #02H,MAX_CONV ;02H表示有3個轉換!!!!
SPLK #210H,CHSELSEQ1 ;次序對轉換結果很有影響,021或012次序時2通道讀數誤差較大。
SPLK #0010100100000000B,ADCTRL1 ;仿真懸掛時ADC完成轉換后停止,啟停模式。
SPLK #0100H,ADCTRL2
RET
;=====================================================================
i_GET:
;=====================================================================
SPM 0
CLRC SXM ;ADRESULT左移時不產生符號擴展
;-----------------------------------------------------------
; IA0 = ( AD_RESULT - 1FFH (實際測量時調整) ) * 44H
CLRC SXM
LDP #DP_PF2
LACC RESULT2,10 ;讀通道2的值iA,這里結果左對齊。所以要左移10位移到ACC高16位。
SETC SXM
LDP #DP_DATA ;用戶定義的數據頁
; SACH IA0
SACH TEMP
LACL TEMP
SUB #1ACH ;按傳感器在0輸出時調整。
; SACL IA0
SACL TEMP
LT TEMP
MPY #44H
SPL IA0 ;存入IA0,注意當RESULT1=400H時會溢出,結果為8000H。所以應該避免,這里電流不會到滿量程。
;-----------------------------------------------------------
CLRC SXM
LDP #DP_PF2
LACC RESULT1,10 ;讀通道1的值iB
SETC SXM
LDP #DP_DATA
; SACH IB0
SACH TEMP
LACL TEMP
SUB #1ECH ;按傳感器在0輸出時調整。
; SACL IB0
SACL TEMP
LT TEMP
MPY #44H ;稍微修正了一下。
SPL IB0 ;存入IB0
;-----------------------------------------------------------
; Omiga_in = AD_RESULT * 4 / 5 =AD_RESULT * 4 * 0.2
GET_Omiga: CLRC SXM
LDP #DP_PF2
LACC RESULT0,12 ;讀通道0的值Omiga_in*4
LDP #DP_DATA
SACH TEMP
LT TEMP
SPLK #6346,TEMP1 ;0.2(Q15)
MPY TEMP1
SPM 1
SPH Omiga_ref ;存入Omiga_ref
; SPLK #300,Omiga_ref
LACC Omiga_ref
SUB #30
BCND ENDGET,GT
CALL PROTECT
;-----------------------------------------------------------
ENDGET:
LDP #DP_PF2
LACL ADCTRL2
SACL ADCTRL2 ;清中斷標志位
SPM 0
SETC SXM
RET
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -