;**************************************************************************************************[]
; function: N-次方差计算
;
; INPUT:
; ZH:ZL:= #R_SSP_ADC_CoorBuf_E0E2
; VarL:= NUMBER
; VarL,VarH,VAR2,VAR3
;**************************************************************************************************[]
Sub_calculation_Coording_3DEA:
CALL Sub_OpenStk_withXDate__11F2
;
WDR ;
LDD ZH, Y+$04 ;
LDD ZL, Y+$05 ;D ;AD_Buffer
MOVW dw4F:dw4E, ZH:ZL ;
; [ 信号曲线参数保存 ]
MOVW ZH:ZL, dw4F:dw4E ;Copy dw4F: to ZH:
PUSH ZL ;
PUSH ZH ;
LDI XH, HIGH(R_SSPLine_Buffer) ;Loads an 8 bit constant directly to register 16 to 31
LDI XL, LOW(R_SSPLine_Buffer) ;
CALL Sub_MOV_SMPADC_To_Coor_42E5 ;信号曲线参数D_SSPdata_num/D_zoom_dat 存储数据
POP ZH ;
POP ZL ;
; ---------------------------------
CLC ;
LDI XL, $01 ;直接赋值1
LDD XH, Y+$07 ;Y+$07地址数据送入XH
TST XH ;Test XH
BREQ _L_next_3E0F ;相等跳转 _L_next_3E0F
BRLT _L_next_3E0F ;如果小于0 _L_next_3E0F
//循环
_L_loop_3E0B: LSL XL ;位左偏移 高位送入C
DEC XH ;XH-1
TST XH ;Test XH a logical AND between XH and itself
BRNE _L_loop_3E0B ;bgt _L_loop_3E0B
; ---------------------------------
_L_next_3E0F: MOV dw48, XL ;
LDI ZH, HIGH(R_SSPLine_Buffer) ;
LDI ZL, LOW(R_SSPLine_Buffer) ;
MOVW dw4d:dw4C, ZH:ZL ;
MOV dw49, dw48 ;
; RAM_dw4A <== Fun_SUM{ @R_SSP_ADC_buffer_C307+.. for 2^^Stk }
CLR XH ;
CLR XL ;
MOVW dw4B:dw4A, XH:XL ;
_L_loop_3E1A: TST dw49 ;
BREQ _L_next_3E30 ;