- 论坛徽章:
- 0
|
static void Scan_Keyboard(void)
{
unsigned int IOValue = 0;
unsigned int temp = 0;
int i;
//temp = readl(S3C64XX_GPNDAT);
temp |= 0xffff;
temp &= 0xfff8;
writel(temp,S3C64XX_GPNDAT);
Port_Init();/*012 output 4 5 6 9 是input*/
IOValue = readl(S3C64XX_GPNDAT);
//printk("1...IOVAlue = %x...\n",IOValue);
if((IOValue & (1 << 4)) == 0)
{
COLVAL = 1;
}
else if((IOValue & (1 << 5)) == 0)
{
COLVAL = 2;
}
else if((IOValue & (1 << 6)) == 0)
{
COLVAL = 3;
}
else if((IOValue & (1 << 9)) == 0)
{
COLVAL = 4;
}
for (i = 0; i<100;i++){} //延时一小下 再反转
//反转
//temp = readl(S3C64XX_GPNDAT);
temp |= 0xffff;
temp &= 0xfd8f;
writel(temp,S3C64XX_GPNDAT);
port_init();/*012是input 4 5 6 9是output*/
if((IOValue & (1 << 0)) == 0)
{
ROWVAL = 1;
}
else if((IOValue & (1 << 1)) == 0)
{
ROWVAL = 2;
}
else if((IOValue & (1 << 2)) == 0)
{
ROWVAL = 3;
}
}
这是最后的扫描函数 测试 有BUG 多次按键得到列值有时候不对!请问为什么! |
|