请教一个中断问题
本帖最后由 摇滚一族 于 2024-8-28 14:47 编辑请教各位一个中断的问题。
比如程序延时五秒的过程中,按键触发中断,让退出程序,返回到指定位置重新开始程序,这个怎么写?
现在按键触发中断后,要继续执行完五秒的延时程序后,才执行后面的命令。
while(1)
{
命令1
命令2
延时5秒
命令3
命令4
}
例如在延时5秒中,按键中断了,想达到按键后就返回命令1执行如何操作?
现在是中断结束后,继续执行延时5秒、命令3 命令4
不要死等,可以10ms检测一次,持续500次都是按下的状态再执行,中间去干别的 DebugLab 发表于 2024-8-28 12:16
不要死等,可以10ms检测一次,持续500次都是按下的状态再执行,中间去干别的 ...
中断是立即执行的,我的意思是中断结束后如何跳转?首页问题内容我重新编辑了一下 摇滚一族 发表于 2024-8-28 14:52
中断是立即执行的,我的意思是中断结束后如何跳转?首页问题内容我重新编辑了一下 ...
用if判断一个标志位,状态为1才执行,状态为0不执行 DebugLab 发表于 2024-8-28 14:54
用if判断一个标志位,状态为1才执行,状态为0不执行
延时5秒已经在执行进程中,IF不起作用了 摇滚一族 发表于 2024-8-28 14:58
延时5秒已经在执行进程中,IF不起作用了
用定时器,不能死等 while(1)
{
switch(step)
{
case 0:命令1;step=1;break;
case 1:命令2;step=2;break;
case 5001:命令3;step=5002;break;
case 5002:命令4;step=0;break;
default:step++;break;
}
延时1毫秒
}
按键中断里step=5001; Lkck8210 发表于 2024-8-28 17:02
按键中断里step=5001;
while(1)
{
switch(step)
{
case 0:命令1;step=1;break;
case 1:命令2;step=2;延时5秒;break;
case 5001:命令3;step=5002;break;
case 5002:命令4;step=0;break;
default:step++;break;
}
延时1毫秒
}
我的意思是比如上面,在step2里,已经在执行延时5秒的过程中,按键中断
中断执行step=5001后;也会继续执行延时5秒,然后才继续。
如何打断正在执行的延时5秒命令? 摇滚一族 发表于 2024-8-28 17:58
while(1)
{
switch(step)
把延时5秒改成1毫秒检查一下状态,可不能真的在那傻傻等足5秒…… 本帖最后由 taihang 于 2024-8-29 09:18 编辑
while(1)
{
u8 xx=1;
if(xx==1)
{
命令1
xx++;
}
if(xx==2)
{
命令2
xx++;
}
if(xx==3)
{
while(1)
{
延时5秒
exit;
xx++;
}
}
if(xx==4)
{
命令3
xx++;
}
if(xx==5)
{
命令4
xx=1;
}
}
void intx() interrupt x
{
exit;
xx=1;
}
这是一个思路,供参考。
页:
[1]
2