|
发表于 2015-8-24 22:14:44
|
显示全部楼层
本帖最后由 gaojunchen 于 2015-8-24 22:22 编辑
lz您好,an1078的代码中有一处不懂,想向您请教:
在ReadADC0.s中
ReadSignedADC0:
;; iResult = qK * ADCBUF0
mov.w [ParmBaseW+ADC_qK],Work0W
mov.w _ADCBuffer+0, Work1W
mpy Work0W*Work1W,A
sac A,#0,Work0W
mov.w Work0W,[ParmBaseW+ADC_qADValue]
; Read DC Bus, remove sign
mov.w _ADCBuffer+6, Work0W
asr.w Work0W, Work1W
mov.w #0x4000, Work0W
add.w Work1W, Work0W, Work0W
mov.w Work0W, _DCbus
return
其中,这两行看的不是很明白:
mov.w _ADCBuffer+6, Work0W
asr.w Work0W, Work1W
_ADCBuffer+6 指的是哪一个的变量?是不是指的ADCBuffer[3]?
为什么需要将Work0W中的数值右移一位然后再加上0x4000才能算是消除符号位?
谢谢 |
|