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

📄 victory3.asm

📁 全国大学电子设计大赛 智能小车单片机程序及报告+流程图+管脚说明
💻 ASM
📖 第 1 页 / 共 2 页
字号:
           LCALL      OUT
           DJNZ       R6,DELAY_LOOP_MINE2
      DJNZ     R5,DELAY_LOOP_MINE_F
RET

;****************************************************

SET_CODE_MINE:
      MOV     A,3BH
      MOV     B,#0AH
      DIV     AB
      MOV     44H,A
      MOV     45H,B

      MOV     A,3CH
      MOV     B,#0AH
      DIV     AB
      MOV     46H,A
      MOV     47H,B

      LCALL   SET_CODE
RET


;****************************************************

FIVE_SECOND:
         CLR        TR1
         CLR        P2.6
         SETB       P3.1
         SETB       P3.0
         LCALL      DELAY_MINE1
         CLR        P3.0
         CLR        P3.1
         CLR        P2.6

         SETB       P3.5
         SETB       P3.4
         CLR        TR1

STOP_AT_C:
        MOV     R1,#38H
        LCALL   SETCODEALL
        JB      20H.1,C_WAKE_LE
        LCALL   OUT
        LJMP    STOP_AT_C

C_WAKE_LE:
        SETB    TR1

RET

;****************************************************
;****************************************************

BOLK:
        SETB    TR1
        MOV     5AH,#20






SEEK_LAMP:
        LCALL   TURN_TO_LAMP
        MOV     C,P0.1
        JNC     HOME
        JB      20H.6,SEEK_LAMP

        MOV     C,P0.6
        JC      SEEK_LAMP
AV:     LCALL   AVOID_WHITE_BOLK
        MOV     C,P0.6
        JNC     AV
        SETB    20H.6

        LJMP    SEEK_LAMP

RET

;******************************************************

TURN_TO_LAMP:
        MOV  C,P0.3
        JNC  LOOK_RIGHT
        LCALL  TURN_LEFT_MIDDLE
        RET
LOOK_RIGHT:
        MOV     C,P0.5
        MOV     R6,#4FH
FORWARDLIGHT:
        LCALL   DELAY
        DJNZ    R6,FORWARDLIGHT
        JNC     TURN_TO_LAMP_END
        LCALL   TURN_RIGHT_MIDDLE
        RET

TURN_TO_LAMP_END:
RET

;******************************************************

;******************************************************
AVOID_WHITE_BOLK:
         CLR     TR1
         CLR    P2.7
         SETB    P2.6
         SETB    P3.1
         LCALL   DELAY
         
         SETB    TR1

         MOV    R5,#05H
AVOID_R5:
         MOV    R6,#0FFH
AVOID_R6:
         LCALL  DELAY
         DJNZ   R6,AVOID_R6
         DJNZ   R5,AVOID_R5
         


         CLR     TR1
         CLR     P2.6
         CLR     P3.1
                
         LCALL  DELAY
         SETB    TR1  

         MOV    R5,#06H
AVOID_R52:
         MOV    R6,#0FFH
AVOID_R62:
         LCALL  DELAY
         DJNZ   R6,AVOID_R62
         DJNZ   R5,AVOID_R52
                 
         
         MOV     5AH,#30
         MOV    R6,#3FH
AVOID_LOOP:
         LCALL  DELAY
         DJNZ   R6,AVOID_LOOP

         MOV    C,P0.6
         JNC    AVOID_WHITE_BOLK
         MOV    5AH,#20
         CLR     P2.6
RET

;******************************************************
HOME:
        MOV     IE,#0H
        MOV     IE,#0H

        CLR     P2.6
        CLR     P3.0

HOME_WAIT:
        CLR     P2.6
        CLR     P3.0
        SETB    P3.4
        LCALL   KEY_QUERY     ; 查询键盘
        LCALL   TIP_SET_CODE  ; 设置显示值
         MOV     R1,#44H
         LCALL   SET_CODE
        LCALL   OUT           ; LED 输出
        LJMP    HOME_WAIT
RET

;******************************************************

KEY_QUERY:
        LCALL   KEY
        JNC    KEY_QUERY_END
        LCALL   KEY
        JNC      KEY_QUERY_END
        LCALL   DEAL_KEY
KEY_WA:
        LCALL   KEY
        JC      KEY_WA
KEY_QUERY_END:
RET


RET

;******************************************************

TIP_SET_CODE:

        MOV  A,59H
        JZ   SET_TIME

        MOV     R0,#46H
        MOV     B,#02H
        MUL     AB

        ADD     A,R0
        MOV     R0,A
SET_NUM:
        MOV     A,@R0
        MOV     B,#0AH
        DIV     AB
        MOV     44H,A
        MOV     45H,B

        INC     R0
        MOV     B,#0AH
        MOV     A,@R0
        DIV     AB
        MOV     46H,A
        MOV     47H,B
        RET

