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

📄 map_bot.lst

📁 用于机器人自动低分辨路的地图测绘程序。用于机器人控制测绘。分为远端控制端和本地控制端。控制电机为标准舵机。
💻 LST
📖 第 1 页 / 共 5 页
字号:
           1305 			;
           1306 			;    running_counter = 0;
0255 1283  1307 	BCF   0x03,RP0
0256 01E7  1308 	CLRF  running_counter
           1309 			;    recv_counter = 0;
0257 01E8  1310 	CLRF  recv_counter
           1311 			;
           1312 			;
           1313 			;	servo_mode = 0;			// finite state machine for servo control
0258 01DE  1314 	CLRF  servo_mode
           1315 			;	cur_servo = 0;			// current servo number
0259 01DF  1316 	CLRF  cur_servo
           1317 			;	pwm_cycle = 0;			// state of pwm system
025A 01E0  1318 	CLRF  pwm_cycle
           1319 			;
           1320 			;	pwm_value[0] = 0;
CC5X Version 3.1J,   File: map_bot.c            4. Sep 2006   0:09   Page 23

ADDR CODE  LINE SOURCE

025B 01C9  1321 	CLRF  pwm_value
           1322 			;	pwm_value[1] = 0;
025C 01CA  1323 	CLRF  pwm_value+1
           1324 			;	pwm_value[2] = 0;
025D 01CB  1325 	CLRF  pwm_value+2
           1326 			;	pwm_value[3] = 0;
025E 01CC  1327 	CLRF  pwm_value+3
           1328 			;
           1329 			;
           1330 			;
           1331 			;	// setup timer 0
           1332 			;    OPTION = 4;				// prescaler divide by 16
025F 3004  1333 	MOVLW .4
0260 1683  1334 	BSF   0x03,RP0
0261 0081  1335 	MOVWF OPTION_REG
           1336 			;	T0CS = 0;				// internel clock
0262 1281  1337 	BCF   0x81,T0CS
           1338 			;    TMR0 = 0;				// clear the timer
0263 1283  1339 	BCF   0x03,RP0
0264 0181  1340 	CLRF  TMR0
           1341 			;    T0IE = 1;				// enable interrupt for timer 0
0265 168B  1342 	BSF   0x0B,T0IE
           1343 			;
           1344 			;
           1345 			;	// setup timer 1
           1346 			;	TMR1L = 0;			// reset timer
0266 018E  1347 	CLRF  TMR1L
           1348 			;	TMR1H = 0;
0267 018F  1349 	CLRF  TMR1H
           1350 			;
           1351 			;	TMR1ON = 0; 			// shut off timer to modify values
0268 1010  1352 	BCF   0x10,TMR1ON
           1353 			;
           1354 			;	T1CKPS1 = 1;			// setup prescaler
0269 1690  1355 	BSF   0x10,T1CKPS1
           1356 			;	T1CKPS0 = 0;
026A 1210  1357 	BCF   0x10,T1CKPS0
           1358 			;	T1OSCEN = 0;			// shut off oscillator
026B 1190  1359 	BCF   0x10,T1OSCEN
           1360 			;
           1361 			;	TMR1CS = 0;				// internal clock
026C 1090  1362 	BCF   0x10,TMR1CS
           1363 			;	TMR1IE = 1;				// enable interrupt
026D 1683  1364 	BSF   0x03,RP0
026E 140C  1365 	BSF   0x8C,TMR1IE
           1366 			;
           1367 			;	TMR1ON = 1; 			// turn timer on
026F 1283  1368 	BCF   0x03,RP0
0270 1410  1369 	BSF   0x10,TMR1ON
           1370 			;	TMR1IF = 0;				// clear interrupt flag
0271 100C  1371 	BCF   0x0C,TMR1IF
           1372 			;
           1373 			;	TMR2 = 0xe0;
0272 30E0  1374 	MOVLW .224
0273 0091  1375 	MOVWF TMR2
           1376 			;	TMR2ON = 1;				// enable timer 2
