397379140 发表于 2009-8-8 09:31:03

马老师您好:您书里第9章的关于按键的程序有点不明白,请帮忙看看,谢谢!

马老师您好:您书理第9章的关于按键的程序有点不明白,您从百忙中抽空给指点一下迷津,谢谢您了!
是关于读按键的一个地方,(我用的是ICCAVR )
#define key_state_00
#define key_state_11
#define key_state_22
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())...
                }
            
         }
}

machao 发表于 2009-8-9 00:44:23

你仔细看过了吗?我是这样写的么?

static unsigned char key_state = 0;



static unsigned char key_state;

key_state = 0;

可完全不是一回事,仔细看C语言编程的书。

397379140 发表于 2009-8-10 00:54:37

啊,仅是初始化一下,又学习了一个,谢谢马老师!
页: [1]
查看完整版本: 马老师您好:您书里第9章的关于按键的程序有点不明白,请帮忙看看,谢谢!