超声波测离程序
点击数:7884 次 录入时间:03-04 11:50:53 整理:http://www.55dianzi.com 51单片机
DJNZ R2,$
SJMP START1
;**********中断程序*
;T0中断,65毫秒中断一次
INTT0: CLR EA
CLR TR0
MOV TH0,#00H
MOV TL0,#00H
SETB ET1
SETB EA
SETB TR0 ;启动计数器T0,用以计算超声来回时间
SETB TR1 ;开启发超声波用定时器T1
OUT: RETI
;T1中断,发超声波用
INTT1: CPL VOUT
DJNZ R4,RETIOUT
CLR TR1 ;超声波发送完毕,关T1
CLR ET1 ;
MOV R4,#04H
SETB EX1 ;开启接收回波中断
RETIOUT: RETI
;外中断0,收到回波时进入
PINT1: CLR TR0 ;关计数器
CLR TR1
CLR ET1
CLR EA ;
CLR EX1 ;
MOV 44H,TL0 ;将计数值移入处理单元
MOV 45H,TH0 ;
SETB 00H ;接收成功标志
RETI
;**************显示程序*********
; 40H为最高位,43H为最低位,先扫描高位
DISPLAY: ; MOV CODE0,40H
;ACALL DSP1
MOV MUL_,41H
ACALL DSP2
MOV MUL_,42H
ACALL DSP3
MOV MUL_,43H
ACALL DSP4
RET
;*********距离计算程序 (=计数值*17/1000CM)
WORK: PUSH ACC
PUSH PSW
PUSH B
MOV PSW, #18H
MOV R3, 45H
MOV R2, 44H
MOV R1, #00D
MOV R0, #17D
LCALL MUL2BY2
MOV R3, #03H
MOV R2, #0E8H
LCALL DIV4BY2
LCALL DIV4BY2
MOV 40H, R4
MOV A,40H
JNZ JJ0
MOV 40H,#0AH ;最高位为零,不点亮
JJ0: MOV A, R0
MOV R4, A
MOV A, R1
MOV R5, A
MOV R3, #00D
MOV R2, #100D
LCALL DIV4BY2
MOV 41H, R4
MOV A,41H
JNZ JJ1
MOV A,40H ;次高位为0,先看最高位是否为不亮
SUBB A,#0AH
JNZ JJ1
MOV 41H,#0AH ;最高位不亮,次高位也不亮
JJ1: MOV A, R0
MOV R4, A
MOV A, R1
MOV R5, A
MOV R3, #00D
MOV R2, #10D
LCALL DIV4BY2
MOV 42H, R4
MOV A,42H
上一页 [1] [2] [3] [4] [5] 下一页
本文关键字:超声波 程序 51单片机,单片机-工控设备 - 51单片机