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

📄 um.asm

📁 PARK CAR 倒车雷达的制作文件1: 有原理图和控制程序源代码
💻 ASM
字号:
;/***********************************************************
;**--------------文件信息-----------------------------------
;**文   件   名: UM2.ASM
;**创   建   人: 弗兰克
;**最后修改日期: 2006年4月10日
;**描        述: MCU程序
; ==========================================================
;  FAD805.HEX       For CAR BACK SYSTEM     
; ==========================================================
;**--------------历史版本信息--------------------------------
;** 修改人: 布莱德  
;** 版  本: V1.0
;** 日 期: 2009.1.12 
;** 描 述: 
;   20090112:
;************************************************************/
; The main have 2 sensors and alarm out at p3.4 that connected R2 of channel 6
;主机有2到6个超声波发射接收头
; *********************************************************************************************
$MOD52
; *********************************************************************************************
; Define buffer
MBUF	EQU	30H		; Key,display & S-Port buffer: 30H - 3FH

TEM_B	EQU	4AH		; Save temperature code
CHX	EQU	4BH		; Channel No:
NUM	EQU	4CH
; ---------------------------------------------------------------------------------------------
; Define port

P40K	BIT	P1.7		; Transmite Ultrasonic  用于发40KHZ的超声波
EN485T	BIT	P3.7		; Enable 485 transmite  用于给车前的显示主机发数据,当不要显示时可以只用这一个主机,
                        ; 作为单主机系统用来实现倒车雷达的功能。
BACK_F	BIT	P3.3
REPLY	BIT	P3.2
INH	BIT	P1.3		; Inhibite of 4051 
CPP	BIT	P1.0		; Comparator input+用51的比较器功能实现用I/O口检测温度
SOUT	BIT	P3.4		; Output of pulse for alarm以不同声音报警到障碍物的距离
; ============================ Code segment ===================================================

	ORG	0000H
	AJMP	RESET

;	ORG 	0023H 		; serial I/O interrupt vector
;	AJMP 	SR
; ---------------------------------------------------------------------------------------------
	ORG	0030H
RESET:
	MOV 	SP,#STACK
	ACALL	STD_INIT
	CLR	EA

	MOV	P1,#0FFH
	CLR	CPP
	ACALL	D4MS		; For C discharge放电时间
; =============================================================================================
; 		MAIN ROUTINE
; =============================================================================================
MAIN:
;	JB	BACK_F,MAIN
	ACALL	MM		; Make a Measure Distanse测距
	ACALL	D60MS
	AJMP	MAIN
