单片机C语言延时程序怎么停止?

来源:百度知道 编辑:UC知道 时间:2024/06/26 00:54:20
在执行延时过程中我想停止延时,怎么编程?比如延时10S,延时程序为
delay(uint)
{uint x,y;
for(x=1000;x>0;x--)
for(y=1200;y>0;y--);};
在执行几秒之后我突然想让单片机停止延时,而是执行下一句程序,如何编程
如果跳出循环的程序,条件具体怎么加?

在循环里判断是否满足跳出的条件,满足则跳出循环,不满足就继续延时直到延时结束。
具体的条件要有程序的要求来,比如说某个IO口的电平的状态。
sbit state=P1^7;
delay(uint)
{
uint x,y;
for(x=1000;x>0;x--)
for(y=1200;y>0;y--)
{
if(state==1) return ;//当p1.7口为高时跳出循环
}
}
//由于加入了一条语句,延时要重新计算

你如果一定要用延时子程序的话只有在延时子程序循环中插入某个条件跳转出去

楼上的说的全对,你要在执行几秒之后突然想让单片机停止延时,那你则要在延时子程序中需要的地方加入条件跳转。我感觉你这个程序要求没有什么实际意义吗,因为延时一般来说是根据需要固定的,如果你要让延时更灵活的话,你则用参数传递啊。

在执行几秒之后我突然想让单片机停止延时,而是执行下一句程序
你突然想让单片机停止延时是没有用的,单片机又不知道你要什么时候停止延时啊,总感觉你的这个问题问得有点怪。

延时,你程序子程序中不是带了一个值进去了吗?自减这个值然后判断是否到0了!到了就退出!!!
delay(uint i)
{
uint x,y,j;
while(i)
{
for(x=1000;x>0;x--)
{
for(y=1200;y>0;y--);
}
i--;
}
};