1 .file "xbee.c" 2 .arch atmega128 3 __SREG__ = 0x3f 4 __SP_H__ = 0x3e 5 __SP_L__ = 0x3d 6 __tmp_reg__ = 0 7 __zero_reg__ = 1 8 .global __do_copy_data 9 .global __do_clear_bss 10 .text 11 .global __vector_30 13 __vector_30: 14 /* prologue: frame size=0 */ 15 0000 1F92 push __zero_reg__ 16 0002 0F92 push __tmp_reg__ 17 0004 0FB6 in __tmp_reg__,__SREG__ 18 0006 0F92 push __tmp_reg__ 19 0008 1124 clr __zero_reg__ 20 000a 2F93 push r18 21 000c 3F93 push r19 22 000e 8F93 push r24 23 0010 9F93 push r25 24 0012 EF93 push r30 25 0014 FF93 push r31 26 /* prologue end (size=11) */ 27 0016 8091 9C00 lds r24,156 28 001a E091 0000 lds r30,buffer_last 29 001e F091 0000 lds r31,(buffer_last)+1 30 0022 E050 subi r30,lo8(-(arrival_buf)) 31 0024 F040 sbci r31,hi8(-(arrival_buf)) 32 0026 8083 st Z,r24 33 0028 2091 0000 lds r18,buffer_last 34 002c 3091 0000 lds r19,(buffer_last)+1 35 0030 2F5F subi r18,lo8(-(1)) 36 0032 3F4F sbci r19,hi8(-(1)) 37 0034 2038 cpi r18,128 38 0036 3105 cpc r19,__zero_reg__ 39 0038 01F4 brne .L2 40 003a 20E0 ldi r18,lo8(0) 41 003c 30E0 ldi r19,hi8(0) 42 .L2: 43 003e 8091 0000 lds r24,buffer_first 44 0042 9091 0000 lds r25,(buffer_first)+1 45 0046 3093 0000 sts (buffer_last)+1,r19 46 004a 2093 0000 sts buffer_last,r18 47 /* epilogue: frame size=0 */ 48 004e FF91 pop r31 49 0050 EF91 pop r30 50 0052 9F91 pop r25 51 0054 8F91 pop r24 52 0056 3F91 pop r19 53 0058 2F91 pop r18 54 005a 0F90 pop __tmp_reg__ 55 005c 0FBE out __SREG__,__tmp_reg__ 56 005e 0F90 pop __tmp_reg__ 57 0060 1F90 pop __zero_reg__ 58 0062 1895 reti 59 /* epilogue end (size=11) */ 60 /* function __vector_30 size 50 (28) */ 62 .data 63 .LC0: 64 0000 4F4B 0D00 .string "OK\r" 65 .text 67 xbee_wait_for_ok: 68 /* prologue: frame size=0 */ 69 /* prologue end (size=0) */ 70 0064 00C0 rjmp .L20 71 .L7: 72 0066 2091 0000 lds r18,buffer_last 73 006a 3091 0000 lds r19,(buffer_last)+1 74 006e 8091 0000 lds r24,buffer_first 75 0072 9091 0000 lds r25,(buffer_first)+1 76 0076 2817 cp r18,r24 77 0078 3907 cpc r19,r25 78 007a 01F0 breq .L21 79 007c 8091 0000 lds r24,buffer_first 80 0080 9091 0000 lds r25,(buffer_first)+1 81 0084 FC01 movw r30,r24 82 0086 E050 subi r30,lo8(-(arrival_buf)) 83 0088 F040 sbci r31,hi8(-(arrival_buf)) 84 008a E081 ld r30,Z 85 008c 0196 adiw r24,1 86 008e 9093 0000 sts (buffer_first)+1,r25 87 0092 8093 0000 sts buffer_first,r24 88 0096 8091 0000 lds r24,buffer_first 89 009a 9091 0000 lds r25,(buffer_first)+1 90 009e 8038 cpi r24,128 91 00a0 9105 cpc r25,__zero_reg__ 92 00a2 01F4 brne .L9 93 00a4 1092 0000 sts (buffer_first)+1,__zero_reg__ 94 00a8 1092 0000 sts buffer_first,__zero_reg__ 95 .L9: 96 00ac 8C91 ld r24,X 97 00ae E817 cp r30,r24 98 00b0 01F0 breq .L11 99 .L20: 100 00b2 A0E0 ldi r26,lo8(.LC0) 101 00b4 B0E0 ldi r27,hi8(.LC0) 102 00b6 00C0 rjmp .L21 103 .L11: 104 00b8 1196 adiw r26,1 105 .L21: 106 00ba CD01 movw r24,r26 107 00bc 8050 subi r24,lo8(.LC0) 108 00be 9040 sbci r25,hi8(.LC0) 109 00c0 0397 sbiw r24,3 110 00c2 04F0 brlt .L7 111 00c4 80E0 ldi r24,lo8(0) 112 00c6 90E0 ldi r25,hi8(0) 113 /* epilogue: frame size=0 */ 114 00c8 0895 ret 115 /* epilogue end (size=1) */ 116 /* function xbee_wait_for_ok size 52 (51) */ 118 .global xbee_get_packet 120 xbee_get_packet: 121 /* prologue: frame size=0 */ 122 00ca CF93 push r28 123 00cc DF93 push r29 124 /* prologue end (size=2) */ 125 00ce EC01 movw r28,r24 126 00d0 8091 0000 lds r24,currentBufPos 127 00d4 9091 0000 lds r25,(currentBufPos)+1 128 00d8 0097 sbiw r24,0 129 00da 01F4 brne .L23 130 .L73: 131 00dc 8091 0000 lds r24,buffer_first 132 00e0 9091 0000 lds r25,(buffer_first)+1 133 00e4 8038 cpi r24,128 134 00e6 9105 cpc r25,__zero_reg__ 135 00e8 01F4 brne .L25 136 00ea 1092 0000 sts (buffer_first)+1,__zero_reg__ 137 00ee 1092 0000 sts buffer_first,__zero_reg__ 138 .L25: 139 00f2 2091 0000 lds r18,buffer_first 140 00f6 3091 0000 lds r19,(buffer_first)+1 141 00fa 8091 0000 lds r24,buffer_last 142 00fe 9091 0000 lds r25,(buffer_last)+1 143 0102 2817 cp r18,r24 144 0104 3907 cpc r19,r25 145 0106 01F4 brne .+2 146 0108 00C0 rjmp .L77 147 010a 8091 0000 lds r24,buffer_first 148 010e 9091 0000 lds r25,(buffer_first)+1 149 0112 FC01 movw r30,r24 150 0114 E050 subi r30,lo8(-(arrival_buf)) 151 0116 F040 sbci r31,hi8(-(arrival_buf)) 152 0118 E081 ld r30,Z 153 011a 0196 adiw r24,1 154 011c 9093 0000 sts (buffer_first)+1,r25 155 0120 8093 0000 sts buffer_first,r24 156 0124 EE37 cpi r30,lo8(126) 157 0126 01F4 brne .L73 158 0128 8091 0000 lds r24,buffer_first 159 012c 9091 0000 lds r25,(buffer_first)+1 160 0130 8038 cpi r24,128 161 0132 9105 cpc r25,__zero_reg__ 162 0134 01F4 brne .L30 163 0136 1092 0000 sts (buffer_first)+1,__zero_reg__ 164 013a 1092 0000 sts buffer_first,__zero_reg__ 165 .L30: 166 013e E093 0000 sts xbee_buf,r30 167 0142 81E0 ldi r24,lo8(1) 168 0144 90E0 ldi r25,hi8(1) 169 0146 9093 0000 sts (currentBufPos)+1,r25 170 014a 8093 0000 sts currentBufPos,r24 171 014e 00C0 rjmp .L76 172 .L23: 173 0150 0397 sbiw r24,3 174 0152 04F4 brge .L33 175 .L76: 176 0154 6FEF ldi r22,lo8(-1) 177 0156 7FEF ldi r23,hi8(-1) 178 0158 00C0 rjmp .L32 179 .L33: 180 015a 2091 0000 lds r18,xbee_buf+2 181 015e 8091 0000 lds r24,xbee_buf+1 182 0162 9927 clr r25 183 0164 782F mov r23,r24 184 0166 6627 clr r22 185 0168 620F add r22,r18 186 016a 711D adc r23,__zero_reg__ 187 .L32: 188 016c 4091 0000 lds r20,currentBufPos 189 0170 5091 0000 lds r21,(currentBufPos)+1 190 0174 DA01 movw r26,r20 191 0176 A050 subi r26,lo8(-(xbee_buf)) 192 0178 B040 sbci r27,hi8(-(xbee_buf)) 193 017a 00C0 rjmp .L35 194 .L36: 195 017c 4330 cpi r20,3 196 017e 5105 cpc r21,__zero_reg__ 197 0180 01F4 brne .L37 198 0182 2091 0000 lds r18,xbee_buf+2 199 0186 8091 0000 lds r24,xbee_buf+1 200 018a 9927 clr r25 201 018c 782F mov r23,r24 202 018e 6627 clr r22 203 0190 620F add r22,r18 204 0192 711D adc r23,__zero_reg__ 205 0194 6937 cpi r22,121 206 0196 7105 cpc r23,__zero_reg__ 207 0198 04F0 brlt .+2 208 019a 00C0 rjmp .L71 209 .L37: 210 019c 2091 0000 lds r18,buffer_first 211 01a0 3091 0000 lds r19,(buffer_first)+1 212 01a4 8091 0000 lds r24,buffer_last 213 01a8 9091 0000 lds r25,(buffer_last)+1 214 01ac 2817 cp r18,r24 215 01ae 3907 cpc r19,r25 216 01b0 01F4 brne .+2 217 01b2 00C0 rjmp .L72 218 01b4 8091 0000 lds r24,buffer_first 219 01b8 9091 0000 lds r25,(buffer_first)+1 220 01bc FC01 movw r30,r24 221 01be E050 subi r30,lo8(-(arrival_buf)) 222 01c0 F040 sbci r31,hi8(-(arrival_buf)) 223 01c2 2081 ld r18,Z 224 01c4 2C93 st X,r18 225 01c6 4F5F subi r20,lo8(-(1)) 226 01c8 5F4F sbci r21,hi8(-(1)) 227 01ca 0196 adiw r24,1 228 01cc 9093 0000 sts (buffer_first)+1,r25 229 01d0 8093 0000 sts buffer_first,r24 230 01d4 8091 0000 lds r24,buffer_first 231 01d8 9091 0000 lds r25,(buffer_first)+1 232 01dc 8038 cpi r24,128 233 01de 9105 cpc r25,__zero_reg__ 234 01e0 01F4 brne .L43 235 01e2 1092 0000 sts (buffer_first)+1,__zero_reg__ 236 01e6 1092 0000 sts buffer_first,__zero_reg__ 237 .L43: 238 01ea 1196 adiw r26,1 239 .L35: 240 01ec 8FEF ldi r24,hi8(-1) 241 01ee 6F3F cpi r22,lo8(-1) 242 01f0 7807 cpc r23,r24 243 01f2 01F0 breq .L36 244 01f4 FB01 movw r30,r22 245 01f6 3496 adiw r30,4 246 01f8 4E17 cp r20,r30 247 01fa 5F07 cpc r21,r31 248 01fc 04F4 brge .+2 249 01fe 00C0 rjmp .L36 250 0200 1092 0000 sts (currentBufPos)+1,__zero_reg__ 251 0204 1092 0000 sts currentBufPos,__zero_reg__ 252 0208 A0E0 ldi r26,lo8(xbee_buf+3) 253 020a B0E0 ldi r27,hi8(xbee_buf+3) 254 020c 90E0 ldi r25,lo8(0) 255 020e 23E0 ldi r18,lo8(3) 256 0210 30E0 ldi r19,hi8(3) 257 0212 00C0 rjmp .L47 258 .L48: 259 0214 8D91 ld r24,X+ 260 0216 980F add r25,r24 261 0218 2F5F subi r18,lo8(-(1)) 262 021a 3F4F sbci r19,hi8(-(1)) 263 .L47: 264 021c 2E17 cp r18,r30 265 021e 3F07 cpc r19,r31 266 0220 04F0 brlt .L48 267 0222 9F3F cpi r25,lo8(-1) 268 0224 01F0 breq .+2 269 0226 00C0 rjmp .L77 270 0228 1616 cp __zero_reg__,r22 271 022a 1706 cpc __zero_reg__,r23 272 022c 04F0 brlt .+2 273 022e 00C0 rjmp .L51 274 0230 8091 0000 lds r24,xbee_buf+3 275 0234 8838 cpi r24,lo8(-120) 276 0236 01F0 breq .L53 277 0238 8A38 cpi r24,lo8(-118) 278 023a 01F0 breq .+2 279 023c 00C0 rjmp .L51 280 023e 00C0 rjmp .L54 281 .L53: 282 0240 8091 0000 lds r24,xbee_buf+5 283 0244 9091 0000 lds r25,xbee_buf+6 284 0248 8934 cpi r24,lo8(73) 285 024a 01F4 brne .L55 286 024c 9434 cpi r25,lo8(68) 287 024e 01F0 breq .+2 288 0250 00C0 rjmp .L54 289 0252 8091 0000 lds r24,xbee_pending_panID 290 0256 9091 0000 lds r25,(xbee_pending_panID)+1 291 025a 9093 0000 sts (xbee_panID)+1,r25 292 025e 8093 0000 sts xbee_panID,r24 293 0262 00C0 rjmp .L54 294 .L55: 295 0264 8334 cpi r24,lo8(67) 296 0266 01F4 brne .L58 297 0268 9834 cpi r25,lo8(72) 298 026a 01F0 breq .+2 299 026c 00C0 rjmp .L54 300 026e 8091 0000 lds r24,xbee_pending_channel 301 0272 9091 0000 lds r25,(xbee_pending_channel)+1 302 0276 9093 0000 sts (xbee_channel)+1,r25 303 027a 8093 0000 sts xbee_channel,r24 304 027e 00C0 rjmp .L54 305 .L58: 306 0280 8D34 cpi r24,lo8(77) 307 0282 01F0 breq .+2 308 0284 00C0 rjmp .L54 309 0286 9935 cpi r25,lo8(89) 310 0288 01F0 breq .+2 311 028a 00C0 rjmp .L54 312 028c 6550 subi r22,lo8(-(-5)) 313 028e 7040 sbci r23,hi8(-(-5)) 314 0290 01F4 brne .+2 315 0292 00C0 rjmp .L54 316 0294 1092 0000 sts (xbee_address)+1,__zero_reg__ 317 0298 1092 0000 sts xbee_address,__zero_reg__ 318 029c 40E0 ldi r20,lo8(0) 319 029e 50E0 ldi r21,hi8(0) 320 02a0 E0E0 ldi r30,lo8(xbee_buf+8) 321 02a2 F0E0 ldi r31,hi8(xbee_buf+8) 322 02a4 00C0 rjmp .L64 323 .L65: 324 02a6 8091 0000 lds r24,xbee_address 325 02aa 9091 0000 lds r25,(xbee_address)+1 326 02ae 982F mov r25,r24 327 02b0 8827 clr r24 328 02b2 2191 ld r18,Z+ 329 02b4 820F add r24,r18 330 02b6 911D adc r25,__zero_reg__ 331 02b8 9093 0000 sts (xbee_address)+1,r25 332 02bc 8093 0000 sts xbee_address,r24 333 02c0 4F5F subi r20,lo8(-(1)) 334 02c2 5F4F sbci r21,hi8(-(1)) 335 .L64: 336 02c4 4617 cp r20,r22 337 02c6 5707 cpc r21,r23 338 02c8 04F0 brlt .L65 339 02ca 8091 0000 lds r24,xbee_address 340 02ce 9091 0000 lds r25,(xbee_address)+1 341 02d2 00C0 rjmp .L54 342 .L51: 343 02d4 2097 sbiw r28,0 344 02d6 01F0 breq .L77 345 02d8 FE01 movw r30,r28 346 02da 23E0 ldi r18,lo8(3) 347 02dc 30E0 ldi r19,hi8(3) 348 02de A0E0 ldi r26,lo8(xbee_buf+3) 349 02e0 B0E0 ldi r27,hi8(xbee_buf+3) 350 02e2 AB01 movw r20,r22 351 02e4 4D5F subi r20,lo8(-(3)) 352 02e6 5F4F sbci r21,hi8(-(3)) 353 02e8 00C0 rjmp .L68 354 .L69: 355 02ea 8D91 ld r24,X+ 356 02ec 8193 st Z+,r24 357 02ee 2F5F subi r18,lo8(-(1)) 358 02f0 3F4F sbci r19,hi8(-(1)) 359 .L68: 360 02f2 2417 cp r18,r20 361 02f4 3507 cpc r19,r21 362 02f6 04F0 brlt .L69 363 02f8 00C0 rjmp .L40 364 .L71: 365 02fa 1092 0000 sts (currentBufPos)+1,__zero_reg__ 366 02fe 1092 0000 sts currentBufPos,__zero_reg__ 367 0302 00C0 rjmp .L77 368 .L72: 369 0304 5093 0000 sts (currentBufPos)+1,r21 370 0308 4093 0000 sts currentBufPos,r20 371 .L77: 372 030c 6FEF ldi r22,lo8(-1) 373 030e 7FEF ldi r23,hi8(-1) 374 0310 00C0 rjmp .L40 375 .L54: 376 0312 63E0 ldi r22,lo8(3) 377 0314 70E0 ldi r23,hi8(3) 378 .L40: 379 0316 CB01 movw r24,r22 380 /* epilogue: frame size=0 */ 381 0318 DF91 pop r29 382 031a CF91 pop r28 383 031c 0895 ret 384 /* epilogue end (size=3) */ 385 /* function xbee_get_packet size 300 (295) */ 387 .global xbee_get_pan_id 389 xbee_get_pan_id: 390 /* prologue: frame size=0 */ 391 /* prologue end (size=0) */ 392 031e 8091 0000 lds r24,xbee_panID 393 0322 9091 0000 lds r25,(xbee_panID)+1 394 /* epilogue: frame size=0 */ 395 0326 0895 ret 396 /* epilogue end (size=1) */ 397 /* function xbee_get_pan_id size 5 (4) */ 399 .global xbee_get_channel 401 xbee_get_channel: 402 /* prologue: frame size=0 */ 403 /* prologue end (size=0) */ 404 0328 8091 0000 lds r24,xbee_channel 405 032c 9091 0000 lds r25,(xbee_channel)+1 406 /* epilogue: frame size=0 */ 407 0330 0895 ret 408 /* epilogue end (size=1) */ 409 /* function xbee_get_channel size 5 (4) */ 411 .global xbee_get_address 413 xbee_get_address: 414 /* prologue: frame size=0 */ 415 /* prologue end (size=0) */ 416 0332 8091 0000 lds r24,xbee_address 417 0336 9091 0000 lds r25,(xbee_address)+1 418 /* epilogue: frame size=0 */ 419 033a 0895 ret 420 /* epilogue end (size=1) */ 421 /* function xbee_get_address size 5 (4) */ 424 xbee_send: 425 /* prologue: frame size=0 */ 426 033c EF92 push r14 427 033e FF92 push r15 428 0340 0F93 push r16 429 0342 1F93 push r17 430 0344 CF93 push r28 431 0346 DF93 push r29 432 /* prologue end (size=6) */ 433 0348 7B01 movw r14,r22 434 034a C0E0 ldi r28,lo8(0) 435 034c D0E0 ldi r29,hi8(0) 436 034e 8C01 movw r16,r24 437 0350 00C0 rjmp .L85 438 .L86: 439 0352 F801 movw r30,r16 440 0354 8191 ld r24,Z+ 441 0356 8F01 movw r16,r30 442 0358 0E94 0000 call xbee_putc 443 035c 2196 adiw r28,1 444 .L85: 445 035e CE15 cp r28,r14 446 0360 DF05 cpc r29,r15 447 0362 04F0 brlt .L86 448 0364 80E0 ldi r24,lo8(0) 449 0366 90E0 ldi r25,hi8(0) 450 /* epilogue: frame size=0 */ 451 0368 DF91 pop r29 452 036a CF91 pop r28 453 036c 1F91 pop r17 454 036e 0F91 pop r16 455 0370 FF90 pop r15 456 0372 EF90 pop r14 457 0374 0895 ret 458 /* epilogue end (size=7) */ 459 /* function xbee_send size 29 (16) */ 461 .global xbee_send_packet 463 xbee_send_packet: 464 /* prologue: frame size=9 */ 465 0376 CF92 push r12 466 0378 DF92 push r13 467 037a EF92 push r14 468 037c FF92 push r15 469 037e 0F93 push r16 470 0380 CF93 push r28 471 0382 DF93 push r29 472 0384 CDB7 in r28,__SP_L__ 473 0386 DEB7 in r29,__SP_H__ 474 0388 2997 sbiw r28,9 475 038a 0FB6 in __tmp_reg__,__SREG__ 476 038c F894 cli 477 038e DEBF out __SP_H__,r29 478 0390 0FBE out __SREG__,__tmp_reg__ 479 0392 CDBF out __SP_L__,r28 480 /* prologue end (size=15) */ 481 0394 6C01 movw r12,r24 482 0396 7B01 movw r14,r22 483 0398 622F mov r22,r18 484 039a 85E6 ldi r24,lo8(101) 485 039c E816 cp r14,r24 486 039e F104 cpc r15,__zero_reg__ 487 03a0 04F0 brlt .+2 488 03a2 00C0 rjmp .L90 489 03a4 81E0 ldi r24,lo8(1) 490 03a6 8D83 std Y+5,r24 491 03a8 0E83 std Y+6,r16 492 03aa 252F mov r18,r21 493 03ac 3327 clr r19 494 03ae 27FD sbrc r18,7 495 03b0 3A95 dec r19 496 03b2 2F83 std Y+7,r18 497 03b4 4887 std Y+8,r20 498 03b6 6987 std Y+9,r22 499 03b8 8EE7 ldi r24,lo8(126) 500 03ba 8A83 std Y+2,r24 501 03bc E5E0 ldi r30,lo8(5) 502 03be F0E0 ldi r31,hi8(5) 503 03c0 EE0E add r14,r30 504 03c2 FF1E adc r15,r31 505 03c4 8F2D mov r24,r15 506 03c6 9927 clr r25 507 03c8 EBEF ldi r30,lo8(-5) 508 03ca FFEF ldi r31,hi8(-5) 509 03cc EE0E add r14,r30 510 03ce FF1E adc r15,r31 511 03d0 8B83 std Y+3,r24 512 03d2 8E2D mov r24,r14 513 03d4 8B5F subi r24,lo8(-(5)) 514 03d6 8C83 std Y+4,r24 515 03d8 802F mov r24,r16 516 03da 8F5F subi r24,lo8(-(1)) 517 03dc 820F add r24,r18 518 03de 840F add r24,r20 519 03e0 860F add r24,r22 520 03e2 8983 std Y+1,r24 521 03e4 20E0 ldi r18,lo8(0) 522 03e6 30E0 ldi r19,hi8(0) 523 03e8 082F mov r16,r24 524 03ea F601 movw r30,r12 525 03ec 00C0 rjmp .L92 526 .L93: 527 03ee 8191 ld r24,Z+ 528 03f0 080F add r16,r24 529 03f2 2F5F subi r18,lo8(-(1)) 530 03f4 3F4F sbci r19,hi8(-(1)) 531 .L92: 532 03f6 2E15 cp r18,r14 533 03f8 3F05 cpc r19,r15 534 03fa 04F0 brlt .L93 535 03fc 0095 com r16 536 03fe 0983 std Y+1,r16 537 0400 63E0 ldi r22,lo8(3) 538 0402 70E0 ldi r23,hi8(3) 539 0404 CE01 movw r24,r28 540 0406 0296 adiw r24,2 541 0408 0E94 0000 call xbee_send 542 040c 892B or r24,r25 543 040e 01F4 brne .L90 544 0410 65E0 ldi r22,lo8(5) 545 0412 70E0 ldi r23,hi8(5) 546 0414 CE01 movw r24,r28 547 0416 0596 adiw r24,5 548 0418 0E94 0000 call xbee_send 549 041c 892B or r24,r25 550 041e 01F4 brne .L90 551 0420 B701 movw r22,r14 552 0422 C601 movw r24,r12 553 0424 0E94 0000 call xbee_send 554 0428 892B or r24,r25 555 042a 01F4 brne .L90 556 042c 61E0 ldi r22,lo8(1) 557 042e 70E0 ldi r23,hi8(1) 558 0430 CE01 movw r24,r28 559 0432 0196 adiw r24,1 560 0434 0E94 0000 call xbee_send 561 0438 892B or r24,r25 562 043a 01F4 brne .L90 563 043c 80E0 ldi r24,lo8(0) 564 043e 90E0 ldi r25,hi8(0) 565 0440 00C0 rjmp .L99 566 .L90: 567 0442 8FEF ldi r24,lo8(-1) 568 0444 9FEF ldi r25,hi8(-1) 569 .L99: 570 /* epilogue: frame size=9 */ 571 0446 2996 adiw r28,9 572 0448 0FB6 in __tmp_reg__,__SREG__ 573 044a F894 cli 574 044c DEBF out __SP_H__,r29 575 044e 0FBE out __SREG__,__tmp_reg__ 576 0450 CDBF out __SP_L__,r28 577 0452 DF91 pop r29 578 0454 CF91 pop r28 579 0456 0F91 pop r16 580 0458 FF90 pop r15 581 045a EF90 pop r14 582 045c DF90 pop r13 583 045e CF90 pop r12 584 0460 0895 ret 585 /* epilogue end (size=14) */ 586 /* function xbee_send_packet size 118 (89) */ 589 xbee_send_modify_at_command: 590 /* prologue: frame size=20 */ 591 0462 0F93 push r16 592 0464 1F93 push r17 593 0466 CF93 push r28 594 0468 DF93 push r29 595 046a CDB7 in r28,__SP_L__ 596 046c DEB7 in r29,__SP_H__ 597 046e 6497 sbiw r28,20 598 0470 0FB6 in __tmp_reg__,__SREG__ 599 0472 F894 cli 600 0474 DEBF out __SP_H__,r29 601 0476 0FBE out __SREG__,__tmp_reg__ 602 0478 CDBF out __SP_L__,r28 603 /* prologue end (size=12) */ 604 047a FC01 movw r30,r24 605 047c 88E0 ldi r24,lo8(8) 606 047e 8D83 std Y+5,r24 607 0480 81E0 ldi r24,lo8(1) 608 0482 8E83 std Y+6,r24 609 0484 8081 ld r24,Z 610 0486 8F83 std Y+7,r24 611 0488 8181 ldd r24,Z+1 612 048a 8887 std Y+8,r24 613 048c 6115 cp r22,__zero_reg__ 614 048e 7105 cpc r23,__zero_reg__ 615 0490 01F4 brne .L103 616 0492 E0E0 ldi r30,lo8(0) 617 0494 F0E0 ldi r31,hi8(0) 618 0496 00C0 rjmp .L105 619 .L103: 620 0498 FB01 movw r30,r22 621 049a 0190 ld __tmp_reg__,Z+ 622 049c 0020 tst __tmp_reg__ 623 049e 01F4 brne .-6 624 04a0 3197 sbiw r30,1 625 04a2 E61B sub r30,r22 626 04a4 F70B sbc r31,r23 627 04a6 E930 cpi r30,9 628 04a8 F105 cpc r31,__zero_reg__ 629 04aa 04F0 brlt .+2 630 04ac 00C0 rjmp .L106 631 04ae 20E0 ldi r18,lo8(0) 632 04b0 30E0 ldi r19,hi8(0) 633 04b2 AE01 movw r20,r28 634 04b4 475F subi r20,lo8(-(9)) 635 04b6 5F4F sbci r21,hi8(-(9)) 636 04b8 00C0 rjmp .L108 637 .L109: 638 04ba DB01 movw r26,r22 639 04bc 8D91 ld r24,X+ 640 04be BD01 movw r22,r26 641 04c0 DA01 movw r26,r20 642 04c2 8D93 st X+,r24 643 04c4 AD01 movw r20,r26 644 04c6 2F5F subi r18,lo8(-(1)) 645 04c8 3F4F sbci r19,hi8(-(1)) 646 .L108: 647 04ca 2E17 cp r18,r30 648 04cc 3F07 cpc r19,r31 649 04ce 04F0 brlt .L109 650 .L105: 651 04d0 8F01 movw r16,r30 652 04d2 0C5F subi r16,lo8(-(4)) 653 04d4 1F4F sbci r17,hi8(-(4)) 654 04d6 8EE7 ldi r24,lo8(126) 655 04d8 8A83 std Y+2,r24 656 04da 812F mov r24,r17 657 04dc 9927 clr r25 658 04de 8B83 std Y+3,r24 659 04e0 402F mov r20,r16 660 04e2 20E0 ldi r18,lo8(0) 661 04e4 30E0 ldi r19,hi8(0) 662 04e6 90E0 ldi r25,lo8(0) 663 04e8 FE01 movw r30,r28 664 04ea 3596 adiw r30,5 665 04ec 00C0 rjmp .L110 666 .L111: 667 04ee 8191 ld r24,Z+ 668 04f0 980F add r25,r24 669 04f2 2F5F subi r18,lo8(-(1)) 670 04f4 3F4F sbci r19,hi8(-(1)) 671 .L110: 672 04f6 2017 cp r18,r16 673 04f8 3107 cpc r19,r17 674 04fa 04F0 brlt .L111 675 04fc 9095 com r25 676 04fe 9983 std Y+1,r25 677 0500 4C83 std Y+4,r20 678 0502 63E0 ldi r22,lo8(3) 679 0504 70E0 ldi r23,hi8(3) 680 0506 CE01 movw r24,r28 681 0508 0296 adiw r24,2 682 050a 0E94 0000 call xbee_send 683 050e 892B or r24,r25 684 0510 01F4 brne .L106 685 0512 B801 movw r22,r16 686 0514 CE01 movw r24,r28 687 0516 0596 adiw r24,5 688 0518 0E94 0000 call xbee_send 689 051c 892B or r24,r25 690 051e 01F4 brne .L106 691 0520 61E0 ldi r22,lo8(1) 692 0522 70E0 ldi r23,hi8(1) 693 0524 CE01 movw r24,r28 694 0526 0196 adiw r24,1 695 0528 0E94 0000 call xbee_send 696 052c 892B or r24,r25 697 052e 01F4 brne .L106 698 0530 80E0 ldi r24,lo8(0) 699 0532 90E0 ldi r25,hi8(0) 700 0534 00C0 rjmp .L116 701 .L106: 702 0536 8FEF ldi r24,lo8(-1) 703 0538 9FEF ldi r25,hi8(-1) 704 .L116: 705 /* epilogue: frame size=20 */ 706 053a 6496 adiw r28,20 707 053c 0FB6 in __tmp_reg__,__SREG__ 708 053e F894 cli 709 0540 DEBF out __SP_H__,r29 710 0542 0FBE out __SREG__,__tmp_reg__ 711 0544 CDBF out __SP_L__,r28 712 0546 DF91 pop r29 713 0548 CF91 pop r28 714 054a 1F91 pop r17 715 054c 0F91 pop r16 716 054e 0895 ret 717 /* epilogue end (size=11) */ 718 /* function xbee_send_modify_at_command size 119 (96) */ 720 .data 721 .LC1: 722 0004 4348 00 .string "CH" 723 .text 724 .global xbee_set_channel 726 xbee_set_channel: 727 /* prologue: frame size=3 */ 728 0550 CF93 push r28 729 0552 DF93 push r29 730 0554 CDB7 in r28,__SP_L__ 731 0556 DEB7 in r29,__SP_H__ 732 0558 2397 sbiw r28,3 733 055a 0FB6 in __tmp_reg__,__SREG__ 734 055c F894 cli 735 055e DEBF out __SP_H__,r29 736 0560 0FBE out __SREG__,__tmp_reg__ 737 0562 CDBF out __SP_L__,r28 738 /* prologue end (size=10) */ 739 0564 9C01 movw r18,r24 740 0566 0B97 sbiw r24,11 741 0568 4097 sbiw r24,16 742 056a 00F0 brlo .L119 743 056c 8FEF ldi r24,lo8(-1) 744 056e 9FEF ldi r25,hi8(-1) 745 0570 00C0 rjmp .L121 746 .L119: 747 0572 2983 std Y+1,r18 748 0574 1A82 std Y+2,__zero_reg__ 749 0576 3093 0000 sts (xbee_pending_channel)+1,r19 750 057a 2093 0000 sts xbee_pending_channel,r18 751 057e BE01 movw r22,r28 752 0580 6F5F subi r22,lo8(-(1)) 753 0582 7F4F sbci r23,hi8(-(1)) 754 0584 80E0 ldi r24,lo8(.LC1) 755 0586 90E0 ldi r25,hi8(.LC1) 756 0588 0E94 0000 call xbee_send_modify_at_command 757 .L121: 758 /* epilogue: frame size=3 */ 759 058c 2396 adiw r28,3 760 058e 0FB6 in __tmp_reg__,__SREG__ 761 0590 F894 cli 762 0592 DEBF out __SP_H__,r29 763 0594 0FBE out __SREG__,__tmp_reg__ 764 0596 CDBF out __SP_L__,r28 765 0598 DF91 pop r29 766 059a CF91 pop r28 767 059c 0895 ret 768 /* epilogue end (size=9) */ 769 /* function xbee_set_channel size 40 (21) */ 771 .data 772 .LC2: 773 0007 4944 00 .string "ID" 774 .text 775 .global xbee_set_pan_id 777 xbee_set_pan_id: 778 /* prologue: frame size=3 */ 779 059e CF93 push r28 780 05a0 DF93 push r29 781 05a2 CDB7 in r28,__SP_L__ 782 05a4 DEB7 in r29,__SP_H__ 783 05a6 2397 sbiw r28,3 784 05a8 0FB6 in __tmp_reg__,__SREG__ 785 05aa F894 cli 786 05ac DEBF out __SP_H__,r29 787 05ae 0FBE out __SREG__,__tmp_reg__ 788 05b0 CDBF out __SP_L__,r28 789 /* prologue end (size=10) */ 790 05b2 292F mov r18,r25 791 05b4 3327 clr r19 792 05b6 27FD sbrc r18,7 793 05b8 3A95 dec r19 794 05ba 2983 std Y+1,r18 795 05bc 8A83 std Y+2,r24 796 05be 1B82 std Y+3,__zero_reg__ 797 05c0 9093 0000 sts (xbee_pending_panID)+1,r25 798 05c4 8093 0000 sts xbee_pending_panID,r24 799 05c8 BE01 movw r22,r28 800 05ca 6F5F subi r22,lo8(-(1)) 801 05cc 7F4F sbci r23,hi8(-(1)) 802 05ce 80E0 ldi r24,lo8(.LC2) 803 05d0 90E0 ldi r25,hi8(.LC2) 804 05d2 0E94 0000 call xbee_send_modify_at_command 805 /* epilogue: frame size=3 */ 806 05d6 2396 adiw r28,3 807 05d8 0FB6 in __tmp_reg__,__SREG__ 808 05da F894 cli 809 05dc DEBF out __SP_H__,r29 810 05de 0FBE out __SREG__,__tmp_reg__ 811 05e0 CDBF out __SP_L__,r28 812 05e2 DF91 pop r29 813 05e4 CF91 pop r28 814 05e6 0895 ret 815 /* epilogue end (size=9) */ 816 /* function xbee_set_pan_id size 37 (18) */ 819 xbee_send_read_at_command: 820 /* prologue: frame size=0 */ 821 /* prologue end (size=0) */ 822 05e8 60E0 ldi r22,lo8(0) 823 05ea 70E0 ldi r23,hi8(0) 824 05ec 0E94 0000 call xbee_send_modify_at_command 825 /* epilogue: frame size=0 */ 826 05f0 0895 ret 827 /* epilogue end (size=1) */ 828 /* function xbee_send_read_at_command size 5 (4) */ 830 .data 831 .LC3: 832 000a 3300 .string "3" 833 .LC4: 834 000c 4244 00 .string "BD" 835 .LC5: 836 000f 4652 00 .string "FR" 837 .text 838 .global xbee_reset 840 xbee_reset: 841 /* prologue: frame size=0 */ 842 /* prologue end (size=0) */ 843 05f2 60E0 ldi r22,lo8(.LC3) 844 05f4 70E0 ldi r23,hi8(.LC3) 845 05f6 80E0 ldi r24,lo8(.LC4) 846 05f8 90E0 ldi r25,hi8(.LC4) 847 05fa 0E94 0000 call xbee_send_modify_at_command 848 05fe 80E0 ldi r24,lo8(.LC5) 849 0600 90E0 ldi r25,hi8(.LC5) 850 0602 0E94 0000 call xbee_send_read_at_command 851 0606 80E0 ldi r24,lo8(0) 852 0608 90E0 ldi r25,hi8(0) 853 /* #APP */ 854 060a 0197 1: sbiw r24,1 855 060c 01F4 brne 1b 856 /* #NOAPP */ 857 060e 80E0 ldi r24,lo8(0) 858 0610 90E0 ldi r25,hi8(0) 859 /* epilogue: frame size=0 */ 860 0612 0895 ret 861 /* epilogue end (size=1) */ 862 /* function xbee_reset size 19 (18) */ 864 .data 865 .LC6: 866 0012 3000 .string "0" 867 .LC7: 868 0014 4150 00 .string "AP" 869 .text 870 .global xbee_terminate 872 xbee_terminate: 873 /* prologue: frame size=0 */ 874 /* prologue end (size=0) */ 875 0614 60E0 ldi r22,lo8(.LC6) 876 0616 70E0 ldi r23,hi8(.LC6) 877 0618 80E0 ldi r24,lo8(.LC7) 878 061a 90E0 ldi r25,hi8(.LC7) 879 061c 0E94 0000 call xbee_send_modify_at_command 880 /* epilogue: frame size=0 */ 881 0620 0895 ret 882 /* epilogue end (size=1) */ 883 /* function xbee_terminate size 7 (6) */ 886 xbee_send_string: 887 /* prologue: frame size=0 */ 888 /* prologue end (size=0) */ 889 0622 FC01 movw r30,r24 890 0624 0190 ld __tmp_reg__,Z+ 891 0626 0020 tst __tmp_reg__ 892 0628 01F4 brne .-6 893 062a 3197 sbiw r30,1 894 062c E81B sub r30,r24 895 062e F90B sbc r31,r25 896 0630 BF01 movw r22,r30 897 0632 0E94 0000 call xbee_send 898 /* epilogue: frame size=0 */ 899 0636 0895 ret 900 /* epilogue end (size=1) */ 901 /* function xbee_send_string size 11 (10) */ 903 .data 904 .LC8: 905 0017 2B2B 2B00 .string "+++" 906 .LC9: 907 001b 4154 434E .string "ATCN\r" 907 0D00 908 .LC10: 909 0021 4D59 00 .string "MY" 910 .LC11: 911 0024 4154 4150 .string "ATAP 1\r" 911 2031 0D00 912 .text 913 .global xbee_lib_init 915 xbee_lib_init: 916 /* prologue: frame size=0 */ 917 /* prologue end (size=0) */ 918 0638 8091 9A00 lds r24,154 919 063c 8068 ori r24,lo8(-128) 920 063e 8093 9A00 sts 154,r24 921 /* #APP */ 922 0642 7894 sei 923 /* #NOAPP */ 924 0644 80E0 ldi r24,lo8(.LC8) 925 0646 90E0 ldi r25,hi8(.LC8) 926 0648 0E94 0000 call xbee_send_string 927 064c 892B or r24,r25 928 064e 01F4 brne .L134 929 0650 0E94 0000 call xbee_wait_for_ok 930 0654 892B or r24,r25 931 0656 01F4 brne .L134 932 0658 00C0 rjmp .L144 933 .L146: 934 065a 0E94 0000 call xbee_wait_for_ok 935 065e 80E0 ldi r24,lo8(.LC9) 936 0660 90E0 ldi r25,hi8(.LC9) 937 0662 0E94 0000 call xbee_send_string 938 0666 892B or r24,r25 939 0668 01F4 brne .L134 940 066a 0E94 0000 call xbee_wait_for_ok 941 066e 80E0 ldi r24,lo8(.LC10) 942 0670 90E0 ldi r25,hi8(.LC10) 943 0672 0E94 0000 call xbee_send_read_at_command 944 0676 892B or r24,r25 945 0678 01F0 breq .L145 946 067a 00C0 rjmp .L134 947 .L140: 948 067c 80E0 ldi r24,lo8(0) 949 067e 90E0 ldi r25,hi8(0) 950 0680 0E94 0000 call xbee_get_packet 951 .L145: 952 0684 8091 0000 lds r24,xbee_address 953 0688 9091 0000 lds r25,(xbee_address)+1 954 068c 892B or r24,r25 955 068e 01F0 breq .L140 956 0690 80E0 ldi r24,lo8(0) 957 0692 90E0 ldi r25,hi8(0) 958 0694 0895 ret 959 .L134: 960 0696 8FEF ldi r24,lo8(-1) 961 0698 9FEF ldi r25,hi8(-1) 962 069a 0895 ret 963 .L144: 964 069c 80E0 ldi r24,lo8(.LC11) 965 069e 90E0 ldi r25,hi8(.LC11) 966 06a0 0E94 0000 call xbee_send_string 967 06a4 892B or r24,r25 968 06a6 01F0 breq .L146 969 06a8 00C0 rjmp .L134 970 /* epilogue: frame size=0 */ 971 /* epilogue: noreturn */ 972 /* epilogue end (size=0) */ 973 /* function xbee_lib_init size 58 (58) */ 975 .global buffer_last 976 .global buffer_last 977 .section .bss 980 buffer_last: 981 0000 0000 .skip 2,0 982 .global buffer_first 983 .global buffer_first 986 buffer_first: 987 0002 0000 .skip 2,0 988 .lcomm xbee_address,2 989 .lcomm xbee_channel,2 990 .lcomm xbee_pending_channel,2 991 .data 994 xbee_panID: 995 002c FFFF .word -1 998 xbee_pending_panID: 999 002e FFFF .word -1 1000 .lcomm currentBufPos,2 1001 .lcomm xbee_buf,108 1002 .comm arrival_buf,128,1 1003 /* File "xbee.c": code 860 = 0x035c ( 722), prologues 66, epilogues 72 */ DEFINED SYMBOLS *ABS*:00000000 xbee.c F:\DOCUME~1\Evan\LOCALS~1\Temp/ccMrpJ1L.s:3 *ABS*:0000003f __SREG__ F:\DOCUME~1\Evan\LOCALS~1\Temp/ccMrpJ1L.s:4 *ABS*:0000003e __SP_H__ F:\DOCUME~1\Evan\LOCALS~1\Temp/ccMrpJ1L.s:5 *ABS*:0000003d __SP_L__ F:\DOCUME~1\Evan\LOCALS~1\Temp/ccMrpJ1L.s:6 *ABS*:00000000 __tmp_reg__ F:\DOCUME~1\Evan\LOCALS~1\Temp/ccMrpJ1L.s:7 *ABS*:00000001 __zero_reg__ F:\DOCUME~1\Evan\LOCALS~1\Temp/ccMrpJ1L.s:13 .text:00000000 __vector_30 F:\DOCUME~1\Evan\LOCALS~1\Temp/ccMrpJ1L.s:980 .bss:00000000 buffer_last *COM*:00000080 arrival_buf F:\DOCUME~1\Evan\LOCALS~1\Temp/ccMrpJ1L.s:986 .bss:00000002 buffer_first F:\DOCUME~1\Evan\LOCALS~1\Temp/ccMrpJ1L.s:67 .text:00000064 xbee_wait_for_ok F:\DOCUME~1\Evan\LOCALS~1\Temp/ccMrpJ1L.s:120 .text:000000ca xbee_get_packet F:\DOCUME~1\Evan\LOCALS~1\Temp/ccMrpJ1L.s:990 .bss:0000000a currentBufPos F:\DOCUME~1\Evan\LOCALS~1\Temp/ccMrpJ1L.s:1000 .bss:0000000c xbee_buf F:\DOCUME~1\Evan\LOCALS~1\Temp/ccMrpJ1L.s:998 .data:0000002e xbee_pending_panID F:\DOCUME~1\Evan\LOCALS~1\Temp/ccMrpJ1L.s:994 .data:0000002c xbee_panID F:\DOCUME~1\Evan\LOCALS~1\Temp/ccMrpJ1L.s:989 .bss:00000008 xbee_pending_channel F:\DOCUME~1\Evan\LOCALS~1\Temp/ccMrpJ1L.s:988 .bss:00000006 xbee_channel .bss:00000004 xbee_address F:\DOCUME~1\Evan\LOCALS~1\Temp/ccMrpJ1L.s:389 .text:0000031e xbee_get_pan_id F:\DOCUME~1\Evan\LOCALS~1\Temp/ccMrpJ1L.s:401 .text:00000328 xbee_get_channel F:\DOCUME~1\Evan\LOCALS~1\Temp/ccMrpJ1L.s:413 .text:00000332 xbee_get_address F:\DOCUME~1\Evan\LOCALS~1\Temp/ccMrpJ1L.s:424 .text:0000033c xbee_send F:\DOCUME~1\Evan\LOCALS~1\Temp/ccMrpJ1L.s:463 .text:00000376 xbee_send_packet F:\DOCUME~1\Evan\LOCALS~1\Temp/ccMrpJ1L.s:589 .text:00000462 xbee_send_modify_at_command F:\DOCUME~1\Evan\LOCALS~1\Temp/ccMrpJ1L.s:726 .text:00000550 xbee_set_channel F:\DOCUME~1\Evan\LOCALS~1\Temp/ccMrpJ1L.s:777 .text:0000059e xbee_set_pan_id F:\DOCUME~1\Evan\LOCALS~1\Temp/ccMrpJ1L.s:819 .text:000005e8 xbee_send_read_at_command F:\DOCUME~1\Evan\LOCALS~1\Temp/ccMrpJ1L.s:840 .text:000005f2 xbee_reset F:\DOCUME~1\Evan\LOCALS~1\Temp/ccMrpJ1L.s:872 .text:00000614 xbee_terminate F:\DOCUME~1\Evan\LOCALS~1\Temp/ccMrpJ1L.s:886 .text:00000622 xbee_send_string F:\DOCUME~1\Evan\LOCALS~1\Temp/ccMrpJ1L.s:915 .text:00000638 xbee_lib_init UNDEFINED SYMBOLS __do_copy_data __do_clear_bss xbee_putc