unsigned char key_read(void)
{
unsigned char liv_key_value=0, tmp,i;
tmp = 0x00;
CD4021_KCON(0);
for(i=0; i<8; i++)
{
liv_key_value = liv_key_value<<1;
CD4021_KCLK(0);
if(GPIOC->IDR&0X0800)//读数据线DIN上的值
tmp = 0x01;
else
tmp = 0;
liv_key_value |= tmp;
__no_operation();
__no_operation();
__no_operation();
CD4021_KCLK(1);
}
switch (liv_key_value)
{
case 0x0F: liv_key_value = 5;break;
case 0x17: liv_key_value = 4;break;
case 0x1B: liv_key_value = 3;break;
case 0x1D: liv_key_value = 2;break;
case 0x1E: liv_key_value = 1;break;
default: liv_key_value = 0;break;
}
CD4021_KCON(1);
return liv_key_value;
}
这是一个读键值的函数。。。。P8-P6输入接地 只用P1-P5输入 5个按键
麻烦看看时序操作对吗?为什么总是按键读不到值? |