📄 07_08.lst
字号:
599 0018E LEDDUTY0:
600 0018E 0422 MOV A,SPEED_L
601 0018F 1040 CALL MODE1_TABH
602 00190 190E OR A,@0b00001110 ;60
603 00191 0054 MOV R6_BUF,A
604 00192 15F1 JMP LEDDISOUT
605 00193 LEDDUTY1:
606 00193 0422 MOV A,SPEED_L
607 00194 104A CALL MODE1_TABL
608 00195 190D OR A,@0b00001101 ;61
609 00196 0054 MOV R6_BUF,A
610 00197 15F1 JMP LEDDISOUT
611 00198 LEDDUTY2:
612 00198 0423 MOV A,SPEED_R
613 00199 1040 CALL MODE1_TABH
614 0019A 190B OR A,@0b00001011 ;62
615 0019B 0054 MOV R6_BUF,A
616 0019C 15F1 JMP LEDDISOUT
617 0019D LEDDUTY3:
618 0019D 0423 MOV A,SPEED_R
619 0019E 104A CALL MODE1_TABL
620 0019F 1907 OR A,@0b00000111 ;63
621 001A0 0054 MOV R6_BUF,A
622 001A1 15F1 JMP LEDDISOUT
623
624 ;*******************************************
625 001A2 DIS_MODE3:
626 001A2 1802 MOV A,@0X02 ;display every bit 60ms
627 001A3 031F XOR A,FLAG_30MS
628 001A4 0E83 JBS STATUS,Z
629 001A5 15D5 JMP DIS_M2
630 001A6 00DF CLR FLAG_30MS
631 001A7 15AD JMP TEST2L
632
633 ;********************************************************
634 001A8 DIS_MODE2:
635 001A8 1802 MOV A,@0X02 ;display every bit 60ms
636 001A9 031E XOR A,REG_30MS
637 001AA 0E83 JBS STATUS,Z
638 001AB 15D5 JMP DIS_M2
639 001AC 00DE CLR REG_30MS
640 ;***************************************************** change speed_duty
641 001AD TEST2L:
642 001AD 0462 MOV SPEED_L,SPEED_L ;test speed_l is not equal 0
643 001AE 0C83 JBC STATUS,Z
644 001AF 15C1 JMP TEST2R
645 001B0 0466 MOV SPEEDL_DUTY,SPEEDL_DUTY ;speedl_duty is using as to switch led
646 001B1 0E83 JBS STATUS,Z
647 001B2 15B5 JMP TEST2LH
648 001B3 1800 MOV A,@0X00
649 001B4 0067 MOV SPEEDL_FLAG,A ;speedl_flag is switch down and up 0=up
650 001B5 TEST2LH:
651 001B5 1809 MOV A,@0X09
652 001B6 0326 XOR A,SPEEDL_DUTY
653 001B7 0E83 JBS STATUS,Z
654 001B8 15BB JMP TEST2LF
655 001B9 1801 MOV A,@0X01
656 001BA 0067 MOV SPEEDL_FLAG,A
657 001BB TEST2LF: ;switch down and up from the speedl_flag=0 up speedl=1 down
658 001BB 0467 MOV SPEEDL_FLAG,SPEEDL_FLAG
659 001BC 0C83 JBC STATUS,Z
660 001BD 0566 INC SPEEDL_DUTY
661
662 001BE 0467 MOV SPEEDL_FLAG,SPEEDL_FLAG
663 001BF 0E83 JBS STATUS,Z
664 001C0 01E6 DEC SPEEDL_DUTY
665
666 ;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
667 001C1 TEST2R:
668 001C1 0463 MOV SPEED_R,SPEED_R
669 001C2 0C83 JBC STATUS,Z
670 001C3 15D5 JMP DIS_M2
671 001C4 0468 MOV SPEEDR_DUTY,SPEEDR_DUTY
672 001C5 0E83 JBS STATUS,Z
673 001C6 15C9 JMP TEST2RH
674 001C7 1800 MOV A,@0X00
675 001C8 0069 MOV SPEEDR_FLAG,A
676 001C9 TEST2RH:
677 001C9 1809 MOV A,@0X09
678 001CA 0328 XOR A,SPEEDR_DUTY
679 001CB 0E83 JBS STATUS,Z
680 001CC 15CF JMP TEST2RF
681 001CD 1801 MOV A,@0X01
682 001CE 0069 MOV SPEEDR_FLAG,A
683 001CF TEST2RF: ;switch up and down
684 001CF 0469 MOV SPEEDR_FLAG,SPEEDR_FLAG
685 001D0 0C83 JBC STATUS,Z
686 001D1 0568 INC SPEEDR_DUTY
687
688 001D2 0469 MOV SPEEDR_FLAG,SPEEDR_FLAG
689 001D3 0E83 JBS STATUS,Z
690 001D4 01E8 DEC SPEEDR_DUTY
691
692 ;*******************************
693 001D5 DIS_M2:
694 001D5 1800 MOV A,@0X00
695 001D6 0462 MOV SPEED_L,SPEED_L ;test the speedl=0?
696 001D7 0C83 JBC STATUS,Z
697 001D8 00E6 CLR SPEEDL_DUTY
698
699 001D9 0463 MOV SPEED_R,SPEED_R
700 001DA 0C83 JBC STATUS,Z
701 001DB 00E8 CLR SPEEDR_DUTY
702
703 001DC 0424 MOV A,LED_DUTY
704 001DD 03C2 ADD PC,A
705 001DE 15E2 JMP LEDDUTY00
706 001DF 15E6 JMP LEDDUTY01
707 001E0 15EA JMP LEDDUTY02
708 001E1 15EE JMP LEDDUTY03
709
710 001E2 LEDDUTY00:
711 001E2 0426 MOV A,SPEEDL_DUTY
712 001E3 1054 CALL MODE2L_TAB
713 001E4 0054 MOV R6_BUF,A
714 001E5 15F1 JMP LEDDISOUT
715
716 001E6 LEDDUTY01:
717 001E6 0426 MOV A,SPEEDL_DUTY
718 001E7 1054 CALL MODE2L_TAB
719 001E8 0054 MOV R6_BUF,A
720 001E9 15F1 JMP LEDDISOUT
721
722 001EA LEDDUTY02:
723 001EA 0428 MOV A,SPEEDR_DUTY
724 001EB 105E CALL MODE2R_TAB
725 001EC 0054 MOV R6_BUF,A
726 001ED 15F1 JMP LEDDISOUT
727
728 001EE LEDDUTY03:
729 001EE 0428 MOV A,SPEEDR_DUTY
730 001EF 105E CALL MODE2R_TAB
731 001F0 0054 MOV R6_BUF,A
732
733 ;****************************************************
734 001F1 LEDDISOUT:
735 001F1 0414 MOV A,R6_BUF
736 001F2 0046 MOV PORT6,A
737
738 ;***************************************************MOTORPLAY
739 ;***************************************************
740 001F3 MOTORPLAY:
741 001F3 0425 MOV A,MODE
742 001F4 03C2 ADD PC,A ;switch motor mode
743 001F5 15F8 JMP MODE1
744 001F6 161C JMP MODE2
745 001F7 1623 JMP MODE3
746
747 ;**************************************MODE1
748 001F8 MODE1:
749
750 001F8 0895 BC R5_BUF,CONT1_L
751 001F9 0855 BC R5_BUF,CONT2_L
752
753 001FA 0E57 JBS FLAG0,TURNL_FLAG ;switch left motor play from the turnl_flag
754 001FB 1265 CALL MODE1_L
755
756 001FC 0C57 JBC FLAG0,TURNL_FLAG
757 001FD 127B CALL MODE1_L_NEV
758
759 001FE 0C18 JBC FLAG1,MOTORL_ON ;test the motorl_on that delay in mode2 and mode3
760 001FF 1602 JMP $+3
761 00200 0895 BC R5_BUF,CONT1_L ;if motorl_on=0 close the G+
762 00201 0855 BC R5_BUF,CONT2_L
763
764 00202 0462 MOV SPEED_L,SPEED_L ;test speedl equal 0
765 00203 0E83 JBS STATUS,Z
766 00204 1607 JMP $+3
767 00205 0895 BC R5_BUF,CONT1_L ;if speedl=0 then close the G+
768 00206 0855 BC R5_BUF,CONT2_L
769
770 ;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
771 00207 MODE1R:
772 00207 08D5 BC R5_BUF,CONT1_R
773 00208 0915 BC R5_BUF,CONT2_R
774
775 00209 0E97 JBS FLAG0,TURNR_FLAG ;switch right motor play
776 0020A 1291 CALL MODE1_R
777
778 0020B 0C97 JBC FLAG0,TURNR_FLAG
779 0020C 12A7 CALL MODE1_R_NEV
780
781 0020D 0C58 JBC FLAG1,MOTORR_ON ;test the motorr_on use in mode2(4*18ms close) and mode3(3*18ms close)
782 0020E 1611 JMP $+3
783 0020F 08D5 BC R5_BUF,CONT1_R
784 00210 0915 BC R5_BUF,CONT2_R
785
786 00211 0463 MOV SPEED_R,SPEED_R ;test the speedr=0? if speedr=0 close right motor
787 00212 0E83 JBS STATUS,Z
788 00213 1616 JMP $+3
789 00214 08D5 BC R5_BUF,CONT1_R
790 00215 0915 BC R5_BUF,CONT2_R
791
792 00216 0415 MOV A,R5_BUF
793 00217 1960 OR A,@0X60 ;give data to port5 from r5_buf
794 00218 1AE1 AND A,@0XE1
795 00219 0215 OR A,R5_BUF
796 0021A 0045 MOV PORT5,A
797 0021B 16BD JMP INT_EXIT
798
799 ;**************************************************
800 0021C MODE2:
801 0021C 183C MOV A,@0X3C ; the left total timer 60*18ms=120*9ms
802 0021D 006F MOV POSL_REG,A
803 0021E 1844 MOV A,@0X44 ;the right total timer 68*18ms=204*6ms
804 0021F 0071 MOV POSR_REG,A
805 00220 1804 MOV A,@0X04 ;delay 4*18ms for low
806 00221 0070 MOV NEV_REG,A
807 00222 162A JMP TURNL
808 ;***************************************************
809 00223 MODE3:
810 00223 181E MOV A,@0X1E ;the left total timer 30*18ms=60*9ms
811 00224 006F MOV POSL_REG,A
812 00225 1822 MOV A,@0X22 ;the right total timer 34*18ms=102*6ms
813 00226 0071 MOV POSR_REG,A
814 00227 1803 MOV A,@0X03 ;delay 4*18ms for low
815 00228 0070 MOV NEV_REG,A
816 00229 162A JMP TURNL
817
818 ;**************************************************
819 0022A TURNL:
820 0022A 0C57 JBC FLAG0,TURNL_FLAG ;test the turnl_flag
821 0022B 163A JMP TURNL_ON
822 0022C TURNL_OFF:
823 0022C 042F MOV A,POSL_REG ;the left total timer
824 0022D 031A XOR A,REGL_18MS
825 0022E 0E83 JBS STATUS,Z ;if the total timer is out then jump to turnl_on
826 0022F 1633 JMP $+4
827
828 00230 0A57 BS FLAG0,TURNL_FLAG
829 00231 00DA CLR REGL_18MS
830 00232 1647 JMP TURNR
831
832 00233 0430 MOV A,NEV_REG
833 00234 011A SUB A,REGL_18MS ;if the nev_reg timer is not out then colse the motorl
834
835 00235 0C03 JBC STATUS,C
836 00236 0A18 BS FLAG1,MOTORL_ON
837
838 00237 0E03 JBS STATUS,C
839 00238 0818 BC FLAG1,MOTORL_ON
840
841 00239 1647 JMP TURNR
842
843 0023A TURNL_ON:
844 0023A 042F MOV A,POSL_REG
845 0023B 031A XOR A,REGL_18MS
846 0023C 0E83 JBS STATUS,Z
847 0023D 1641 JMP $+4
848
849 0023E 0857 BC FLAG0,TURNL_FLAG
850 0023F 00DA CLR REGL_18MS
851 00240 1647 JMP TURNR
852
853 00241 0430 MOV A,NEV_REG
854 00242 011A SUB A,REGL_18MS
855 00243 0C03 JBC STATUS,C
856 00244 0A18 BS FLAG1,MOTORL_ON
857
858 00245 0E03 JBS STATUS,C
859 00246 0818 BC FLAG1,MOTORL_ON
860 ;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
861 00247 TURNR:
862 00247 0C97 JBC FLAG0,TURNR_FLAG
863 00248 1657 JMP TURNR_ON
864
865 00249 TURNR_OFF:
866 00249 0431 MOV A,POSR_REG
867 0024A 031B XOR A,REGR_18MS
868 0024B 0E83 JBS STATUS,Z
869 0024C 1650 JMP $+4
870
871 0024D 0A97 BS FLAG0,TURNR_FLAG
872 0024E 00DB CLR REGR_18MS
873 0024F 1664 JMP TURN_EXIT
874
875 00250 0430 MOV A,NEV_REG
876 00251 011B SUB A,REGR_18MS
877 00252 0C03 JBC STATUS,C
878 00253 0A58 BS FLAG1,MOTORR_ON
879
880 00254 0E03 JBS STATUS,C
881 00255 0858 BC FLAG1,MOTORR_ON
882
883 00256 1664 JMP TURN_EXIT
884
885 00257 TURNR_ON:
886 00257 0431 MOV A,POSR_REG
887 00258 031B XOR A,REGR_18MS
888 00259 0E83 JBS STATUS,Z
889 0025A 165E JMP $+4
890
891 0025B 0897 BC FLAG0,TURNR_FLAG
892 0025C 00DB CLR REGR_18MS
893 0025D 1664 JMP TURN_EXIT
894
895 0025E 0430 MOV A,NEV_REG
896 0025F 011B SUB A,REGR_18MS
897 00260 0C03 JBC STATUS,C
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -