问题一:;=============================
ADCDRV_5ch .macro m,n,p,q,s
;=============================
MOVW DP, #_ADCDRV_5ch_RltPtrA ; Load Data Page
MOVL XAR0,@_ADCDRV_5ch_RltPtrA ; Load Rlt1 Data Page Pointer in XAR0
MOVL XAR1,@_ADCDRV_5ch_RltPtrB ; Load Rlt2 Data Page Pointer in XAR1
MOVW DP, #_AdcResult ; load Data Page to read ADC results
MOV ACC, @_AdcResult.ADCRESULT:m:<<12 ; read result
SUB ACC, #2048<<12 ; ACC = ADCRESULT - 2048
MOVL *XAR0,ACC ; store result in output pointer location
MOV ACC, @_AdcResult.ADCRESULT:n:<<12 ; read result
SUB ACC,#2048<<12 ; ACC = ADCRESULT - 2048
MOVL *XAR1,ACCMOVW DP, #_ADCDRV_5ch_RltPtrC ; Load Data Page
MOVL XAR0,@_ADCDRV_5ch_RltPtrC ; Load Rlt1 Data Page Pointer in XAR0
MOVL XAR1,@_ADCDRV_5ch_RltPtrD ; Load Rlt2 Data Page Pointer in XAR1
MOVL XAR2,@_ADCDRV_5ch_RltPtrE
MOVW DP, #_AdcResult ; load Data Page to read ADC results
MOV ACC, @_AdcResult.ADCRESULT:p:<<12 ; read result
MOVL *XAR0,ACC ; store result in output pointer location
MOV ACC, @_AdcResult.ADCRESULT:q:<<12 ; read result
MOVL *XAR1,ACC ; store result in output pointer location
MOV ACC, @_AdcResult.ADCRESULT:s:<<12 ; read result
MOVL *XAR2,ACC ; store result in output pointer location
.endm
如上面的宏库内容中MOV ACC, @_AdcResult.ADCRESULT:m:<<12 ; read result,为什么AD转换的结果要左移12位?问题二:
上面的IQ20(376.9911)为什么代表60HZ?是如何转换的。麻烦请解答一下。谢谢!
此帖出自
小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
这个数据传送指令就是必须包括移位的。至于为什么要移12位,你应该仔细研究一下程序的小数点定位问题,它要使运算时的小数点位对齐
一周热门 更多>