| 可能是语法错误吧 |
| 无法进入while(1)这个循环,说明问题出在前面的语句,你需要把你的显示语句welcome()检查一下。不过正常来说,编译通过的话应该不是一些死循环这种逻辑错误 |
sacredyy 发表于 2018-5-3 10:39 那就要分析了,按键检测模块没有问题,但是按键没有反应,说明你这个延时模块有问题。Delay(1000)这句有问题 |
| 进不了判断程序 |
许三少天 发表于 2018-5-1 12:14 请问,欢迎界面放在了循环外边,但是按键按下,没有反应,一直是欢迎界面。是什么问题 |
wenzedong 发表于 2018-5-1 11:59 网上说消抖时间一般是10-20ms,那如果是按下松开应该怎么写程序 |
|
while(1) { welcome(); Delay(1000); judge1(); if(start==1) break; } clear(); Ic(); Delay(1000); 如果把welcome放在while(1)里面,就算是start=1也会显示welcome |
| 因为你延时之后马上又继续循环,那就会在没有清屏的时候直接出现欢迎这个语句,导致屏幕出错 |
| 你发出来的都没问题啊,欢迎界面如果能显示的话,按键按下去再出错说明错误有冲突,你把欢迎放在清屏语句后面,不放在循环里面试试看 |
| 我来说一下为什么单片机不会等待按键按下,你在键值按下前有个延时1000,就会对按键判断产生影响,而且软件延时消抖根本用不了那么长时间,10~20us就可以了,如果你是按下就松开,不建议你设置成这样,除非你是按下后直到执行了相应功能再松开 |
cj52 发表于 2018-4-29 14:37 先调用welcome,然后等待子函数,按键按下会让start=1,再判断start==1,调用IC函数 |
devcang 发表于 2018-4-28 16:26 那请问应该怎么改 |
| welcome放到按键函数里去 |
| 等待按键按下之前就调用welcom ()了 |
| 等待按键按下前不就调用了welcom()吗 |
|
子函数是一直等待的,主函数中,怎么能判断得到start==1呢 ~~~~~~~~~~ |