微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 51单片机实现单键重复按键检测

51单片机实现单键重复按键检测

时间:11-19 来源:互联网 点击:
/*****************************************************************************

Copyright: 2013-07-27.version1.0
File name: key.c
Description: 自己做的单键识别实现重复按键功能
Author:
Version: version1.0
Date: 2013.7.27
History:无
*******************************************************/
#include
sbit key=P0^0;
int num=0;

/*************************************************
Function: delay_press()
Description: 键按下时的延时的功能
Calls: 无
Called By: key_test()
Table Accessed: 无
Table Updated: 无
Input: void
Output: 无
Return: 1->按下
0->松开
Others: 无
*************************************************/
int delay_press(void)
{
int press=1;
int i,j;
for(i=0;i<255;i++)
for(j=0;j<255;j++)
press=1;
press=0;
return press;
}

/*************************************************
Function: delay()
Description: 延时的功能
Calls: 无
Called By: key_test()
Table Accessed: 无
Table Updated: 无
Input: void
Output: 无
Return: void
Others: 无
*************************************************/
void delay(void)
{
int i,j;
for(j=0;j<25;j++)
for(i=0;i<25;i++);
}

/*************************************************
Function: key_test()
Description: 单键识别功能
Calls: delay()
Called By: main()
Table Accessed: 无
Table Updated: 无
Input: void
Output: num,按键按一次num自加一
Return: void
Others: 无
*************************************************/
void key_test(void)
{
if(!key)
{
delay();
if(!key)
{
num++;
if(num>255)
num=0;
}
}while(delay_press());
}
/*************************************************
Function: main()
Description: 程序的主函数
Calls: key_test()
Called By: 无
Table Accessed: 无
Table Updated: 无
Input: void
Output: 无
Return: void
Others: 无
*************************************************/
void main(void)
{
//int i;
while(1)
{
key_test();
P2=~num;
}
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top