课程资源
实现代码
Delay.c
void Delay(unsigned int xms)
{
//延迟x毫秒
while(xms--)
{
unsigned char i, j;
i = 12;
j = 169;
do
{
while (--j);
} while (--i);
}
}
MatrixKey.c
#include <REGX52.H>
#include "Delay.h"
#define KEY_SCAN P1
void MatrixKey(unsigned char* keyValue)
{
KEY_SCAN = 0X0F;
if(KEY_SCAN!=0X0F)
{
//判断是否按下
Delay(10); //消除抖动
KEY_SCAN = 0X0F; //列扫描
switch(KEY_SCAN)
{
case 0X07:*keyValue = 0;break;
case 0X0B:*keyValue = 1;break;
case 0X0D:*keyValue = 2;break;
case 0X0E:*keyValue = 3;break;
}
KEY_SCAN = 0XF0; //行扫描
switch(KEY_SCAN)
{
case 0X70:*keyValue = *keyValue;break;
case