📄 run.asl
字号:
+ 423 ;;----------------------------------------------------------------;
+ 424 ;;IR Received Judge Subroutine接收判断子程序
+ 425 ;;----------------------------------------------------------------;
+ 426 ;ir_received_judge::
+ 427
+ 428 ;f_judge:
+ 429 ; lda cnt_ir_rcv_f
+ 430 ; cmpe #c_ir_rcv_f
+ 431 ; brnc f_no_l_judge
+ 432 ;
+ 433 ;f_yes_l_judge:
+ 434 ; lda cnt_ir_rcv_l
+ 435 ; cmpe #c_ir_rcv_l
+ 436 ; brnc f_yes_l_no_r_judge
+ 437 ;
+ 438 ;f_yes_l_yes_r_judge:
+ 439 ; lda cnt_ir_rcv_r
+ 440 ; cmpe #c_ir_rcv_r
+ 441 ; brnc f_yes_l_yes_r_no
+ 442 ;
+ 443 ;;*************/*04-02-26*/**************;
+ 444 ;f_yes_l_yes_r_yes:
+ 445 ; lda #c_flg_f_l_r_rcved ;左右前方有障碍,左转或右转
+ 446 ; sta flg_ir_received
+ 447 ; lda flg_l_or_r
+ 448 ; anda #1
+ 449 ; brnz f_l_r_turn_right ;0 turn left, 1 turn right
+ 450 ;f_l_r_turn_left: ;左转;//04-03-17// revise the initial offset
+ 451 ; lda #>c_offset_l_40_ir ;为什么这样写>(可能是想表明这里是送进查表里的)
+ 452 ; sta m_offset_ini_h ;查表地址开始值
+ 453 ; lda #<c_offset_l_40_ir
+ 454 ; sta m_offset_ini
+ 455 ; lda #c_rnd_range_1
+ 456 ; sta m_rnd_range ;m_rnd_range为所求的随机数的大小
+ 457 ; br ir_received_set
+ 458 ;f_l_r_turn_right: ;右转
+ 459 ; lda #>c_offset_r_40_ir
+ 460 ; sta m_offset_ini_h
+ 461 ; lda #<c_offset_r_40_ir
+ 462 ; sta m_offset_ini
+ 463 ; lda #c_rnd_range_1
+ 464 ; sta m_rnd_range
+ 465 ; br ir_received_set
+ 466 ;;***************************************;
+ 467 ;
+ 468 ;f_yes_l_yes_r_no:
+ 469 ; lda #c_flg_f_l_rcved ;左前方有障碍,右转
+ 470 ; sta flg_ir_received
+ 471 ; lda #>c_offset_r_40_ir
+ 472 ; sta m_offset_ini_h
+ 473 ; lda #<c_offset_r_40_ir
+ 474 ; sta m_offset_ini
+ 475 ; lda #c_rnd_range_1
+ 476 ; sta m_rnd_range
+ 477 ; br ir_received_set
+ 478 ;f_yes_l_no_r_judge:
+ 479 ; lda cnt_ir_rcv_r
+ 480 ; cmpe #c_ir_rcv_r
+ 481 ; brnc f_yes_l_no_r_no
+ 482 ;f_yes_l_no_r_yes:
+ 483 ; lda #c_flg_f_r_rcved ;右前方有障碍,左转
+ 484 ; sta flg_ir_received
+ 485 ; lda #>c_offset_l_40_ir
+ 486 ; sta m_offset_ini_h
+ 487 ; lda #<c_offset_l_40_ir
+ 488 ; sta m_offset_ini
+ 489 ; lda #c_rnd_range_1
+ 490 ; sta m_rnd_range
+ 491 ; br ir_received_set
+ 492 ; f_yes_l_no_r_no:
+ 493 ; lda #c_flg_f_rcved ;前方有障碍,左转或右转
+ 494 ; sta flg_ir_received
+ 495 ;;*************/*04-02-26*/**************;
+ 496 ; lda flg_l_or_r
+ 497 ; anda #1
+ 498 ; brnz f_turn_right ;0 turn left, 1 turn right
+ 499 ;f_turn_left: ;左转
+ 500 ; lda #>c_offset_l_40_ir
+ 501 ; sta m_offset_ini_h
+ 502 ; lda #<c_offset_l_40_ir
+ 503 ; sta m_offset_ini
+ 504 ; lda #c_rnd_range_1
+ 505 ; sta m_rnd_range
+ 506 ; br ir_received_set
+ 507 ;f_turn_right: ;右转
+ 508 ; lda #>c_offset_r_40_ir
+ 509 ; sta m_offset_ini_h
+ 510 ; lda #<c_offset_r_40_ir
+ 511 ; sta m_offset_ini
+ 512 ; lda #c_rnd_range_1
+ 513 ; sta m_rnd_range
+ 514 ; br ir_received_set
+ 515 ;;No Front ***************************************;
+ 516 ;f_no_l_judge:
+ 517 ; lda cnt_ir_rcv_l
+ 518 ; cmpe #c_ir_rcv_l
+ 519 ; brnc f_no_l_no_r_judge
+ 520 ;f_no_l_yes_r_judge:
+ 521 ; lda cnt_ir_rcv_r
+ 522 ; cmpe #c_ir_rcv_r
+ 523 ; brnc f_no_l_yes_r_no
+ 524 ;f_no_l_yes_r_yes:
+ 525 ; lda #c_flg_l_r_rcved ;左右方有障碍,前行
+ 526 ; sta flg_ir_received
+ 527 ; lda #c_offset_f
+ 528 ; sta m_offset_ini
+ 529 ; lda #c_rnd_range_8
+ 530 ; sta m_rnd_range
+ 531 ; br ir_received_set
+ 532 ;f_no_l_yes_r_no:
+ 533 ; lda #c_flg_l_rcved ;左方有障碍,右转
+ 534 ; sta flg_ir_received
+ 535 ; lda #>c_offset_r_40_ir
+ 536 ; sta m_offset_ini_h
+ 537 ; lda #<c_offset_r_40_ir
+ 538 ; sta m_offset_ini
+ 539 ; lda #c_rnd_range_1
+ 540 ; sta m_rnd_range
+ 541 ; br ir_received_set
+ 542 ;f_no_l_no_r_judge:
+ 543 ; lda cnt_ir_rcv_r
+ 544 ; cmpe #c_ir_rcv_r
+ 545 ; brnc f_no_l_no_r_no
+ 546 ;f_no_l_no_r_yes:
+ 547 ; lda #c_flg_r_rcved ;右方有障碍,左转
+ 548 ; sta flg_ir_received
+ 549 ; lda #>c_offset_l_40_ir
+ 550 ; sta m_offset_ini_h
+ 551 ; lda #<c_offset_l_40_ir
+ 552 ; sta m_offset_ini
+ 553 ; lda #c_rnd_range_1
+ 554 ; sta m_rnd_range
+ 555 ; br ir_received_set
+ 556 ;f_no_l_no_r_no:
+ 557 ; lda #0 ;没有障碍
+ 558 ; sta flg_ir_received
+ 559 ; ret
+ 560 ;ir_received_set: ;/*04-02-19*/
+ 561 ; lda #2 ;有IR时产生新随机数的标志为2
+ 562 ; sta flg_new_random
+ 563 ; lda #0
+ 564 ; sta cnt_ctrl_pulse ;clear control pulse counter in Timer1 Service Routine.
+ 565 ; sta cnt_ctrl_pulse+1 ;/*04-02-23*/
+ 566 ;ir_received_judge_end:
+ 567 ; ret
+ 568
+
+Symbol Table
+
+ Lookup **** GX
+ 2 No_touched_key 0008 R
+ 2 Run 0000 GR
+ 2 Run_backup 009E GR
+ 2 Run_next_status 002C R
+ 2 Run_random_status 0036 R
+ 2 Run_with_broadcast 00E1 R
+ 2 broadcast_no_barrier 0041 R
+ c_flg_ahead = 0003
+ c_flg_backup = 0002
+ c_flg_f_l_rcved = 0004
+ c_flg_f_r_rcved = 0005
+ c_flg_l_rcved = 0002
+ c_flg_left = 0000
+ c_flg_r_rcved = 0003
+ c_flg_right = 0001
+ c_flg_stop = 0004
+ c_mtr_tab_row = 001C
+ c_offset_backup = 0180
+ c_offset_f_ini = 0000
+ c_offset_l_20 = 0048
+ c_offset_l_20_ir = 00F0
+ c_offset_l_40_ir = 00F8
+ c_offset_r_20 = 0090
+ c_offset_r_20_ir = 0138
+ c_offset_r_40_ir = 0140
+ c_rnd_range_1 = 0001
+ c_rnd_range_f = 0005
+ c_rnd_range_not_stop = 001A
+ 1 flg_last_barrier 0001 GR
+ flg_motor_status **** GX
+ flg_new_random **** GX
+ flg_rcv_barrier **** GX
+ flg_rcv_broadcast **** GX
+ flg_touched_key **** GX
+ 2 front_barrier 003D R
+ 2 front_barrier_bc 00EB R
+ 2 last_barrier_ahead 0025 R
+ m_offset_ini **** GX
+ m_offset_ini_h **** GX
+ m_rnd_range **** GX
+ 2 next_status_ahead 00B2 R
+ 2 next_status_backup 0097 R
+ 2 next_status_l_r 0075 R
+ 2 next_status_l_r_ahead 0079 R
+ 2 next_status_l_r_b 0067 R
+ 2 next_status_left 00CA R
+ 2 next_status_right 00BF R
+ 2 next_status_set_end 00D2 R
+ 2 next_status_set_end1 00D4 R
+ 2 pre_status_continue 0066 R
+ read_random **** GX
+ rnd_num **** GX
+ 1 temp_flg_ir_received 0000 GR
+
+
+Area Table
+
+ 0 . size 0 flags 0
+ 1 set_rules_var size 2 flags 2
+ 2 Rules_code size F8 flags 1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -