关于#51单片机#的问题:代码用keil5写的,仿真使用的是proteus8.11 超声波报警仿真时显示未检测到脉冲如何处理?

代码用keil5写的,仿真使用的是proteus8.11
以下为代码:

#include <REGX52.H>
#include "intrins.h"
sbit tr=P2^1;
sbit ec=P2^2;
unsigned int t;
unsigned int s;
void Delay20us()        //@12.000MHz
{
    unsigned char i;

    _nop_();
    i = 7;
    while (--i);
}


void Timer0Init(void)        
{
    TMOD &= 0xF0;        
    TL0 = 0x00;        
    TH0 = 0x00;        
    TF0 = 0;        
//    TR0 = 1;        
    EA=1;
}
void main()
{
    Timer0Init();
    while(1)
    {
        tr=1;
        Delay20us();
        tr=0;
        while(!ec);
        TR0=1;
        while(ec);
        TR0=0;
        
        t=TH0*256+TL0;
        s=t*0.017;
        TH0=0;
        TL0=0;
        if(s>=15){P3_1=0;}
        
    }
}

回答不易,求求您采纳点赞哦

请先检查以下几点:

  • 代码中的TR0是否被正确使用。
  • 超声波发送和接收硬件是否接口正确。
  • 延时是否设置得足够长。
  • 延时函数Delay20us是否工作正常。
  • 超声波报警功能是否在硬件上实现了。
    如果代码中没有问题,请尝试更换仿真工具或更新当前仿真工具,确保仿真器能够正常模拟单片机代码。