1 .file "main.c" 2 __SREG__ = 0x3f 3 __SP_H__ = 0x3e 4 __SP_L__ = 0x3d 5 __CCP__ = 0x34 6 __tmp_reg__ = 0 7 __zero_reg__ = 1 8 .global __do_copy_data 9 .global __do_clear_bss 10 .text 11 .global main 13 main: 14 0000 4F92 push r4 15 0002 5F92 push r5 16 0004 6F92 push r6 17 0006 7F92 push r7 18 0008 8F92 push r8 19 000a 9F92 push r9 20 000c AF92 push r10 21 000e BF92 push r11 22 0010 CF92 push r12 23 0012 DF92 push r13 24 0014 EF92 push r14 25 0016 FF92 push r15 26 0018 0F93 push r16 27 001a 1F93 push r17 28 001c CF93 push r28 29 001e DF93 push r29 30 /* prologue: function */ 31 /* frame size = 0 */ 32 0020 8FEF ldi r24,lo8(2047) 33 0022 97E0 ldi r25,hi8(2047) 34 0024 0E94 0000 call dragonfly_init 35 0028 0E94 0000 call xbee_init 36 002c 0E94 0000 call wl_basic_init_default 37 0030 8FE0 ldi r24,lo8(15) 38 0032 90E0 ldi r25,hi8(15) 39 0034 0E94 0000 call wl_set_channel 40 0038 0E94 0000 call orb_init 41 003c 81E0 ldi r24,lo8(1) 42 003e 90E0 ldi r25,hi8(1) 43 0040 60E0 ldi r22,lo8(0) 44 0042 70E0 ldi r23,hi8(0) 45 0044 0E94 0000 call rtc_init 46 0048 0E94 0000 call motors_init 47 004c 0E94 0000 call get_robotid 48 0050 582E mov r5,r24 49 0052 0E94 0000 call wheel 50 0056 8436 cpi r24,100 51 0058 9105 cpc r25,__zero_reg__ 52 005a 04F4 brge .L2 53 005c C3E0 ldi r28,lo8(3) 54 005e D0E0 ldi r29,hi8(3) 55 0060 00C0 rjmp .L38 56 .L2: 57 0062 C0E0 ldi r28,lo8(0) 58 0064 D0E0 ldi r29,hi8(0) 59 .L38: 60 0066 24E5 ldi r18,lo8(84) 61 0068 422E mov r4,r18 62 .L37: 63 006a C230 cpi r28,2 64 006c D105 cpc r29,__zero_reg__ 65 006e 01F4 brne .+2 66 0070 00C0 rjmp .L6 67 0072 C330 cpi r28,3 68 0074 D105 cpc r29,__zero_reg__ 69 0076 04F4 brge .L9 70 0078 2097 sbiw r28,0 71 007a 01F0 breq .L4 72 007c C130 cpi r28,1 73 007e D105 cpc r29,__zero_reg__ 74 0080 01F4 brne .L37 75 0082 00C0 rjmp .L41 76 .L9: 77 0084 C330 cpi r28,3 78 0086 D105 cpc r29,__zero_reg__ 79 0088 01F4 brne .+2 80 008a 00C0 rjmp .L7 81 008c C430 cpi r28,4 82 008e D105 cpc r29,__zero_reg__ 83 0090 01F4 brne .L37 84 0092 00C0 rjmp .L42 85 .L4: 86 0094 88EE ldi r24,lo8(-24) 87 0096 0E94 0000 call orb1_set_color 88 009a 0E94 0000 call bom_on 89 009e 80E0 ldi r24,lo8(0) 90 00a0 90E0 ldi r25,hi8(0) 91 00a2 68EC ldi r22,lo8(200) 92 00a4 70E0 ldi r23,hi8(200) 93 00a6 0E94 0000 call motor_r_set 94 00aa 80E0 ldi r24,lo8(0) 95 00ac 90E0 ldi r25,hi8(0) 96 00ae 68EC ldi r22,lo8(200) 97 00b0 70E0 ldi r23,hi8(200) 98 00b2 0E94 0000 call motor_l_set 99 00b6 80ED ldi r24,lo8(2000) 100 00b8 97E0 ldi r25,hi8(2000) 101 00ba 0E94 0000 call delay_ms 102 .L10: 103 00be 80E0 ldi r24,lo8(data_length) 104 00c0 90E0 ldi r25,hi8(data_length) 105 00c2 0E94 0000 call wl_basic_do_default 106 00c6 892B or r24,r25 107 00c8 01F4 brne .L10 108 00ca 8CE1 ldi r24,lo8(28) 109 00cc 0E94 0000 call orb1_set_color 110 00d0 0E94 0000 call rtc_reset 111 00d4 C1E0 ldi r28,lo8(1) 112 00d6 D0E0 ldi r29,hi8(1) 113 00d8 00C0 rjmp .L37 114 .L41: 115 00da 8CE1 ldi r24,lo8(28) 116 00dc 0E94 0000 call orb1_set_color 117 00e0 8CE1 ldi r24,lo8(28) 118 00e2 0E94 0000 call orb2_set_color 119 00e6 6624 clr r6 120 00e8 7724 clr r7 121 00ea CC24 clr r12 122 00ec DD24 clr r13 123 00ee 91E0 ldi r25,lo8(1) 124 00f0 A92E mov r10,r25 125 00f2 B12C mov r11,__zero_reg__ 126 00f4 00C0 rjmp .L39 127 .L17: 128 00f6 AA24 clr r10 129 00f8 BB24 clr r11 130 .L39: 131 00fa 85E0 ldi r24,lo8(5) 132 00fc 90E0 ldi r25,hi8(5) 133 00fe 0E94 0000 call range_read_distance 134 0102 7C01 movw r14,r24 135 0104 80E0 ldi r24,lo8(data_length) 136 0106 90E0 ldi r25,hi8(data_length) 137 0108 0E94 0000 call wl_basic_do_default 138 010c FC01 movw r30,r24 139 010e 9093 0000 sts (packet_data)+1,r25 140 0112 8093 0000 sts packet_data,r24 141 0116 0097 sbiw r24,0 142 0118 01F0 breq .L12 143 011a 8091 0000 lds r24,data_length 144 011e 9091 0000 lds r25,(data_length)+1 145 0122 0297 sbiw r24,2 146 0124 01F4 brne .L12 147 0126 8081 ld r24,Z 148 0128 8435 cpi r24,lo8(84) 149 012a 01F4 brne .L12 150 012c 81E4 ldi r24,lo8(65) 151 012e 8093 0000 sts send_buffer,r24 152 0132 8181 ldd r24,Z+1 153 0134 8093 0000 sts send_buffer+1,r24 154 0138 8AE2 ldi r24,lo8(42) 155 013a 60E0 ldi r22,lo8(send_buffer) 156 013c 70E0 ldi r23,hi8(send_buffer) 157 013e 42E0 ldi r20,lo8(2) 158 0140 50E0 ldi r21,hi8(2) 159 0142 0E94 0000 call wl_basic_send_global_packet 160 0146 80E0 ldi r24,lo8(0) 161 0148 90E0 ldi r25,hi8(0) 162 014a 60E0 ldi r22,lo8(0) 163 014c 70E0 ldi r23,hi8(0) 164 014e 0E94 0000 call motor_r_set 165 0152 80E0 ldi r24,lo8(0) 166 0154 90E0 ldi r25,hi8(0) 167 0156 60E0 ldi r22,lo8(0) 168 0158 70E0 ldi r23,hi8(0) 169 015a 0E94 0000 call motor_l_set 170 015e C2E0 ldi r28,lo8(2) 171 0160 D0E0 ldi r29,hi8(2) 172 0162 00C0 rjmp .L37 173 .L12: 174 0164 86E0 ldi r24,lo8(6) 175 0166 90E0 ldi r25,hi8(6) 176 0168 0E94 0000 call range_read_distance 177 016c EC01 movw r28,r24 178 016e 84E0 ldi r24,lo8(4) 179 0170 90E0 ldi r25,hi8(4) 180 0172 0E94 0000 call range_read_distance 181 0176 8C01 movw r16,r24 182 0178 0E94 0000 call rtc_get 183 017c 2DEC ldi r18,lo8(-51) 184 017e 3FEF ldi r19,hi8(-51) 185 0180 E20E add r14,r18 186 0182 F31E adc r15,r19 187 0184 35E9 ldi r19,lo8(149) 188 0186 E316 cp r14,r19 189 0188 F104 cpc r15,__zero_reg__ 190 018a 00F4 brsh .L13 191 018c 21E0 ldi r18,lo8(1) 192 018e C216 cp r12,r18 193 0190 D104 cpc r13,__zero_reg__ 194 0192 01F0 breq .L13 195 0194 80EE ldi r24,lo8(-32) 196 0196 0E94 0000 call orb2_set_color 197 019a 0E94 0000 call rtc_get 198 019e 3C01 movw r6,r24 199 01a0 81E0 ldi r24,lo8(1) 200 01a2 90E0 ldi r25,hi8(1) 201 01a4 6FEF ldi r22,lo8(255) 202 01a6 70E0 ldi r23,hi8(255) 203 01a8 0E94 0000 call motor_l_set 204 01ac 80E0 ldi r24,lo8(0) 205 01ae 90E0 ldi r25,hi8(0) 206 01b0 60E0 ldi r22,lo8(0) 207 01b2 70E0 ldi r23,hi8(0) 208 01b4 0E94 0000 call motor_r_set 209 01b8 81E0 ldi r24,lo8(1) 210 01ba C82E mov r12,r24 211 01bc D12C mov r13,__zero_reg__ 212 01be 00C0 rjmp .L39 213 .L13: 214 01c0 2197 sbiw r28,1 215 01c2 CB52 subi r28,lo8(299) 216 01c4 D140 sbci r29,hi8(299) 217 01c6 00F4 brsh .L14 218 01c8 21E0 ldi r18,lo8(1) 219 01ca C216 cp r12,r18 220 01cc D104 cpc r13,__zero_reg__ 221 01ce 01F0 breq .L14 222 01d0 80E0 ldi r24,lo8(0) 223 01d2 90E0 ldi r25,hi8(0) 224 01d4 60E0 ldi r22,lo8(0) 225 01d6 70E0 ldi r23,hi8(0) 226 01d8 0E94 0000 call motor_r_set 227 01dc 00C0 rjmp .L39 228 .L14: 229 01de 0150 subi r16,lo8(-(-1)) 230 01e0 1040 sbci r17,hi8(-(-1)) 231 01e2 0B52 subi r16,lo8(299) 232 01e4 1140 sbci r17,hi8(299) 233 01e6 00F4 brsh .L15 234 01e8 21E0 ldi r18,lo8(1) 235 01ea C216 cp r12,r18 236 01ec D104 cpc r13,__zero_reg__ 237 01ee 01F0 breq .L15 238 01f0 80E0 ldi r24,lo8(0) 239 01f2 90E0 ldi r25,hi8(0) 240 01f4 60E0 ldi r22,lo8(0) 241 01f6 70E0 ldi r23,hi8(0) 242 01f8 0E94 0000 call motor_l_set 243 01fc 00C0 rjmp .L39 244 .L15: 245 01fe 8619 sub r24,r6 246 0200 9709 sbc r25,r7 247 0202 0397 sbiw r24,3 248 0204 04F4 brge .L16 249 0206 31E0 ldi r19,lo8(1) 250 0208 A316 cp r10,r19 251 020a B104 cpc r11,__zero_reg__ 252 020c 01F0 breq .+2 253 020e 00C0 rjmp .L17 254 .L16: 255 0210 83E0 ldi r24,lo8(3) 256 0212 0E94 0000 call orb2_set_color 257 0216 81E0 ldi r24,lo8(1) 258 0218 90E0 ldi r25,hi8(1) 259 021a 6FEF ldi r22,lo8(255) 260 021c 70E0 ldi r23,hi8(255) 261 021e 0E94 0000 call motor_l_set 262 0222 81E0 ldi r24,lo8(1) 263 0224 90E0 ldi r25,hi8(1) 264 0226 6FEF ldi r22,lo8(255) 265 0228 70E0 ldi r23,hi8(255) 266 022a 0E94 0000 call motor_r_set 267 022e CC24 clr r12 268 0230 DD24 clr r13 269 0232 00C0 rjmp .L17 270 .L6: 271 0234 83E0 ldi r24,lo8(3) 272 0236 0E94 0000 call orb1_set_color 273 023a 83E0 ldi r24,lo8(3) 274 023c 0E94 0000 call orb2_set_color 275 0240 0E94 0000 call motors_off 276 0244 0E94 0000 call rtc_reset 277 0248 0E94 0000 call bom_off 278 024c 88EB ldi r24,lo8(3000) 279 024e 9BE0 ldi r25,hi8(3000) 280 0250 0E94 0000 call delay_ms 281 .L18: 282 0254 80E0 ldi r24,lo8(data_length) 283 0256 90E0 ldi r25,hi8(data_length) 284 0258 0E94 0000 call wl_basic_do_default 285 025c 892B or r24,r25 286 025e 01F4 brne .L18 287 0260 00C0 rjmp .L40 288 .L7: 289 0262 80EE ldi r24,lo8(-32) 290 0264 0E94 0000 call orb1_set_color 291 0268 80EE ldi r24,lo8(-32) 292 026a 0E94 0000 call orb2_set_color 293 026e 84E0 ldi r24,lo8(4) 294 0270 8816 cp r8,r24 295 0272 9104 cpc r9,__zero_reg__ 296 0274 01F4 brne .L19 297 0276 81E0 ldi r24,lo8(1) 298 0278 90E0 ldi r25,hi8(1) 299 027a 6FEF ldi r22,lo8(255) 300 027c 70E0 ldi r23,hi8(255) 301 027e 0E94 0000 call motor_l_set 302 0282 81E0 ldi r24,lo8(1) 303 0284 90E0 ldi r25,hi8(1) 304 0286 6FEF ldi r22,lo8(255) 305 0288 70E0 ldi r23,hi8(255) 306 028a 0E94 0000 call motor_r_set 307 .L19: 308 028e C401 movw r24,r8 309 0290 0197 sbiw r24,1 310 0292 0397 sbiw r24,3 311 0294 00F4 brsh .L20 312 0296 81E0 ldi r24,lo8(1) 313 0298 90E0 ldi r25,hi8(1) 314 029a 6FEF ldi r22,lo8(255) 315 029c 70E0 ldi r23,hi8(255) 316 029e 0E94 0000 call motor_l_set 317 02a2 81E0 ldi r24,lo8(1) 318 02a4 90E0 ldi r25,hi8(1) 319 02a6 6EEB ldi r22,lo8(190) 320 02a8 70E0 ldi r23,hi8(190) 321 02aa 0E94 0000 call motor_r_set 322 .L20: 323 02ae C401 movw r24,r8 324 02b0 0597 sbiw r24,5 325 02b2 0397 sbiw r24,3 326 02b4 00F4 brsh .L21 327 02b6 81E0 ldi r24,lo8(1) 328 02b8 90E0 ldi r25,hi8(1) 329 02ba 6EEB ldi r22,lo8(190) 330 02bc 70E0 ldi r23,hi8(190) 331 02be 0E94 0000 call motor_l_set 332 02c2 81E0 ldi r24,lo8(1) 333 02c4 90E0 ldi r25,hi8(1) 334 02c6 6FEF ldi r22,lo8(255) 335 02c8 70E0 ldi r23,hi8(255) 336 02ca 0E94 0000 call motor_r_set 337 .L21: 338 02ce C401 movw r24,r8 339 02d0 0897 sbiw r24,8 340 02d2 0497 sbiw r24,4 341 02d4 00F0 brlo .L22 342 02d6 97FE sbrs r9,7 343 02d8 00C0 rjmp .L23 344 .L22: 345 02da 80E0 ldi r24,lo8(0) 346 02dc 90E0 ldi r25,hi8(0) 347 02de 6AEA ldi r22,lo8(170) 348 02e0 70E0 ldi r23,hi8(170) 349 02e2 0E94 0000 call motor_l_set 350 02e6 81E0 ldi r24,lo8(1) 351 02e8 90E0 ldi r25,hi8(1) 352 02ea 6FEF ldi r22,lo8(255) 353 02ec 70E0 ldi r23,hi8(255) 354 02ee 0E94 0000 call motor_r_set 355 02f2 80EE ldi r24,lo8(-32) 356 02f4 0E94 0000 call orb2_set_color 357 .L23: 358 02f8 C401 movw r24,r8 359 02fa 0C97 sbiw r24,12 360 02fc 0497 sbiw r24,4 361 02fe 00F0 brlo .L24 362 0300 8928 or r8,r9 363 0302 01F4 brne .L25 364 .L24: 365 0304 81E0 ldi r24,lo8(1) 366 0306 90E0 ldi r25,hi8(1) 367 0308 6FEF ldi r22,lo8(255) 368 030a 70E0 ldi r23,hi8(255) 369 030c 0E94 0000 call motor_l_set 370 0310 80E0 ldi r24,lo8(0) 371 0312 90E0 ldi r25,hi8(0) 372 0314 6AEA ldi r22,lo8(170) 373 0316 70E0 ldi r23,hi8(170) 374 0318 0E94 0000 call motor_r_set 375 .L25: 376 031c 80E0 ldi r24,lo8(data_length) 377 031e 90E0 ldi r25,hi8(data_length) 378 0320 0E94 0000 call wl_basic_do_default 379 0324 FC01 movw r30,r24 380 0326 9093 0000 sts (packet_data)+1,r25 381 032a 8093 0000 sts packet_data,r24 382 032e 0097 sbiw r24,0 383 0330 01F0 breq .L26 384 0332 8081 ld r24,Z 385 0334 8134 cpi r24,lo8(65) 386 0336 01F4 brne .L26 387 0338 8181 ldd r24,Z+1 388 033a 8515 cp r24,r5 389 033c 01F0 breq .L26 390 033e C2E0 ldi r28,lo8(2) 391 0340 D0E0 ldi r29,hi8(2) 392 .L26: 393 0342 8FEF ldi r24,lo8(-1) 394 0344 9FEF ldi r25,hi8(-1) 395 0346 0E94 0000 call bom_refresh 396 .L27: 397 034a 85E0 ldi r24,lo8(5) 398 034c 90E0 ldi r25,hi8(5) 399 034e 0E94 0000 call range_read_distance 400 0352 8C01 movw r16,r24 401 0354 2FEF ldi r18,hi8(-1) 402 0356 8F3F cpi r24,lo8(-1) 403 0358 9207 cpc r25,r18 404 035a 01F0 breq .L27 405 035c 8AE0 ldi r24,lo8(10) 406 035e 90E0 ldi r25,hi8(10) 407 0360 0E94 0000 call delay_ms 408 0364 0E94 0000 call bom_get_max 409 0368 4C01 movw r8,r24 410 036a B801 movw r22,r16 411 036c 0E94 0000 call hunter_prey_tagged 412 0370 F82E mov r15,r24 413 0372 0E94 0000 call rtc_get 414 0376 8C01 movw r16,r24 415 0378 0E94 0000 call button2_read 416 037c 0197 sbiw r24,1 417 037e 01F0 breq .L28 418 0380 FF20 tst r15 419 0382 01F4 brne .+2 420 0384 00C0 rjmp .L37 421 0386 0131 cpi r16,17 422 0388 1105 cpc r17,__zero_reg__ 423 038a 04F4 brge .+2 424 038c 00C0 rjmp .L37 425 .L28: 426 038e 4092 0000 sts send_buffer,r4 427 0392 5092 0000 sts send_buffer+1,r5 428 0396 8AE2 ldi r24,lo8(42) 429 0398 60E0 ldi r22,lo8(send_buffer) 430 039a 70E0 ldi r23,hi8(send_buffer) 431 039c 42E0 ldi r20,lo8(2) 432 039e 50E0 ldi r21,hi8(2) 433 03a0 0E94 0000 call wl_basic_send_global_packet 434 03a4 0E94 0000 call rtc_reset 435 03a8 81E4 ldi r24,lo8(65) 436 03aa 0E94 0000 call orb1_set_color 437 03ae C4E0 ldi r28,lo8(4) 438 03b0 D0E0 ldi r29,hi8(4) 439 03b2 00C0 rjmp .L37 440 .L42: 441 03b4 0E94 0000 call rtc_get 442 03b8 8C01 movw r16,r24 443 03ba 80E0 ldi r24,lo8(data_length) 444 03bc 90E0 ldi r25,hi8(data_length) 445 03be 0E94 0000 call wl_basic_do_default 446 03c2 FC01 movw r30,r24 447 03c4 9093 0000 sts (packet_data)+1,r25 448 03c8 8093 0000 sts packet_data,r24 449 03cc 0097 sbiw r24,0 450 03ce 01F0 breq .L29 451 03d0 8081 ld r24,Z 452 03d2 8134 cpi r24,lo8(65) 453 03d4 01F4 brne .L29 454 03d6 8181 ldd r24,Z+1 455 03d8 8515 cp r24,r5 456 03da 01F4 brne .L29 457 03dc 0E94 0000 call rtc_reset 458 03e0 C0E0 ldi r28,lo8(0) 459 03e2 D0E0 ldi r29,hi8(0) 460 .L29: 461 03e4 E091 0000 lds r30,packet_data 462 03e8 F091 0000 lds r31,(packet_data)+1 463 03ec 3097 sbiw r30,0 464 03ee 01F0 breq .L30 465 03f0 8081 ld r24,Z 466 03f2 8134 cpi r24,lo8(65) 467 03f4 01F4 brne .L30 468 03f6 8181 ldd r24,Z+1 469 03f8 8515 cp r24,r5 470 03fa 01F0 breq .L30 471 03fc C2E0 ldi r28,lo8(2) 472 03fe D0E0 ldi r29,hi8(2) 473 .L30: 474 0400 0131 cpi r16,17 475 0402 1105 cpc r17,__zero_reg__ 476 0404 04F4 brge .+2 477 0406 00C0 rjmp .L37 478 .L40: 479 0408 80EE ldi r24,lo8(-32) 480 040a 0E94 0000 call orb1_set_color 481 040e C3E0 ldi r28,lo8(3) 482 0410 D0E0 ldi r29,hi8(3) 483 0412 00C0 rjmp .L37 485 .comm wl_basic_group_handler,10,1 486 .comm current_packet,8,1 487 .comm packet_data,2,1 488 .comm data_length,2,1 489 .comm send_buffer,2,1 DEFINED SYMBOLS *ABS*:0000000000000000 main.c /tmp/ccEOMtyq.s:2 *ABS*:000000000000003f __SREG__ /tmp/ccEOMtyq.s:3 *ABS*:000000000000003e __SP_H__ /tmp/ccEOMtyq.s:4 *ABS*:000000000000003d __SP_L__ /tmp/ccEOMtyq.s:5 *ABS*:0000000000000034 __CCP__ /tmp/ccEOMtyq.s:6 *ABS*:0000000000000000 __tmp_reg__ /tmp/ccEOMtyq.s:7 *ABS*:0000000000000001 __zero_reg__ /tmp/ccEOMtyq.s:13 .text:0000000000000000 main *COM*:0000000000000002 data_length *COM*:0000000000000002 packet_data *COM*:0000000000000002 send_buffer *COM*:000000000000000a wl_basic_group_handler *COM*:0000000000000008 current_packet UNDEFINED SYMBOLS __do_copy_data __do_clear_bss dragonfly_init xbee_init wl_basic_init_default wl_set_channel orb_init rtc_init motors_init get_robotid wheel orb1_set_color bom_on motor_r_set motor_l_set delay_ms wl_basic_do_default rtc_reset orb2_set_color range_read_distance wl_basic_send_global_packet rtc_get motors_off bom_off bom_refresh bom_get_max hunter_prey_tagged button2_read