单片机
返回首页

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

2024-08-12 来源:cnblogs

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


进入单片机查看更多内容>>
相关视频
  • 【TI MSPM0 应用实战】智能小车+工业角度编码器+血氧仪+烟雾探测器!硬核参考设计详解!

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

  • 直播回放: Microchip Timberwolf™ 音频处理器在线研讨会

  • 基于灵动MM32W0系列MCU的指夹血氧仪控制及OTA升级应用方案分享

精选电路图
  • 1瓦四级调频发射机

  • 500W MOS场效应管电源逆变器,12V转110V/220V

  • 12V 转 28V DC-DC 变换器(基于 LM2585)

  • 红外开关

  • 12V转110V/220V 500W逆变器

  • DS1669数字电位器

    相关电子头条文章