以前写键盘程序的时候用到过类似的函数:
//线反转法扫描键盘
// KeyPort = 0x0f; 此句为对应的51代码
GPIO_Key_Out(H4|L4); //高四位推挽输出,GPIOD7~GPIOD4为H4,GPIOD3~GPIOD0为L4
GPIO_Write(GPIOD,(GPIO_ReadOutputData(GPIOD)&0xff00)); //先清除低8位
GPIO_Write(GPIOD,(GPIO_ReadOutputData(GPIOD))|0x000f);
GPIO_Key_In(L4); //低四位浮空输入
//key_temp = KeyPort; 此句为对应的51代码
key_tempA = ((u8)GPIO_ReadOutputData(GPIOD))&0xf0; //读取GPIOD的高四位的值
key_tempB = ((u8)GPIO_ReadInputData(GPIOD))&0x0f; //读取GPIOD的低四位的值
key_tempB |= key_tempA;
|