📄 gac_algorithm.asm
字号:
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 AH,#$ACC_average_buf
add AH,#4
st AH,@H'ffe5 ; %r2
ld X,@H'ffe5 ; %r2
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)
ld AL,#$ACC_average_buf
add AL,#4
ld AH,@(-4,Y)
add Y,#-3
Lstab?102a:
bsr $__dadd
; ACC_average_buf.z += ACC_delay_buf[i].z;
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?285.1:
ld AL,#12
ld AH,@(8,Y) ; %r16 (i)
add Y,#3
Lstab?103a:
bsr $__mh
add AL,#$ACC_delay_buf
add AL,#8
st AL,@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 AL,#$ACC_average_buf
add AL,#8
st AL,@H'ffe1 ; %r0
ld X,@H'ffe1 ; %r0
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)
ld AL,#$ACC_average_buf
add AL,#8
ld AH,@(-4,Y)
add Y,#-3
Lstab?104a:
bsr $__dadd
add Y,#7
Lstab?105a:
bra ?L6F7
?L7F7:
; }
;
; ACC_average_buf.x /= FIRST_COUNT;
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?288.1:
ld X,#?lit0008
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)
ld AL,#$ACC_average_buf
st AL,@H'ffe1 ; %r0
ld X,@H'ffe1 ; %r0
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)
ld AL,#$ACC_average_buf
ld AH,@(-8,Y)
add Y,#-7
Lstab?106a:
bsr $__ddiv
; ACC_average_buf.y /= FIRST_COUNT;
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?289.1:
ld X,#?lit0008
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,#$ACC_average_buf
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,#$ACC_average_buf
add AL,#4
ld AH,@(-1,Y)
bsr $__ddiv
; ACC_average_buf.z /= FIRST_COUNT;
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?290.1:
ld X,#?lit0008
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,#$ACC_average_buf
add AH,#8
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,#$ACC_average_buf
add AL,#8
ld AH,@(-1,Y)
bsr $__ddiv
Lstab?107c:
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?292.1:
add Y,#11
ld XH,@(-2,Y)
bra @(-1,Y)
Lstab?108c:
;
;
;}
;
;
;/******************************************************************************
;
; Get COM average
; Use the method of insert value.
; Formula: Cn = C0 + C(m-1) - C0) / (m - 1) * n;
; Cn had to * 100;
;******************************************************************************/
;void Get_COM_average(void)
;
$Get_COM_average:
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?302.1:
st XH,@(-2,Y)
st X,@(-1,Y)
Lstab?109c:
;{
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?303.1:
Lstab?110c:
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?305.1:
ld AL,#0
st AL,@(-3,Y) ; %r18 (temp1)
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?307.1:
; int n;
; int temp1 = 0;
; //int COM_change_buf[2];
; unsigned int temp2 = 0;
;
;
; //COM_change_buf[0] = 90 - (int)COM_delay_buf[0]; //change the compass data for
; //COM_change_buf[1] = 90 - (int)COM_delay_buf[1]; //matching the ACC X,Y data
; //if(COM_change_buf[0] < 0) COM_change_buf[0] += 360;
; //if(COM_change_buf[1] < 0) COM_change_buf[1] += 360;
;
; COM_average_buf[0] = (unsigned int)COM_delay_buf[0] * 10;
st AL,@(-5,Y) ; %r17 (temp2)
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?315.1:
ld AL,#10
ld AH,@$COM_delay_buf
add Y,#-8
Lstab?111a:
bsr $__umh
st AL,@$COM_average_buf
; COM_average_buf[FIRST_COUNT - 1] = (unsigned int)COM_delay_buf[1] * 10;
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?316.1:
ld AL,#10
ld AH,@$COM_delay_buf+H'1
bsr $__umh
st AL,@$COM_average_buf+H'4
;
; temp1 = (int)(COM_average_buf[FIRST_COUNT - 1] - COM_average_buf[0]) / (int)(FIRST_COUNT - 1);//(C4 - C0)/5
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?318.1:
ld AL,@$COM_average_buf+H'4
sub AL,@$COM_average_buf
bpl ?L4F8
add AL,#3
?L4F8:
asl #16
asr #18
;
;
;
; for ( n = 1; n < (FIRST_COUNT - 1); n++ )
st AL,@(5,Y) ; %r18 (temp1)
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?322.1:
ld AL,#1
st AL,@(1,Y) ; %r16 (n)
?L7F8:
; ^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?322.1:
ld AH,@(1,Y) ; %r16 (n)
cmp AH,#4
blt ?L6F8
bra ?L9F8
?L8F8:
; ^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?322.1:
; ^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?322.1:
ld AL,@(1,Y) ; %r16 (n)
add AL,#1
st AL,@(1,Y) ; %r16 (n)
bra ?L7F8
?L6F8:
; {
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?323.1:
; //if(temp1 < 0)
; //{
; // temp3 = ~temp1 + 1;
; // temp2 = COM_average_buf[0] - temp3 * n;
; //}
; //else
; //{
; temp2 = (int)COM_average_buf[0] + temp1 * n;
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?331.1:
ld AL,@(1,Y) ; %r16 (n)
ld AH,@(5,Y) ; %r18 (temp1)
bsr $__mh
add AL,@$COM_average_buf
; //}
; if(temp2 % 10 > 4) //rounding off
st AL,@(3,Y) ; %r17 (temp2)
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?333.1:
ld AL,#10
ld AH,@(3,Y) ; %r17 (temp2)
bsr $__urh
cmp AL,#5
bcs ?L12F8
; {
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?334.1:
; temp2 /= 10;
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?335.1:
ld AL,#10
ld AH,@(3,Y) ; %r17 (temp2)
bsr $__udh
; COM_average_buf[n] = temp2 + 1;
st AL,@(3,Y) ; %r17 (temp2)
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?336.1:
ld AL,@(3,Y) ; %r17 (temp2)
add AL,#1
ld X,#$COM_average_buf
add X,@(1,Y) ; %r16 (n)
st AL,@(0,X)
bra ?L16F8
?L12F8:
; }
; else
; {
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?339.1:
; temp2 /= 10;
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?340.1:
ld AL,#10
ld AH,@(3,Y) ; %r17 (temp2)
bsr $__udh
; COM_average_buf[n] = temp2;
st AL,@(3,Y) ; %r17 (temp2)
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?341.1:
ld X,#$COM_average_buf
add X,@(1,Y) ; %r16 (n)
ld AH,@(3,Y) ; %r17 (temp2)
st AH,@(0,X)
?L16F8:
bra ?L8F8
?L9F8:
; }
; }
;
; COM_average_buf[0] = (unsigned int)COM_delay_buf[0];
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?345.1:
ld AL,@$COM_delay_buf
st AL,@$COM_average_buf
; COM_average_buf[FIRST_COUNT - 1] = (unsigned int)COM_delay_buf[1];
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?346.1:
ld AL,@$COM_delay_buf+H'1
st AL,@$COM_average_buf+H'4
;
; for(n = 0;n < 5;n++) //change compass data angle to radian.
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?348.1:
ld AL,#0
st AL,@(1,Y) ; %r16 (n)
?L21F8:
; ^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?348.1:
ld AH,@(1,Y) ; %r16 (n)
cmp AH,#5
blt ?L20F8
bra ?L23F8
?L22F8:
; ^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?348.1:
; ^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?348.1:
ld AL,@(1,Y) ; %r16 (n)
add AL,#1
st AL,@(1,Y) ; %r16 (n)
bra ?L21F8
?L20F8:
; {
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?349.1:
; COM_radian_buf[n] = COM_average_buf[n] * PI / 180;
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?350.1:
add Y,#-12
Lstab?112a:
ld X,#?lit0009
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,#?lit0010
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)
ld X,#$COM_average_buf
add X,@(13,Y) ; %r16 (n)
ld AL,@(0,X)
ld AH,#0
add Y,#-14
Lstab?113a:
st AL,@(1,Y)
st AH,@(0,Y)
mov AL,Y
add AL,#18
ld AH,@(0,Y)
add Y,#1
Lstab?114a:
bsr $__dfltu
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?115a:
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)
ld AL,@(24,Y) ; %r16 (n)
asl #2
add AL,#$COM_radian_buf
ld AH,@(7,Y)
add Y,#8
Lstab?116a:
bsr $__ddiv
add Y,#15
Lstab?117a:
bra ?L22F8
?L23F8:
Lstab?118c:
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?352.1:
?L29F8:
add Y,#8
ld XH,@(-2,Y)
bra @(-1,Y)
Lstab?119c:
;
; }
;}
;
;/*--------------------------------------------------------------------
;
; IN: X_Y_Z *acc
; ROLL_PITCH *r_p
;OUT: -
;
;--------------------------------------------------------------------*/
;void Calculate_roll_pitch( ACC_type *acc )
;
$Calculate_roll_pitch:
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?361.1:
st AL,@(-1,Y)
st XH,@(-3,Y)
st X,@(-2,Y)
st AL,@(-4,Y) ; %r16 (acc)
Lstab?120c:
;{
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?362.1:
Lstab?121c:
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?363.1:
add Y,#-13
Lstab?122a:
ld X,#?lit0001
ld AH,@(3,X)
st AH,@(3,Y) ; cos_roll+3
ld AH,@(2,X)
st AH,@(2,Y) ; cos_roll+2
ld AH,@(1,X)
st AH,@(1,Y) ; cos_roll+1
ld AH,@(0,X)
st AH,@(0,Y) ; cos_roll
; double a,cos_roll = 0;
;
; a = (acc->x * acc->x) + (acc->y * acc->y) + (acc->z * acc->z)
^GAC_Algorithm___GAC_Algorithm.'D:\GPS\software\GPS_A_C\GAC_Algorithm.c'.?365.1:
add Y,#-24
Lstab?123a:
ld X,#?lit0011
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?124a:
ld AH,@(45,Y) ; %r16 (acc)
add AH,#8
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 AH,@(45,Y) ; %r16 (acc)
add AH,#8
st AH,@H'ffe5 ; %r2
ld X,@H'ffe5 ; %r2
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,#28
ld AH,@(-4,Y)
add Y,#-3
Lstab?125a:
bsr $__dmul
mov AH,Y
add AH,#31
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,@(48,Y) ; %r16 (acc)
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,@(-3,Y)
ld AH,@(1,X)
st AH,@(-4,Y)
ld AH,@(0,X)
st AH,@(-5,Y)
add Y,#-9
Lstab?126a:
ld AH,@(57,Y) ; %r16 (acc)
add AH,#4
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)
mov AL,Y
add AL,#32
ld AH,@(0,Y)
add Y,#1
Lstab?127a:
bsr $__dmul
mov AH,Y
add AH,#31
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,@(56,Y) ; %r16 (acc)
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 AH,@(56,Y) ; %r16 (acc)
st AH,@H'ffe5 ; %r2
ld X,@H'ffe5 ; %r2
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)
mov AL,Y
add AL,#27
ld AH,@(-5,Y)
add Y,#-4
Lstab?128a:
bsr $__dmul
mov AH,Y
add AH,#31
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,#39
ld AH,@(7,Y)
add Y,#8
Lstab?129a:
bsr $__dadd
mov AH,Y
add AH,#31
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,#39
ld AH,@(7,Y)
add Y,#8
Lstab?130a:
bsr $__dadd
mov AH,Y
add AH,#31
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,#39
ld AH,@(7,Y)
add Y,#8
Lstab?131a:
bsr $_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -