51单片机delay()函数

做个智能小车,比如contralcar(1)是前进,contralcar(2)是后退,需要小车执行先前进,5秒后后退,能用delay()实现吗?怎么实现?

delay函数是一般自己定义的一个延时函数。

C语言定义延时函数主要通过无意义指令的执行来达到延时的目的。下面给出一个经典的延时函数。
// 定义一个延时xms毫秒的延时函数
void delay(unsigned int xms) // xms代表需要延时的毫秒数
{
unsigned int x,y;
for(x=xms;x>0;x--)
for(y=110;y>0;y--);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-11-16
当然可以。
首先判断CONTRALCAR是否是1
while(conrtalcar(1))
{
delay(5) ;
conrtalcar(0); //停止前进
conrtalcar(2);//后退
}追问

conrtalcar(0); 没有定义,可以直接用吗?
菜鸟啊,什么都不懂`~

追答

不能直接用 你可以把CONRTALCAR换成一个变量,比如A等于1前进,A等于0 后退.通过按键让A等于1或0.
if(A==1)
{
delay(5) ;
A==0;
}

追问

我的delay是这么定义的,
void Delay() //定义机器人调转子时间子程序
{ unsigned int DelayTime=50000; //定义机器人转弯时间变量
while(DelayTime--);
但是
{conrtalcar(1)

Delay() ;

conrtalcar(2);}
根本不执行CONTRAL(2),为什么呢?

本回答被网友采纳
第2个回答  2012-11-16
delay只是个延时函数,小车的动作需要你自己根据电路去编写的,追问

恩恩,这个明白,delay(5) ;就是延时5秒?我的delay是这么定义的,
void Delay() //定义机器人调转子时间子程序
{ unsigned int DelayTime=50000; //定义机器人转弯时间变量
while(DelayTime--);
但是
{conrtalcar(1)

Delay() ;

conrtalcar(2);}
根本不执行CONTRAL(2),为什么呢?

追答

我不知道你用的是什么单片机和编译器,因为有的编译器在while()后面如果没有其他程序的时候,可能会忽略掉的
你吧Delay函数重新写一下吧
追问恩恩,这个明白,delay(5) ;就是延时5秒?我的delay是这么定义的,
void Delay() //定义机器人调转子时间子程序
{ unsigned int DelayTime; //定义机器人转弯时间变量
for(DelayTime=0;DelayTime<5000;){
DelayTime++;
}

第3个回答  2012-11-24
最好是用定时器,延时不是很准,如果对时间精确度不高,可以用delay