📄 compass.asm
字号:
; generated by Norcroft eCOG C Compiler V1.10 $BuildRevision$
; special options: -g
;
MODULE compass___compass
.CODE
.LARGE
; TARGET_MAX_STACK_OVERRUN = 8
;/******************************************************************************
;MODE: AML--#GPS+accelerator+compass
;MCU: Cyan eCOG1k
;COMPILER: CyanIDE v1.41
;FILE NAME: compass C source code files
;******************************************************************************/
;#define compass_code
;/******************************************************************************
;Project level include files.
;******************************************************************************/
;#include "compass.h"
;
;/******************************************************************************
;Declaration of static functions.
;******************************************************************************/
;void compass_write(unsigned int compass_command);
;unsigned int compass_read(void);
;void compass_initialization(void);
;/*********************************************************************
;** compass write command.
;*********************************************************************/
;void compass_write(unsigned int compass_command)
;
$compass_write:
^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?22.1:
st AL,@(-1,Y)
st XH,@(-3,Y)
st X,@(-2,Y)
st AL,@(-6,Y) ; %r16 (compass_command)
Lstab?0c:
;{
^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?23.1:
Lstab?1c:
; unsigned char i;
;
; compass_Dout_En = 1;
^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?26.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'.?27.1:
ld AL,@$fd+H'10f
or AL,#4096
st AL,@$fd+H'10f
; compass_Sclk_Clr = 1;
^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?28.1:
ld AL,@$fd+H'110
or AL,#2
st AL,@$fd+H'110
; delay_ms(10);
^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?29.1:
ld AL,#10
add Y,#-7
Lstab?2a:
bsr $delay_ms
;
; for(i = 0; i < 16; i++)
^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?31.1:
ld AL,#0
st AL,@(3,Y) ; %r17 (i)
?L5F1:
; ^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?31.1:
ld AH,@(3,Y) ; %r17 (i)
cmp AH,#16
blt ?L4F1
bra ?L7F1
?L6F1:
; ^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?31.1:
; ^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?31.1:
ld AL,@(3,Y) ; %r17 (i)
add AL,#1
and AL,#255
st AL,@(3,Y) ; %r17 (i)
bra ?L5F1
?L4F1:
; {
^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?32.1:
; if(compass_command & 0x01)
^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?33.1:
ld AL,@(1,Y) ; %r16 (compass_command)
and AL,#1
beq ?L10F1
; compass_Din_Set = 1; //bit = 1
^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?34.1:
ld AL,@$fd+H'110
or AL,#16
st AL,@$fd+H'110
bra ?L12F1
?L10F1:
; else
; compass_Din_Clr = 1; //bit = 0
^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?36.1:
ld AL,@$fd+H'110
or AL,#32
st AL,@$fd+H'110
?L12F1:
;
; delay_ms(10);
^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?38.1:
ld AL,#10
bsr $delay_ms
; compass_Sclk_Set = 1;
^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?39.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'.?40.1:
ld AL,#10
bsr $delay_ms
; //nop();
; compass_command = compass_command >> 1;
^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?42.1:
ld AL,@(1,Y) ; %r16 (compass_command)
ld AH,#0
lsr #1
;
; if(i == 4)
st AL,@(1,Y) ; %r16 (compass_command)
^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?44.1:
ld AH,@(3,Y) ; %r17 (i)
cmp AH,#4
bne ?L13F1
; compass_Dout_Clr = 1;
^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?45.1:
ld AL,@$fd+H'10f
or AL,#8192
st AL,@$fd+H'10f
?L13F1:
;
; compass_Sclk_Clr = 1;
^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?47.1:
ld AL,@$fd+H'110
or AL,#2
st AL,@$fd+H'110
bra ?L6F1
?L7F1:
; }
;
; compass_Dout_Set = 1;
^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?50.1:
ld AL,@$fd+H'10f
or AL,#4096
st AL,@$fd+H'10f
; compass_Sclk_Clr = 1;
^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?51.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'.?52.1:
ld AL,@$fd+H'110
or AL,#32
st AL,@$fd+H'110
; nop();
^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?53.1:
nop
Lstab?3c:
^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?54.1:
?L18F1:
add Y,#7
ld XH,@(-3,Y)
bra @(-2,Y)
Lstab?4c:
;
;}
;
;/*********************************************************************
;** compass read heading.
;*********************************************************************/
;unsigned int compass_read(void)
;
$compass_read:
^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?59.1:
add Y,#-12
Lstab?5a:
st XH,@(10,Y)
st X,@(11,Y)
Lstab?6c:
;{
^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?60.1:
Lstab?7c:
^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?63.1:
ld AL,#0
st AL,@(5,Y) ; %r18 (com_checksum)
^compass___compass.'D:\GPS\software\GPS_A_C\compass.c'.?64.1:
ld AH,#0
; //struct compass_receiv *de = 0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -