我感觉一个流水灯程序是没有必要问的 有学习板也没有必要仿真的 我学了十来天的C语言,到现在,BMP280,ADXL345,OLED(SH1106驱动)都写过了,暂时还没有遇上一定要发帖问的问题,自己解决问题可能用的时间久一点,但印象更加深刻 |
lkc8210 发表于 2021-8-16 13:53 好的 ,非常感谢,我把中断里面的 非 改为,P1=0XFe 之类的 也可以了,谢谢!
|
SGW2020 发表于 2021-8-16 12:30 把中断内的uint i; 移到顶
在LED 初始化里再加i=0;
|
lkc8210 发表于 2021-8-13 17:45 您好,现在可以切换了,按下K1 先是LED 按照方式1 流水,然后按下K1 按照方式2流水,然后在按下还是按照方式1 流水,可是这时的流水跟第一次不一致了,效果有差异,我在LED 初始化增加了 P1=0xff 还是一样的,能否帮忙在分析一下,非常感谢!代码如下
|
hoodieboi 发表于 2021-8-13 21:20 是的,谢谢提醒, |
lkc8210 发表于 2021-8-13 17:45 非常感谢 !用你写的代码可以了正常切换了 |
1.LED1_Stys()和LED2_Stys()这两个随便进一个就一直在while循环里了出不来了,按键不起作用了 2.你第一种状态是用定时器中断做的吧,切换至第二个状态时,你没关定时器中断,第一个状态仍然会存在,第二个状态会受影响 |
Letitia 发表于 2021-8-13 16:48 是的,只能进去一个,不能切换,能否指点一下怎么修改 |
lkc8210 发表于 2021-8-13 17:45 谢谢 你的建议 能否帮忙修改一下 感谢 |
其一8个流水灯不用逐一定义,只有单一使用才逐一定义如定义的2个按键是应该的,其二中断代码尽量少否则日后也这样写估计被人看到不会用这样的人.其三有了定时器可不用死循环延时否则日后也这样写估计被人看到会被人议论的. |
本帖最后由 lkc8210 于 2021-8-13 22:47 编辑 好可怕的代码 四点建议 1.不要在大循环以外的其它地方用while(1) 2.就算很有需要,也要加离开条件 3.编程尽量模组化,一个函数负责按键扫描,另一个函数负责流水灯控制,他们之间用标致位交流 4.中断内不要干太多情,有机会超时 现在最简单的改法,就是建议2:
|
LED1_Stys()和LED2_Stys()里面的while也会卡死在里面 |
你的main里面没有定时器初始化和while |
用定时器中断比较好实现,延时就别用了 |