这个Kmv=0x2000取得很奇怪,正好是2的倍数,是不是使用了PU值的方** AD为正负512,程序里是GPR0_vinv,Q0 系数为Kmv,为Q22 最后的电压Vout=GPR0_Vinv*Kmv 为什么最后程序化成Q15呢?这个Q15和十进制的Vout是什么关系呢? Invert_v: SETC SXM LDP #K0_vinv spm 1 LACC Vo,10 ; sach GPR0_vinv lacc GPR0_vinv and #03ffh sub #512 neg sub #1 sacl GPR0_vinv ;Q0 lt GPR0_vinv mpy Kmv ;Q22 这里Vout = Kmv * GPR0_vinv pac ;Q23 rpt #7 norm * sach Vout ;Q15 为什么这里Vout变成Q15??Q15不是只能表示正负1的数吗,现在的Vout和原来的Vout是什么关系呢? SPM 0 lacc Uq ;Q15 sub Vout ;Q15 SACL En0_vinv ;Store error(Q15) lacc Un_vinv,15 ;ACC = Un_vinv(Q30,32-bit) LT En0_vinv ; MPY K0_vinv ;P<- K0*En0,Q15*Q15 APAC ;ACC <-- Un_vinv + K0*En-0, Q30 norm * ;Q31 sach Upi_v_o ;Q15 |