整体思路是对的,这程序有点乱,还是要规范下。 |
一giao我里giao 发表于 2021-10-11 16:11 你错了,是这样 if(k1==0)//按键按下 { while(1) { xianshi();//把正常显示的程序写在这里 if(k1==1) { _++;//判断按键的数值加1 break; } } } |
给你一个按键按一次加1的程序,然后你自己去想吧。 if(k1==0)//按键按下 while(1) { xianshi();//把正常显示的程序写在这里 if(k1==1) { _++;//判断按键的数值加1 break; } } 这样就可以按一次加一次了 |
四种情况分别设置标志位,通过标志位判断是哪种情况,你的按键定义和判断在哪,没看到,P3.0为串口接收端,最好不要用来接按键 |
用状态机来写这种多状态的程序很适合。 |
1、做两个计数器X和Y,每按一次X+1。 2、显示程序:当X<>Y时,对LED进行显示切换,显示的原则:根据X/4的余数(0、1、2、3)进行,你想法中的4种显示。显示切换后,让Y=X。 完了,就这么简单。 |
jerry1203 发表于 2021-10-5 10:51 最后,在补充一下, 你的 if 判断语句, 判断是否相等,应该是双等号,== 而不是单等号。 |
jerry1203 发表于 2021-10-5 10:51 你要么,在 while(1) 里面增加一个 判断 按键 赋值 Key_count 的代码。 要么,做一个中断程序,用来根据按键修改Key_count |
加个按键计数器是对的,但是你程序中没有相应的计数程序, |
188610329 发表于 2021-10-4 18:10 那应该怎么改呀 |
while(1) { if(key_count=0)lsd1(); if(key_count=1)lsd2(); if(key_count=2)lsd3(); if(key_count=3)0x0f; if(key_count=4)0xf0; } 这是,你这个程序的核心部分, 虽然,你里面很多 if, 看似这个程序会有变化,但是你这个程序没有任何中断。所以,key_count 永远不会发生改变, 在进入while(1) 的时候,就决定了,这个程序会永远在某一个分支里面无休止的循环。 |