工业控制 | 能源技术 | 汽车电子 | 通信网络 | 安防监控 | 智能电网 | 移动手持 | 无线技术 | 家用电器 | 数字广播 | 消费电子 | 应用软件 | 其他方案

电路设计->光电电路图->其他光电实用电路图->基于AT89C51的超声波测距设计

基于AT89C51的超声波测距设计

发布人:dolphin 时间:2016-09-20 收藏

;********WAVE-E6000/T*******************************
;*MCU: AT89C51 *


;*MCU-Crystal: 12M *
;*Version: 00 *
;*Last Updata: *
;*Author: www.pICavr.com *
;*Description: 超声波测距
;晶振采用6M,P1口为数码管段输出口,P3.0~P3.2为 *

;数码管位输出口,P3.5超声波;发送输出,P3.7超声波收 *
;***************************************************
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 中断入口程序 ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ORG 0000H
ljmp start
ORG 002BH
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 主 程 序 ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
START: MOV R0,#70H
MOV R7,#0BH
MOV 20H,#00H
CLEARDISP: MOV @R0,#00H
INC R0
DJNZ R7,CLEARDISP
MOV TMOD,#99H
cjzcx:MOV TL0,#00H
MOV TH0,#00H
MOV R0,#0bH
mov r1,#0bh
mov 16h,#03H
mov 15h,#54H
mov 17h,#90h
puzel:mov 14h,#32h ;超声波发射持续200ms
here:cpl p3.5 ;输出40kHz方波
nop
nop
nop
djnz 14h,here
setb tr0
setb p3.2
mq:djnz 15h,$
djnz 16h,mq
QBA:JNB P3.7,QBC
DJNZ R1,QBA
DJNZ R0,QBA
QBC:djnz 17h,QBC
clr p3.2
clr tr0
mov 70h,tl0
mov 71h,th0
mov r2,71h
mov r3,70h
mov r6,#22H
mov r7,#0H
LCALL MULD
mov r6,#64H
mov r7,#0H
LCALL DIVD
MOV 73H,R2
MOV 74H,R3
CLR R3
CLR R4
CLR R5
MOV R6,73H
MOV R7,74H
LCALL HB2
MOV A,R4
MOV B,#10H
DIV AB
MOV 78H,A
MOV 77H,B
MOV A,R5
MOV B,#10H
DIV AB
MOV 76H,A
MOV 75H,B
mov a,78h
cjne a,#0h,pdcx
mov a,77h
cjne a,#5h,pdcx
mov a,76h
cjne a,#0h,pdcx
mov 78h,#0bh
mov 77h,#0bh
mov 76h,#0bh
ajmp xxcx
pdcx:mov a,78h
cjne a,#4h,xxcx
mov a,77h
cjne a,#0h,xxcx
mov a,76H
cjne a,#0h,xxcx
mov 78h,#0ah
mov 77h,#0ah
mov 76h,#0ah
xxcx:MOV 7AH,#0EFH
XXX:LCALL DISPLAY
DJNZ 7AH,XXX
ajmp cjzcx

MULD:MOV A,R3
MOV B,R7
MUL AB
MOV R4,B
MOV R5,A
MOV A,R3
MOV B,R6
MUL AB
ADD A,R4
MOV R4,A
CLR A
ADDC A,B
MOV R3,A
MOV A,R2
MOV B,R7
MUL AB
ADD A,R4
MOV R4,A
MOV A,R3
ADDC A,B
MOV R3,A
CLR A
RLC A
XCH A,R2
MOV B,R6
MUL AB
ADD A,R3
MOV R3,A
MOV A,R2
ADDC A,B
MOV R2,A
RET

DIVD:CLR C
MOV A,R3
SUBB A,R7
MOV A,R2
SUBB A,R6
JC DVD1
SETB OV
RET
DVD1:MOV B,#10H
DVD2:CLR C
MOV A,R5
RLC A
MOV R5,A
MOV A,R4
RLC A
MOV R4,A
MOV A,R3
RLC A
MOV R3,A
XCH A,R2
RLC A
XCH A,R2
MOV F0,C
CLR C
SUBB A,R7
MOV R1,A
MOV A,R2
SUBB A,R6
ANL C,/F0
JC DVD3
MOV R2,A
MOV A,R1
MOV R3,A
INC R5
DVD3:DJNZ B,DVD2
MOV A,R4
MOV R2,A
MOV A,R5
MOV R3,A
CLR OV
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; BCD转换 ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
HB2:CLR A ;BCD码初始化
MOV R3,A
MOV R4,A
MOV R5,A
MOV R2,#10H ;转换双字节十六进制整数
HB3:MOV A,R7 ;从高端移出待转换数的一位到CY中
RLC A
MOV R7,A
MOV A,R6
RLC A
MOV R6,A
MOV A,R5 ;BCD码带进位自身相加,相当于乘2
ADDC A,R5
DA A ;十进制调整
MOV R5,A
MOV A,R4
ADDC A,R4
DA A
MOV R4,A
MOV A,R3
ADDC A,R3
MOV R3,A
DJNZ R2,HB3
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 显示程序 ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DISPLAY:MOV R1,#76H
MOV R5,#0FEH
PLAY:MOV A,R5
MOV P3,A ;累加器A中的数值送P3口
MOV A,@R1
MOV DPTR,#TAB
MOVC A,@A+DPTR ;
MOV P1,A ;累加器A中的数值送P1口
MOV R6,#14H
DL1:MOV R7,#19H
DL2:DJNZ R7,DL2
DJNZ R6,DL1
INC R1
MOV A,R5
JNB ACC.2,ENDOUT
RL A
MOV R5,A
AJMP PLAY
ENDOUT:SETB P3.5
MOV P1,#0FFH ;立即数0FEH送P1口
RET
TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0c6H,3fh
END



评论

技术专区