A
MOV
R1A
CLR
C
MOV
AR0
SUBB
AR2
MOV
BA
MOV
AR1
SUBB
AR3
JC
DIVLOOP2
MOV
R0B
MOV
R1A
DIVLOOP2CPL
C
DJNZ
46HDIVLOOP1
MOV
AR4
RLC
A
MOV
R4A
MOV
AR5
fRLCMOVMOVRLCMOVMOVRLCMOVRETEND
62电路图超声波发射电路
AR5AAR6AR6AAR7AR7A
程序结束
超声波接收电路
f单片机及显示电路
f40KHz输出
回波接收输入
C4VCC
30pFY2C512MHz5V
20uF30pFRESET
10K
U5
12345678
P10TP11TP12P13P14P15P16P17
P00P01P02P03P04P05P06P07
3938373635343332
1312
1514
31
1918
INT1AT89C52P20
INT0
P21
P22
T1
P23
T0
P24
P25
EAVP
P26
P27
X1
X2
2122232425262728
9RESET
1716
RDWR
RXDTXDALEPPSEN
10113029
RES2
LED
LED
LED
LED
1234567
a
bc
f
de
e
DPYa
gb
c
fg
d
1234567
a
bc
f
de
e
DPYa
gb
c
fg
d
1234567
abcde
fe
DPYa
gb
c
fg
d
1234567
abcde
fe
DPYa
gb
c
fg
d
RES2
RES2
RES2
9012
9012
9012
9012
47K
47K
47K
VCC
P23
P22
P21
P20
f超声波测距程序
晶振8MMCUSTC10F04XEP00P06共阳数码管引脚TrigP10EchoP32i
cludereg52h包括一个52标准内核的头文件defi
eucharu
sig
edchar定义一下方便使用defi
eui
tu
sig
edi
tdefi
eulo
gu
sig
edlo
gsfrCLK_DIV0x97为STC单片机定义系统时钟分频
为STC单片机的IO口设置地址定义sfrP0M10X93sfrP0M00X94sfrP1M10X91sfrP1M00X92sfrP2M10X95sfrP2M00X96sbitTrigP10产生脉冲引脚sbitEchoP32回波引脚sbittestP11测试用引脚
uchar
code
SEG7100xC00xF90xA40xB00x990x920x820xF80x800x90数码管
09
ui
tdista
ce4测距接收缓冲区
uchargeshibaitempflagoutcomeHoutcomeLi自定义寄存器
bitsucceed_flag测量成功标志
函数声明
voidco
versio
ui
ttemp_data
voiddelay_20us
voidpai_xu
voidmai
void主程序ui
tdista
ce_dataab
ucharCONT_1CLK_DIV0X03系统时钟为18晶振(pdf45页)
P0M10将io口设置为推挽输出P1M10P2M10P0M00XFF
fP1M00XFF
P2M00XFF
i0
flag0
test0
Trig0
首先拉低脉冲输入引脚
TMOD0x11定时器0,定时器1,16位工作方式
TR01
启动定时器0
IT00
由高电平变低电平,触发外部中断
ET01
打开定时器0中断
ET11
打开定时器1中断
EX00
关闭外部中断
EA1
打开总中断0
while1
程序循环
EA0
Trig1
delay_20us
Trig0
产生一个20us的脉冲,在Trig引脚
whileEcho0等待Echo回波引脚变高电平
succeed_flag0清测量成功标志
EX01
打开外部中断
TH10
定r