|
- #include
- #define UCHAR unsigned char
- #define UINT unsigned int
- void main()
- {
- UCHAR keyScan();
-
- while(1)
- {
- keyScan();
- }
- }
- void delay(UINT ms)
- {
- UINT x, y;
- for(x = ms; x; x--)
- for(y = 197; y; y--)
- ;
- }
- UCHAR keyScan()
- {
- UCHAR i, j;
- P2 = 0x0f;
- if((P2 & 0x0f) != 0x0f)
- {
- switch(P2)
- {
- case 0x0e: i = 0; break;
- case 0x0d: i = 1; break;
- case 0x0b: i = 2; break;
- case 0x07: i = 3; break;
- }
- delay(5);
- P2 = 0xf0;
- if((P2 & 0xf0) != 0xf0)
- {
- switch(P2)
- {
- case 0xe0: j = 1; break;
- case 0xd0: j = 2; break;
- case 0xb0: j = 3; break;
- case 0x70: j = 4; break;
- }
- while(P2 &0xf0 != 0xf0) //松手检测,不成功。。按下键。还没松手灯就亮了。。
- ; //这里的松手检测应该怎么改?
- if(i *3 + j == 2)P1 = 0x00; //以下几个if测试下是否能成功实现按键
- else if(i * 3 + j == 4) P1 = 0xfe; else P1 = 0xff;
- return (i * 3 + j);
- }
- }
- return 0;
- }
复制代码
|
|