0274 1512  1377 	BSF   0x12,TMR2ON
           1378 			;	TMR2IE = 1;
0275 1683  1379 	BSF   0x03,RP0
0276 148C  1380 	BSF   0x8C,TMR2IE
CC5X Version 3.1J,   File: map_bot.c            4. Sep 2006   0:09   Page 24

ADDR CODE  LINE SOURCE

           1381 			;
           1382 			;	servo_pos[0] = 0x80;	// setup inital servo positions
0277 3080  1383 	MOVLW .128
0278 1283  1384 	BCF   0x03,RP0
0279 00C3  1385 	MOVWF servo_pos
           1386 			;	servo_pos[1] = 0x80;	
027A 3080  1387 	MOVLW .128
027B 00C4  1388 	MOVWF servo_pos+1
           1389 			;	servo_pos[2] = 0x80;
027C 3080  1390 	MOVLW .128
027D 00C5  1391 	MOVWF servo_pos+2
           1392 			;	servo_pos[3] = 0x80;	
027E 3080  1393 	MOVLW .128
027F 00C6  1394 	MOVWF servo_pos+3
           1395 			;	servo_pos[4] = 0x80;	
0280 3080  1396 	MOVLW .128
0281 00C7  1397 	MOVWF servo_pos+4
           1398 			;	servo_pos[5] = 0x80;
0282 3080  1399 	MOVLW .128
0283 00C8  1400 	MOVWF servo_pos+5
           1401 			;
           1402 			;   update_timeout = 0;
0284 01E6  1403 	CLRF  update_timeout
           1404 			;
           1405 			;   reading_data = 0;
0285 1064  1406 	BCF   0x64,reading_data
           1407 			;   read_timeout = 0;
0286 01E3  1408 	CLRF  read_timeout
           1409 			;   cur_recv_byte = 0; // Waiting for first byte
0287 01E1  1410 	CLRF  cur_recv_byte
           1411 			;   cur_send_byte = 0; // Waiting for first byte
0288 01E2  1412 	CLRF  cur_send_byte
           1413 			;	last_valid = 1;
0289 14E4  1414 	BSF   0x64,last_valid
           1415 			;
           1416 			;   RCIF = 0;	// Clear receive interrupt
028A 128C  1417 	BCF   0x0C,RCIF
           1418 			;   RCIE = 1; 	// Enable receive interrupts
028B 1683  1419 	BSF   0x03,RP0
028C 168C  1420 	BSF   0x8C,RCIE
           1421 			;
           1422 			;   TXIF = 0;	// Clear receive interrupt
028D 1283  1423 	BCF   0x03,RP0
028E 120C  1424 	BCF   0x0C,TXIF
           1425 			;   TXIE = 1; 	// Enable receive interrupts
028F 1683  1426 	BSF   0x03,RP0
0290 160C  1427 	BSF   0x8C,TXIE
           1428 			;
           1429 			;
           1430 			;	// Analog to Digital Setup
           1431 			;    cur_analog = 0;
0291 1283  1432 	BCF   0x03,RP0
0292 01DD  1433 	CLRF  cur_analog
           1434 			;
           1435 			;//	ADCON1 = 0b.1000.0010;	// RE0, 1, 2 : digital RA0,1,2,3,5 : analog
           1436 			;
           1437 			;	ADCON1 = 0b.1000.0000;	// RE0, 1, 2 : digital RA0,1,2,3,5 : analog
0293 3080  1438 	MOVLW .128
0294 1683  1439 	BSF   0x03,RP0
0295 009F  1440 	MOVWF ADCON1
CC5X Version 3.1J,   File: map_bot.c            4. Sep 2006   0:09   Page 25

ADDR CODE  LINE SOURCE

           1441 			;
           1442 			;
           1443 			;	ADCS1 = 1;				// Fosc/32 clocl
0296 1283  1444 	BCF   0x03,RP0
0297 179F  1445 	BSF   0x1F,ADCS1
           1446 			;	ADCS0 = 0;
