分享

AT89S52键盘程序

 清风明月醉杨柳 2016-08-24
//返回键值

/********************************************************************/

//键盘扫描子程序 获取键值函数

/****************************************************************************/

uchar keyscan(void)

{ uchar temp;

P0=0xfe; //第一行置低

temp=P0;

temp&=0xf0;

if(temp!=0xf0)

{

delay_nms(10);

if(temp!=0xf0)

{

switch(temp) //根据列线获取第一行的键值

{

case 0xe0: key=3; break;

case 0xd0: key=2; break;

case 0xb0: key=1; break;

case 0x70: key=0; break;

}

}

}

P0=0xfd; //扫描第二行,置低

temp=P0;

temp&=0xf0;

if(temp!=0xf0)

{

delay_nms(10);

if(temp!=0xf0)

{

switch(temp)

{

case 0xe0: key=7; break;

case 0xd0: key=6; break;

case 0xb0: key=5; break;

case 0x70: key=4; break;

}

}

}

P0=0xfb; //扫描第三行,置低

temp=P0;

temp&=0xf0;

if(temp!=0xf0)

{

delay_nms(10);

if(temp!=0xf0)

{

switch(temp)

{

case 0xe0: key=11; break;

case 0xd0: key=10; break;

case 0xb0: key=9; break;

case 0x70: key=8; break;

}

}

}

P0=0xf7; //扫描第四行,置低

temp=P0;

temp&=0xf0;

if(temp!=0xf0)

{

delay_nms(10);

if(temp!=0xf0)

{

switch(temp)

{

case 0xe0: key=15; break;

case 0xd0: key=14; break;

case 0xb0: key=13; break;

case 0x70: key=12; break;

}

}

}

else

{

;

}

return(key);

}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多