📄 9r.lst
字号:
页 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 + -