0298 131F  1447 	BCF   0x1F,ADCS0
           1448 			;	ADCON0 &= 0b.1100.0111;
0299 30C7  1449 	MOVLW .199
029A 059F  1450 	ANDWF ADCON0,1
           1451 			;	ADON = 1;					// turn on converter
029B 141F  1452 	BSF   0x1F,ADON
           1453 			;
           1454 			;    ADIF =0;
029C 130C  1455 	BCF   0x0C,ADIF
           1456 			;    ADIE =1;
029D 1683  1457 	BSF   0x03,RP0
029E 170C  1458 	BSF   0x8C,ADIE
           1459 			;
           1460 			;	GO = 1;
029F 1283  1461 	BCF   0x03,RP0
02A0 151F  1462 	BSF   0x1F,GO
           1463 			;	
           1464 			;    GIE = 1;				// interrupts allowed 
02A1 178B  1465 	BSF   0x0B,GIE
           1466 			;	PEIE = 1;				// enable periphial interrupts
02A2 170B  1467 	BSF   0x0B,PEIE
           1468 			;
           1469 			;encoder_0_count = 0;
02A3 01EA  1470 	CLRF  encoder_0_count
           1471 			;encoder_0_speed = 0;
02A4 01EE  1472 	CLRF  encoder_0_speed
           1473 			;
           1474 			;
           1475 			;	encoder_low[0] = 0;
02A5 01F1  1476 	CLRF  encoder_low
           1477 			;	encoder_high[0] = 0;
02A6 01F5  1478 	CLRF  encoder_high
           1479 			;	encoder_low[1] = 0;
02A7 01F2  1480 	CLRF  encoder_low+1
           1481 			;	encoder_high[1] = 0;
02A8 01F6  1482 	CLRF  encoder_high+1
           1483 			;	encoder_low[2] = 0;
02A9 01F3  1484 	CLRF  encoder_low+2
           1485 			;	encoder_high[2] = 0;
02AA 01F7  1486 	CLRF  encoder_high+2
           1487 			;	encoder_low[3] = 0;
02AB 01F4  1488 	CLRF  encoder_low+3
           1489 			;	encoder_high[3] = 0;
02AC 01F8  1490 	CLRF  encoder_high+3
           1491 			;
           1492 			;last_dir = 0;
02AD 01E9  1493 	CLRF  last_dir
           1494 			;run_count = 0;
02AE 01EF  1495 	CLRF  run_count
           1496 			;}
02AF 0008  1497 	RETURN
           1498 			;/* end of startup */
           1499 			;
           1500 			;/**************************
CC5X Version 3.1J,   File: map_bot.c            4. Sep 2006   0:09   Page 26

ADDR CODE  LINE SOURCE

           1501 			;** End of Initialization **
           1502 			;**************************/
           1503 			;
           1504 			;
           1505 			;
           1506 			;/****************************************
           1507 			;**	Serial command interface functions **
           1508 			;****************************************/
           1509 			;
           1510 			;
           1511 			;
           1512 			;/* deal with digital out command */
           1513 			;/*void digital_out_command ( void )
           1514 			;{
           1515 			;	unsigned char n = get_hex_nibble(); // get output number
           1516 			;
           1517 			;	if (n > 5) return;	// range check
           1518 			;
           1519 			;	unsigned shift = 1 << n; // create bit mask
           1520 			;
           1521 			;	unsigned char v = get_hex_nibble(); // get value (on or off)
           1522 			;
           1523 			;	if( v == 0)
           1524 			;	{
           1525 			;		shift = 255 - shift; // and mask
           1526 			;		PORTD &=  shift;
           1527 			;	}
           1528 			;
           1529 			;	if (v == 1)
           1530 			;		PORTD |= shift;   // or mask
           1531 			;}*/
           1532 			;/* end of digital_out_command */
           1533 			;
           1534 			;/* return the valur of a digital input */
           1535 			;/*bit get_digital_value(unsigned char n)
           1536 			;{
           1537 			;	if (n == 0) return(digital_in_0); else
           1538 			;	if (n == 1) return(digital_in_1); else
           1539 			;	if (n == 2) return(digital_in_2); else
           1540 			;	if (n == 3) return(digital_in_3); else
           1541 			;	if (n == 4) return(digital_in_4);
           1542 			;
           1543 			;	return(0);
           1544 			;}*/
           1545 			;/* end of get_digital_value */
           1546 			;
           1547 			;
           1548 			;/***********************************************
           1549 			;**	End of serial command interface functions **
           1550 			;***********************************************/
           1551 			;
           1552 			;/* Read data from sonar sensor */
           1553 			;// The parmeter is the input /output pair number
           1554 			;// for example passing '2' will use input 2 and output 2
           1555 			;//
           1556 			;/*void get_sonar_command( void )
           1557 			;{
           1558 			;	unsigned char n = get_hex_nibble(); 
           1559 			;
           1560 			;	unsigned char mask = 1 << n;
CC5X Version 3.1J,   File: map_bot.c            4. Sep 2006   0:09   Page 27

ADDR CODE  LINE SOURCE

           1561 			;
           1562 			;    PORTD |= mask;   // turn output on
           1563 			;
           1564 			;	delay(0x8);
           1565 			;
           1566 			;	PORTD &= ~mask;   // turn output off
           1567 			;
           1568 			;	TMR1H = 0;
           1569 			;
           1570 			;	while(!get_digital_value(n) && TMR1H < 0x80);
           1571 			;
           1572 			;	TMR1H = 0;
           1573 			;	TMR1L = 0;
           1574 			;
           1575 			;	// Read the pulse width
           1576 			;	while(get_digital_value(n) && TMR1H < 0x80);
           1577 			;
           1578 			;	unsigned char l = TMR1L;			// Save low order, it will change during transmittion
           1579 			;
           1580 			;	send_hex(TMR1H);
           1581 			;	send_hex(l);
           1582 			;}*/
           1583 			;/* End of read sonar */
           1584 			;
           1585 			;
           1586 			;
           1587 			;
           1588 			;
           1589 			;/* main function */
           1590 			;void main ( void )
           1591 			;{
           1592 main
           1593 			;	startup();
02B0 2243  1594 	CALL  startup
           1595 			;
           1596 			;	setup_serial();
02B1 2233  1597 	CALL  setup_serial
           1598 			;
           1599 			;	while (1);	// infinte loop
02B2 2AB2  1600 m046	GOTO  m046
           1601 
     0000  1602 	ORG 0x0000
0000 018A  1603 	DATA 018AH
0001 0000  1604 	DATA 0000H
0002 0000  1605 	DATA 0000H
     0000  1606 	ORG 0x2007
2007 3FF2  1607 	DATA 3FF2H
     0000  1608 	END
     0000  1609 
     0000  1610 
     0000  1611 ; *** KEY INFO ***
     0000  1612 
     0000  1613 ; 0x0004 P0  559 word(s) 27 % : ISR
     0000  1614 ; 0x0233 P0   16 word(s)  0 % : setup_serial
     0000  1615 ; 0x0243 P0  109 word(s)  5 % : startup
     0000  1616 ; 0x02B0 P0    3 word(s)  0 % : main
     0000  1617 
     0000  1618 ; RAM usage: 89 bytes (5 local), 247 bytes free
     0000  1619 ; Maximum call level: 1 (+1 for interrupt)
     0000  1620 ;  Codepage 0 has  691 word(s) :  33 %
CC5X Version 3.1J,   File: map_bot.c            4. Sep 2006   0:09   Page 28

ADDR CODE  LINE SOURCE

     0000  1621 ;  Codepage 1 has    0 word(s) :   0 %
     0000  1622 ;  Codepage 2 has    0 word(s) :   0 %
     0000  1623 ;  Codepage 3 has    0 word(s) :   0 %
     0000  1624 ; Total of 691 code words (8 %)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -