您的位置 首页 编程

51单片机完成单键重复按键检测

/*****************************************************************************Copyright:2013-07-27.v

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

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;
}
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/biancheng/264863.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部