📄 map_bot.lst
字号:
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 + -