; =============================================================================================
; Ultrasonic
; =============================================================================================
; Measure temperature. The return is:
; Distanse of Ultrasonic transmiting in 7*1.085uS = 2.517743 mm at 0`C. 
; SD DATA = 2.517743 * 50 = 126

MT:	CLR	A
	SETB	CPP
MT1:	INC	A
	JNB	P3.6,MT1		; A = 175 at 0 @C (see Temp.xls)
	MOV	DPTR,#SD
	MOVC	A,@A+DPTR		; A = 126 at 0 @C (see Temp.xls)
	MOV	TEM_B,A		; 
	CLR	CPP		; Discharge C
	RET
; ---------------------------------------------------------------------------------------------
; Make a Measure Distanse
; P1 port: 
; 1	0	0	0	1	1	1	0     = 8EH
; P40KC	CHX2	CHX1	CHX0	INH	NO-USE	COMP-	CPP

MM:	ACALL	MT		; Measure temperature
	MOV	NUM,#6		; Number of channels
	MOV	R0,#MBUF
	MOV	CHX,#0E8H		; Start from channel #0
M1:
	ACALL	D20MS
	MOV	A,CHX
	SWAP	A
	MOV	P1,A		; P1 = 1000 1110 at channel #0

	ACALL	MED
	MOV	@R0,A		; A = code of disdanse
	INC	R0
	INC	CHX
	DJNZ	NUM,M1

	MOV	R2,#2		; number of sorted data
	MOV	R1,#MBUF		; addr. of data
	ACALL	MIND		; Return in A (data)min / R4(NO:), use R3,R4,B
	MOV	B,A

	MOV	A,B
	CLR	C
	SUBB	A,#250
	JNC	TAS3		; The data > 250 CM, jump over

	MOV	A,B
	CLR	C
	SUBB	A,#150
	JNC	TAS4		; The data > 150 CM, jump over

	MOV	A,B
	CLR	C
	SUBB	A,#100
	JNC	TAS5		; The data > 100 CM, jump over

	MOV	A,B
	CLR	C
	SUBB	A,#35
	JNC	TAS6		; The data > 35 CM, jump over
	AJMP	TAS7		; The data < 35 CM, jump over
;		*		*		*
TAS3:				; The data > 250 CM
	ACALL	ST
	RET
TAS4:				; The data > 150 CM
	ACALL	ST
	ACALL	SP0
	RET
TAS5:				; The data > 100 CM
	ACALL	ST
	ACALL	SP1		; Alarm out
	RET
TAS6:				; The data > 35 CM
	ACALL	ST
	ACALL	SP2		; Alarm out
	RET

TAS7:	ACALL	ST
	ACALL	SP3		; The data < 35 CM, Alarm out
	RET
; ---------------------------------------------------------------------------------------------
; Measure Distanse: Transmite Ultrasonic and Receive her reply signal
; (DPTR)max = 3000 mm / 2.517743 mm = 1200 = 07D0H (Tmax = 9.114 mS)
; (DPTR*SD)max = 1200 * 174 = 208800 = 032FA0H
; (DPTR*SD/1000)max = 208800 / (50*10*2) = 209 

MED:
ME:	MOV	DPH,#0
	MOV	DPL,#190		
	MOV	R2,#40		; Set transmite time: 40 * 25 uS = 1000 uS
ME1:	CLR	P40K
	ACALL	D12U
	SETB	P40K
	ACALL	D12D
	DJNZ	R2,ME1

	ACALL	D250
	ACALL	D250
	CLR	INH
	ACALL	D250		;
	ACALL	D250		;

ME2:	INC	DPTR		; Wait reply and count, 7*1.085uS / Loop
	MOV	A,DPH		; 
	CJNE	A,#7,ME3		; Limit at 15mS
	AJMP	MEE		; Time over,jump out
ME3:	JB	REPLY,ME2
	SETB	INH

	MOV	R6,DPH		; DPTR * TEM_B
	MOV	R7,DPL
	MOV	R5,TEM_B
	ACALL	WMULB		; R5*(R6,R7)-->(R5,R6,R7)

	MOV	R4,#0		; R4R5R6R7/R2R3 = R6R7
	MOV	R2,#03H		; 3E8H = 1000
	MOV	R3,#0E8H
	ACALL	WDIV
	MOV	A,R7		; MAX: 209
	CLR	C
	RET
MEE:
	SETB	INH
	MOV	A,#0FFH		; The wrong data
	SETB	C		; Error
	RET
; ---------------------------------------------------------------------------------------------
SP0:
	ACALL	STMS
	RET
SP1:
	ACALL	SHMS
	ACALL	SHMS
	ACALL	SHMS
	ACALL	SHMS
	RET

SP2:	ACALL	SHMS
	MOV	R2,B		; Stop B mS ...
SP22:	ACALL	D1MS
	DJNZ	R2,SP22		; ...
	ACALL	SHMS
	RET

SP3:	ACALL	S50MS
	ACALL	D60MS
	ACALL	S50MS
	ACALL	D60MS
	ACALL	S50MS
	RET

S50MS:	MOV	R2,#50
S51:	CLR	SOUT
	ACALL	D500
	SETB	SOUT
	ACALL	D500
	DJNZ	R2,S51
	RET

SHMS:	MOV	R2,#50
SH1:	CLR	SOUT
	ACALL	D1MS
	SETB	SOUT
	ACALL	D1MS
	DJNZ	R2,SH1
	RET

STMS:	MOV	R2,#10
STM:	CLR	SOUT
	ACALL	D500
	SETB	SOUT
	ACALL	D500
	DJNZ	R2,STM
	RET
; ---------------------------------------------------------------------------------------------
; Fu = 40 KHz, Tu = 25 uS = 1.085 uS * 23.04
D12U:
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	RET	
D12D:
	NOP
	NOP
	NOP
	NOP
	NOP
	RET	
; =============================================================================================
; Ultrasonic speed: v (m/s) = 331.5 + 0.6 * t (degry @C) = 346.5 at 25@C    测温后算出距离	
; 11K-104C: RT=10K(3950),C=104,Rc=11K
; SD / 100 = Transmite Distance of Ultrasonic in (1.085*3 uS) at the temperature
SD:
	DB	174, 171, 168, 163, 160, 158, 156, 154, 153, 152, 
	DB	151, 150, 149, 149, 148, 148, 147, 147, 146, 146, 
	DB	145, 145, 145, 144, 144, 144, 143, 143, 143, 143, 
	DB	142, 142, 142, 142, 141, 141, 141, 141, 140, 140, 
	DB	140, 140, 140, 140, 139, 139, 139, 139, 139, 138, 
	DB	138, 138, 138, 138, 138, 138, 137, 137, 137, 137, 
	DB	137, 137, 137, 136, 136, 136, 136, 136, 136, 136, 
	DB	135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 
	DB	135, 134, 134, 134, 134, 134, 134, 134, 134, 134, 
	DB	133, 133, 133, 133, 133, 133, 133, 133, 133, 132, 
	DB	132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 
	DB	132, 132, 131, 131, 131, 131, 131, 131, 131, 131, 
	DB	131, 131, 131, 130, 130, 130, 130, 130, 130, 130, 
	DB	130, 130, 130, 130, 130, 130, 129, 129, 129, 129, 
	DB	129, 129, 129, 129, 129, 129, 129, 128, 128, 128, 
	DB	128, 128, 128, 128, 128, 128, 128, 127, 127, 127, 
	DB	127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 
	DB	126, 126, 126, 126, 126, 126, 126, 126, 126, 125, 
	DB	125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 
	DB	124, 124, 124, 124, 124, 124, 124, 124, 123, 123, 
	DB	123, 123, 123, 123, 122, 122, 122, 122, 122, 122, 
	DB	122, 121, 121, 121, 121, 121, 120, 120, 120, 120, 
	DB	120, 119, 119 

; =============================================================================================
$INCLUDE(US-STD.asm)			; Key,display,delay routines    要加键盘和显示器使用。延时子程序也在这里。
; =============================================================================================

	END

⌨️ 快捷键说明

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