写几个函数就可以了
#define u8 unsigned char
#define BIT(x) (1<<(x))
void SetGpio(u8 ucPotr, u8 ucMask)
{
if (ucPotr == 0)
{
P0 |= ucMask;
}
else
...
}
void ClrGpio(u8 ucPotr, u8 ucMask)
{
if (ucPotr == 0)
{
P0 &= ~ucMask;
}
else
...
}
u8 GetGpio(u8 ucPotr, u8 ucMask)
{
if (ucPotr == 0)
{
return (P0 & ucMask);
}
else
...
}
// sbit X1 = P3^4;
// sbit X2 = P3^5;
// sbit X3 = P2^7;
// sbit Y1 = P1^6;
// sbit Y2 = P1^7;
// sbit Y3 = P3^2;
// sbit Y4 = P3^3;
#define X1 3,BIT(4)
#define X2 3,BIT(5)
#define X3 2,BIT(7)
#define Y1 1,BIT(6)
#define Y2 1,BIT(7)
#define Y3 3,BIT(2)
#define Y4 3,BIT(3)
void KeyScan(void)
{
u8 ucTmp = 0;
SetGpio(X1);
SetGpio(X2);
SetGpio(X3);
ClrGpio(Y1);
ClrGpio(Y2);
ClrGpio(Y3);
ClrGpio(Y4);
if (!GetGpio(X1))
{
ucTmp |= BIT(0);
}
if (!GetGpio(X2))
{
ucTmp |= BIT(1);
}
....
}
|