0x30; //定时2ms?Key_(); //扫描按键?Display(); //扫描显示?timer++; //变量加?if(timer>=400) //400次就是800ms?{ timer=0; TX=1; //800MS启动一次模块_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); TX=0;?}}/**********************************************************************************************************///主函数voidmain(void){?TMOD=0x11; //设T0为方式1?TH0=0;?TL0=0;?TH1=0xf8; //2MS定时?TL1=0x30;?ET0=1; //允许T0中断?ET1=1; //允许T1中断?TR1=1; //开启定时器?EA=1; //开启总中断 while(1)?{ while(!RX); //当上次接收完波后,RX引脚是低电平,取反就是1,此while成立,反复判断RX状态。当RX没有接收到返回波时是高电平,取反就是0,此while不成立,跳出 TR0=1; //开启计数 while(RX); //当RX没有接收到返回波,此while成立,程序停在这里一直判断RX状态。当RX接收到返回波,RX引脚变为低电平,此while不成立,跳出 TR0=0; //停止计数 Conut(); //计算?}}