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

📄 迷宫车源程序.lst

📁 本智能迷宫小车通过左手摸墙法搜索迷宫的出口。
💻 LST
📖 第 1 页 / 共 2 页
字号:
                                                                    页     1
                                                                    06-01-07
                                                                    23:23:08
伟福汇编器 V5.00                             Copyright (c) 1989, 2001 by CHY

地址  机器码 源程序

            ;-----------------------迷宫车-------------------------
            ;电机驱动端口:P1
            ;电机驱动代码:
            ;0x01,0x00,0x21,0x11,右电机急停,停止,正转,反转
            ;0x04,0x00,0x06,0x0c 左电机急停,停止,正转,反转
            ;红外发射:P3.4
            ;红外接收:P2.7空,P2.6右底,P2.5左底,P2.4左后,
            ;         P2.3右后,P2.2左前,P2.1前,P2.0右前
            ;蜂鸣器:P3.7
            ;----------------------------------------------------
            SEND      BIT     P3.4    ;红外发射端口
            BUZZER    BIT     P3.7    ;蜂鸣器接口
            RCV       DATA    2AH     ;红外接收寄存器
            RCVP      DATA    2BH     ;接收上升沿
            RCVF      DATA    2CH     ;接收下降沿
            TMH       DATA    30H     ;计时器
            TML       DATA    31H
            TMR       BIT     20H.0  ;计时器启动标志位
            OUT       DATA    33H    ;电机驱动输出寄存器
            RCVBUF    EQU     38H   ;红外接收缓冲区首地址
            RBUFSIZE  EQU     5     ;红外接收缓冲区大小
            RCVCOUNT  DATA    3FH
            ORG     0000H
0000 0150   AJMP    START
            ORG     000BH
000B 01BB   AJMP    TIME0_INT
            ORG     001BH
001B B2B4   CPL     SEND
001D 32     RETI
            ORG     0050H
            START:  ;MOV     C,P2.5
                   ; MOV     BUZZER,C
                   ; SJMP    START
0050 785F           MOV     R0,#5FH
0052 7600           MOV     @R0,#0
0054 D8FC           DJNZ    R0,$-2
0056 75815F         MOV     SP,#5FH
0059 753F0A         MOV     RCVCOUNT,#10
005C 752AFF         MOV     RCV,#0FFH
005F 758921         MOV     TMOD,#21H
0062 758A30         MOV     TL0,#LOW(65536-2000)
0065 758CF8         MOV     TH0,#HIGH(65536-2000)
0068 758DF3         MOV     TH1,#256-13
006B D2A9           SETB    ET0
006D D2AF           SETB    EA
006F D28C           SETB    TR0
0071 D28E           SETB    TR1
0073 753005         MOV     TMH,#05H


E:\技术部\陈映宇\MCS_51\作品程序\过迷宫小车程序\迷宫车源程序.ASM
 
                                                                    页     2
                                                                    06-01-07
                                                                    23:23:08
伟福汇编器 V5.00                             Copyright (c) 1989, 2001 by CHY

地址  机器码 源程序

0076 753100         MOV     TML,#00H
0079 D200           SETB    TMR
007B 2000FD         JB      TMR,$
007E 753311         MOV     OUT,#11H
            ;P2.7空,P2.6左底,P2.5右底,P2.4左后
            ;P2.3右后,P2.2左前,P2.1前,P2.0右前
            LOOP:   
                  ;  JNB     RCVP.4,LOOP1
0081 315D           ACALL   LEFT      ;若左边有通道,向左转90度
0083 80FC           SJMP    LOOP
0085 A251   LOOP1:  MOV     C,RCV.1
0087 B3             CPL     C
0088 8253           ANL     C,RCV.3
008A 5002           JNC     LOOP2
008C 3179           ACALL   RIGHT
008E A251   LOOP2:  MOV     C,RCV.1
0090 7253           ORL     C,RCV.3
0092 4002           JC      LOOP3
0094 318F           ACALL   BACK
0096 205002 LOOP3:  JB      RCV.0,LOOP4
0099 31A5           ACALL   ZUOPIAN
009B 205202 LOOP4:  JB      RCV.2,LOOP5
009E 31D3           ACALL   YOUPIAN
00A0 30A5DE LOOP5:  JNB     P2.5,LOOP
00A3 7D01           MOV     R5,#1
00A5 5158           ACALL   DELAY
00A7 30A5D7         JNB     P2.5,LOOP
00AA 753300         MOV     OUT,#00H
00AD D2B4           SETB    SEND
00AF C2B7           CLR     BUZZER
00B1 7D64           MOV     R5,#100
00B3 5158           ACALL   DELAY
00B5 D2B7           SETB    BUZZER
00B7 C2AF           CLR     EA
00B9 80FE           SJMP    $
                   ; AJMP    LOOP
            ;--------------T0中断----------------
            TIME0_INT:
00BB 438A30         ORL     TL0,#LOW(65536-2000)
00BE 758CF8         MOV     TH0,#HIGH(65536-2000)
00C1 C0E0           PUSH    ACC
00C3 C0D0           PUSH    PSW
00C5 D2D3           SETB    RS0
00C7 C2D4           CLR     RS1
00C9 B2AB           CPL     ET1
00CB 20AB08         JB      ET1,T0N2
00CE D2B4           SETB    SEND
00D0 11FB           ACALL   RECEIVE


E:\技术部\陈映宇\MCS_51\作品程序\过迷宫小车程序\迷宫车源程序.ASM
 
                                                                    页     3
                                                                    06-01-07
                                                                    23:23:08
伟福汇编器 V5.00                             Copyright (c) 1989, 2001 by CHY

地址  机器码 源程序

                    ;--------------------
00D2 A254           MOV     C,RCV.4
                   ; ANL     C,RCV.1
                   ; ANL     C,RCV.2
                   ; ANL     C,RCV.0
                   ; ANL     C,RCV.3
00D4 92B7           MOV     BUZZER,C
00D6 11DF   T0N2:   ACALL   TIMER
00D8 3133           ACALL   OUTPUT
00DA D0D0           POP     PSW
00DC D0E0           POP     ACC
00DE 32             RETI
            ;-------------双字节BCD码倒计时器---------------
            ;计时精度:2ms
00DF 200001 TIMER:  JB      TMR,TIMER0
00E2 22             RET
00E3 E531   TIMER0: MOV     A,TML
00E5 4530           ORL     A,TMH
00E7 600F           JZ      TIMER2
00E9 E531           MOV     A,TML
00EB 2499           ADD     A,#99H
00ED D4             DA      A
00EE F531           MOV     TML,A
00F0 E530           MOV     A,TMH
00F2 3499           ADDC    A,#99H
00F4 D4             DA      A
00F5 F530           MOV     TMH,A
00F7 22             RET
00F8 C200   TIMER2: CLR     TMR
00FA 22             RET
            ;--------------------红外接收子程序-----------------
            ;对连续接收到的10次进行统计,若高电平的次数大于5次,
            ;则认为是高电平
00FB 7838   RECEIVE:MOV     R0,#RCVBUF
00FD E5A0           MOV     A,P2
00FF 13     RC0:    RRC     A
0100 5001           JNC     RC1
0102 06             INC     @R0
0103 08     RC1:    INC     R0
0104 B83DF8         CJNE    R0,#RCVBUF+RBUFSIZE,RC0
0107 D53F27         DJNZ    RCVCOUNT,RC3
010A AF2A           MOV     R7,RCV
010C 752A00         MOV     RCV,#0
010F 783C           MOV     R0,#RCVBUF+RBUFSIZE-1
0111 7405   RC2:    MOV     A,#5
0113 C3             CLR     C
0114 96             SUBB    A,@R0
0115 E52A           MOV     A,RCV


E:\技术部\陈映宇\MCS_51\作品程序\过迷宫小车程序\迷宫车源程序.ASM
 
                                                                    页     4
                                                                    06-01-07
                                                                    23:23:08
伟福汇编器 V5.00                             Copyright (c) 1989, 2001 by CHY

地址  机器码 源程序

0117 33             RLC     A
0118 F52A           MOV     RCV,A
011A 7600           MOV     @R0,#0
011C 18             DEC     R0
011D B837F1         CJNE    R0,#RCVBUF-1,RC2
0120 753F0A         MOV     RCVCOUNT,#10
0123 EF             MOV     A,R7
0124 F4             CPL     A
0125 552A           ANL     A,RCV
0127 F52B           MOV     RCVP,A
0129 E52A           MOV     A,RCV
012B F4             CPL     A
012C 5F             ANL     A,R7
012D F52C           MOV     RCVF,A
012F D3             SETB    C
0130 22             RET
0131 C3     RC3:    CLR     C
0132 22             RET
            ;------------------电机驱动子程序----------------
            ;OUT的高4位=0,1,2时,表示左电机停止,正转,反转
            ;OUT的低4位=0,1,2时,表示右电机停止,正转,反转
0133 900148 OUTPUT: MOV     DPTR,#OUTDATA
0136 E533           MOV     A,OUT
0138 C4             SWAP    A
0139 540F           ANL     A,#0FH
013B 93             MOVC    A,@A+DPTR
013C FF             MOV     R7,A
013D E533           MOV     A,OUT
013F 540F           ANL     A,#0FH
0141 2403           ADD     A,#3
0143 93             MOVC    A,@A+DPTR
0144 4F             ORL     A,R7
0145 F590           MOV     P1,A
0147 22             RET
            OUTDATA:
