⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gac_algorithm.asm

📁 使用CYAN单片机的ECOG1开发板连接SIM300C的GSM模块开发的短信收发程序.供UART和AT指令编程者参考
💻 ASM
📖 第 1 页 / 共 5 页
字号:
	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 + -