SET_TIME:
        MOV     R0,#42H
        LJMP    SET_NUM

RET

;*****************************************************

OUT:
        MOV     R0,#30H
        MOV     R2,#6H
        MOV     R4,#0H
LOOP:
        MOV     A,@R0
        LCALL   OUTPUT
        INC     R0
        INC     R4
        DJNZ    R2,LOOP
RET

;*******************************************************

OUTPUT: ;在A中是要显示的数据,R4中是要显示的位
        MOV     R3,#8H
        CLR     P1.3

OUT_LOOP:
        RLC     A
        MOV     P1.2,C
        CLR     P1.4
        NOP
        NOP
        NOP
        SETB    P1.4
        NOP
        NOP
        NOP
        DJNZ    R3,OUT_LOOP
OUT_LOOP_END:
        MOV     P1,R4
        SETB    P1.3
        LCALL   DELAY
        CLR     P1.3
RET

;******************************************************

SET_CODE:
        MOV     R0,#44H
        MOV     R1,#30H
        MOV     R2,#4H
SET_CODE_LOOP:
        MOV     A,@R0
        MOV     DPTR,#TAB
        MOVC    A,@A+DPTR
        MOV     @R1,A
        INC     R0
        INC     R1
        DJNZ    R2,SET_CODE_LOOP

        ;以下是显示是第几个雷
        MOV     A,3AH
        MOV     DPTR,#TAB
        MOVC    A,@A+DPTR
        MOV     35H,A
        ;以下是使一个LED为暗
        MOV     34H,#0H
RET

;******************************************************

TAB:   DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H

;*****************************************************
KEY:
        MOV     58H,#0FEH;
        MOV     R1,#4H
KEY_LOOP:
        MOV     P1,58H
        MOV     A,P1
        CJNE    A,58H,KEY_NEXT1
        MOV     A,58H ;NO KEY FIND
        RL      A
        MOV     58H,A
        DJNZ    R1,KEY_LOOP
        CLR    C
        LJMP    KEY_END

KEY_NEXT1:
        SETB    C
KEY_END:

RET


DEAL_KEY:
         MOV    A,58H
         MOV    P1,#0F0H
         CJNE   A,#0FEH,TWO

ONE_1:   SETB   P1.1
         NOP
         MOV    C,P1.1
         JC    ONE_2
         MOV    59H,#0EH
         LJMP   DEAL_END

ONE_2:   SETB   P1.2
         MOV    C,P1.2
         JC    ONE_3
         MOV    59H,#07H
         LJMP   DEAL_END
ONE_3:   MOV    59H,#0FH
         LJMP   DEAL_END

TWO:     CJNE   A,#0FDH,THREE
TWO_1:   SETB   P1.0
         MOV    C,P1.0
         JC    TWO_2
         MOV    59H,#2H
         LJMP   DEAL_END

TWO_2:   SETB   P1.2
         MOV    C,P1.2
         JC    TWO_3
         MOV    59H,#6H
         LJMP   DEAL_END
TWO_3:   MOV    59H,#9H
         LJMP   DEAL_END


THREE:   CJNE   A,#0FBH,FOUR


THREE_1: SETB   P1.0
         MOV    C,P1.0
         JC    THREE_2
         MOV    59H,#1H
         LJMP   DEAL_END

THREE_2: SETB   P1.1
         MOV    C,P1.1
         JC    THREE_3
         MOV    59H,#4H
         LJMP   DEAL_END
THREE_3: MOV    59H,#8H
         LJMP   DEAL_END

FOUR:
FOUR_1:  SETB   P1.0
         MOV    C,P1.0
         JC    FOUR_2
         MOV    59H,#0H
         LJMP   DEAL_END

FOUR_2:  SETB   P1.1
         MOV    C,P1.1
         JC    FOUR_3
         MOV    59H,#3H
         LJMP   DEAL_END
FOUR_3:  MOV    59H,#5H
         LJMP   DEAL_END

DEAL_END:

RET

;******************************************************

DELAY:
        MOV     R7,#0FFH
DELAY_LOOP:
        DJNZ    R7,DELAY_LOOP
RET

;******************************************************

TURN_RIGHT_MIDDLE:
         MOV      5AH,#30
TURN_RIGHT_MIDDLE_START:
         CLR    P2.7
         SETB   P2.6
         MOV    C,P0.3
         JNC    TURN_RIGHT_MIDDLE_START
         CLR    P2.6
         MOV    5AH,#23
RET

;******************************************************

TURN_LEFT_MIDDLE:
          MOV    5AH,#30
TURN_LEFT_MIDDLE_START:
         SETB   P2.7
         SETB   P2.6
          MOV    C,P0.5
         JNC    TURN_RIGHT_MIDDLE_START
         CLR    P2.6
         MOV    5AH,#23H
RET

;*********************************************


END

⌨️ 快捷键说明

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