很忙 发表于 2014-2-21 17:34 
很好理解啊。
if(key1_buf!=KEY1)和if(key2_buf!=KEY2)
说明IO口电压有变化 - bit KEY1
- bit KEY2
- bit key1_buf=1;
- bit key2_buf=1;
- unsigned char key_detect=0;
- unsigned char key_ok=0;
- /***********************************************
- 首先按键1按下松开:因为初始时key_detect = 0,所以使得key_detect = 2,
- 如果按键2一直不动作,key_detect值会一直不变(为2)。
- 即使再次按下按键1,key_detect值仍会一直不变
- 然后按键2动作:因为key_detect = 2,则key_detect=0;且key_ok=2;
- 首先按键2动作:key_detect=1,
- 如果按键1一直不动作key_detect仍为1
- 即使再次动作按键2,key_detect仍为1
- 然后按键1动作:key_detect=0;key_ok=1;
- 结论:key_ok=2:先按键1动作,再按键2动作
- key_ok=1:先按键2动作,再按键1动作
- ***********************************************/
- if(key1_buf!=KEY1) //按键1端口电平有变化
- {
- if(key1_buf=0) //判断按键前一个状态是否为低
- { //说明按键松开了
- if(key_detect==0) key_detect=2;
- else if(key_detect==1)
- {
- key_detect=0;
- key_ok=1;
- }
- }
- key1_buf=KEY1;
- }
- if(key2_buf!=KEY2)
- {
- if(key2_buf=0)
- {
- if(key_detect==0) key_detect=1;
- else if(key_detect==2)
- {
- key_detect=0;
- key_ok=2;
- }
- }
- key2_buf=KEY2;
- }
我是这样分析的~~
|