📄 theta_get.asm
字号:
****************************************
* File name: theta_get.asm
****************************************
.include "F2407REGS.H"
.def INIT_THETA,THETA_GET
.def D_THETA,N
.ref DATA_CACHE
NUMERA .usect "theta",1
DENOM .usect "theta",1
D_THETA .usect "theta",1
N .usect "theta",1
**********************************
* 初试化相位检测
**********************************
INIT_THETA:
NOP
LDP #D_THETA
SPLK #0,N
SPLK #147BH,D_THETA ;Q13 0.64*2^13
LDP #CAPCONA>>7 ;装载捕获控制寄存器页地址
SPLK #1008H,CAPCONA ;使能CAP3,并检测下升沿
SPLK #0004H,EVAIMRC ;使能捕获中断
SPLK #0FFFFH,EVAIFRC
LDP #NUMERA
SPLK #7D00H,NUMERA ;Q2 8000*2^2
NOP
RET
**********************************************
** n*2000(T1PR)*25=T2CNT*64*25
; n=T2CNT*64/2000
; D_THETA=256/n, (0-360)->(0-256)
; D_THETA=256*2000/(T2CNT*64)=8000/T2CNT
**********************************************
THETA_GET:
NOP
LDP #D_THETA ;FOR TEST
LACL N ;FOR TEST
SUB #360 ;FOR TEST
BCND JUMP,LT ;FOR TEST
LDP #GPTCONA>>7
LACL T2CNT
;LACL Tb ;FOR TEST
;CALL DATA_CACHE ;FOR TEST
;LDP #GPTCONA>>7 ;FOR TEST
SPLK #0,T2CNT
AND #8FFFH
LDP #D_THETA
SACL DENOM
LACC NUMERA,2 ;Q2 8000*2^2
RPT #24
SUBC DENOM
SACL D_THETA ;Q13
SPLK #147BH,D_THETA ;FOR TEST Q13 0.64*2^13
SPLK #0,N
;LACL N ;FOR TEST
;CALL DATA_CACHE ;FOR TEST
JUMP
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -