⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 map_bot.lst

📁 用于机器人自动低分辨路的地图测绘程序。用于机器人控制测绘。分为远端控制端和本地控制端。控制电机为标准舵机。
💻 LST
📖 第 1 页 / 共 5 页
字号:
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 + -