|
马老师您好:您书理第9章的关于按键的程序有点不明白,您从百忙中抽空给指点一下迷津,谢谢您了!
是关于读按键的一个地方,(我用的是ICCAVR )
#define key_state_0 0
#define key_state_1 1
#define key_state_2 2
unsigned char key_state;
unsigned char read_key(void)
{
unsigned char dey_press,key_return=0;
key_state=0; //这里我不明白,每到10ms后就执行一次read_key(),每一次都要把key_state清一下零吗?那后面的switch ...case语句不是永远都执行case key_state_0这句吗?因为key_state被清零了,我笨,就是不明白。。。
key_press=PINC; //按键连接的是C口的PC7
key_press&=0x80;
switch(key_state)
{
case key_state_0:
if(key_press!=0x80)key_state=key_state_1
.
.
.
}
}
void main()
{
while(1)
{
if(key_stime_ok) //10ms到,执行read_key()
{
key_stime_ok=0;
if(read_key())...
}
}
} |
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|