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

📄 compass.asm

📁 使用CYAN单片机的ECOG1开发板连接SIM300C的GSM模块开发的短信收发程序.供UART和AT指令编程者参考
💻 ASM
📖 第 1 页 / 共 5 页
字号:
;	unsigned char i;
;	unsigned int com_checksum = 0;
;	unsigned long int result = 0;
;	unsigned int heading;
;	
;	compass_Dout_Dis = 1;
	st	AL,@(1,Y)	; %r16 (result)
	st	AH,@(0,Y)	; %r16 (result)
^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?67.1:
	ld	AL,@$fd+H'10f
	or	AL,#-32768
	st	AL,@$fd+H'10f
;	compass_Sclk_Set = 1;
^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?68.1:
	ld	AL,@$fd+H'110
	or	AL,#1
	st	AL,@$fd+H'110
;	delay_ms(10);
^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?69.1:
	ld	AL,#10
	bsr	$delay_ms
;	
;	//read data code
;	for(i = 0; i < 20; i++)
^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?72.1:
	ld	AL,#0
	st	AL,@(3,Y)	; %r17 (i)
?L5F2:
; ^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?72.1:
	ld	AH,@(3,Y)	; %r17 (i)
	cmp	AH,#20
	blt	?L4F2
	bra	?L7F2
?L6F2:
; ^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?72.1:
; ^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?72.1:
	ld	AL,@(3,Y)	; %r17 (i)
	add	AL,#1
	and	AL,#255
	st	AL,@(3,Y)	; %r17 (i)
	bra	?L5F2
?L4F2:
;	{
^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?73.1:
;		compass_Sclk_Clr = 1;
^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?74.1:
	ld	AL,@$fd+H'110
	or	AL,#2
	st	AL,@$fd+H'110
;		
;		if(compass_Dout_In)
^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?76.1:
	ld	AL,@$fd+H'116
	asr	#6
	and	AL,#1
	beq	?L10F2
;			result = (result << 1) | 0x01;  // read "1"
^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?77.1:
	ld	AL,@(1,Y)	; %r16 (result)
	ld	AH,@(0,Y)	; %r16 (result)
	asl	#1
	or	AL,#1
	st	AL,@(1,Y)	; %r16 (result)
	st	AH,@(0,Y)	; %r16 (result)
	bra	?L12F2
?L10F2:
;		else
;			result = result << 1;           // read "0"
^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?79.1:
	ld	AL,@(1,Y)	; %r16 (result)
	ld	AH,@(0,Y)	; %r16 (result)
	asl	#1
	st	AL,@(1,Y)	; %r16 (result)
	st	AH,@(0,Y)	; %r16 (result)
?L12F2:
;		
;		delay_ms(10);
^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?81.1:
	ld	AL,#10
	bsr	$delay_ms
;		compass_Sclk_Set = 1;
^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?82.1:
	ld	AL,@$fd+H'110
	or	AL,#1
	st	AL,@$fd+H'110
;		delay_ms(10);
^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?83.1:
	ld	AL,#10
	bsr	$delay_ms
	bra	?L6F2
?L7F2:
;	}
;
;	nop();
^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?86.1:
	nop
;	compass_Sclk_Clr = 1;
^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?87.1:
	ld	AL,@$fd+H'110
	or	AL,#2
	st	AL,@$fd+H'110
;	compass_Din_Clr = 1;
^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?88.1:
	ld	AL,@$fd+H'110
	or	AL,#32
	st	AL,@$fd+H'110
;	compass_Dout_En = 1;
^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?89.1:
	ld	AL,@$fd+H'10f
	or	AL,#16384
	st	AL,@$fd+H'10f
;	compass_Dout_Set = 1;
^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?90.1:
	ld	AL,@$fd+H'10f
	or	AL,#4096
	st	AL,@$fd+H'10f
;	
;	*((int*)(&compass_receiv))	= (int)(result);
^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?92.1:
	ld	AL,@(1,Y)	; %r16 (result)
	st	AL,@$compass_receiv
;	com_checksum = (int)(result >> 16);
^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?93.1:
	ld	AH,#0
	ld	AL,@(0,Y)	; %r16 (result)
;	
;	if(com_checksum != (Com_distortion + Com_heading2 + Com_heading1 + Com_heading0) & 0x000f)
	st	AL,@(5,Y)	; %r18 (com_checksum)
^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?95.1:
	ld	AL,@$compass_receiv
	asr	#12
	and	AL,#15
	st	AL,@H'ffe5	; %r2
	ld	AL,@$compass_receiv
	asr	#8
	and	AL,#15
	add	AL,@H'ffe5	; %r2
	st	AL,@H'ffe5	; %r2
	ld	AL,@$compass_receiv
	asr	#4
	and	AL,#15
	add	AL,@H'ffe5	; %r2
	ld	AH,@$compass_receiv
	and	AH,#15
	st	AH,@H'ffe5	; %r2
	add	AL,@H'ffe5	; %r2
	cmp	AL,@(5,Y)	; %r18 (com_checksum)
	beq	?L16F2
	ld	AL,#1
	bra	?L15F2
?L16F2:
	ld	AL,#0
?L15F2:
	and	AL,#15
	beq	?L14F2
;		return(0);
^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?96.1:
	ld	AL,#0
?L21F2:
	add	Y,#12
	ld	XH,@(-2,Y)
	bra	@(-1,Y)
?L14F2:
;	//if((Com_distortion != 0) && (Com_distortion != 2))
;	//	return(0);
;	
;	heading = (unsigned int)(Com_heading2 * 100 + Com_heading1 * 10 + Com_heading0);
^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?100.1:
	ld	AL,@$compass_receiv
	asr	#8
	and	AL,#15
	st	AL,@H'ffe5	; %r2
	ld	AL,#100
	ld	AH,@H'ffe5	; %r2
	bsr	$__mh
	st	AL,@(9,Y)	; %r20
	ld	AL,@$compass_receiv
	asr	#4
	and	AL,#15
	st	AL,@H'ffe5	; %r2
	ld	AL,#10
	ld	AH,@H'ffe5	; %r2
	bsr	$__mh
	add	AL,@(9,Y)	; %r20
	ld	AH,@$compass_receiv
	and	AH,#15
	st	AH,@H'ffe5	; %r2
	add	AL,@H'ffe5	; %r2
;	return heading;
	st	AL,@(7,Y)	; %r19 (heading)
^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?101.1:
	ld	AL,@(7,Y)	; %r19 (heading)
	bra	?L21F2
Lstab?8c:
;
;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -