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

📄 9r.lst

📁 《51系列单片机设计实例》配套光盘中的实例9
💻 LST
📖 第 1 页 / 共 2 页
字号:
                                                                    页     1
                                                                    01-29-03
                                                                    01:49:24
伟福汇编器 V5.00                             Copyright (c) 1989, 2001 by CHY

地址  机器码 源程序

            ;                 *************************************
            ;                 *                                   *
            ;                 *       遥 控 接 收 解 码           *
            ;                 *       采用AT89C2051              *
            ;                 *                                   *
            ;                 *************************************
            ;
            ;  P1.0-P1.1为电机前后驱动,P1.2-P1.3为左右转弯驱动,P1.4为自动驾驶指示,
            ; 编码输入从P3.1和p3.2(int0)口,P3.0和P3.5分别为前后红外线探头,在自动
            ; 驾驶时以控制小汔车前进倒退。
            ;*************************************
            ;*                                   *
            ;*      主程序和中断程序入口         *
            ;*                                   *
            ;*************************************
            ORG     0000H    		 ;程序执行开始地址
0000 02003E LJMP    START   ;跳至START执行
            ORG     0003H    		 ;外中断0中断入口地址
0003 02004F LJMP    INTEX0  ;跳至INTEX0中断服务程序
            ORG     000BH    		 ;定时器T0中断入口地址
000B 32     RETI            ;中断返回(不开中断)
            ORG     0013H    		 ;外中断1中断入口地址
0013 32     RETI            ;中断返回(不开中断)
            ORG     001BH    		 ;定时器T1中断入口地址
001B 32     RETI            ;中断返回(不开中断)
            ORG     0023H    		 ;串行口中断入口地址
0023 32     RETI            ;中断返回(不开中断)
            ORG     002BH    		 ;定时器T2中断入口地址
002B 32     RETI    		 ;中断返回(不开中断)
            ;
            ;***************************
            ;*                         *
            ;*       初始化程序        *
            ;*                         *
            ;****************************
002C E4     CLEARMEMIO:     CLR		A		 ;清A
002D F590   		MOV     P1,A		 ;P1口置0
002F 14                     DEC     A		 ;A为#0FFH
0030 F5B0                   MOV     P3,A		 ;P3口置1
0032 D294                   SETB    P1.4		 ;关自动驾驶指示灯
0034 C200                   CLR     00H		 ;自动驾驶标志位清0
0036 75A800 CLEARMEM:       MOV     IE,#00H   ;关所有中断
0039 D2A8                   SETB    EX0		 ;开外中断
003B D2AF                   SETB    EA		 ;开总中断允许
003D 22     		RET		 				;返回
            ;
            ;*************************************
            ;*                                   *


C:\MY DOCUMENTS\2003.02.12书稿\配套光盘源程序\实例9\9R.ASM     
 
                                                                    页     2
                                                                    01-29-03
                                                                    01:49:24
伟福汇编器 V5.00                             Copyright (c) 1989, 2001 by CHY

地址  机器码 源程序

            ;*	     主  程  序                  *
            ;*                                   *
            ;*************************************
003E 12002C START:          LCALL   CLEARMEMIO      ;上电初始化
0041 200008 MAIN:           JB    	00H,AUTO2		;00H位标志为1转自动驾驶
0044 020041      	        LJMP		MAIN		 		;主程序循环
0047 00                     NOP                   	;PC值出错处理
0048 00     		NOP
0049 02003E 		LJMP		START		 	;重新上电启动
004C 0200BD AUTO2:          LJMP    AUTO		 		;至自动驾驶程序
            ;******************************
            ;                              ;
            ;         中断接收程序         ;
            ;                              ;
            ;******************************
004F C2A8   INTEX0:         CLR     EX0		 		;关中断
0051 30B103                 JNB     P3.1,READ1		;P3.1为0转READ1
0054 D2A8   READOUTT0:      SETB    EX0		 		;干扰,中断退出
0056 32                     RETI		 				;中断返回
            ;
0057 E4     READ1:          CLR     A		 		;清A
0058 F583                   MOV     DPH,A		 	;清DPTR
005A F582                   MOV     DPL,A		 	;
005C 20B105 HARD1:          JB      P3.1,HARD11		;P3.1为高电平时转HARD11
005F A3                     INC     DPTR		 		;低电平脉冲宽度时间计数
0060 00                     NOP		 				;空操作延时
0061 00                     NOP
0062 015C                   AJMP    HARD1		 	;跳回循环(周期约为8微秒)
0064 E583   HARD11:         MOV     A,DPH		 	;取DPTR高8位计数值
0066 60EC                   JZ      READOUTT0  		;若为0,则脉宽不足3毫秒退出中断
0068 E4                     CLR     A		 		;脉宽大于2MS,是第一个肪冲
0069 04     READ11:         INC     A		 		;脉冲计数加1
006A 30B1FD READ12:         JNB     P3.1,READ12		;低电平等待,
006D 7906                   MOV     R1,#06H		 	;高电平脉宽判断用
006F 30B1F7 READ13:         JNB     P3.1,READ11		;低电平转READ11(脉冲计数)
0072 1200FC                 LCALL   DELAY		 	;延时512微秒
0075 D9F8                   DJNZ    R1,READ13   		;高电平脉宽小于3MS,转READ13循环
0077 14                     DEC     A		 		;高电平脉宽大于3MS,计数结束,A减1
0078 14                     DEC     A		 		;再减1
0079 6017                   JZ      FUN0     	 	;收到2个肪冲,执行前进功能
007B 14                     DEC     A
007C 6019                   JZ      FUN1     	 ;收到3个肪冲,执行后退功能
007E 14                     DEC     A
007F 601B                   JZ      FUN2     	 ;收到4个肪冲,执行左转功能
0081 14                     DEC     A
0082 601D                   JZ      FUN3     	 ;收到5个肪冲,执行右转功能
0084 14                     DEC     A
0085 601F                   JZ      FUN4     	 ;收到6个肪冲,执行自动驾驶功能


C:\MY DOCUMENTS\2003.02.12书稿\配套光盘源程序\实例9\9R.ASM     
 
                                                                    页     3
                                                                    01-29-03
                                                                    01:49:24
伟福汇编器 V5.00                             Copyright (c) 1989, 2001 by CHY

地址  机器码 源程序

0087 14                     DEC     A
0088 6060                   JZ      FUN5     	 ;收到7个肪冲,执行转弯复位功能
008A 14                     DEC     A
008B 6064                   JZ      FUN6     	 ;收到8个肪冲,执行停车功能
008D 00                     NOP		 			 ;出错处理
008E 00                     NOP		 			 ;
008F 020054                 LJMP    READOUTT0	 ;退出
0092 D290   FUN0:           SETB     P1.0		 ;前进状态
0094 020054                 LJMP    READOUTT0	 ;
0097 D291   FUN1:           SETB     P1.1		 ;后退状态
0099 020054                 LJMP    READOUTT0	 ;
009C D292   FUN2:           SETB     P1.2		 ;左转弯状态
009E 020054                 LJMP    READOUTT0	 ;
00A1 D293   FUN3:           SETB     P1.3		 ;右转弯状态
00A3 020054                 LJMP    READOUTT0	 ;
00A6 B200   FUN4:           CPL   	00H		 	 ;自动驾驶标志取反
00A8 20000D                 JB    	00H,AUTO1  	 ;00H=1进入自动驾驶
00AB C290                   CLR     P1.0       	 ;00H=0时进入遥控驾驶,停车操作
00AD C291                   CLR     P1.1       	 ;停车操作
00AF C292                   CLR     P1.2       	 ;停车操作
00B1 C293                   CLR     P1.3       	 ;停车操作
00B3 D294                   SETB    P1.4       	 ;关自动驾驶灯
00B5 020054                 LJMP    READOUTT0	 ;中断退出
00B8 C294   AUTO1:          CLR     P1.4     	 ;进入自动驾驶,开自动驾驶指示灯
00BA D2A8                   SETB    EX0		 	 ;开中断
00BC 32                     RETI		 			 ;中断返回
00BD 30B00D  AUTO:          JNB     P3.0,BL   	 ;自动驾驶控制程序,前有障碍转BL
00C0 D290                   SETB    P1.0   		 ;前面无障碍,前进状态
00C2 C291                   CLR     P1.1   	 	 ;前面无障碍,前进状态
00C4 C292                   CLR     P1.2   	 	 ;前面无障碍,前进状态
00C6 C293                   CLR     P1.3   	 	 ;前面无障碍,前进状态
00C8 300012                 JNB     00H,OUT1   	 ;标志为0转OUT1(转遥控)
00CB 01BD                   AJMP    AUTO   	 	 ;为1转AUTO循环
00CD C290   BL:             CLR     P1.0   	 	 ;前面有障碍,后退并左转处理
00CF D291                   SETB    P1.1   	 	 ;置后退状态
00D1 D292                   SETB    P1.2   	 	 ;左转状态
00D3 C293                   CLR     P1.3   		 ;
00D5 300005                 JNB     00H,OUT1   	 ;标志为0转OUT1(转遥控)
00D8 30B5E2                 JNB     P3.5,AUTO   	 ;后面有障碍物转AUTO(前进处理)
00DB 01CD                   AJMP    BL   	 	 ;后无障碍转BL继续后退循环
00DD C290   OUT1:           CLR     P1.0   	 	 ;自动驾驶退出程序,关闭驱动及转向电机
00DF C291                   CLR     P1.1   	 	 ;
00E1 C292                   CLR     P1.2   	 	 ;
00E3 C293                   CLR     P1.3   	 	 ;
00E5 D294                   SETB    P1.4   	 	 ;关自动驾驶指示灯
00E7 020041                 LJMP    MAIN   	 	 ;转回主程序
00EA C292   FUN5:           CLR     P1.2   	 	 ;转弯停止程序
00EC C293                   CLR     P1.3   	 	 ;


C:\MY DOCUMENTS\2003.02.12书稿\配套光盘源程序\实例9\9R.ASM     
 
                                                                    页     4
                                                                    01-29-03
                                                                    01:49:24
伟福汇编器 V5.00                             Copyright (c) 1989, 2001 by CHY

地址  机器码 源程序

00EE 020054                 LJMP    READOUTT0   	 ;退出中断
00F1 C290   FUN6:           CLR     P1.0   	 	 ;遥控停车程序,关闭驱动及转向电机
00F3 C291                   CLR     P1.1   	 	 ;
00F5 C292                   CLR     P1.2   	 	 ;
00F7 C293                   CLR     P1.3   	 	 ;
00F9 020054                 LJMP    READOUTT0     ;中断退出
            
            ;*************************************
            ;*                                   *
            ;*  延时程序( 255 X 2 = 513 us)   *
            ;*                                   *
            ;*************************************
00FC 78FF   DELAY:          MOV     R0,#0FFH   	 ;
00FE D8FE   DELAY1:         DJNZ    R0,DELAY1   	 ;
0100 22     		RET   	 			 ;
            ;
            ;
            		END   	 			 ;程序结束





⌨️ 快捷键说明

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