📄 gps-1280.lst
字号:
__start:
__text_start:
AF EFCF LDI R28,0xFF
B0 E2D1 LDI R29,0x21
B1 BFCD OUT 0x3D,R28
B2 BFDE OUT 0x3E,R29
B3 51CE SUBI R28,0x1E
B4 40D0 SBCI R29,0
B5 EA0A LDI R16,0xAA
B6 8308 STD Y+0,R16
B7 2400 CLR R0
B8 E6E9 LDI R30,0x69
B9 E0F2 LDI R31,2
BA E016 LDI R17,6
BB 35EC CPI R30,0x5C
BC 07F1 CPC R31,R17
BD F011 BEQ 0x00C0
BE 9201 ST R0,Z+
BF CFFB RJMP 0x00BB
C0 8300 STD Z+0,R16
C1 EFE4 LDI R30,0xF4
C2 E0F0 LDI R31,0
C3 E0A0 LDI R26,0
C4 E0B2 LDI R27,2
C5 E011 LDI R17,1
C6 E000 LDI R16,0
C7 BF0B OUT 0x3B,R16
C8 35ED CPI R30,0x5D
C9 07F1 CPC R31,R17
CA F021 BEQ 0x00CF
CB 95C8 LPM
CC 9631 ADIW R30,1
CD 920D ST R0,X+
CE CFF9 RJMP 0x00C8
CF 940E 0451 CALL _main
_exit:
D1 CFFF RJMP _exit
FILE: E:\item\GPS-1280\debug.c
(0001) #include <string.h>
(0002) #include "uart3.h"
(0003)
(0004) #define DEBUG
(0005)
(0006) const unsigned char char_buf[]=
(0007) {
(0008) '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F',
(0009) };
(0010) /*************************************************
(0011)
(0012) *************************************************/
(0013) void debug_init(void)
(0014) {
_debug_init:
D2 9508 RET
_debug_send_char:
ch --> R10
D3 92AA ST R10,-Y
D4 2EA0 MOV R10,R16
(0015)
(0016) }
(0017) /*************************************************
(0018)
(0019) *************************************************/
(0020) void debug_send_char(unsigned char ch)
(0021) {
(0022) uart3_send_char(ch);
D5 2D0A MOV R16,R10
D6 940E 0582 CALL _uart3_send_char
D8 90A9 LD R10,Y+
D9 9508 RET
_debug_send_chars:
i --> R20
len --> R10
ch --> R12
DA 940E 0682 CALL push_xgset303C
DC 0159 MOVW R10,R18
DD 0168 MOVW R12,R16
(0023) }
(0024) /*************************************************
(0025)
(0026) *************************************************/
(0027) void debug_send_chars(unsigned char *ch,unsigned int len)
(0028) {
(0029) unsigned int i;
(0030) for(i=0;i<len;i++)
DE 2744 CLR R20
DF 2755 CLR R21
E0 C008 RJMP 0x00E9
(0031) {
(0032) uart3_send_char(*(ch+i));
E1 01FA MOVW R30,R20
E2 0DEC ADD R30,R12
E3 1DFD ADC R31,R13
E4 8100 LDD R16,Z+0
E5 940E 0582 CALL _uart3_send_char
E7 5F4F SUBI R20,0xFF
E8 4F5F SBCI R21,0xFF
E9 154A CP R20,R10
EA 055B CPC R21,R11
EB F3A8 BCS 0x00E1
EC 940C 0689 JMP pop_xgset303C
_debug_send_string:
len --> R12
str --> R10
EE 940E 0673 CALL push_xgset003C
F0 0169 MOVW R12,R18
F1 0158 MOVW R10,R16
(0033) }
(0034) }
(0035) /*************************************************
(0036)
(0037) *************************************************/
(0038) void debug_send_string(char *str,unsigned int len)
(0039) {
(0040) uart3_data_send(str,len);
F2 0196 MOVW R18,R12
F3 0185 MOVW R16,R10
F4 940E 056B CALL _uart3_data_send
F6 940C 065D JMP pop_xgset003C
_debug_str_without_n:
debugstr --> R10
F8 92AA ST R10,-Y
F9 92BA ST R11,-Y
FA 0158 MOVW R10,R16
(0041) }
(0042) /*************************************************
(0043) *输完字符串后不自动换行
(0044) *************************************************/
(0045) void debug_str_without_n(char *debugstr)
(0046) {
(0047) #ifdef DEBUG
(0048) debug_send_string(debugstr,strlen(debugstr));
FB 0185 MOVW R16,R10
FC 940E 0590 CALL _strlen
FE 0198 MOVW R18,R16
FF 0185 MOVW R16,R10
100 DFED RCALL _debug_send_string
101 90B9 LD R11,Y+
102 90A9 LD R10,Y+
103 9508 RET
_debug_str:
debugstr --> R10
104 92AA ST R10,-Y
105 92BA ST R11,-Y
106 0158 MOVW R10,R16
(0049) #else
(0050)
(0051) #endif
(0052) }
(0053) /*************************************************
(0054) *输完字符串后自动换行
(0055) *************************************************/
(0056) void debug_str(char *debugstr)
(0057) {
(0058) #ifdef DEBUG
(0059) debug_send_string(debugstr,strlen(debugstr));
107 0185 MOVW R16,R10
108 940E 0590 CALL _strlen
10A 0198 MOVW R18,R16
10B 0185 MOVW R16,R10
10C DFE1 RCALL _debug_send_string
(0060) debug_send_string("\n",1);
10D E021 LDI R18,1
10E E030 LDI R19,0
10F E000 LDI R16,0
110 E012 LDI R17,2
111 DFDC RCALL _debug_send_string
112 90B9 LD R11,Y+
113 90A9 LD R10,Y+
114 9508 RET
_debug_uchars:
len --> R12
debugstr --> R10
115 940E 0673 CALL push_xgset003C
117 0169 MOVW R12,R18
118 0158 MOVW R10,R16
(0061) #else
(0062)
(0063) #endif
(0064) }
(0065) /*************************************************
(0066)
(0067) *************************************************/
(0068) void debug_uchars(unsigned char* debugstr,unsigned int len)
(0069) {
(0070) #ifdef DEBUG
(0071) debug_send_chars(debugstr,len);
119 0196 MOVW R18,R12
11A 0185 MOVW R16,R10
11B DFBE RCALL _debug_send_chars
(0072) debug_send_string("\n",1);
11C E021 LDI R18,1
11D E030 LDI R19,0
11E E000 LDI R16,0
11F E012 LDI R17,2
120 DFCD RCALL _debug_send_string
121 940C 065D JMP pop_xgset003C
_debug_uchars_without_n:
len --> R12
debugstr --> R10
123 940E 0673 CALL push_xgset003C
125 0169 MOVW R12,R18
126 0158 MOVW R10,R16
(0073) #else
(0074)
(0075) #endif
(0076) }
(0077) /*************************************************
(0078)
(0079) *************************************************/
(0080) void debug_uchars_without_n(unsigned char* debugstr,unsigned int len)
(0081) {
(0082) #ifdef DEBUG
(0083) debug_send_chars(debugstr,len);
127 0196 MOVW R18,R12
128 0185 MOVW R16,R10
129 DFB0 RCALL _debug_send_chars
12A 940C 065D JMP pop_xgset003C
(0084) #else
(0085)
(0086) #endif
(0087) }
(0088) /*************************************************
(0089)
(0090) *************************************************/
(0091) static unsigned char dtoc(unsigned char d)
(0092) {
(0093) #ifdef DEBUG
(0094) if(d<=9)
_dtoc:
d --> R16
debug.c:dtoc:
12C E089 LDI R24,0x9
12D 1780 CP R24,R16
12E F010 BCS 0x0131
(0095) return(d+0x30);
12F 5D00 SUBI R16,0xD0
130 C001 RJMP 0x0132
(0096) else
(0097) return(d+0x37);
131 5C09 SUBI R16,0xC9
132 9508 RET
_debug_num_uchar:
debug_string --> Y,+0
i --> R20
cBuf --> R10
c --> R12
133 940E 066D CALL push_xgsetF0FC
135 2EC0 MOV R12,R16
136 9725 SBIW R28,5
(0098) #endif
(0099) }
(0100) /*************************************************
(0101)
(0102) *************************************************/
(0103) void debug_num_uchar(unsigned char c)
(0104) {
(0105) #ifdef DEBUG
(0106) unsigned char debug_string[5];
(0107) unsigned char cBuf;
(0108) unsigned int i=0;
137 2744 CLR R20
138 2755 CLR R21
(0109)
(0110) cBuf=(c%1000)/100;
139 EE28 LDI R18,0xE8
13A E033 LDI R19,3
13B 2D0C MOV R16,R12
13C 2711 CLR R17
13D 940E 05A1 CALL mod16s
13F E624 LDI R18,0x64
140 E030 LDI R19,0
141 940E 05A5 CALL div16s
(0111) debug_string[i++]=dtoc(cBuf);
143 011A MOVW R2,R20
144 5F4F SUBI R20,0xFF
145 4F5F SBCI R21,0xFF
146 922F PUSH R2
147 923F PUSH R3
148 DFE3 RCALL _dtoc
149 903F POP R3
14A 902F POP R2
14B 01CE MOVW R24,R28
14C 01F1 MOVW R30,R2
14D 0FE8 ADD R30,R24
14E 1FF9 ADC R31,R25
14F 8300 STD Z+0,R16
(0112) cBuf=(c%100)/10;
150 E614 LDI R17,0x64
151 2D0C MOV R16,R12
152 940E 0645 CALL mod8u
154 E01A LDI R17,0xA
155 940E 0647 CALL div8u
(0113) debug_string[i++]=dtoc(cBuf);
157 01BA MOVW R22,R20
158 5F4F SUBI R20,0xFF
159 4F5F SBCI R21,0xFF
15A DFD1 RCALL _dtoc
15B 2EE0 MOV R14,R16
15C 01CE MOVW R24,R28
15D 01FB MOVW R30,R22
15E 0FE8 ADD R30,R24
15F 1FF9 ADC R31,R25
160 82E0 STD Z+0,R14
(0114) cBuf=c%10;
161 E01A LDI R17,0xA
162 2D0C MOV R16,R12
163 940E 0645 CALL mod8u
(0115) debug_string[i++]=dtoc(cBuf);
165 01BA MOVW R22,R20
166 5F4F SUBI R20,0xFF
167 4F5F SBCI R21,0xFF
168 DFC3 RCALL _dtoc
169 2EA0 MOV R10,R16
16A 01CE MOVW R24,R28
16B 01FB MOVW R30,R22
16C 0FE8 ADD R30,R24
16D 1FF9 ADC R31,R25
16E 82A0 STD Z+0,R10
(0116)
(0117) debug_send_chars(debug_string,i);
16F 019A MOVW R18,R20
170 018E MOVW R16,R28
171 DF68 RCALL _debug_send_chars
(0118) debug_send_string("\n",1);
172 E021 LDI R18,1
173 E030 LDI R19,0
174 E000 LDI R16,0
175 E012 LDI R17,2
176 DF77 RCALL _debug_send_string
177 9625 ADIW R28,5
178 940C 0662 JMP pop_xgsetF0FC
_debug_num_uint:
debug_string --> Y,+0
i --> R20
cBuf --> R10
lBuf --> R12
17A 940E 066D CALL push_xgsetF0FC
17C 0168 MOVW R12,R16
17D 972A SBIW R28,0xA
(0119) #else
(0120) c=0;
(0121) #endif
(0122) }
(0123) /*************************************************
(0124)
(0125) *************************************************/
(0126) void debug_num_uint(unsigned int lBuf)
(0127) {
(0128) #ifdef DEBUG
(0129) unsigned char debug_string[10];
(0130) unsigned char cBuf;
(0131) unsigned int i=0;
17E 2744 CLR R20
17F 2755 CLR R21
(0132)
(0133) cBuf=(lBuf%100000)/10000;
180 EA80 LDI R24,0xA0
181 E896 LDI R25,0x86
182 E0A1 LDI R26,1
183 E0B0 LDI R27,0
184 0186 MOVW R16,R12
185 0197 MOVW R18,R14
186 2722 CLR R18
187 2733 CLR R19
188 93BA ST R27,-Y
189 93AA ST R26,-Y
18A 939A ST R25,-Y
18B 938A ST R24,-Y
18C 940E 05E3 CALL mod32s
18E E180 LDI R24,0x10
18F E297 LDI R25,0x27
190 E0A0 LDI R26,0
191 E0B0 LDI R27,0
192 93BA ST R27,-Y
193 93AA ST R26,-Y
194 939A ST R25,-Y
195 938A ST R24,-Y
196 940E 05E1 CALL div32s
(0134) debug_string[i++]=dtoc(cBuf);
198 011A MOVW R2,R20
199 5F4F SUBI R20,0xFF
19A 4F5F SBCI R21,0xFF
19B 922F PUSH R2
19C 923F PUSH R3
19D DF8E RCALL _dtoc
19E 903F POP R3
19F 902F POP R2
1A0 01CE MOVW R24,R28
1A1 01F1 MOVW R30,R2
1A2 0FE8 ADD R30,R24
1A3 1FF9 ADC R31,R25
1A4 8300 STD Z+0,R16
(0135) cBuf=(lBuf%10000)/1000;
1A5 E120 LDI R18,0x10
1A6 E237 LDI R19,0x27
1A7 0186 MOVW R16,R12
1A8 940E 05BF CALL mod16u
1AA EE28 LDI R18,0xE8
1AB E033 LDI R19,3
1AC 940E 05C1 CALL div16u
(0136) debug_string[i++]=dtoc(cBuf);
1AE 01BA MOVW R22,R20
1AF 5F4F SUBI R20,0xFF
1B0 4F5F SBCI R21,0xFF
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -