📄 gac_algorithm.asm
字号:
st AH,@(8,Y)
ld AH,@(0,X)
st AH,@(7,Y)
mov AL,Y
add AL,#27
ld AH,@(7,Y)
add Y,#8
Lstab?17a:
bsr $__dadd
mov AL,Y
add AL,#19
st AL,@H'ffe1 ; %r0
ld X,@H'ffe1 ; %r0
ld AH,@(3,X)
st AH,@(10,Y)
ld AH,@(2,X)
st AH,@(9,Y)
ld AH,@(1,X)
st AH,@(8,Y)
ld AH,@(0,X)
st AH,@(7,Y)
mov AL,Y
add AL,#23
ld AH,@(7,Y)
add Y,#8
Lstab?18a:
bsr $sqrt
; Vn.x = Vrn * sin_com_hd;
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?125.1:
ld X,#$sin_com_hd
ld AH,@(3,X)
st AH,@(14,Y)
ld AH,@(2,X)
st AH,@(13,Y)
ld AH,@(1,X)
st AH,@(12,Y)
ld AH,@(0,X)
st AH,@(11,Y)
mov AH,Y
add AH,#15
st AH,@H'ffe5 ; %r2
ld X,@H'ffe5 ; %r2
ld AH,@(3,X)
st AH,@(10,Y)
ld AH,@(2,X)
st AH,@(9,Y)
ld AH,@(1,X)
st AH,@(8,Y)
ld AH,@(0,X)
st AH,@(7,Y)
ld AL,#$Vn
ld AH,@(7,Y)
add Y,#8
Lstab?19a:
bsr $__dmul
; Vn.y = Vrn * cos_com_hd;
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?126.1:
ld X,#$cos_com_hd
ld AH,@(3,X)
st AH,@(6,Y)
ld AH,@(2,X)
st AH,@(5,Y)
ld AH,@(1,X)
st AH,@(4,Y)
ld AH,@(0,X)
st AH,@(3,Y)
mov AH,Y
add AH,#7
st AH,@H'ffe5 ; %r2
ld X,@H'ffe5 ; %r2
ld AH,@(3,X)
st AH,@(2,Y)
ld AH,@(2,X)
st AH,@(1,Y)
ld AH,@(1,X)
st AH,@(0,Y)
ld AH,@(0,X)
st AH,@(-1,Y)
ld AL,#$Vn
add AL,#4
ld AH,@(-1,Y)
bsr $__dmul
;
; Sn.x = integral_formula(Sn_1.x,Vn.x,Vn_1.x);
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?128.1:
ld AH,#$Vn_1
st AH,@H'ffe5 ; %r2
ld X,@H'ffe5 ; %r2
ld AH,@(3,X)
st AH,@(6,Y)
ld AH,@(2,X)
st AH,@(5,Y)
ld AH,@(1,X)
st AH,@(4,Y)
ld AH,@(0,X)
st AH,@(3,Y)
ld AH,#$Vn
st AH,@H'ffe5 ; %r2
ld X,@H'ffe5 ; %r2
ld AH,@(3,X)
st AH,@(2,Y)
ld AH,@(2,X)
st AH,@(1,Y)
ld AH,@(1,X)
st AH,@(0,Y)
ld AH,@(0,X)
st AH,@(-1,Y)
ld AL,#$Sn_1
st AL,@H'ffe1 ; %r0
ld X,@H'ffe1 ; %r0
ld AH,@(3,X)
st AH,@(-2,Y)
ld AH,@(2,X)
st AH,@(-3,Y)
ld AH,@(1,X)
st AH,@(-4,Y)
ld AH,@(0,X)
st AH,@(-5,Y)
ld AL,#$Sn
ld AH,@(-5,Y)
add Y,#-4
Lstab?20a:
bsr $integral_formula
; Sn.y = integral_formula(Sn_1.y,Vn.y,Vn_1.y);
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?129.1:
ld AL,#$Vn_1
add AL,#4
st AL,@H'ffe1 ; %r0
ld X,@H'ffe1 ; %r0
ld AH,@(3,X)
st AH,@(10,Y)
ld AH,@(2,X)
st AH,@(9,Y)
ld AH,@(1,X)
st AH,@(8,Y)
ld AH,@(0,X)
st AH,@(7,Y)
ld AL,#$Vn
add AL,#4
st AL,@H'ffe1 ; %r0
ld X,@H'ffe1 ; %r0
ld AH,@(3,X)
st AH,@(6,Y)
ld AH,@(2,X)
st AH,@(5,Y)
ld AH,@(1,X)
st AH,@(4,Y)
ld AH,@(0,X)
st AH,@(3,Y)
ld AL,#$Sn_1
add AL,#4
st AL,@H'ffe1 ; %r0
ld X,@H'ffe1 ; %r0
ld AH,@(3,X)
st AH,@(2,Y)
ld AH,@(2,X)
st AH,@(1,Y)
ld AH,@(1,X)
st AH,@(0,Y)
ld AH,@(0,X)
st AH,@(-1,Y)
ld AL,#$Sn
add AL,#4
ld AH,@(-1,Y)
bsr $integral_formula
;
; An_1.x = ACC_average_buf.x;
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?131.1:
ld AL,#$ACC_average_buf
ld AH,#$An_1
st AH,@H'ffe5 ; %r2
st Y,@H'fffe
ld Y,@H'ffe5 ; %r2
st AL,@H'ffe1 ; %r0
ld X,@H'ffe1 ; %r0
ld AH,@(3,X)
st AH,@(3,Y)
ld AH,@(2,X)
st AH,@(2,Y)
ld AH,@(1,X)
st AH,@(1,Y)
ld AH,@(0,X)
st AH,@(0,Y)
ld Y,@H'fffe
ld AH,#0
st AH,@H'fffe
; An_1.y = ACC_average_buf.y;
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?132.1:
ld AH,#$ACC_average_buf
add AH,#4
ld AL,#$An_1
add AL,#4
st AH,@H'ffe5 ; %r2
st Y,@H'fffe
st AL,@H'ffe1 ; %r0
ld Y,@H'ffe1 ; %r0
ld X,@H'ffe5 ; %r2
ld AH,@(3,X)
st AH,@(3,Y)
ld AH,@(2,X)
st AH,@(2,Y)
ld AH,@(1,X)
st AH,@(1,Y)
ld AH,@(0,X)
st AH,@(0,Y)
ld Y,@H'fffe
ld AH,#0
st AH,@H'fffe
; Vn_1 = Vn;
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?133.1:
st Y,@H'fffe
ld Y,#$Vn_1
ld X,#$Vn
ld AL,#8
bc
ld Y,@H'fffe
st AL,@H'fffe
; Sn_1 = Sn;
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?134.1:
st Y,@H'fffe
ld Y,#$Sn_1
ld X,#$Sn
ld AL,#8
bc
ld Y,@H'fffe
st AL,@H'fffe
Lstab?21c:
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?145.1:
add Y,#17
ld XH,@(-2,Y)
bra @(-1,Y)
Lstab?22c:
;
;
; /*
; if(abs(X_distance_accumulator) > 2147483646)
; {
; X_distance_accumulator = 0;
; }
; if(abs(Y_distance_accumulator) > 2147483646)
; {
; Y_distance_accumulator = 0;
; }*/
;}
;
;/******************************************************************************
;According to least square estimation get start value:
;Formula:
;V0 = {N * [1*I1 + 2*I2 +...+ 20*I20] - (N+1)*N/2*[I1 + I2 +...+ I20]}/{N*[1*1 + 2*2
; +...+ 20*20] - [(N+1)*N/2] * [(N+1)*N/2]};
;
;X0 = {[I1 + I2 +...+ I20] - [(N+1)*N/2] * V0}/N;
;
;(N+1)*N/2 = 210;
;{N*[1*1 + 2*2 +...+ 20*20] - [(N+1)*N/2] * [(N+1)*N/2]} = 20 * 2870 - 44100 = 13300;
;I[n] = GS[n] - AS[n];
;N = 20;
;
;******************************************************************************/
;void LSE_get_start_value(double *In)
;
$LSE_get_start_value:
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?161.1:
add Y,#-9
Lstab?23a:
st AL,@(8,Y)
st XH,@(6,Y)
st X,@(7,Y)
st AL,@(1,Y) ; %r16 (In)
Lstab?24c:
;{
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?162.1:
Lstab?25c:
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?164.1:
ld AH,@(1,Y) ; %r16 (In)
st AH,@(3,Y) ; %r17 (temp)
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?165.1:
ld X,#?lit0001
ld AH,@(3,X)
st AH,@(-1,Y) ; i_1_20+3
ld AH,@(2,X)
st AH,@(-2,Y) ; i_1_20+2
ld AH,@(1,X)
st AH,@(-3,Y) ; i_1_20+1
ld AH,@(0,X)
st AH,@(-4,Y) ; i_1_20
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?166.1:
ld X,#?lit0001
ld AH,@(3,X)
st AH,@(-5,Y) ; in_sum+3
ld AH,@(2,X)
st AH,@(-6,Y) ; in_sum+2
ld AH,@(1,X)
st AH,@(-7,Y) ; in_sum+1
ld AH,@(0,X)
st AH,@(-8,Y) ; in_sum
; unsigned int i;
; double *temp = In;
; double i_1_20 = 0;
; double in_sum = 0;
;
; for(i = 0;i < BUF_LENGTH;i++)
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?168.1:
ld AL,#0
add Y,#-8
Lstab?26a:
st AL,@(13,Y) ; %r18 (i)
?L5F4:
; ^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?168.1:
ld AH,@(13,Y) ; %r18 (i)
cmp AH,#20
bcs ?L4F4
bra ?L7F4
?L6F4:
; ^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?168.1:
; ^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?168.1:
ld AL,@(13,Y) ; %r18 (i)
add AL,#1
st AL,@(13,Y) ; %r18 (i)
bra ?L5F4
?L4F4:
; {
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?169.1:
; in_sum += *temp;
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?170.1:
ld X,@(11,Y) ; %r17 (temp)
ld AH,@(3,X)
st AH,@(-1,Y)
ld AH,@(2,X)
st AH,@(-2,Y)
ld AH,@(1,X)
st AH,@(-3,Y)
ld AH,@(0,X)
st AH,@(-4,Y)
st Y,@H'ffe5 ; %r2
ld X,@H'ffe5 ; %r2
ld AH,@(3,X)
st AH,@(-5,Y)
ld AH,@(2,X)
st AH,@(-6,Y)
ld AH,@(1,X)
st AH,@(-7,Y)
ld AH,@(0,X)
st AH,@(-8,Y)
st Y,@H'ffe1 ; %r0
ld AH,@(-8,Y)
ld AL,@H'ffe1 ; %r0
add Y,#-7
Lstab?27a:
bsr $__dadd
; i_1_20 += (*temp) * ((float)i + 1.0);
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?171.1:
add Y,#-17
Lstab?28a:
ld X,#?lit0003
ld AH,@(3,X)
st AH,@(3,Y)
ld AH,@(2,X)
st AH,@(2,Y)
ld AH,@(1,X)
st AH,@(1,Y)
ld AH,@(0,X)
st AH,@(0,Y)
ld AL,@(37,Y) ; %r18 (i)
ld AH,#0
add Y,#-4
Lstab?29a:
bsr $__ffltu
st AL,@(-1,Y)
st AH,@(-2,Y)
mov AL,Y
add AL,#16
ld AH,@(-2,Y)
add Y,#-1
Lstab?30a:
bsr $__f2d
mov AH,Y
add AH,#17
st AH,@H'ffe5 ; %r2
ld X,@H'ffe5 ; %r2
ld AH,@(3,X)
st AH,@(4,Y)
ld AH,@(2,X)
st AH,@(3,Y)
ld AH,@(1,X)
st AH,@(2,Y)
ld AH,@(0,X)
st AH,@(1,Y)
mov AL,Y
add AL,#21
ld AH,@(1,Y)
add Y,#2
Lstab?31a:
bsr $__dadd
mov AL,Y
add AL,#19
st AL,@H'ffe1 ; %r0
ld X,@H'ffe1 ; %r0
ld AH,@(3,X)
st AH,@(10,Y)
ld AH,@(2,X)
st AH,@(9,Y)
ld AH,@(1,X)
st AH,@(8,Y)
ld AH,@(0,X)
st AH,@(7,Y)
ld X,@(38,Y) ; %r17 (temp)
ld AH,@(3,X)
st AH,@(6,Y)
ld AH,@(2,X)
st AH,@(5,Y)
ld AH,@(1,X)
st AH,@(4,Y)
ld AH,@(0,X)
st AH,@(3,Y)
mov AL,Y
add AL,#23
ld AH,@(3,Y)
add Y,#4
Lstab?32a:
bsr $__dmul
mov AH,Y
add AH,#19
st AH,@H'ffe5 ; %r2
ld X,@H'ffe5 ; %r2
ld AH,@(3,X)
st AH,@(10,Y)
ld AH,@(2,X)
st AH,@(9,Y)
ld AH,@(1,X)
st AH,@(8,Y)
ld AH,@(0,X)
st AH,@(7,Y)
mov AL,Y
add AL,#27
st AL,@H'ffe1 ; %r0
ld X,@H'ffe1 ; %r0
ld AH,@(3,X)
st AH,@(6,Y)
ld AH,@(2,X)
st AH,@(5,Y)
ld AH,@(1,X)
st AH,@(4,Y)
ld AH,@(0,X)
st AH,@(3,Y)
mov AL,Y
add AL,#27
ld AH,@(3,Y)
add Y,#4
Lstab?33a:
bsr $__dadd
; temp++;
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?172.1:
ld AL,@(30,Y) ; %r17 (temp)
add AL,#4
add Y,#19
Lstab?34a:
st AL,@(11,Y) ; %r17 (temp)
bra ?L6F4
?L7F4:
; }
;
; LSE_VXYZ0 = (i_1_20 - 10.5 * in_sum) / 665.0;
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?175.1:
add Y,#-12
Lstab?35a:
ld X,#?lit0004
ld AH,@(3,X)
st AH,@(3,Y)
ld AH,@(2,X)
st AH,@(2,Y)
ld AH,@(1,X)
st AH,@(1,Y)
ld AH,@(0,X)
st AH,@(0,Y)
add Y,#-12
Lstab?36a:
mov AH,Y
add AH,#24
st AH,@H'ffe5 ; %r2
ld X,@H'ffe5 ; %r2
ld AH,@(3,X)
st AH,@(3,Y)
ld AH,@(2,X)
st AH,@(2,Y)
ld AH,@(1,X)
st AH,@(1,Y)
ld AH,@(0,X)
st AH,@(0,Y)
ld X,#?lit0005
ld AH,@(3,X)
st AH,@(-1,Y)
ld AH,@(2,X)
st AH,@(-2,Y)
ld AH,@(1,X)
st AH,@(-3,Y)
ld AH,@(0,X)
st AH,@(-4,Y)
mov AL,Y
add AL,#16
ld AH,@(-4,Y)
add Y,#-3
Lstab?37a:
bsr $__dmul
mov AL,Y
add AL,#19
st AL,@H'ffe1 ; %r0
ld X,@H'ffe1 ; %r0
ld AH,@(3,X)
st AH,@(10,Y)
ld AH,@(2,X)
st AH,@(9,Y)
ld AH,@(1,X)
st AH,@(8,Y)
ld AH,@(0,X)
st AH,@(7,Y)
mov AH,Y
add AH,#31
st AH,@H'ffe5 ; %r2
ld X,@H'ffe5 ; %r2
ld AH,@(3,X)
st AH,@(6,Y)
ld AH,@(2,X)
st AH,@(5,Y)
ld AH,@(1,X)
st AH,@(4,Y)
ld AH,@(0,X)
st AH,@(3,Y)
mov AL,Y
add AL,#23
ld AH,@(3,Y)
add Y,#4
Lstab?38a:
bsr $__dsub
mov AH,Y
add AH,#19
st AH,@H'ffe5 ; %r2
ld X,@H'ffe5 ; %r2
ld AH,@(3,X)
st AH,@(10,Y)
ld AH,@(2,X)
st AH,@(9,Y)
ld AH,@(1,X)
st AH,@(8,Y)
ld AH,@(0,X)
st AH,@(7,Y)
ld AH,@(7,Y)
ld AL,#$LSE_VXYZ0
add Y,#8
Lstab?39a:
bsr $__ddiv
; LSE_XYZ0 = (in_sum - 210.0 * LSE_VXYZ0) / 20.0;//BUF_LENGTH;
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?176.1:
ld X,#?lit0006
ld AH,@(3,X)
st AH,@(6,Y)
ld AH,@(2,X)
st AH,@(5,Y)
ld AH,@(1,X)
st AH,@(4,Y)
ld AH,@(0,X)
st AH,@(3,Y)
add Y,#-9
Lstab?40a:
ld X,#$LSE_VXYZ0
ld AH,@(3,X)
st AH,@(3,Y)
ld AH,@(2,X)
st AH,@(2,Y)
ld AH,@(1,X)
st AH,@(1,Y)
ld AH,@(0,X)
st AH,@(0,Y)
ld X,#?lit0007
ld AH,@(3,X)
st AH,@(-1,Y)
ld AH,@(2,X)
st AH,@(-2,Y)
ld AH,@(1,X)
st AH,@(-3,Y)
ld AH,@(0,X)
st AH,@(-4,Y)
mov AL,Y
add AL,#16
ld AH,@(-4,Y)
add Y,#-3
Lstab?41a:
bsr $__dmul
mov AL,Y
add AL,#19
st AL,@H'ffe1 ; %r0
ld X,@H'ffe1 ; %r0
ld AH,@(3,X)
st AH,@(10,Y)
ld AH,@(2,X)
st AH,@(9,Y)
ld AH,@(1,X)
st AH,@(8,Y)
ld AH,@(0,X)
st AH,@(7,Y)
mov AL,Y
add AL,#27
st AL,@H'ffe1 ; %r0
ld X,@H'ffe1 ; %r0
ld AH,@(3,X)
st AH,@(6,Y)
ld AH,@(2,X)
st AH,@(5,Y)
ld AH,@(1,X)
st AH,@(4,Y)
ld AH,@(0,X)
st AH,@(3,Y)
mov AL,Y
add AL,#23
ld AH,@(3,Y)
add Y,#4
Lstab?42a:
bsr $__dsub
mov AH,Y
add AH,#19
st AH,@H'ffe5 ; %r2
ld X,@H'ffe5 ; %r2
ld AH,@(3,X)
st AH,@(10,Y)
ld AH,@(2,X)
st AH,@(9,Y)
ld AH,@(1,X)
st AH,@(8,Y)
ld AH,@(0,X)
st AH,@(7,Y)
ld AH,@(7,Y)
ld AL,#$LSE_XYZ0
add Y,#8
Lstab?43a:
bsr $__ddiv
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -