📄 map_bot.lst
字号:
002A 00B4 0325 MOVWF send_buffer+5
0326 ; send_buffer[6] = analog_low[5];
002B 0852 0327 MOVF analog_low+5,W
002C 00B5 0328 MOVWF send_buffer+6
0329 ; send_buffer[7] = analog_low[6];
002D 0853 0330 MOVF analog_low+6,W
002E 00B6 0331 MOVWF send_buffer+7
0332 ; send_buffer[8] = analog_low[7];
002F 0854 0333 MOVF analog_low+7,W
0030 00B7 0334 MOVWF send_buffer+8
0335 ;
0336 ; // Shift MSB of analog data to fit into two bytes
0337 ; send_buffer[9] = analog_high[0] | (analog_high[1]<<2) ;
0031 1003 0338 BCF 0x03,Carry
0032 0D56 0339 RLF analog_high+1,W
0033 0756 0340 ADDWF analog_high+1,W
0034 0756 0341 ADDWF analog_high+1,W
0035 0455 0342 IORWF analog_high,W
0036 00B8 0343 MOVWF send_buffer+9
0344 ; send_buffer[9] += analog_high[2]<<4;
0037 0E57 0345 SWAPF analog_high+2,W
0038 39F0 0346 ANDLW .240
0039 07B8 0347 ADDWF send_buffer+9,1
0348 ;
0349 ; unsigned int tmp = analog_high[3] * 64;
003A 0C58 0350 RRF analog_high+3,W
003B 00A1 0351 MOVWF tmp
003C 0CA1 0352 RRF tmp,1
003D 0CA1 0353 RRF tmp,1
003E 30C0 0354 MOVLW .192
003F 05A1 0355 ANDWF tmp,1
0356 ; send_buffer[9] += tmp;
0040 0821 0357 MOVF tmp,W
0041 07B8 0358 ADDWF send_buffer+9,1
0359 ;
0360 ;
CC5X Version 3.1J, File: map_bot.c 4. Sep 2006 0:09 Page 7
ADDR CODE LINE SOURCE
0361 ; send_buffer[10] = analog_high[4] | (analog_high[5]<<2) ;
0042 1003 0362 BCF 0x03,Carry
0043 0D5A 0363 RLF analog_high+5,W
0044 075A 0364 ADDWF analog_high+5,W
0045 075A 0365 ADDWF analog_high+5,W
0046 0459 0366 IORWF analog_high+4,W
0047 00B9 0367 MOVWF send_buffer+10
0368 ; send_buffer[10] += analog_high[6]<<4;
0048 0E5B 0369 SWAPF analog_high+6,W
0049 39F0 0370 ANDLW .240
004A 07B9 0371 ADDWF send_buffer+10,1
0372 ;
0373 ; tmp = analog_high[7] * 64;
004B 0C5C 0374 RRF analog_high+7,W
004C 00A1 0375 MOVWF tmp
004D 0CA1 0376 RRF tmp,1
004E 0CA1 0377 RRF tmp,1
004F 30C0 0378 MOVLW .192
0050 05A1 0379 ANDWF tmp,1
0380 ; send_buffer[10] += tmp;
0051 0821 0381 MOVF tmp,W
0052 07B9 0382 ADDWF send_buffer+10,1
0383 ;
0384 ;// send_buffer[7] = analog_high[3] | (analog_high[4]<<2);
0385 ;
0386 ; // Other telemetry data
0387 ;// send_buffer[8] =run_count;// encoder_0_speed;
0388 ;
0389 ; send_buffer[11] = encoder_low[0];
0053 0871 0390 MOVF encoder_low,W
0054 00BA 0391 MOVWF send_buffer+11
0392 ; send_buffer[12] = encoder_high[0];
0055 0875 0393 MOVF encoder_high,W
0056 00BB 0394 MOVWF send_buffer+12
0395 ;
0396 ; send_buffer[13] = encoder_low[1];
0057 0872 0397 MOVF encoder_low+1,W
0058 00BC 0398 MOVWF send_buffer+13
0399 ; send_buffer[14] = encoder_high[1];
0059 0876 0400 MOVF encoder_high+1,W
005A 00BD 0401 MOVWF send_buffer+14
0402 ;
0403 ; send_buffer[15] = encoder_low[2];
005B 0873 0404 MOVF encoder_low+2,W
005C 00BE 0405 MOVWF send_buffer+15
0406 ; send_buffer[16] = encoder_high[2];
005D 0877 0407 MOVF encoder_high+2,W
005E 00BF 0408 MOVWF send_buffer+16
0409 ;
0410 ; send_buffer[17] = encoder_low[3];
005F 0874 0411 MOVF encoder_low+3,W
0060 00C0 0412 MOVWF send_buffer+17
0413 ; send_buffer[18] = encoder_high[3];
0061 0878 0414 MOVF encoder_high+3,W
0062 00C1 0415 MOVWF send_buffer+18
0416 ;
0417 ; // Stop byte
0418 ; send_buffer[19] = 0xff;
0063 30FF 0419 MOVLW .255
0064 00C2 0420 MOVWF send_buffer+19
CC5X Version 3.1J, File: map_bot.c 4. Sep 2006 0:09 Page 8
ADDR CODE LINE SOURCE
0421 ;
0422 ; TXIE = 1; // Enable transmit to send packet
0065 1683 0423 BSF 0x03,RP0
0066 160C 0424 BSF 0x8C,TXIE
0425 ; }
0426 ;
0427 ; // Last char in packet
0428 ; if (cur_recv_byte >= NUM_RECV_BYTES)
0067 300B 0429 m002 MOVLW .11
0068 1283 0430 BCF 0x03,RP0
0069 1303 0431 BCF 0x03,RP1
006A 0261 0432 SUBWF cur_recv_byte,W
006B 1C03 0433 BTFSS 0x03,Carry
006C 28C4 0434 GOTO m010
0435 ; {
0436 ; cur_recv_byte = 0;
006D 01E1 0437 CLRF cur_recv_byte
0438 ;
0439 ;
0440 ; if (recv_buffer[0] == 0xff && recv_buffer[NUM_RECV_BYTES-1] == 0xff)
006E 0F24 0441 INCFSZ recv_buffer,W
006F 28BC 0442 GOTO m008
0070 0F2E 0443 INCFSZ recv_buffer+10,W
0071 28BC 0444 GOTO m008
0445 ; {
0446 ; // first byte is For digital controls.
0447 ;
0448 ; unsigned char dir = recv_buffer[1] & 0x03;
0072 3003 0449 MOVLW .3
0073 0525 0450 ANDWF recv_buffer+1,W
0074 00A1 0451 MOVWF dir
0452 ;
0453 ; if (dir != last_dir && recv_buffer[2] != 0 && recv_buffer[3] != 0)
0075 0821 0454 MOVF dir,W
0076 0669 0455 XORWF last_dir,W
0077 1903 0456 BTFSC 0x03,Zero_
0078 288B 0457 GOTO m003
0079 08A6 0458 MOVF recv_buffer+2,1
007A 1903 0459 BTFSC 0x03,Zero_
007B 288B 0460 GOTO m003
007C 08A7 0461 MOVF recv_buffer+3,1
007D 1903 0462 BTFSC 0x03,Zero_
007E 288B 0463 GOTO m003
0464 ; {
0465 ; led_0 = !led_0;
007F 3040 0466 MOVLW .64
0080 0686 0467 XORWF PORTB,1
0468 ; last_dir = dir;
0081 0821 0469 MOVF dir,W
0082 00E9 0470 MOVWF last_dir
0471 ;
0472 ; encoder_high[0] = 0;
0083 01F5 0473 CLRF encoder_high
0474 ; encoder_low[0] = 0;
0084 01F1 0475 CLRF encoder_low
0476 ;
0477 ; encoder_high[1] = 0;
0085 01F6 0478 CLRF encoder_high+1
0479 ; encoder_low[1] = 0;
0086 01F2 0480 CLRF encoder_low+1
CC5X Version 3.1J, File: map_bot.c 4. Sep 2006 0:09 Page 9
ADDR CODE LINE SOURCE
0481 ;
0482 ; encoder_high[2] = 0;
0087 01F7 0483 CLRF encoder_high+2
0484 ; encoder_low[2] = 0;
0088 01F3 0485 CLRF encoder_low+2
0486 ;
0487 ; encoder_high[3] = 0;
0089 01F8 0488 CLRF encoder_high+3
0489 ; encoder_low[3] = 0;
008A 01F4 0490 CLRF encoder_low+3
0491 ;
0492 ; }
0493 ;
0494 ; if (recv_buffer[1] & 0x01)
008B 1283 0495 m003 BCF 0x03,RP0
008C 1303 0496 BCF 0x03,RP1
008D 1C25 0497 BTFSS recv_buffer+1,0
008E 2893 0498 GOTO m004
0499 ; {
0500 ; pwm_value[0] = recv_buffer[2];
008F 0826 0501 MOVF recv_buffer+2,W
0090 00C9 0502 MOVWF pwm_value
0503 ; pwm_value[1] = 0;
0091 01CA 0504 CLRF pwm_value+1
0505 ; }
0506 ; else
0092 2898 0507 GOTO m005
0508 ; {
0509 ; pwm_value[0] = 0;
0093 1283 0510 m004 BCF 0x03,RP0
0094 1303 0511 BCF 0x03,RP1
0095 01C9 0512 CLRF pwm_value
0513 ; pwm_value[1] = recv_buffer[2];
0096 0826 0514 MOVF recv_buffer+2,W
0097 00CA 0515 MOVWF pwm_value+1
0516 ; }
0517 ;
0518 ; if (recv_buffer[1] & 0x02)
0098 1283 0519 m005 BCF 0x03,RP0
0099 1303 0520 BCF 0x03,RP1
009A 1CA5 0521 BTFSS recv_buffer+1,1
009B 28A0 0522 GOTO m006
0523 ; {
0524 ; pwm_value[2] = recv_buffer[3];
009C 0827 0525 MOVF recv_buffer+3,W
009D 00CB 0526 MOVWF pwm_value+2
0527 ; pwm_value[3] = 0;
009E 01CC 0528 CLRF pwm_value+3
0529 ; }
0530 ; else
009F 28A5 0531 GOTO m007
0532 ; {
0533 ; pwm_value[2] = 0;
00A0 1283 0534 m006 BCF 0x03,RP0
00A1 1303 0535 BCF 0x03,RP1
00A2 01CB 0536 CLRF pwm_value+2
0537 ; pwm_value[3] = recv_buffer[3];
00A3 0827 0538 MOVF recv_buffer+3,W
00A4 00CC 0539 MOVWF pwm_value+3
0540 ; }
CC5X Version 3.1J, File: map_bot.c 4. Sep 2006 0:09 Page 10
ADDR CODE LINE SOURCE
0541 ;
0542 ;
0543 ; // Copy servo data
0544 ; servo_pos[0] = recv_buffer[4];
00A5 1283 0545 m007 BCF 0x03,RP0
00A6 1303 0546 BCF 0x03,RP1
00A7 0828 0547 MOVF recv_buffer+4,W
00A8 00C3 0548 MOVWF servo_pos
0549 ; servo_pos[1] = recv_buffer[5];
00A9 0829 0550 MOVF recv_buffer+5,W
00AA 00C4 0551 MOVWF servo_pos+1
0552 ; servo_pos[2] = recv_buffer[6];
00AB 082A 0553 MOVF recv_buffer+6,W
00AC 00C5 0554 MOVWF servo_pos+2
0555 ; servo_pos[3] = recv_buffer[7];
00AD 082B 0556 MOVF recv_buffer+7,W
00AE 00C6 0557 MOVWF servo_pos+3
0558 ; servo_pos[4] = recv_buffer[8];
00AF 082C 0559 MOVF recv_buffer+8,W
00B0 00C7 0560 MOVWF servo_pos+4
0561 ; servo_pos[5] = recv_buffer[9];
00B1 082D 0562 MOVF recv_buffer+9,W
00B2 00C8 0563 MOVWF servo_pos+5
0564 ;
0565 ;
0566 ; recv_counter++;
00B3 0AE8 0567 INCF recv_counter,1
0568 ;
0569 ; if (recv_counter >= 10)
00B4 300A 0570 MOVLW .10
00B5 0268 0571 SUBWF recv_counter,W
00B6 1803 0572 BTFSC 0x03,Carry
0573 ; {
0574 ; recv_counter = 0;
00B7 01E8 0575 CLRF recv_counter
0576 ; //led_1 = !led_1;
0577 ; }
0578 ;
0579 ;
0580 ; last_valid = 1;
00B8 1283 0581 BCF 0x03,RP0
00B9 1303 0582 BCF 0x03,RP1
00BA 14E4 0583 BSF 0x64,last_valid
0584 ; }
0585 ; else
00BB 28BF 0586 GOTO m009
0587 ; last_valid = 0;
00BC 1283 0588 m008 BCF 0x03,RP0
00BD 1303 0589 BCF 0x03,RP1
00BE 10E4 0590 BCF 0x64,last_valid
0591 ;
0592 ; reading_data = 0;
00BF 1283 0593 m009 BCF 0x03,RP0
00C0 1303 0594 BCF 0x03,RP1
00C1 1064 0595 BCF 0x64,reading_data
0596 ;
0597 ; update_timeout = 0; // Reset update timeout
00C2 01E6 0598 CLRF update_timeout
0599 ;
0600 ;
CC5X Version 3.1J, File: map_bot.c 4. Sep 2006 0:09 Page 11
ADDR CODE LINE SOURCE
0601 ; }
0602 ; else
00C3 28CD 0603 GOTO m011
0604 ; recv_buffer[cur_recv_byte++] = RCREG; // Normal char for packet
00C4 3024 0605 m010 MOVLW .36
00C5 1283 0606 BCF 0x03,RP0
00C6 1303 0607 BCF 0x03,RP1
00C7 0761 0608 ADDWF cur_recv_byte,W
00C8 0084 0609 MOVWF FSR
00C9 1383 0610 BCF 0x03,IRP
00CA 081A 0611 MOVF RCREG,W
00CB 0080 0612 MOVWF INDF
00CC 0AE1 0613 INCF cur_recv_byte,1
0614 ; }
0615 ;
0616 ; // Ready for TX byte
0617 ; if (TXIF && TXIE)
00CD 1283 0618 m011 BCF 0x03,RP0
00CE 1303 0619 BCF 0x03,RP1
00CF 1E0C 0620 BTFSS 0x0C,TXIF
00D0 28E6 0621 GOTO m013
00D1 1683 0622 BSF 0x03,RP0
00D2 1E0C 0623 BTFSS 0x8C,TXIE
00D3 28E6 0624 GOTO m013
0625 ; {
0626 ; // End of packet?
0627 ; if(cur_send_byte >= NUM_SEND_BYTES)
00D4 3014 0628 MOVLW .20
00D5 1283 0629 BCF 0x03,RP0
00D6 0262 0630 SUBWF cur_send_byte,W
00D7 1C03 0631 BTFSS 0x03,Carry
00D8 28DD 0632 GOTO m012
0633 ; {
0634 ; cur_send_byte = 0; // Reset to first byte for next send
00D9 01E2 0635 CLRF cur_send_byte
0636 ; TXIE = 0; // Last byte has been sent, disable tx
00DA 1683 0637 BSF 0x03,RP0
00DB 120C 0638 BCF 0x8C,TXIE
0639 ; }
0640 ; else
00DC 28E6 0641 GOTO m013
0642 ; TXREG = send_buffer[cur_send_byte++]; // Send next byte
00DD 302F 0643 m012 MOVLW .47
00DE 1283 0644 BCF 0x03,RP0
00DF 1303 0645 BCF 0x03,RP1
00E0 0762 0646 ADDWF cur_send_byte,W
00E1 0084 0647 MOVWF FSR
00E2 1383 0648 BCF 0x03,IRP
00E3 0800 0649 MOVF INDF,W
00E4 0099 0650 MOVWF TXREG
00E5 0AE2 0651 INCF cur_send_byte,1
0652 ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -