为啥超声波模块没用,控制不了电机状态

#include#includesbit Trig = P2^1;sbit Echo = P2^0;sbit ENA = P1^0;sbit IN1=P1^1;sbit IN2=P1^2;// 延时10usvoid Delay20us(){ TMOD |= 0x01; //16位定时器/计数器,TH0、TH1全用 TH0 = 0xFF; TL0 = 0xEC; TR0 = 1; //TR0为1时允许T0开始计数 while(!TF0); //当T0溢出时退出while TF0 = 0; //TF0置0}//时间unsigned int RunOnce() { unsigned int time;//10us高电平发送触发信号 Trig = 1; Delay20us(); Trig = 0; while(!Echo); //等待高电平信号接收 TH0 = 0;//T0清0重新计数(高电平持续时间) TL0 = 0; TR0 = 1; while(Echo);//等待高电平信号接收结束 TR0 = 0; //关闭T0计数 time = TH0*256 + TL0; // TH0<<8 | TL0 //高电平时间赋值,单位us TH0 = 0; TL0 = 0; return time;}//主函数void main(){ unsigned int time; float distance; while(1) { ENA=1; time = RunOnce(); //计算超声波测距时 传感器接收到高电平的时间 distance =(time*1.7)/100;//公式计算距离 //cm if(distance>30) { //对距离进行判断 ENA=1; IN1=1; IN2=0; } else if(distance<30) { ENA=0; IN1=0; IN2=0; } }}

这种排版,我不太相信有人类有耐心看下去。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^