请教如何控制不去调用这意料之外的函数???
程序片段如下
定时器中:
timerCount++;
if (timerCount > = 50)
{ /*dip1只有 0、1两种情况*/
if (dip1 == 0) { value[0] = 2; }
else if (dip1 == 1) { value[0] = 0; }
timerCount = 0;
}
main函数中:
switch(value[0])
{
case 0: { voicectrl(); break; } //声控模式
case 1: { sort();break; }
case 2: { autopro();break; } //自动模式
default:;
}
现在程序正在读取某个数组array,
得知dip1=0,运行过程中,会定时执行value[0] = 2;,这时就会出现一次意外的调用autopro();函数中第一个函数,接着读数组array
这时如果去改变dip1=1,运行中会执行value[0] = 0;,这时就出现一次意外的调用voicectrl();函数中第一个函数,接着读数组array
我想保留定时检测dip1的值来改变value[0]值的功能,但不要在这过程中调用意料之外的函数,请教问题出在什么地方?
[解决办法]
感觉还是楼主的思路有问题。
按照楼主的思路,所说的意外调用是应该出现的正常反应阿。
[解决办法]
你就在SWITCH前把数据读完就是了...
[解决办法]
思路有问题
逻辑不严谨
[解决办法]
单片机是单线程的啊,你的操作函数不要在中断函数中调用就行了,如你所说的,在case 0: 到break 之间的代码内中断,就算该动了value[0]的值,也是要等case 0:后的语句执行到break后的下一个循环执行switch 才能进入case 2去操作数组。
总的来说,还是你的程序思路不清除