换了您这种方法还是只有一个按键有效,现把自己按您说的方式修改的程序贴出来,看到底哪儿出错了?
//端口定义
#define io_key_1 RB0
#define io_key_2 RA1
#define BIT0 0x01
#define BIT1 0x02
//定义长按键的TICK 数,以及连发间隔的TICK 数
#define KEY_LONG_PERIOD 20
#define KEY_CONTINUE_PERIOD 5
//定义按键返回值状态(按下,长按,连发,释放)
#define KEY_DOWN 0x80
#define KEY_LONG 0x40
#define KEY_CONTINUE 0x20
#define KEY_UP 0x10
//定义按键状态
#define KEY_STATE_INIT 0
#define KEY_STATE_WOBBLE 1
#define KEY_STATE_PRESS 2
#define KEY_STATE_LONG 3
#define KEY_STATE_CONTINUE 4
#define KEY_STATE_RELEASE 5
//键值读取函数
static uchar KeyScan(void)
{
uchar k=0;
if(io_key_1 == 0)
{
k|=BIT0;
}
if(io_key_2 == 0)
{
k|=BIT1;
}
return k;
}
|