0148 04060C DB 04H,06H,0CH      ;左电机停止,正转,反转
014B 012111 DB 01H,21H,11H      ;右电机停止,正转,反转
            ;---------------------暂停400ms---------------------
014E 753300 STOP:   MOV     OUT,#00H
0151 753002         MOV     TMH,#02H
0154 753150         MOV     TML,#50H
0157 D200           SETB    TMR
0159 2000FD         JB      TMR,$
015C 22             RET
            ;-------------------向左转弯90度子程序--------------
015D 753001 LEFT:   MOV     TMH,#01H
0160 753130         MOV     TML,#30H
0163 D200           SETB    TMR


E:\技术部\陈映宇\MCS_51\作品程序\过迷宫小车程序\迷宫车源程序.ASM
 
                                                                    页     5
                                                                    06-01-07
                                                                    23:23:08
伟福汇编器 V5.00                             Copyright (c) 1989, 2001 by CHY

地址  机器码 源程序

0165 2000FD         JB      TMR,$
0168 314E           ACALL   STOP
                   ; MOV     OUT,#11H
                   ; RET
016A 753321         MOV     OUT,#21H
016D 753003         MOV     TMH,#03H
0170 753190         MOV     TML,#90H
0173 D200           SETB    TMR
0175 2000FD         JB      TMR,$
                 ;   ACALL   STOP
                 ;   MOV     OUT,#11H
0178 22             RET
            ;-------------------向右转弯90度子程序--------------
0179 314E   RIGHT:  ACALL   STOP
017B 753312         MOV     OUT,#12H
017E 753003         MOV     TMH,#03H
0181 753146         MOV     TML,#46H
0184 D200           SETB    TMR
0186 2000FD         JB      TMR,$
0189 314E           ACALL   STOP
018B 753311         MOV     OUT,#11H
018E 22             RET
            ;----------------------向后转子程序-------------------
018F 314E   BACK:   ACALL   STOP
0191 753312         MOV     OUT,#12H
0194 753007         MOV     TMH,#07H
0197 753163         MOV     TML,#63H
019A D200           SETB    TMR
019C 2000FD         JB      TMR,$
019F 314E           ACALL   STOP
01A1 753311         MOV     OUT,#11H
01A4 22             RET
            ;---------------------向左偏-------------------------
01A5 753301 ZUOPIAN:MOV     OUT,#01H        ;向左偏转
01A8 753002         MOV     TMH,#02H        ;设定向左偏转的最大时间
01AB 753176         MOV     TML,#76H
01AE D200           SETB    TMR
01B0 A25C   ZP1:    MOV     C, RCVP.4
01B2 B3             CPL     C
01B3 8251           ANL     C,RCV.1
01B5 4001           JC      ZP2
01B7 22             RET
01B8 A250   ZP2:    MOV     C,RCV.0
01BA B3             CPL     C
01BB 8200           ANL     C,TMR
01BD 40F1           JC      ZP1  ;若未到达设定的时间且左前方有信号反射回来
01BF C200           CLR     TMR
01C1 5101           ACALL   HALFT      ;求偏转时间的一半,返回值在R6R7中


E:\技术部\陈映宇\MCS_51\作品程序\过迷宫小车程序\迷宫车源程序.ASM
 
                                                                    页     6
                                                                    06-01-07
                                                                    23:23:08
伟福汇编器 V5.00                             Copyright (c) 1989, 2001 by CHY

地址  机器码 源程序

01C3 753310         MOV     OUT,#10H   ;向右偏转
01C6 8E30           MOV     TMH,R6
01C8 8F31           MOV     TML,R7
01CA D200           SETB    TMR
01CC 2000FD         JB      TMR,$
01CF 753311         MOV     OUT,#11H   ;直走
01D2 22             RET
            ;---------------------向右偏-------------------------
01D3 753310 YOUPIAN:MOV     OUT,#10H     ;向右偏转
01D6 753002         MOV     TMH,#02H     ;设定向左偏转的最大时间
01D9 753176         MOV     TML,#76H
01DC D200           SETB    TMR
01DE A25C   YP1:    MOV     C, RCVP.4
01E0 B3             CPL     C
01E1 8251           ANL     C,RCV.1
01E3 4001           JC      YP2
01E5 22             RET
01E6 A252   YP2:    MOV     C,RCV.2
01E8 B3             CPL     C
01E9 8200           ANL     C,TMR
01EB 40F1           JC      YP1   ;若未到达设定的时间且左前方有信号反射回来
01ED C200           CLR     TMR
01EF 5101           ACALL   HALFT  ;求偏转时间的一半,返回值在R6R7中

⌨️ 快捷键说明

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