📄 compass.asm
字号:
; 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 + -