作者victim0130 (Maxwell)
看板ASM
标题[问题] 8051 按钮控制问题
时间Thu Aug 22 19:26:48 2013
各位版大们好,小弟最近在自学8051,
有一些地方不太知道该怎麽写,
目前小弟想要做到的功能是:
有两个按键,按键1按下去後,输出1会ON(停滞200ms),
然後这时候侦测按键二是否有按下去,
如果按键二也按下去,则输出1会一直ON的状态,
假设按键二没按下去,则输出1就会off。
上面的功能都算是有写出来,
不过,小弟还差一个功能没写出来,
如果在输出1一直ON的状态的时候,按键1又按下去,
则输出1会变成off的状态,若此时再按按键1,
又会回复到上面的状态,侦测按键二是否有按下去,
若有则呈现on的状态,若没有则off。
小弟的程式码如下:
main()
{
while(1)
{
if(switch_A==0) //按钮1按下
{
run_dly(5); //debounce
flag3=1;
if(switch_A==0 && flag3==1) // 确认按钮1有按下
{
flag3=0;
P0_0=1; //启动
run_dly(200);
if(air_A==0 && flag3==0) //确认按钮2有按下
{ P0_0=1; //到达A状态}
else if(air_A==1 && flag3==0) //若按钮2没按下
{P0_0=0; //未到达A状态}
}
else if(switch_A==1 && flag3==1) //若按钮1没按下
{P0_0=0; //停止}
}
}//while
}//main
目前卡在不知道怎麽在到达A状态的时候,
若按下按键1,则又将输出(P0_0)off掉,
如果又再按按键1,则判断是否按键2有按下...
整个逻辑初步是这样,还请版上前辈们解惑...
谢谢.....感恩!!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.135.221.195
1F:推 ksmrt0123:建议先把缩排弄好, 缩排很重要 08/23 01:33
回k大,已尽量缩排,谢谢建议!!
※ 编辑: victim0130 来自: 220.135.221.195 (08/23 19:06)
2F:推 ksmrt0123:请不要嫌我罗嗦... 但你的缩排还有待加强 08/24 01:12
3F:→ ksmrt0123:维持好的coding style是写程式的基本要求 08/24 01:14
5F:→ ksmrt0123:其他部份我晚点回文好了 08/24 01:16
6F:→ victim0130:谢谢提供相关讯息...我会试着再缩排看看! 08/24 01:41