📄 10.lst
字号:
页 1
01-29-03
01:51:26
伟福汇编器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 机器码 源程序
; *************************************
; * 汽车通讯控制程序 *
; * LOU RANMIAO *
; * 2001.4.24 *
; *************************************
; *****************************************************************
;* *
;* 后车信号接收 P1.0 1 40 VCC *
;* 前车信号接收 P1.1 2 39 P0.0 左转开关(L) *
;* P1.2 3 38 P0.1 右转开关(L) *
;* P1.3 4 37 P0.2 刹车开关(L) *
;* P1.4 5 36 P0.3 前车左转指示 *
;* P1.5 6 35 P0.4 前车右转指示 *
;* P1.6 7 34 P0.5 后车超车指示 *
;* P1.7 8 33 P0.6 前车刹车指示 *
;* RST 9 32 P0.7 *
;* P3.0 10 MCS-51 31 EA VDD *
;* P3.1 11 30 ALE *
;* INTEX0 P3.2 12 29 PSEN *
;* INTEX1 P3.3 13 28 P2.7 *
;* P3.4 14 27 P2.6 *
;* remoteout P3.5 15 26 P2.5 *
;* P3.6 16 25 P2.4 *
;* P3.7 17 24 P2.3 *
;* XTAL2 18 23 P2.2 *
;* XTAL1 19 22 P2.1 *
;* VSS 20 21 P2.0 *
;* *
;* *
; *****************************************************************
;
; 发送接收一体板程序
;*************************************
;* *
;* 主程序和中断程序入口 *
;* *
;*************************************
ORG 0000H ;程序开始地址
0000 020051 LJMP START ;转START
ORG 0003H ;外中断0中断入口
0003 0200BE LJMP INTEX0 ;转INTEX0
ORG 000BH ;定时器T0中断入口
000B 32 RETI ;返回
ORG 0013H ;外中断1入口地址
0013 020105 LJMP INTEX1 ;转INTEX1
ORG 001BH ;定时器T1中断入口
001B 02005C LJMP INTT1 ;转INTT1
ORG 0023H ;串行口中断入口
C:\MY DOCUMENTS\2003.02.12书稿\配套光盘源程序\实例10\10.ASM
页 2
01-29-03
01:51:26
伟福汇编器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 机器码 源程序
0023 32 RETI ;中断返回
ORG 002BH ;定时器T2中断入口
002B 32 RETI ;中断返回
;
;***************************
;* *
;* 初始化程序 *
;* *
;****************************
002C E4 CLEARMEMIO: CLR A ;清A
002D 14 DEC A ;A为#0FFH
002E F590 MOV P1,A ;端口置1
0030 F5A0 MOV P2,A ;端口置1
0032 F5B0 MOV P3,A ;端口置1
0034 C2B5 CLR P3.5 ;关遥控输出
0036 758170 CLEARMEM: MOV SP,#70H ;设堆栈基址为70H
0039 75A800 MOV IE,#00H ;关所有中断
003C 75B801 MOV IP,#01H ;外中断0为高优先级
003F 758922 MOV TMOD,#22H ;8位自动重装初值定时器
0042 758DF3 MOV TH1,#0F3H ;置13微秒定时器初值
0045 758BF3 MOV TL1,#0F3H ;
0048 D2A8 SETB EX0 ;允许外中断0中断
004A D2AA SETB EX1 ;允许外中断1中断
004C C2AB CLR ET1 ;关定时器T1中断
004E D2AF SETB EA ;开总中断允许
0050 22 RET ;子程序返回
;
;*************************************
;* *
;* 主 程 序 *
;* *
;*************************************
0051 12002C START: LCALL CLEARMEMIO ;上电初始化
;
0054 02005F MAIN: LJMP KEYWORK ;跳到查键程序
0057 00 NOP ;PC值出错处理
0058 00 NOP ;
0059 020051 LJMP START ;重新初始化启动
;
;*************************************
;* *
;* T1中断服务程序 *
;* *
;*************************************
005C B2B5 INTT1: CPL P3.5 ;产生40kHZ信号,用作红外线发射
005E 32 RETI ;中断返回
;
;
C:\MY DOCUMENTS\2003.02.12书稿\配套光盘源程序\实例10\10.ASM
页 3
01-29-03
01:51:26
伟福汇编器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 机器码 源程序
;*************************************
;* *
;* 扫 键 程 序(主程序) *
;* *
;*************************************
;
005F D282 KEYWORK: SETB P0.2 ;置输入状态
0061 D280 SETB P0.0 ;置输入状态
0063 D281 SETB P0.1 ;置输入状态
0065 C200 CLR 00H ;清00H刹车标志位
0067 30822C JNB P0.2,KEY3 ;查刹车输入,为0转KEY3
006A 308034 KEY4: JNB P0.0,KEY0 ;查左转输入,为0转KEY0
006D 30813C JNB P0.1,KEY1 ;查右转输入,为0转KEY1
0070 200044 KEY5: JB 00H,KEY2 ;标志为1转KEY2
0073 D2AF SETB EA ;标志为0,开总中断允许
0075 D2AA SETB EX1 ;开外中断1
0077 D2A8 SETB EX0 ;开外中断0
0079 120188 LCALL DL10MS ;延时60毫秒
007C 120188 LCALL DL10MS ;
007F 120188 LCALL DL10MS ;
0082 120188 LCALL DL10MS ;
0085 120188 LCALL DL10MS ;
0088 120188 LCALL DL10MS ;
008B D283 KEY6: SETB P0.3 ;关前车左转提示输出
008D D284 SETB P0.4 ;关前车右转提示输出
008F D285 SETB P0.5 ;关后车超车提示输出
0091 D286 SETB P0.6 ;关前车刹车提示输出
0093 02005F LJMP KEYWORK ;跳回KEYWORK循环
;
0096 120183 KEY3: LCALL DELAY ;延时消抖动
0099 2082D4 JB P0.2,KEY5 ;是干扰转KEY5
009C D200 SETB 00H ;刹车标志置1
009E 02006A LJMP KEY4 ;转KEY4查左右转弯按键
;
00A1 120183 KEY0: LCALL DELAY ;延时消抖动
00A4 2080C9 JB P0.0,KEY5 ;是干扰转KEY5
00A7 7402 MOV A,#02H ;发2个脉冲
00A9 020156 LJMP REMOTE ;跳到发射程序
;
00AC 120183 KEY1: LCALL DELAY ;延时消抖动
00AF 2081BE JB P0.1,KEY5 ;是干扰转KEY5
00B2 7405 MOV A,#05H ;发5个脉冲
00B4 020156 LJMP REMOTE ;跳到发射程序
00B7 C200 KEY2: CLR 00H ;清00H标志
00B9 7408 MOV A,#08H ;发8个脉冲
00BB 020156 LJMP REMOTE ;跳到发射程序
;******************************
C:\MY DOCUMENTS\2003.02.12书稿\配套光盘源程序\实例10\10.ASM
页 4
01-29-03
01:51:26
伟福汇编器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 机器码 源程序
; 前车信息接收程序(外中断0)
;******************************
;从P1.1口接收脉冲
00BE C0E0 INTEX0: PUSH ACC ;现场保护
00C0 C0D0 PUSH PSW ;
00C2 C2A8 CLR EX0 ;关外中断0
00C4 C2AA CLR EX1 ;关外中断1
00C6 C2AF CLR EA ;关总中断允许
00C8 309105 JNB P1.1,READ1 ;P1.1为0转READ1
00CB D0D0 READOUT0: POP PSW ;是干扰,中断退出
00CD D0E0 POP ACC ;
00CF 32 RETI ;
;
00D0 E4 READ1: CLR A ;清A
00D1 F583 MOV DPH,A ;清DPTR
00D3 F582 MOV DPL,A ;
00D5 209105 HARD1: JB P1.1,HARD11 ;8*255=2.04ms,>2.04MS判定是起始位
00D8 A3 INC DPTR ;低电平计数(周期为8微秒)
00D9 00 NOP ;
00DA 00 NOP
00DB 01D5 AJMP HARD1 ;低电平循环计数
00DD E583 HARD11: MOV A,DPH ;
00DF 60EA JZ READOUT0 ;高8位为0,小于2.04MS,退出
00E1 E4 CLR A ;>2.04MS判定是起始位
00E2 04 READ11: INC A ;脉冲数加1
00E3 3091FD READ12: JNB P1.1,READ12 ;低电平等待
00E6 790A MOV R1,#0AH ;高电平脉宽判断用
00E8 3091F7 READ13: JNB P1.1,READ11 ;变低电平转READ11
00EB 120183 LCALL DELAY ; 延时512微秒
00EE D9F8 DJNZ R1,READ13 ;延时小于10次转READ13循环
00F0 14 DEC A ;高电平宽大于5MS停止接收,A减1
00F1 14 DEC A ;再减1
00F2 604E JZ FLT ;是2个脉冲,执行FLT
00F4 14 DEC A ;
00F5 14 DEC A ;
00F6 14 DEC A ;
00F7 604E JZ FRT ;是5个脉冲,执行FRT
00F9 14 DEC A ;
00FA 14 DEC A ;
00FB 14 DEC A ;
00FC 6053 JZ STOP ;是8个脉冲,执行STOP
00FE C2B8 CLR PX0 ;外中断0置低优先级
0100 D2BA SETB PX1 ;外中断1置高优先级
0102 0200CB LJMP READOUT0 ;转中断退出
;
;******************************
; 后车信息接收程序(外中断1)
;******************************
C:\MY DOCUMENTS\2003.02.12书稿\配套光盘源程序\实例10\10.ASM
页 5
01-29-03
01:51:26
伟福汇编器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 机器码 源程序
;接收程序原理同外中断0,从P1.0口接收脉冲
0105 C0E0 INTEX1: PUSH ACC ;
0107 C0D0 PUSH PSW ;
0109 C2AA CLR EX1 ;
010B C2A8 CLR EX0 ;
010D C2AF CLR EA ;
010F 309005 JNB P1.0,READ2 ;
0112 D0D0 READOUT1: POP PSW ;
0114 D0E0 POP ACC ;
0116 32 RETI ;
0117 E4 READ2: CLR A ;
0118 F583 MOV DPH,A ;
011A F582 MOV DPL,A ;
011C 209005 HARD2: JB P1.0,HARD21 ;
011F A3 INC DPTR ;
0120 00 NOP ;
0121 00 NOP ;
0122 211C AJMP HARD2 ;
0124 E583 HARD21: MOV A,DPH ;
0126 60EA JZ READOUT1 ;
0128 E4 CLR A ;
0129 04 READ21: INC A ;
012A 3090FD READ22: JNB P1.0,READ22 ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -