我是貔貅 发表于 2018-7-8 09:32 你这段代码,当你按下那个键就会调用这个函数,知道执行结束退出这个函数。如果你想在中途按键生效,我认为你可以加return语句,按下一个键返回一个值,不按就返回0,根据你返回值执行相应操作,但是这种比较麻烦。如果你不介意的话,也可以用goto语句跳转,当你按下那个键就直接跳到那里,但是goto语句要尽量避免,所以不建议使用,只是我觉得不改变你函数结构的情况下goto简单一点 |
1174375244 发表于 2018-7-8 16:01 就是必须得K4那段程序跑完了,其他按键才能有效,中途即使有其他按键按下,也没用 |
maxuewen 发表于 2018-7-8 14:52 能直接改下程序吗?? |
| 意思是按下那个功能键过后,其他键都失效了吗?你可以看看是不是if判键语句是无限循环,如果是无限循环了程序就在if里面运行,其它的功能都失效了。如果不是无限循环再找找其它原因吧 |
| 在K4按键对应的执行程序中设置某个状态变量的值,在按键识别程序中,如果识别到按键并且这个状态变量的值不满足则执行对应按键的执行代码 |
ahahaha1331 发表于 2018-7-8 11:39 我主函数就是不断扫描键盘的,但那个函数改短就无法完成我要的功能啊。。。 |
|
试着把naturemode()改短一些, naturemode() { m=100; delay(1000); m=0; delay(3000); } 主函数开头加个while(1),每完成一个周期检测key状态 |
HOSS 发表于 2018-7-8 09:54 没用,而且K4按下后里面的内容不能循环反复运行,也就是电机不能有规律的运行 |
| 那你在进入K4之后将K4拉高呢 |
|
代码贴上去了,我的意思是,K4按下了,就无法打断它的运行了 |
|
|
if (zhuan=1) { zhuan=0; } else { zhuan=1; } |
| if (z=1) |
本帖最后由 我是貔貅 于 2018-7-8 09:27 编辑 yousunny 发表于 2018-7-7 19:30 |
| 可以定义一个状态吧,表示按键是否已按下,在中断中写入状态,每次在大循环中检测该状态,按下就执行代码,释放就不执行 |
|
转几秒停几秒! 用循环语句来实现,在循环中加条件判断如果某键按下随时退出。 |
|
图片看不清~~~~~~~~~~~~~~ |
|
同上: 表述不明,没看懂你要表达什么,可以说清楚点吗 |
| 你是用if(按键1)来判断的吧?然后进入if之后就再也出不来了?给IF加停止条件啊!不然会永远死循环的。 |
| 加一判断的条件,只要转几秒停几秒转的按键生效了其他按键就失效,执行完了几秒停几秒转再使其他键生效 |
|
在电机转动程序中,加一个判断,只要有按键发生,就跳出这段程序,即要加一个按键的判断。 |
| 表述不明,没看懂你要表达什么,可以说清楚点吗 |